internal static Guid?GetSpaceGuid(CloudFoundryClient client, TaskLogger logger, string cforganization, string cfspace) { Guid?spaceGuid = null; PagedResponseCollection <ListAllOrganizationsResponse> orgList = client.Organizations.ListAllOrganizations(new RequestOptions() { Query = "name:" + cforganization }).Result; if (orgList.Count() > 1) { logger.LogError("There are more than one organization with name {0}, organization names need to be unique", cforganization); return(null); } ListAllOrganizationsResponse orgInfo = orgList.FirstOrDefault(); if (orgInfo != null) { PagedResponseCollection <ListAllSpacesForOrganizationResponse> spaceList = client.Organizations.ListAllSpacesForOrganization(orgInfo.EntityMetadata.Guid.ToNullableGuid(), new RequestOptions() { Query = "name:" + cfspace }).Result; if (spaceList.Count() > 1) { logger.LogError("There are more than one space with name {0} in organization {1}", cfspace, cforganization); return(null); } if (spaceList.FirstOrDefault() != null) { spaceGuid = new Guid(spaceList.FirstOrDefault().EntityMetadata.Guid); } else { logger.LogError("Space {0} not found", cfspace); return(null); } } else { logger.LogError("Organization {0} not found", cforganization); return(null); } return(spaceGuid); }
internal static Guid?GetAppGuid(CloudFoundryClient client, string appName, Guid spaceGuid) { PagedResponseCollection <ListAllAppsForSpaceResponse> apps = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + appName }).Result; if (apps.Count() > 0) { var appGuid = apps.FirstOrDefault().EntityMetadata.Guid; return(appGuid.ToGuid()); } return(null); }
public override bool Execute() { this.CFOrganization = this.CFOrganization.Trim(); this.CFSpace = this.CFSpace.Trim(); this.Logger = new TaskLogger(this); var app = LoadAppFromManifest(); try { CloudFoundryClient client = InitClient(); Logger.LogMessage("Deleting application {0} from space {1}", app.Name, this.CFSpace); Guid?spaceGuid = null; if ((!string.IsNullOrWhiteSpace(this.CFSpace)) && (!string.IsNullOrWhiteSpace(this.CFOrganization))) { spaceGuid = Utils.GetSpaceGuid(client, this.Logger, this.CFOrganization, this.CFSpace); if (spaceGuid == null) { return(false); } } PagedResponseCollection <ListAllAppsForSpaceResponse> appList = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + app.Name }).Result; if (appList.Count() > 1) { Logger.LogError("There are more applications named {0} in space {1}", app.Name, this.CFSpace); return(false); } Guid appGuid = new Guid(appList.FirstOrDefault().EntityMetadata.Guid); if (this.CFDeleteRoutes == true) { Logger.LogMessage("Deleting routes associated with {0}", app.Name); var routeList = client.Apps.ListAllRoutesForApp(appGuid).Result; foreach (var route in routeList) { client.Routes.DeleteRoute(new Guid(route.EntityMetadata.Guid)).Wait(); } } if (this.CFDeleteServices == true) { Logger.LogMessage("Deleting services bound to {0}", app.Name); var serviceBindingList = client.Apps.ListAllServiceBindingsForApp(appGuid).Result; foreach (var serviceBind in serviceBindingList) { client.ServiceBindings.DeleteServiceBinding(new Guid(serviceBind.EntityMetadata.Guid)).Wait(); try { client.ServiceInstances.DeleteServiceInstance(serviceBind.ServiceInstanceGuid).Wait(); } catch (AggregateException ex) { foreach (Exception e in ex.Flatten().InnerExceptions) { if (e is CloudFoundryException) { Logger.LogWarning(e.Message); } else { this.Logger.LogError("Delete App failed", ex); return(false); } } } } } client.Apps.DeleteApp(appGuid).Wait(); } catch (Exception exception) { this.Logger.LogError("Delete App failed", exception); return(false); } return(true); }
public override bool Execute() { this.CFOrganization = this.CFOrganization.Trim(); this.CFSpace = this.CFSpace.Trim(); var app = LoadAppFromManifest(); this.Logger = new TaskLogger(this); CloudFoundryClient client = InitClient(); Guid?spaceGuid = null; Guid?stackGuid = null; try { if ((!string.IsNullOrWhiteSpace(this.CFSpace)) && (!string.IsNullOrWhiteSpace(this.CFOrganization))) { spaceGuid = Utils.GetSpaceGuid(client, this.Logger, this.CFOrganization, this.CFSpace); if (spaceGuid == null) { return(false); } } if (!string.IsNullOrWhiteSpace(app.StackName)) { PagedResponseCollection <ListAllStacksResponse> stackList = client.Stacks.ListAllStacks().Result; var stackInfo = stackList.Where(o => o.Name == app.StackName).FirstOrDefault(); if (stackInfo == null) { Logger.LogError("Stack {0} not found", app.StackName); return(false); } stackGuid = new Guid(stackInfo.EntityMetadata.Guid); } if (stackGuid.HasValue && spaceGuid.HasValue) { PagedResponseCollection <ListAllAppsForSpaceResponse> apps = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + app.Name }).Result; if (apps.Count() > 0) { this.CFAppGuid = apps.FirstOrDefault().EntityMetadata.Guid; UpdateAppRequest request = new UpdateAppRequest(); request.SpaceGuid = spaceGuid; request.StackGuid = stackGuid; request.EnvironmentJson = app.EnvironmentVariables; request.Memory = (int)app.Memory; request.Instances = app.InstanceCount; request.Buildpack = app.BuildpackUrl; request.Command = app.Command; if (app.DiskQuota.HasValue) { request.DiskQuota = app.DiskQuota.Value.ToString(System.Globalization.CultureInfo.InvariantCulture); } UpdateAppResponse response = client.Apps.UpdateApp(new Guid(this.CFAppGuid), request).Result; Logger.LogMessage("Updated app {0} with guid {1}", response.Name, response.EntityMetadata.Guid); } else { CreateAppRequest request = new CreateAppRequest(); request.Name = app.Name; request.SpaceGuid = spaceGuid; request.StackGuid = stackGuid; request.EnvironmentJson = app.EnvironmentVariables; request.Memory = (int)app.Memory; request.Instances = app.InstanceCount; request.Buildpack = app.BuildpackUrl; request.Command = app.Command; if (app.DiskQuota.HasValue) { request.DiskQuota = Convert.ToInt32(app.DiskQuota.Value, System.Globalization.CultureInfo.InvariantCulture); } CreateAppResponse response = client.Apps.CreateApp(request).Result; this.CFAppGuid = response.EntityMetadata.Guid; Logger.LogMessage("Created app {0} with guid {1}", app.Name, this.CFAppGuid); } } } catch (Exception exception) { this.Logger.LogError("Create App failed", exception); return(false); } return(true); }
public override bool Execute() { logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this); try { CloudFoundryClient client = InitClient(); Guid?spaceGuid = null; Guid?stackGuid = null; if (CFSpace.Length > 0 && CFOrganization.Length > 0) { spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace); if (spaceGuid == null) { return(false); } } if (CFStack.Length > 0) { PagedResponseCollection <ListAllStacksResponse> stackList = client.Stacks.ListAllStacks().Result; var stackInfo = stackList.Where(o => o.Name == CFStack).FirstOrDefault(); if (stackInfo == null) { logger.LogError("Stack {0} not found", CFStack); return(false); } stackGuid = new Guid(stackInfo.EntityMetadata.Guid); } if (stackGuid.HasValue && spaceGuid.HasValue) { PagedResponseCollection <ListAllAppsForSpaceResponse> apps = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + CFAppName }).Result; if (apps.Count() > 0) { CFAppGuid = apps.FirstOrDefault().EntityMetadata.Guid; UpdateAppRequest request = new UpdateAppRequest(); request.SpaceGuid = spaceGuid; request.StackGuid = stackGuid; if (CFEnvironmentJson != null) { request.EnvironmentJson = JsonConvert.DeserializeObject <Dictionary <string, string> >(CFEnvironmentJson); } if (CFAppMemory > 0) { request.Memory = CFAppMemory; } if (CFAppInstances > 0) { request.Instances = CFAppInstances; } if (CFAppBuildpack != null) { request.Buildpack = CFAppBuildpack; } UpdateAppResponse response = client.Apps.UpdateApp(new Guid(CFAppGuid), request).Result; logger.LogMessage("Updated app {0} with guid {1}", response.Name, response.EntityMetadata.Guid); } else { CreateAppRequest request = new CreateAppRequest(); request.Name = CFAppName; request.SpaceGuid = spaceGuid; request.StackGuid = stackGuid; if (CFEnvironmentJson != null) { request.EnvironmentJson = JsonConvert.DeserializeObject <Dictionary <string, string> >(CFEnvironmentJson); } if (CFAppMemory > 0) { request.Memory = CFAppMemory; } if (CFAppInstances > 0) { request.Instances = CFAppInstances; } if (CFAppBuildpack != null) { request.Buildpack = CFAppBuildpack; } CreateAppResponse response = client.Apps.CreateApp(request).Result; CFAppGuid = response.EntityMetadata.Guid; logger.LogMessage("Created app {0} with guid {1}", CFAppName, CFAppGuid); } } } 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); }
public override bool Execute() { logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this); try { CloudFoundryClient client = InitClient(); logger.LogMessage("Deleting application {0} from space {1}", CFAppName, CFSpace); Guid?spaceGuid = null; if (CFSpace.Length > 0 && CFOrganization.Length > 0) { spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace); if (spaceGuid == null) { return(false); } } PagedResponseCollection <ListAllAppsForSpaceResponse> appList = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + CFAppName }).Result; if (appList.Count() > 1) { logger.LogError("There are more applications named {0} in space {1}", CFAppName, CFSpace); return(false); } Guid appGuid = new Guid(appList.FirstOrDefault().EntityMetadata.Guid); if (CFDeleteRoutes == true) { logger.LogMessage("Deleting routes associated with {0}", CFAppName); var routeList = client.Apps.ListAllRoutesForApp(appGuid).Result; foreach (var route in routeList) { client.Routes.DeleteRoute(new Guid(route.EntityMetadata.Guid)).Wait(); } } if (CFDeleteServices == true) { logger.LogMessage("Deleting services bound to {0}", CFAppName); var serviceBindingList = client.Apps.ListAllServiceBindingsForApp(appGuid).Result; foreach (var serviceBind in serviceBindingList) { client.ServiceBindings.DeleteServiceBinding(new Guid(serviceBind.EntityMetadata.Guid)).Wait(); try { client.ServiceInstances.DeleteServiceInstance(serviceBind.ServiceInstanceGuid).Wait(); } catch (AggregateException ex) { foreach (Exception e in ex.Flatten().InnerExceptions) { if (e is CloudFoundryException) { logger.LogWarning(e.Message); } else { throw; } } } } } client.Apps.DeleteApp(appGuid).Wait(); } 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); }
public override bool Execute() { logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this); try { CloudFoundryClient client = InitClient(); logger.LogMessage("Unbinding service {0} from app {1}", CFServiceName, CFAppName); Guid?spaceGuid = null; if (CFSpace.Length > 0 && CFOrganization.Length > 0) { spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace); if (spaceGuid == null) { return(false); } } var servicesList = client.Spaces.ListAllServiceInstancesForSpace(spaceGuid, new RequestOptions() { Query = "name:" + CFServiceName }).Result; if (servicesList.Count() > 1) { logger.LogError("There are more services named {0} in space {1}", CFServiceName, CFSpace); return(false); } Guid serviceGuid = new Guid(servicesList.FirstOrDefault().EntityMetadata.Guid); PagedResponseCollection <ListAllAppsForSpaceResponse> appList = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + CFAppName }).Result; if (appList.Count() > 1) { logger.LogError("There are more applications named {0} in space {1}", CFAppName, CFSpace); return(false); } Guid appGuid = new Guid(appList.FirstOrDefault().EntityMetadata.Guid); var bindingsList = client.Apps.ListAllServiceBindingsForApp(appGuid).Result; foreach (var bind in bindingsList) { if (bind.ServiceInstanceGuid.Value == serviceGuid) { client.Apps.RemoveServiceBindingFromApp(appGuid, new Guid(bind.EntityMetadata.Guid)).Wait(); } } } 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); }
public override bool Execute() { logger = new Microsoft.Build.Utilities.TaskLoggingHelper(this); try { CloudFoundryClient client = InitClient(); logger.LogMessage("Unbinding route {0} from app {1}", CFRoute, CFAppName); string domain = string.Empty; string host = string.Empty; Utils.ExtractDomainAndHost(CFRoute, out domain, out host); if (domain.Length == 0 || host.Length == 0) { logger.LogError("Error extracting domain and host information from route {0}", CFRoute); return(false); } PagedResponseCollection <ListAllDomainsDeprecatedResponse> domainInfoList = client.DomainsDeprecated.ListAllDomainsDeprecated().Result; ListAllDomainsDeprecatedResponse domainInfo = domainInfoList.Where(o => o.Name == domain).FirstOrDefault(); Guid?spaceGuid = null; if (CFSpace.Length > 0 && CFOrganization.Length > 0) { spaceGuid = Utils.GetSpaceGuid(client, logger, CFOrganization, CFSpace); if (spaceGuid == null) { return(false); } } PagedResponseCollection <ListAllAppsForSpaceResponse> appList = client.Spaces.ListAllAppsForSpace(spaceGuid, new RequestOptions() { Query = "name:" + CFAppName }).Result; if (appList.Count() > 1) { logger.LogError("There are more applications named {0} in space {1}", CFAppName, CFSpace); return(false); } Guid appGuid = new Guid(appList.FirstOrDefault().EntityMetadata.Guid); PagedResponseCollection <ListAllRoutesForAppResponse> routeList = client.Apps.ListAllRoutesForApp(appGuid).Result; ListAllRoutesForAppResponse routeInfo = routeList.Where(o => o.Host == host && o.DomainGuid == new Guid(domainInfo.EntityMetadata.Guid)).FirstOrDefault(); if (routeInfo == null) { logger.LogError("Route {0} not found in {1}'s routes", CFRoute, CFAppName); return(false); } client.Routes.RemoveAppFromRoute(new Guid(routeInfo.EntityMetadata.Guid), appGuid).Wait(); } 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); }