public void TestCreateServiceInstanceResponse()
        {
            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""
  }
}";

            CreateServiceInstanceResponse obj = Utilities.DeserializeJson <CreateServiceInstanceResponse>(json);

            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);
        }
Пример #2
0
        public void TestCreateServiceInstanceResponse()
        {
            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""
  }
}";

            CreateServiceInstanceResponse obj = Utilities.DeserializeJson <CreateServiceInstanceResponse>(json);

            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);
        }
        public void TestCreateServiceInstanceResponse()
        {
            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""
  }
}";

            CreateServiceInstanceResponse obj = Utilities.DeserializeJson <CreateServiceInstanceResponse>(json);

            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);
        }
Пример #4
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());
            }
        }
Пример #5
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);
        }
Пример #6
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);
        }