예제 #1
0
        public void CreateServiceInstanceTest()
        {
            using (ShimsContext.Create())
            {
                MockClients clients = new MockClients();

                string json = @"{
  ""metadata"": {
    ""guid"": ""8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f"",
    ""url"": ""/v2/service_instances/8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f"",
    ""created_at"": ""2016-02-09T10:21:52Z"",
    ""updated_at"": null
  },
  ""entity"": {
    ""name"": ""my-service-instance"",
    ""credentials"": {

    },
    ""service_plan_guid"": ""09cd60d3-b423-4670-9196-dba607d4cce7"",
    ""space_guid"": ""9191d45d-534a-440b-b7b0-9dccd7d0a22d"",
    ""gateway_data"": null,
    ""dashboard_url"": null,
    ""type"": ""managed_service_instance"",
    ""last_operation"": {
      ""type"": ""create"",
      ""state"": ""in progress"",
      ""description"": """",
      ""updated_at"": ""2016-02-09T10:21:52Z""
    },
    ""space_url"": ""/v2/spaces/9191d45d-534a-440b-b7b0-9dccd7d0a22d"",
    ""service_plan_url"": ""/v2/service_plans/09cd60d3-b423-4670-9196-dba607d4cce7"",
    ""service_bindings_url"": ""/v2/service_instances/8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f/service_bindings""
  }
}";
                clients.JsonResponse = json;

                clients.ExpectedStatusCode = (HttpStatusCode)202;
                var cfClient = clients.CreateCloudFoundryClient();

                CreateServiceInstanceRequest value = new CreateServiceInstanceRequest();


                var obj = cfClient.ServiceInstances.CreateServiceInstance(value).Result;


                Assert.AreEqual("8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f", TestUtil.ToTestableString(obj.EntityMetadata.Guid), true);
                Assert.AreEqual("/v2/service_instances/8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f", TestUtil.ToTestableString(obj.EntityMetadata.Url), true);
                Assert.AreEqual("2016-02-09T10:21:52Z", TestUtil.ToTestableString(obj.EntityMetadata.CreatedAt), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.EntityMetadata.UpdatedAt), true);
                Assert.AreEqual("my-service-instance", TestUtil.ToTestableString(obj.Name), true);
                Assert.AreEqual("09cd60d3-b423-4670-9196-dba607d4cce7", TestUtil.ToTestableString(obj.ServicePlanGuid), true);
                Assert.AreEqual("9191d45d-534a-440b-b7b0-9dccd7d0a22d", TestUtil.ToTestableString(obj.SpaceGuid), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.GatewayData), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.DashboardUrl), true);
                Assert.AreEqual("managed_service_instance", TestUtil.ToTestableString(obj.Type), true);
                Assert.AreEqual("/v2/spaces/9191d45d-534a-440b-b7b0-9dccd7d0a22d", TestUtil.ToTestableString(obj.SpaceUrl), true);
                Assert.AreEqual("/v2/service_plans/09cd60d3-b423-4670-9196-dba607d4cce7", TestUtil.ToTestableString(obj.ServicePlanUrl), true);
                Assert.AreEqual("/v2/service_instances/8c2f47ae-5abe-4c40-a9e4-25c9ba80a37f/service_bindings", TestUtil.ToTestableString(obj.ServiceBindingsUrl), true);
            }
        }
 internal static Task<CreateServiceInstanceResponse> CustomCreateServiceInstance(CloudController.V2.Client.Base.AbstractServiceInstancesEndpoint arg1, CreateServiceInstanceRequest arg2)
 {
     return Task.Factory.StartNew<CreateServiceInstanceResponse>(() =>
     {
         return new CreateServiceInstanceResponse() { EntityMetadata = new Metadata() };
     });
 }
        public void TestCreateServiceInstanceRequest()
        {
            string json = @"{
  ""space_guid"": ""4be4cbef-1a35-4123-947b-581c401650aa"",
  ""name"": ""my-service-instance"",
  ""service_plan_guid"": ""4be4cbef-1a35-4123-947b-581c401650aa"",
  ""parameters"": {
    ""the_service_broker"": ""wants this object""
  },
  ""tags"": [
    ""accounting"",
    ""mongodb""
  ]
}";

            CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

            request.SpaceGuid       = new Guid("4be4cbef-1a35-4123-947b-581c401650aa");
            request.Name            = "my-service-instance";
            request.ServicePlanGuid = new Guid("4be4cbef-1a35-4123-947b-581c401650aa");
            request.Parameters      = TestUtil.GetJsonDictonary(@"{""the_service_broker"":""wants this object""}");

            request.Tags = Array.ConvertAll(TestUtil.GetJsonArray(@"[""accounting"",""mongodb""]"), (p => p.ToString()));

            string result = JsonConvert.SerializeObject(request, Formatting.None);

            Assert.AreEqual(TestUtil.ToUnformatedJsonString(json), result);
        }
        /// <summary>
        /// Creating a Service Instance
        /// <para>For detailed information, see online documentation at: "http://apidocs.cloudfoundry.org/250/service_instances/creating_a_service_instance.html"</para>
        /// </summary>
        public async Task <CreateServiceInstanceResponse> CreateServiceInstance(CreateServiceInstanceRequest value)
        {
            UriBuilder uriBuilder = new UriBuilder(this.Client.CloudTarget);

            uriBuilder.Path = "/v2/service_instances";
            var client = this.GetHttpClient();

            client.Uri    = uriBuilder.Uri;
            client.Method = HttpMethod.Post;
            var authHeader = await BuildAuthenticationHeader();

            if (!string.IsNullOrWhiteSpace(authHeader.Key))
            {
                if (client.Headers.ContainsKey(authHeader.Key))
                {
                    client.Headers[authHeader.Key] = authHeader.Value;
                }
                else
                {
                    client.Headers.Add(authHeader);
                }
            }
            client.ContentType = "application/x-www-form-urlencoded";
            client.Content     = ((string)JsonConvert.SerializeObject(value)).ConvertToStream();
            var expectedReturnStatus = 202;
            var response             = await this.SendAsync(client, expectedReturnStatus);

            return(Utilities.DeserializeJson <CreateServiceInstanceResponse>(await response.ReadContentAsStringAsync()));
        }
        public void ServiceInstance_test()
        {
            var services = client.Services.ListAllServices().Result;
            Guid serviceGuid = services.FirstOrDefault(s => s.Label == "mysql").EntityMetadata.Guid;

            var plans = client.Services.ListAllServicePlansForService(serviceGuid).Result;
            Guid servicePlanGuid = plans.FirstOrDefault().EntityMetadata.Guid;
            CreateServiceInstanceResponse newService = null;
            RetrieveServiceInstanceResponse readService = null;
            UpdateServiceInstanceResponse updatedService = null;

            CreateServiceInstanceRequest createService = new CreateServiceInstanceRequest();
            createService.SpaceGuid = spaceGuid;
            createService.Name = "svc" + Guid.NewGuid().ToString().Substring(0, 3);
            createService.ServicePlanGuid = servicePlanGuid;
            try
            {
                newService = client.ServiceInstances.CreateServiceInstance(createService).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while creating service instance: {0}", ex.ToString());
            }

            Assert.IsNotNull(newService);
            Assert.AreEqual(createService.Name, newService.Name);

            try
            {
                readService = client.ServiceInstances.RetrieveServiceInstance(newService.EntityMetadata.Guid).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while reading service instance: {0}", ex.ToString());
            }

            UpdateServiceInstanceRequest updateService = new UpdateServiceInstanceRequest();
            updateService.Name = "svc" + Guid.NewGuid().ToString().Substring(0, 3);
            try
            {
                updatedService = client.ServiceInstances.UpdateServiceInstance(newService.EntityMetadata.Guid, updateService).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while updating service instance: {0}", ex.ToString());
            }

            Assert.IsNotNull(updatedService);
            Assert.AreEqual(updateService.Name, updatedService.Name);

            try
            {
                client.ServiceInstances.DeleteServiceInstance(newService.EntityMetadata.Guid).Wait();
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while deleting service instance: {0}", ex.ToString());
            }
        }
        public void CreateServiceInstanceTest()
        {
            using (ShimsContext.Create())
            {
                MockClients clients = new MockClients();

                string json = @"{
  ""metadata"": {
    ""guid"": ""b10b1f19-500b-4fb3-89aa-bc727e1d7b10"",
    ""url"": ""/v2/service_instances/b10b1f19-500b-4fb3-89aa-bc727e1d7b10"",
    ""created_at"": ""2015-04-16T12:04:31+00:00"",
    ""updated_at"": null
  },
  ""entity"": {
    ""name"": ""my-service-instance"",
    ""credentials"": {
      ""creds-key-473"": ""creds-val-473""
    },
    ""service_plan_guid"": ""06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa"",
    ""space_guid"": ""6b65de44-ce3e-444f-988c-b29ef16f2f07"",
    ""gateway_data"": ""CONFIGURATION"",
    ""dashboard_url"": ""http://dashboard.example.com"",
    ""type"": ""managed_service_instance"",
    ""space_url"": ""/v2/spaces/6b65de44-ce3e-444f-988c-b29ef16f2f07"",
    ""service_plan_url"": ""/v2/service_plans/06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa"",
    ""service_bindings_url"": ""/v2/service_instances/b10b1f19-500b-4fb3-89aa-bc727e1d7b10/service_bindings""
  }
}";
                clients.JsonResponse = json;

                clients.ExpectedStatusCode = (HttpStatusCode)201;
                var cfClient = clients.CreateCloudFoundryClient();

                CreateServiceInstanceRequest value = new CreateServiceInstanceRequest();


                var obj = cfClient.ServiceInstances.CreateServiceInstance(value).Result;


                Assert.AreEqual("b10b1f19-500b-4fb3-89aa-bc727e1d7b10", TestUtil.ToTestableString(obj.EntityMetadata.Guid), true);
                Assert.AreEqual("/v2/service_instances/b10b1f19-500b-4fb3-89aa-bc727e1d7b10", TestUtil.ToTestableString(obj.EntityMetadata.Url), true);
                Assert.AreEqual("2015-04-16T12:04:31+00:00", TestUtil.ToTestableString(obj.EntityMetadata.CreatedAt), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.EntityMetadata.UpdatedAt), true);
                Assert.AreEqual("my-service-instance", TestUtil.ToTestableString(obj.Name), true);
                Assert.AreEqual("06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa", TestUtil.ToTestableString(obj.ServicePlanGuid), true);
                Assert.AreEqual("6b65de44-ce3e-444f-988c-b29ef16f2f07", TestUtil.ToTestableString(obj.SpaceGuid), true);
                Assert.AreEqual("CONFIGURATION", TestUtil.ToTestableString(obj.GatewayData), true);
                Assert.AreEqual("http://dashboard.example.com", TestUtil.ToTestableString(obj.DashboardUrl), true);
                Assert.AreEqual("managed_service_instance", TestUtil.ToTestableString(obj.Type), true);
                Assert.AreEqual("/v2/spaces/6b65de44-ce3e-444f-988c-b29ef16f2f07", TestUtil.ToTestableString(obj.SpaceUrl), true);
                Assert.AreEqual("/v2/service_plans/06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa", TestUtil.ToTestableString(obj.ServicePlanUrl), true);
                Assert.AreEqual("/v2/service_instances/b10b1f19-500b-4fb3-89aa-bc727e1d7b10/service_bindings", TestUtil.ToTestableString(obj.ServiceBindingsUrl), true);
            }
        }
        public void TestCreateServiceInstanceRequest()
        {
            string json = @"{
  ""space_guid"": ""4148ed17-5b5d-40e7-8c14-45cdd39ca752"",
  ""name"": ""my-service-instance"",
  ""service_plan_guid"": ""04c18b7a-e04d-4d15-89b3-82e8c0a8f3df""
}";

            CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

            request.SpaceGuid = new Guid("4148ed17-5b5d-40e7-8c14-45cdd39ca752");
            request.Name = "my-service-instance";
            request.ServicePlanGuid = new Guid("04c18b7a-e04d-4d15-89b3-82e8c0a8f3df");
            string result = JsonConvert.SerializeObject(request, Formatting.None);
            Assert.AreEqual(TestUtil.ToUnformatedJsonString(json), result);
        }
        /// <summary>
        /// Creating a Service Instance
        /// <para>For detailed information, see online documentation at: "http://apidocs.cloudfoundry.org/250/service_instances/creating_a_service_instance.html"</para>
        /// </summary>
        public async Task <CreateServiceInstanceResponse> CreateServiceInstance(CreateServiceInstanceRequest value)
        {
            UriBuilder uriBuilder = new UriBuilder(this.Client.CloudTarget);

            uriBuilder.Path = "/v2/service_instances";
            var client = this.GetHttpClient();

            client.Uri    = uriBuilder.Uri;
            client.Method = HttpMethod.Post;


            client.Content = ((string)JsonConvert.SerializeObject(value)).ConvertToStream();
            var expectedReturnStatus = 202;
            var response             = await this.SendAsync(client, expectedReturnStatus);

            return(Utilities.DeserializeJson <CreateServiceInstanceResponse>(await response.Content.ReadAsStringAsync()));
        }
예제 #9
0
        public void TestCreateServiceInstanceRequest()
        {
            string json = @"{
  ""space_guid"": ""6b65de44-ce3e-444f-988c-b29ef16f2f07"",
  ""name"": ""my-service-instance"",
  ""service_plan_guid"": ""06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa""
}";

            CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

            request.SpaceGuid       = new Guid("6b65de44-ce3e-444f-988c-b29ef16f2f07");
            request.Name            = "my-service-instance";
            request.ServicePlanGuid = new Guid("06f4e5a8-fc14-4d97-9bea-5bc92dec2cfa");
            string result = JsonConvert.SerializeObject(request, Formatting.None);

            Assert.AreEqual(TestUtil.ToUnformatedJsonString(json), result);
        }
예제 #10
0
        public void TestCreateServiceInstanceRequest()
        {
            string json = @"{
  ""space_guid"": ""9191d45d-534a-440b-b7b0-9dccd7d0a22d"",
  ""name"": ""my-service-instance"",
  ""service_plan_guid"": ""09cd60d3-b423-4670-9196-dba607d4cce7"",
  ""parameters"": {
    ""the_service_broker"": ""wants this object""
  }
}";

            CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

            request.SpaceGuid       = new Guid("9191d45d-534a-440b-b7b0-9dccd7d0a22d");
            request.Name            = "my-service-instance";
            request.ServicePlanGuid = new Guid("09cd60d3-b423-4670-9196-dba607d4cce7");
            request.Parameters      = TestUtil.GetJsonDictonary(@"{""the_service_broker"":""wants this object""}");

            string result = JsonConvert.SerializeObject(request, Formatting.None);

            Assert.AreEqual(TestUtil.ToUnformatedJsonString(json), result);
        }
예제 #11
0
        private async void Wizard_Finish(object sender, RoutedEventArgs e)
        {
            var viewModel = this.DataContext as ServiceInstanceEditorResource;

            if (viewModel == null)
            {
                throw new InvalidOperationException("Invalid DataContext");
            }

            try
            {
                viewModel.AllowFinish       = false;
                this.InfoMessage.Text       = "Please wait while creating service...";
                this.InfoSpinner.Visibility = System.Windows.Visibility.Visible;
                CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();
                request.Name            = this.tbServiceName.Text;
                request.ServicePlanGuid = viewModel.SelectedServicePlan.ToGuid();
                request.SpaceGuid       = this.spaceGuid;

                await this.client.ServiceInstances.CreateServiceInstance(request);

                this.DialogResult = true;
                this.Close();
            }
            catch (Exception ex)
            {
                viewModel.AllowFinish       = true;
                this.InfoSpinner.Visibility = System.Windows.Visibility.Hidden;
                this.InfoMessage.Text       = string.Empty;
                var errorMessages = new List <string>();
                ErrorFormatter.FormatExceptionMessage(ex, errorMessages);
                viewModel.Error.HasErrors    = true;
                viewModel.Error.ErrorMessage = string.Join(Environment.NewLine, errorMessages.ToArray());
                Logger.Error("Error creating service instance ", ex);
            }
        }
예제 #12
0
 internal static Task <CreateServiceInstanceResponse> CustomCreateServiceInstance(CloudController.V2.Client.Base.AbstractServiceInstancesEndpoint arg1, CreateServiceInstanceRequest arg2)
 {
     return(Task.Factory.StartNew <CreateServiceInstanceResponse>(() =>
     {
         return new CreateServiceInstanceResponse()
         {
             EntityMetadata = new Metadata()
         };
     }));
 }
        public override bool Execute()
        {
            logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this);

            CloudFoundryClient client = InitClient();

            Guid? spaceGuid = null;

            if (CFSpace.Length > 0 && CFOrganization.Length > 0)
            {
                spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace);
                if (spaceGuid == null)
                {
                    return false;
                }
            }
            List<ProvisionedService> servicesList = new List<ProvisionedService>();
            try
            {
               string[] provServs = CFServices.Split(';');

               foreach (string service in provServs)
               {
                   if (string.IsNullOrWhiteSpace(service) == false)
                   {
                       string[] serviceInfo = service.Split(',');

                       if (serviceInfo.Length != 3)
                       {
                           logger.LogError("Invalid service information in {0}", service);
                           continue;
                       }

                       ProvisionedService serviceDetails = new ProvisionedService();

                       serviceDetails.Name = serviceInfo[0].Trim();
                       serviceDetails.Type = serviceInfo[1].Trim();
                       serviceDetails.Plan = serviceInfo[2].Trim();

                       servicesList.Add(serviceDetails);
                   }
               }
            }
            catch(Exception ex)
            {
                logger.LogErrorFromException(ex);
                logger.LogWarning("Error trying to obtain service information, trying to deserialize as xml");
                servicesList = Utils.Deserialize<List<ProvisionedService>>(CFServices);
            }

            List<string> serviceGuids = new List<string>();

            foreach (ProvisionedService service in servicesList)
            {
                logger.LogMessage("Creating {0} service {1}", service.Type, service.Name);
                Guid? planGuid = null;
                PagedResponseCollection<ListAllServicesResponse> allServicesList = client.Services.ListAllServices(new RequestOptions() { Query = "label:" + service.Type }).Result;

                foreach (var serviceInfo in allServicesList)
                {
                    var planList = client.Services.ListAllServicePlansForService(new Guid(serviceInfo.EntityMetadata.Guid)).Result;

                    var plan = planList.Where(o => o.Name == service.Plan).FirstOrDefault();

                    if (plan != null)
                    {
                        planGuid = new Guid(plan.EntityMetadata.Guid);
                        break;
                    }
                }
                Guid? serviceInstanceGuid=null;
                if ((serviceInstanceGuid=Utils.CheckForExistingService(service.Name, planGuid, client)) != null)
                {
                    logger.LogMessage("Service {0} - {1} already exists -> skipping", service.Name, service.Type);
                    serviceGuids.Add(serviceInstanceGuid.Value.ToString());
                    continue;
                }

                CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

                request.Name = service.Name;
                request.ServicePlanGuid = planGuid;
                request.SpaceGuid = spaceGuid;

                CreateServiceInstanceResponse result = client.ServiceInstances.CreateServiceInstance(request).Result;

                serviceGuids.Add(result.EntityMetadata.Guid);
            }

            CFServicesGuids = serviceGuids.ToArray();

            return true;
        }
        public override bool Execute()
        {
            logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this);

            CloudFoundryClient client = InitClient();

            Guid? spaceGuid = null;

            if (CFSpace.Length > 0 && CFOrganization.Length > 0)
            {
                spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace);

                if (spaceGuid == null)
                {
                    return false;
                }
            }

            Guid? planGuid = null;
            PagedResponseCollection<ListAllServicesResponse> servicesList = client.Services.ListAllServices(new RequestOptions() { Query = "label:" + CFServiceType }).Result;

            foreach (var service in servicesList)
            {
               var planList = client.Services.ListAllServicePlansForService(new Guid(service.EntityMetadata.Guid)).Result;

               var plan = planList.Where(o => o.Name == CFServicePlan).FirstOrDefault();

               if (plan != null)
               {
                   planGuid = new Guid(plan.EntityMetadata.Guid);
                   break;
               }
            }

            CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

            request.Name = CFServiceName;
            request.ServicePlanGuid = planGuid;
            request.SpaceGuid = spaceGuid;

            CreateServiceInstanceResponse result = client.ServiceInstances.CreateServiceInstance(request).Result;

            CFServiceGuid = result.EntityMetadata.Guid;

            logger.LogMessage("Created {0} service {1}", CFServiceType, result.Name);
            return true;
        }
예제 #15
0
        public override bool Execute()
        {
            logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this);

            try
            {
                CloudFoundryClient client = InitClient();

                Guid?spaceGuid = null;

                if (CFSpace.Length > 0 && CFOrganization.Length > 0)
                {
                    spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace);

                    if (spaceGuid == null)
                    {
                        return(false);
                    }
                }

                Guid?planGuid = null;
                PagedResponseCollection <ListAllServicesResponse> servicesList = client.Services.ListAllServices(new RequestOptions()
                {
                    Query = "label:" + CFServiceType
                }).Result;

                foreach (var service in servicesList)
                {
                    var planList = client.Services.ListAllServicePlansForService(new Guid(service.EntityMetadata.Guid)).Result;

                    var plan = planList.Where(o => o.Name == CFServicePlan).FirstOrDefault();

                    if (plan != null)
                    {
                        planGuid = new Guid(plan.EntityMetadata.Guid);
                        break;
                    }
                }

                CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

                request.Name            = CFServiceName;
                request.ServicePlanGuid = planGuid;
                request.SpaceGuid       = spaceGuid;

                CreateServiceInstanceResponse result = client.ServiceInstances.CreateServiceInstance(request).Result;

                CFServiceGuid = result.EntityMetadata.Guid;

                logger.LogMessage("Created {0} service {1}", CFServiceType, result.Name);
            }
            catch (AggregateException exception)
            {
                List <string> messages = new List <string>();
                ErrorFormatter.FormatExceptionMessage(exception, messages);
                this.logger.LogError(string.Join(Environment.NewLine, messages));
                return(false);
            }

            return(true);
        }
예제 #16
0
        public void CreateServiceInstanceTest()
        {
            using (ShimsContext.Create())
            {
                MockClients clients = new MockClients();

                string json = @"{
  ""metadata"": {
    ""guid"": ""4be4cbef-1a35-4123-947b-581c401650aa"",
    ""url"": ""/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8"",
    ""created_at"": ""2016-09-02T11:52:08Z"",
    ""updated_at"": null
  },
  ""entity"": {
    ""name"": ""my-service-instance"",
    ""credentials"": {

    },
    ""service_plan_guid"": ""4be4cbef-1a35-4123-947b-581c401650aa"",
    ""space_guid"": ""4be4cbef-1a35-4123-947b-581c401650aa"",
    ""gateway_data"": null,
    ""dashboard_url"": null,
    ""type"": ""managed_service_instance"",
    ""last_operation"": {
      ""type"": ""create"",
      ""state"": ""in progress"",
      ""description"": """",
      ""updated_at"": null,
      ""created_at"": ""2016-09-02T11:52:08Z""
    },
    ""tags"": [
      ""accounting"",
      ""mongodb""
    ],
    ""space_url"": ""/v2/spaces/5936211d-106a-46be-ace5-84573c96f324"",
    ""service_plan_url"": ""/v2/service_plans/213ac215-7945-44e9-baa7-a835bf67781e"",
    ""service_bindings_url"": ""/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/service_bindings"",
    ""service_keys_url"": ""/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/service_keys"",
    ""routes_url"": ""/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/routes""
  }
}";
                clients.JsonResponse = json;

                clients.ExpectedStatusCode = (HttpStatusCode)202;
                var cfClient = clients.CreateCloudFoundryClient();

                CreateServiceInstanceRequest value = new CreateServiceInstanceRequest();


                var obj = cfClient.ServiceInstances.CreateServiceInstance(value).Result;


                Assert.AreEqual("4be4cbef-1a35-4123-947b-581c401650aa", TestUtil.ToTestableString(obj.EntityMetadata.Guid), true);
                Assert.AreEqual("/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8", TestUtil.ToTestableString(obj.EntityMetadata.Url), true);
                Assert.AreEqual("2016-09-02T11:52:08Z", TestUtil.ToTestableString(obj.EntityMetadata.CreatedAt), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.EntityMetadata.UpdatedAt), true);
                Assert.AreEqual("my-service-instance", TestUtil.ToTestableString(obj.Name), true);
                Assert.AreEqual("4be4cbef-1a35-4123-947b-581c401650aa", TestUtil.ToTestableString(obj.ServicePlanGuid), true);
                Assert.AreEqual("4be4cbef-1a35-4123-947b-581c401650aa", TestUtil.ToTestableString(obj.SpaceGuid), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.GatewayData), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.DashboardUrl), true);
                Assert.AreEqual("managed_service_instance", TestUtil.ToTestableString(obj.Type), true);
                Assert.AreEqual("/v2/spaces/5936211d-106a-46be-ace5-84573c96f324", TestUtil.ToTestableString(obj.SpaceUrl), true);
                Assert.AreEqual("/v2/service_plans/213ac215-7945-44e9-baa7-a835bf67781e", TestUtil.ToTestableString(obj.ServicePlanUrl), true);
                Assert.AreEqual("/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/service_bindings", TestUtil.ToTestableString(obj.ServiceBindingsUrl), true);
                Assert.AreEqual("/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/service_keys", TestUtil.ToTestableString(obj.ServiceKeysUrl), true);
                Assert.AreEqual("/v2/service_instances/dd1a7ad4-563b-4f6f-9397-526bfa5e62e8/routes", TestUtil.ToTestableString(obj.RoutesUrl), true);
            }
        }
예제 #17
0
        public void ServiceInstance_test()
        {
            var services = client.Services.ListAllServices().Result;

            if (services.FirstOrDefault(s => s.Label == "mysql") == null)
            {
                Assert.Inconclusive("Cloud Foundry target does not support mysql services");
            }
            Guid serviceGuid = services.FirstOrDefault(s => s.Label == "mysql").EntityMetadata.Guid;

            var  plans           = client.Services.ListAllServicePlansForService(serviceGuid).Result;
            Guid servicePlanGuid = plans.FirstOrDefault().EntityMetadata.Guid;
            CreateServiceInstanceResponse   newService     = null;
            RetrieveServiceInstanceResponse readService    = null;
            UpdateServiceInstanceResponse   updatedService = null;

            CreateServiceInstanceRequest createService = new CreateServiceInstanceRequest();

            createService.SpaceGuid       = spaceGuid;
            createService.Name            = "svc" + Guid.NewGuid().ToString().Substring(0, 3);
            createService.ServicePlanGuid = servicePlanGuid;
            try
            {
                newService = client.ServiceInstances.CreateServiceInstance(createService).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while creating service instance: {0}", ex.ToString());
            }

            Assert.IsNotNull(newService);
            Assert.AreEqual(createService.Name, newService.Name);

            try
            {
                readService = client.ServiceInstances.RetrieveServiceInstance(newService.EntityMetadata.Guid).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while reading service instance: {0}", ex.ToString());
            }

            UpdateServiceInstanceRequest updateService = new UpdateServiceInstanceRequest();

            updateService.Name = "svc" + Guid.NewGuid().ToString().Substring(0, 3);
            try
            {
                updatedService = client.ServiceInstances.UpdateServiceInstance(newService.EntityMetadata.Guid, updateService).Result;
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while updating service instance: {0}", ex.ToString());
            }

            Assert.IsNotNull(updatedService);
            Assert.AreEqual(updateService.Name, updatedService.Name);

            try
            {
                client.ServiceInstances.DeleteServiceInstance(newService.EntityMetadata.Guid).Wait();
            }
            catch (Exception ex)
            {
                Assert.Fail("Exception while deleting service instance: {0}", ex.ToString());
            }
        }
        public void CreateServiceInstanceTest()
        {
            using (ShimsContext.Create())
            {
                MockClients clients = new MockClients();

                string json = @"{
  ""metadata"": {
    ""guid"": ""85c93513-6daf-4c69-9293-aff838a6101c"",
    ""url"": ""/v2/service_instances/85c93513-6daf-4c69-9293-aff838a6101c"",
    ""created_at"": ""2015-05-19T15:27:17+00:00"",
    ""updated_at"": null
  },
  ""entity"": {
    ""name"": ""my-service-instance"",
    ""credentials"": {
      ""creds-key-386"": ""creds-val-386""
    },
    ""service_plan_guid"": ""04c18b7a-e04d-4d15-89b3-82e8c0a8f3df"",
    ""space_guid"": ""4148ed17-5b5d-40e7-8c14-45cdd39ca752"",
    ""gateway_data"": ""CONFIGURATION"",
    ""dashboard_url"": ""http://dashboard.example.com"",
    ""type"": ""managed_service_instance"",
    ""space_url"": ""/v2/spaces/4148ed17-5b5d-40e7-8c14-45cdd39ca752"",
    ""service_plan_url"": ""/v2/service_plans/04c18b7a-e04d-4d15-89b3-82e8c0a8f3df"",
    ""service_bindings_url"": ""/v2/service_instances/85c93513-6daf-4c69-9293-aff838a6101c/service_bindings""
  }
}";
                clients.JsonResponse = json;

                clients.ExpectedStatusCode = (HttpStatusCode)201;
                var cfClient = clients.CreateCloudFoundryClient();

                CreateServiceInstanceRequest value = new CreateServiceInstanceRequest();


                var obj = cfClient.ServiceInstances.CreateServiceInstance(value).Result;


                Assert.AreEqual("85c93513-6daf-4c69-9293-aff838a6101c", TestUtil.ToTestableString(obj.EntityMetadata.Guid), true);
                Assert.AreEqual("/v2/service_instances/85c93513-6daf-4c69-9293-aff838a6101c", TestUtil.ToTestableString(obj.EntityMetadata.Url), true);
                Assert.AreEqual("2015-05-19T15:27:17+00:00", TestUtil.ToTestableString(obj.EntityMetadata.CreatedAt), true);
                Assert.AreEqual("", TestUtil.ToTestableString(obj.EntityMetadata.UpdatedAt), true);
                Assert.AreEqual("my-service-instance", TestUtil.ToTestableString(obj.Name), true);
                Assert.AreEqual("04c18b7a-e04d-4d15-89b3-82e8c0a8f3df", TestUtil.ToTestableString(obj.ServicePlanGuid), true);
                Assert.AreEqual("4148ed17-5b5d-40e7-8c14-45cdd39ca752", TestUtil.ToTestableString(obj.SpaceGuid), true);
                Assert.AreEqual("CONFIGURATION", TestUtil.ToTestableString(obj.GatewayData), true);
                Assert.AreEqual("http://dashboard.example.com", TestUtil.ToTestableString(obj.DashboardUrl), true);
                Assert.AreEqual("managed_service_instance", TestUtil.ToTestableString(obj.Type), true);
                Assert.AreEqual("/v2/spaces/4148ed17-5b5d-40e7-8c14-45cdd39ca752", TestUtil.ToTestableString(obj.SpaceUrl), true);
                Assert.AreEqual("/v2/service_plans/04c18b7a-e04d-4d15-89b3-82e8c0a8f3df", TestUtil.ToTestableString(obj.ServicePlanUrl), true);
                Assert.AreEqual("/v2/service_instances/85c93513-6daf-4c69-9293-aff838a6101c/service_bindings", TestUtil.ToTestableString(obj.ServiceBindingsUrl), true);

            }
        }
예제 #19
0
        public override bool Execute()
        {
            logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this);

            try
            {
                CloudFoundryClient client = InitClient();

                Guid?spaceGuid = null;

                if (CFSpace.Length > 0 && CFOrganization.Length > 0)
                {
                    spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace);
                    if (spaceGuid == null)
                    {
                        return(false);
                    }
                }
                List <ProvisionedService> servicesList = new List <ProvisionedService>();
                try
                {
                    string[] provServs = CFServices.Split(';');

                    foreach (string service in provServs)
                    {
                        if (string.IsNullOrWhiteSpace(service) == false)
                        {
                            string[] serviceInfo = service.Split(',');

                            if (serviceInfo.Length != 3)
                            {
                                logger.LogError("Invalid service information in {0}", service);
                                continue;
                            }

                            ProvisionedService serviceDetails = new ProvisionedService();

                            serviceDetails.Name = serviceInfo[0].Trim();
                            serviceDetails.Type = serviceInfo[1].Trim();
                            serviceDetails.Plan = serviceInfo[2].Trim();

                            servicesList.Add(serviceDetails);
                        }
                    }
                }
                catch (Exception ex)
                {
                    logger.LogErrorFromException(ex);
                    logger.LogWarning("Error trying to obtain service information, trying to deserialize as xml");
                    servicesList = Utils.Deserialize <List <ProvisionedService> >(CFServices);
                }

                List <string> serviceGuids = new List <string>();

                foreach (ProvisionedService service in servicesList)
                {
                    logger.LogMessage("Creating {0} service {1}", service.Type, service.Name);
                    Guid?planGuid = null;
                    PagedResponseCollection <ListAllServicesResponse> allServicesList = client.Services.ListAllServices(new RequestOptions()
                    {
                        Query = "label:" + service.Type
                    }).Result;

                    foreach (var serviceInfo in allServicesList)
                    {
                        var planList = client.Services.ListAllServicePlansForService(new Guid(serviceInfo.EntityMetadata.Guid)).Result;

                        var plan = planList.Where(o => o.Name == service.Plan).FirstOrDefault();

                        if (plan != null)
                        {
                            planGuid = new Guid(plan.EntityMetadata.Guid);
                            break;
                        }
                    }
                    Guid?serviceInstanceGuid = null;
                    if ((serviceInstanceGuid = Utils.CheckForExistingService(service.Name, planGuid, client)) != null)
                    {
                        logger.LogMessage("Service {0} - {1} already exists -> skipping", service.Name, service.Type);
                        serviceGuids.Add(serviceInstanceGuid.Value.ToString());
                        continue;
                    }

                    CreateServiceInstanceRequest request = new CreateServiceInstanceRequest();

                    request.Name            = service.Name;
                    request.ServicePlanGuid = planGuid;
                    request.SpaceGuid       = spaceGuid;

                    CreateServiceInstanceResponse result = client.ServiceInstances.CreateServiceInstance(request).Result;

                    serviceGuids.Add(result.EntityMetadata.Guid);
                }

                CFServicesGuids = serviceGuids.ToArray();
            }
            catch (AggregateException exception)
            {
                List <string> messages = new List <string>();
                ErrorFormatter.FormatExceptionMessage(exception, messages);
                this.logger.LogError(string.Join(Environment.NewLine, messages));
                return(false);
            }

            return(true);
        }