Example #1
0
        public async Task <HandlerResult> OnWatch(string id, Dictionary <string, string> switches, object context)
        {
            try
            {
                string operation = "";
                if (context != null)
                {
                    var jObject = (JObject)JsonConvert.DeserializeObject(context.ToString());
                    if (jObject.Property("operation") != null)
                    {
                        operation = jObject.Property("operation").Value.ToString();
                    }
                }
                var response = await OSBClient.QueryServiceInstanceProvisionStatusAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"], id, operation);

                return(new HandlerResult
                {
                    Succeeded = response.IsSuccessStatusCode,
                    UpdatedState = await response.Content.ReadAsStringAsync(),
                    HTTPStatus = response.StatusCode,
                    ErrorMessage = response.ReasonPhrase
                });
            }
            catch (Exception exp)
            {
                return(new HandlerResult
                {
                    Succeeded = false,
                    ErrorMessage = exp.Message,
                    HTTPStatus = System.Net.HttpStatusCode.InternalServerError
                });
            }
        }
Example #2
0
        public async Task <HandlerResult> OnDeleted(string id, string entityJosn, Dictionary <string, string> switches)
        {
            try
            {
                var state    = JsonConvert.DeserializeObject <BindingwithResult>(entityJosn);
                var response = await OSBClient.UnbindAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"], state.Binding.InstanceId, state.Binding.ServiceId, state.Binding.PlanId, state.Binding.BindingId);

                return(new HandlerResult
                {
                    Succeeded = response.IsSuccessStatusCode,
                    ErrorMessage = response.ReasonPhrase,
                    HTTPStatus = response.StatusCode,
                    UpdatedEntity = null
                });
            }
            catch (Exception exp)
            {
                return(new HandlerResult
                {
                    Succeeded = false,
                    ErrorMessage = exp.Message,
                    HTTPStatus = System.Net.HttpStatusCode.InternalServerError,
                    UpdatedEntity = null
                });
            }
        }
Example #3
0
        public async Task <HandlerResult> OnCreated(string id, string entityJson, Dictionary <string, string> switches)
        {
            try
            {
                var services = await OSBClient.CatalogAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"]);

                var response = await CatalogServiceClient.CatalogServiceClient.PutEntityAsync(switches["CSEndpoint"], "service-class", id, JsonConvert.SerializeObject(services), "id");

                return(new HandlerResult
                {
                    Succeeded = response.IsSuccessStatusCode,
                    ErrorMessage = response.ReasonPhrase,
                    HTTPStatus = response.StatusCode,
                    UpdatedEntity = null
                });
            }
            catch (Exception exp)
            {
                return(new HandlerResult
                {
                    Succeeded = false,
                    ErrorMessage = exp.Message,
                    HTTPStatus = System.Net.HttpStatusCode.InternalServerError,
                    UpdatedEntity = null
                });
            }
        }
Example #4
0
        private async Task OSBCheckProvisionState(object state)
        {
            string[] parms    = (string[])state;
            var      response = await OSBClient.QueryServiceInstanceProvisionStatusAsync(parms[0], parms[1], parms[2], parms[3]);

            if (response.State == "succeeded")
            {
                string bindingId    = Guid.NewGuid().ToString("N").Substring(0, 8);
                var    bindResponse = await OSBClient.BindAsync(parms[0], parms[1], parms[2], parms[3], parms[4], parms[5], bindingId);

                await this.StateManager.SetStateAsync <BindingResult>("Binding", bindResponse);

                UnregisterTimer(mUpdateTimer);
            }
        }
Example #5
0
        private async Task OSBBootstrap(string OSBEndpoint, string OSBUser, string OSBPassword, string serviceType, string servicePlan)
        {
            var catalog = await OSBClient.CatalogAsync(OSBEndpoint, OSBUser, OSBPassword);

            var brokeredService = catalog.FirstOrDefault(s => s.Name == serviceType || s.Id == serviceType);

            if (brokeredService != null)
            {
                var plan = brokeredService.Plans.FirstOrDefault(p => p.Name == servicePlan || p.Id == servicePlan);
                if (plan != null)
                {
                    var response = await OSBClient.ProvisionAsync(OSBEndpoint, OSBUser, OSBPassword, brokeredService.Id, plan.Id, this.Id.GetStringId());

                    mUpdateTimer = RegisterTimer(
                        OSBCheckProvisionState,
                        new string[] { OSBEndpoint, OSBUser, OSBPassword, this.Id.GetStringId(), brokeredService.Id, plan.Id },
                        TimeSpan.FromMilliseconds(1),
                        TimeSpan.FromMilliseconds(5));
                }
            }
        }
Example #6
0
        public async Task <BindingwithResult> OSBBindAsync(string instanceId, string serviceId, string planId, string bindingId, CancellationToken cancellationToken)
        {
            var bindingResult = await OSBClient.BindAsync("http://104.45.224.242", "haishi", "P$ssword!", instanceId, serviceId, planId, bindingId);

            var bindingWithResult = new BindingwithResult
            {
                Binding = new Binding
                {
                    BindingId  = bindingId,
                    InstanceId = instanceId,
                    ServiceId  = serviceId,
                    PlanId     = planId
                }
                ,
                Result = bindingResult
            };

            await this.StateManager.SetStateAsync <BindingwithResult>("bindingResult", bindingWithResult, cancellationToken);

            return(bindingWithResult);
        }
Example #7
0
        public async Task <HandlerResult> OnCreated(string id, string entityJson, Dictionary <string, string> switches)
        {
            try
            {
                var binding       = JsonConvert.DeserializeObject <Binding>(entityJson);
                var bindingResult = await OSBClient.BindAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"], binding.InstanceId, binding.ServiceId, binding.PlanId, id);

                var bindingWithResult = new BindingwithResult
                {
                    Binding = new Binding
                    {
                        BindingId  = id,
                        InstanceId = binding.InstanceId,
                        ServiceId  = binding.ServiceId,
                        PlanId     = binding.PlanId
                    }
                    ,
                    Result = bindingResult
                };
                return(new HandlerResult
                {
                    Succeeded = true,
                    ErrorMessage = null,
                    HTTPStatus = System.Net.HttpStatusCode.OK,
                    UpdatedEntity = JsonConvert.SerializeObject(bindingWithResult)
                });
            }
            catch (Exception exp)
            {
                return(new HandlerResult
                {
                    Succeeded = false,
                    ErrorMessage = exp.Message,
                    HTTPStatus = System.Net.HttpStatusCode.InternalServerError,
                    UpdatedEntity = null
                });
            }
        }
Example #8
0
        public async Task <HandlerResult> OnCreated(string id, string entityJson, Dictionary <string, string> switches)
        {
            try
            {
                var instance = JsonConvert.DeserializeObject <ServiceInstance>(entityJson);
                instance.InstanceId = id;

                var services = await OSBClient.CatalogAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"]);

                var service = services.FirstOrDefault(s => s.Id == instance.ServiceId);
                if (service == null)
                {
                    return new HandlerResult
                           {
                               Succeeded    = false,
                               ErrorMessage = string.Format("Service Id {0} is not found.", instance.ServiceId)
                           }
                }
                ;
                var plan = service.Plans.FirstOrDefault(p => p.Id == instance.PlanId);
                if (plan == null)
                {
                    return(new HandlerResult
                    {
                        Succeeded = false,
                        ErrorMessage = string.Format("Plan Id {0} is not found.", instance.PlanId)
                    });
                }

                var response = await OSBClient.ProvisionAsync(switches["OSBEndpoint"], switches["OSBUser"], switches["OSBPassword"],
                                                              instance.ServiceId, instance.PlanId, id, instance.Parameters);

                if (response.StatusCode == System.Net.HttpStatusCode.OK ||
                    response.StatusCode == System.Net.HttpStatusCode.Created ||
                    response.StatusCode == System.Net.HttpStatusCode.Accepted)
                {
                    return(new HandlerResult
                    {
                        Succeeded = true,
                        UpdatedEntity = JsonConvert.SerializeObject(instance),
                        UpdatedState = await response.Content.ReadAsStringAsync(),
                        HTTPStatus = response.StatusCode,
                        ErrorMessage = null
                    });
                }
                else
                {
                    return(new HandlerResult
                    {
                        Succeeded = false,
                        HTTPStatus = response.StatusCode,
                        //UpdatedEntity = await response.Content.ReadAsStringAsync(),
                        ErrorMessage = response.ReasonPhrase
                    });
                }
            }
            catch (Exception exp)
            {
                return(new HandlerResult
                {
                    Succeeded = false,
                    ErrorMessage = exp.Message,
                    HTTPStatus = System.Net.HttpStatusCode.InternalServerError
                });
            }
        }
Example #9
0
        public async Task OSBUnbindAsync(CancellationToken cancellationToken)
        {
            var state = await this.StateManager.GetStateAsync <BindingwithResult>("bindingResult", cancellationToken);

            await OSBClient.UnbindAsync("http://104.45.224.242", "haishi", "P$ssword!", state.Binding.InstanceId, state.Binding.ServiceId, state.Binding.PlanId, state.Binding.BindingId);
        }