@spinnaker/cloudfoundry 2025.0.6 → 2025.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/common/applicationName.validator.ts","../src/help/cloudfoundry.help.ts","../src/instance/details/CloudFoundryInstanceActions.tsx","../src/instance/details/sections/CloudFoundryInstanceDetailsSection.tsx","../src/instance/details/CloudFoundryInstanceDetails.tsx","../src/loadBalancer/loadBalancer.transformer.ts","../src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.tsx","../src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx","../src/presentation/forms/inputs/FormikConfigField.tsx","../src/presentation/forms/serverGroup/Buildpacks.tsx","../src/presentation/forms/serverGroup/EnvironmentVariables.tsx","../src/presentation/forms/serverGroup/HealthCheck.tsx","../src/presentation/forms/serverGroup/InstanceParameters.tsx","../src/presentation/forms/serverGroup/Routes.tsx","../src/presentation/forms/serverGroup/Services.tsx","../src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.tsx","../src/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.tsx","../src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.tsx","../src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx","../src/logo/cf.logo.svg","../src/pipeline/config/validation/cfTargetImpedance.validator.ts","../src/pipeline/config/validation/instanceSize.validator.ts","../src/pipeline/config/validation/requiredRoutes.validator.ts","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.ts","../src/serverGroup/configure/serverGroupCommandBuilder.service.cf.ts","../src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts","../src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.tsx","../src/deploymentStrategy/strategies/rollingredblack/AdditionalFields.tsx","../src/deploymentStrategy/CloudFoundryDeploymentStrategySelector.tsx","../../../node_modules/style-inject/dist/style-inject.es.js","../src/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.tsx","../src/serverGroup/configure/wizard/CreateServerGroupModal.tsx","../src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx","../src/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.ts","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.tsx","../src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.ts","../src/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.tsx","../src/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.ts","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.tsx","../src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.ts","../src/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.tsx","../src/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.ts","../src/pipeline/stages/deployService/ServiceTagsInput.tsx","../src/pipeline/stages/deployService/CreateServiceInstanceDirectInput.tsx","../src/pipeline/stages/deployService/CreateUserProvidedInput.tsx","../src/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.tsx","../src/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.ts","../src/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.ts","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.tsx","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.tsx","../src/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.ts","../src/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.ts","../src/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.ts","../src/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.ts","../src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx","../src/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.ts","../src/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.tsx","../src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts","../src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx","../src/presentation/widgets/recentLogs/CloudFoundryRecentLogs.tsx","../src/pipeline/stages/runJob/RunJobExecutionDetails.tsx","../src/pipeline/stages/runJob/cloudFoundryRunJob.module.ts","../src/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.tsx","../src/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.tsx","../src/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.ts","../src/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.ts","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.tsx","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.tsx","../src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts","../src/serverGroup/details/sections/ServerGroupInformationSection.tsx","../src/serverGroup/details/sections/ApplicationManagerSection.tsx","../src/serverGroup/details/sections/MetricsSection.tsx","../src/serverGroup/details/sections/ServerGroupSizingSection.tsx","../src/serverGroup/details/sections/HealthCheckSection.tsx","../src/serverGroup/details/sections/PackageSection.tsx","../src/serverGroup/details/sections/BuildSection.tsx","../src/serverGroup/details/sections/BoundServicesSection.tsx","../src/serverGroup/details/sections/EnvironmentVariablesSection.tsx","../src/serverGroup/serverGroup.transformer.ts","../src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx","../src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx","../src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx","../src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx","../src/serverGroup/details/cloudFoundryServerGroupActions.tsx","../src/serverGroup/details/cfServerGroupDetailsGetter.ts","../src/cf.module.ts","../src/cf.settings.ts"],"sourcesContent":["import { ApplicationNameValidator } from '@spinnaker/core';\n\nclass CloudFoundryApplicationNameValidator {\n private static MAX_RESOURCE_NAME_LENGTH = 63;\n\n private static validateSpecialCharacters(name: string, _warnings: string[], errors: string[]): void {\n const alphanumPattern = /^([a-zA-Z][a-zA-Z0-9]*)?$/;\n if (!alphanumPattern.test(name)) {\n const alphanumWithDashPattern = /^([a-zA-Z][a-zA-Z0-9-]*)?$/;\n if (!alphanumWithDashPattern.test(name)) {\n errors.push(\n 'The application name must begin with a letter and must contain only letters, digits or dashes. ' +\n 'No special characters are allowed.',\n );\n }\n }\n }\n\n private static validateLength(name: string, errors: string[]): void {\n if (name.length > CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH) {\n errors.push(\n `The maximum length for an application in Cloud Foundry is ${CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH} characters.`,\n );\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name && name.length) {\n CloudFoundryApplicationNameValidator.validateSpecialCharacters(name, warnings, errors);\n CloudFoundryApplicationNameValidator.validateLength(name, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\n\nApplicationNameValidator.registerValidator('cloudfoundry', new CloudFoundryApplicationNameValidator());\n","import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {\n 'cf.service.deploy.timeout':\n '(Optional) <b>Override Deploy Timeout</b> is the maximum amount of time allowed for service deployment before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and a service may still be created.',\n 'cf.service.destroy.timeout':\n '(Optional) <b>Override Destroy Timeout</b> is the maximum amount of time allowed for service destruction before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and the service may be deleted.',\n 'cf.serverGroup.stack':\n '(Optional) <b>Stack</b> is one of the core naming components of a cluster, used to create vertical stacks of dependent services for integration testing.',\n 'cf.serverGroup.detail':\n '(Optional) <b>Detail</b> is a string of free-form alphanumeric characters and hyphens to describe any other variables.',\n 'cf.serverGroup.startApplication':\n '<b>Start on creation</b> is a boolean value that determines if the server group is started upon creation. Default value is <code>true</code>.',\n 'cf.serverGroup.requiredRoutes':\n '<b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.serverGroup.routes':\n '(Optional) <b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.artifact.package': `<p>This option allows you to create a new server group from an existing Droplet. You can use this to relocate an existing Cloud Foundry application from one space to another or to launch a clone of an application with different root filesystem or resource settings.</p>`,\n 'cf.artifact.trigger.account': `<p>Specify an artifact account if the trigger source produces an artifact that requires authentication credentials to retrieve. Otherwise, leave blank.</p>`,\n 'cf.runJob.logsUrl':\n '<p>(Optional) A templated URL to an external logging system. The URL is used in the pipeline execution stage task details.</p>' +\n '<p><a href=\"http://spinnaker.github.io/guides/user/pipeline-expressions\" target=\"_blank\">Pipeline expressions</a> can be used to interpolate values from the stage context, for example:' +\n '<ul>' +\n '<li><code>${appGuid}</code> the selected cluster CF app GUID.</li>' +\n '<li><code>${name}</code> the task name.</li>' +\n '</ul>' +\n '</p>',\n 'cf.runJob.jobName': '(Optional) If left empty, a random string will be generated.',\n};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application } from '@spinnaker/core';\nimport { ConfirmationModalService, InstanceWriter, ReactInjector } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../domain';\n\nexport interface ICloudFoundryInstanceActionsProps {\n application: Application;\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceActions extends React.Component<ICloudFoundryInstanceActionsProps> {\n private terminateInstance = () => {\n const { application, instance } = this.props;\n const instanceClone = cloneDeep(instance) as any;\n instanceClone.placement = {};\n instanceClone.id = instance.name;\n const taskMonitor = {\n application: application,\n title: 'Terminating ' + instance.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: instance.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n return InstanceWriter.terminateInstance(instance, application, { cloudProvider: 'cloudfoundry' });\n };\n\n ConfirmationModalService.confirm({\n header: 'Really terminate ' + instance.name + '?',\n buttonText: 'Terminate',\n account: instance.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Instance Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.terminateInstance}>\n Terminate\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../../domain';\n\nexport interface ICloudFoundryInstanceDetailsSectionProps {\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceDetailsSection extends React.Component<ICloudFoundryInstanceDetailsSectionProps> {\n constructor(props: ICloudFoundryInstanceDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { instance } = this.props;\n return (\n <div>\n <CollapsibleSection heading=\"Instance Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Launched</dt>\n <dd>{timestamp(instance.launchTime)}</dd>\n <dt>In</dt>\n <dd>\n <AccountTag account={instance.account} />\n </dd>\n <dt>Region</dt>\n <dd>{instance.region}</dd>\n </dl>\n </CollapsibleSection>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>\n <span className={'glyphicon glyphicon-' + instance.healthState + '-triangle'} />\n </dt>\n <dd>{instance.healthState}</dd>\n\n {instance.details && (\n <div>\n <dt>Details</dt>\n <dd>{instance.details}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport { flattenDeep } from 'lodash';\nimport React from 'react';\n\nimport type { Application, ILoadBalancer } from '@spinnaker/core';\nimport { InstanceReader, RecentHistoryService, Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryInstanceActions } from './CloudFoundryInstanceActions';\nimport type { ICloudFoundryInstance } from '../../domain';\nimport { CloudFoundryInstanceDetailsSection } from './sections';\n\ninterface InstanceFromStateParams {\n instanceId: string;\n}\n\ninterface InstanceManager {\n account: string;\n region: string;\n category: string; // e.g., serverGroup, loadBalancer.\n name: string; // Parent resource name, not instance name.\n instances: ICloudFoundryInstance[];\n}\n\ninterface ICloudFoundryInstanceDetailsState {\n instance?: ICloudFoundryInstance;\n instanceIdNotFound: string;\n loading: boolean;\n}\n\ninterface ICloudFoundryInstanceDetailsProps {\n app: Application;\n instance: InstanceFromStateParams;\n loading: boolean;\n}\n\n@UIRouterContext\nexport class CloudFoundryInstanceDetails extends React.Component<\n ICloudFoundryInstanceDetailsProps,\n ICloudFoundryInstanceDetailsState\n> {\n constructor(props: ICloudFoundryInstanceDetailsProps) {\n super(props);\n\n this.state = {\n loading: true,\n instanceIdNotFound: props.instance.instanceId,\n };\n }\n\n public componentDidMount(): void {\n this.props.app.ready().then(() => this.retrieveInstance(this.props.instance));\n }\n\n private retrieveInstance(instanceFromParams: InstanceFromStateParams): void {\n const instanceLocatorPredicate = (dataSource: InstanceManager) => {\n return dataSource.instances.some((possibleMatch) => possibleMatch.id === instanceFromParams.instanceId);\n };\n\n const dataSources: InstanceManager[] = flattenDeep([\n this.props.app.getDataSource('serverGroups').data,\n this.props.app.getDataSource('loadBalancers').data,\n this.props.app\n .getDataSource('loadBalancers')\n .data.map((loadBalancer: ILoadBalancer) => loadBalancer.serverGroups),\n ]);\n\n const instanceManager = dataSources.find(instanceLocatorPredicate);\n\n if (instanceManager) {\n const recentHistoryExtraData: { [key: string]: string } = {\n region: instanceManager.region,\n account: instanceManager.account,\n };\n if (instanceManager.category === 'serverGroup') {\n recentHistoryExtraData.serverGroup = instanceManager.name;\n }\n RecentHistoryService.addExtraDataToLatest('instances', recentHistoryExtraData);\n InstanceReader.getInstanceDetails(instanceManager.account, instanceManager.region, instanceFromParams.instanceId)\n .then((instanceDetails: ICloudFoundryInstance) => {\n instanceDetails.account = instanceManager.account;\n instanceDetails.region = instanceManager.region;\n return instanceDetails;\n })\n .then((instance) => {\n this.setState({\n instance,\n loading: false,\n });\n });\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { instance, instanceIdNotFound, loading } = this.state;\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{instanceIdNotFound}</h3>\n </div>\n </div>\n );\n const instanceHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <span className={'glyphicon glyphicon-hdd ' + instance.healthState} />\n <h3 className=\"horizontal middle space-between flex-1\">{instance.name}</h3>\n </div>\n <CloudFoundryInstanceActions application={app} instance={instance} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const instanceContent = () => (\n <div className=\"content\">\n <CloudFoundryInstanceDetailsSection instance={instance} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && instance && instanceHeader()}\n {!loading && instance && instanceContent()}\n {!loading && !instance && notFoundHeader()}\n {!loading && !instance && notFoundContent()}\n </div>\n );\n }\n}\n","import { camelCase, chain, cloneDeep, has } from 'lodash';\n\nimport type {\n Application,\n IInstance,\n IInstanceCounts,\n ILoadBalancer,\n ILoadBalancerUpsertCommand,\n IServerGroup,\n} from '@spinnaker/core';\nimport type {\n ICloudFoundryLoadBalancer,\n ICloudFoundryLoadBalancerUpsertCommand,\n ICloudFoundryServerGroup,\n ICloudFoundrySpace,\n} from '../domain';\n\nexport class CloudFoundryLoadBalancerUpsertDescription\n implements ILoadBalancerUpsertCommand, ICloudFoundryLoadBalancer {\n public id: string;\n public credentials: string;\n public account: string;\n public loadBalancerName: string;\n public name: string;\n public region: string;\n public cloudProvider: string;\n public serverGroups: ICloudFoundryServerGroup[];\n public space: ICloudFoundrySpace;\n\n constructor(loadBalancer: ICloudFoundryLoadBalancer) {\n this.id = loadBalancer.id;\n this.credentials = loadBalancer.account;\n this.account = this.credentials;\n this.cloudProvider = loadBalancer.cloudProvider;\n this.loadBalancerName = loadBalancer.name;\n this.name = loadBalancer.name;\n this.region = loadBalancer.region;\n this.serverGroups = loadBalancer.serverGroups;\n this.space = loadBalancer.space;\n }\n}\n\nexport class CloudFoundryLoadBalancerTransformer {\n public static $inject = ['$q'];\n constructor(private $q: ng.IQService) {}\n\n public normalizeLoadBalancer(loadBalancer: ILoadBalancer): PromiseLike<ILoadBalancer> {\n loadBalancer.provider = loadBalancer.type;\n loadBalancer.instanceCounts = this.buildInstanceCounts(loadBalancer.serverGroups);\n loadBalancer.instances = [];\n loadBalancer.serverGroups.forEach((serverGroup) => {\n serverGroup.account = loadBalancer.account;\n serverGroup.region = loadBalancer.region;\n serverGroup.cloudProvider = loadBalancer.provider;\n\n if (serverGroup.detachedInstances) {\n serverGroup.detachedInstances = (serverGroup.detachedInstances as any).map((id: string) => ({ id }));\n }\n serverGroup.instances = serverGroup.instances\n .concat(serverGroup.detachedInstances || [])\n .map((instance: any) => this.transformInstance(instance, loadBalancer));\n });\n\n const activeServerGroups = loadBalancer.serverGroups.filter((sg) => !sg.isDisabled);\n loadBalancer.instances = chain(activeServerGroups).map('instances').flatten().value() as IInstance[];\n return this.$q.resolve(loadBalancer);\n }\n\n public constructNewCloudFoundryLoadBalancerTemplate(\n application: Application,\n ): ICloudFoundryLoadBalancerUpsertCommand {\n return {\n cloudProvider: 'cloudfoundry',\n credentials: undefined,\n name: application.name,\n id: undefined,\n host: '',\n path: '',\n port: '',\n region: '',\n domain: '',\n serverGroups: [],\n routes: [],\n };\n }\n\n public convertLoadBalancerForEditing(\n loadBalancer: ICloudFoundryLoadBalancer,\n application: Application,\n ): PromiseLike<ICloudFoundryLoadBalancer> {\n return application\n .getDataSource('loadBalancers')\n .ready()\n .then(() => {\n const upToDateLoadBalancer = application\n .getDataSource('loadBalancers')\n .data.find((candidate: ILoadBalancer) => {\n return candidate.name === loadBalancer.name && candidate.account === loadBalancer.account;\n });\n\n if (upToDateLoadBalancer) {\n loadBalancer.serverGroups = cloneDeep(upToDateLoadBalancer.serverGroups);\n }\n return loadBalancer;\n });\n }\n\n public convertLoadBalancerToUpsertDescription(\n loadBalancer: ICloudFoundryLoadBalancer,\n ): CloudFoundryLoadBalancerUpsertDescription {\n return new CloudFoundryLoadBalancerUpsertDescription(loadBalancer);\n }\n\n private buildInstanceCounts(serverGroups: IServerGroup[]): IInstanceCounts {\n const instanceCounts: IInstanceCounts = chain(serverGroups)\n .map('instances')\n .flatten()\n .reduce(\n (acc: IInstanceCounts, instance: any) => {\n if (has(instance, 'health.state')) {\n acc[camelCase(instance.health.state)]++;\n }\n return acc;\n },\n { up: 0, down: 0, outOfService: 0, succeeded: 0, failed: 0, starting: 0, unknown: 0 },\n )\n .value();\n\n instanceCounts.outOfService += chain(serverGroups).map('detachedInstances').flatten().value().length;\n return instanceCounts;\n }\n\n private transformInstance(instance: any, loadBalancer: ILoadBalancer) {\n instance.provider = loadBalancer.type;\n instance.account = loadBalancer.account;\n instance.region = loadBalancer.region;\n instance.loadBalancers = [loadBalancer.name];\n const health = instance.health || {};\n instance.healthState = health.state ?? 'OutOfService';\n instance.health = [health];\n\n return instance as IInstance;\n }\n}\n","import React from 'react';\n\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application, ILoadBalancer, ILoadBalancerDeleteCommand } from '@spinnaker/core';\nimport { ConfirmationModalService, LoadBalancerWriter, ReactInjector } from '@spinnaker/core';\n\nexport interface ICloudFoundryLoadBalancerActionsProps {\n application: Application;\n loadBalancer: ILoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerActions extends React.Component<ICloudFoundryLoadBalancerActionsProps> {\n private deleteLoadBalancer = () => {\n const { application, loadBalancer } = this.props;\n const taskMonitor = {\n application: application,\n title: 'Deleting ' + loadBalancer.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: loadBalancer.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n const loadBalancerDeleteCommand: ILoadBalancerDeleteCommand = {\n cloudProvider: loadBalancer.cloudProvider,\n credentials: loadBalancer.account,\n regions: [loadBalancer.region],\n loadBalancerName: loadBalancer.name,\n };\n return LoadBalancerWriter.deleteLoadBalancer(loadBalancerDeleteCommand, application);\n };\n\n ConfirmationModalService.confirm({\n header: 'Really delete ' + loadBalancer.name + '?',\n buttonText: 'Delete ' + loadBalancer.name,\n account: loadBalancer.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Load Balancer Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.deleteLoadBalancer}>\n Delete Load Balancer\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport React from 'react';\n\nimport { AccountTag, CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerDetailsSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerDetailsSection extends React.Component<\n ICloudFoundryLoadBalancerDetailsSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Load Balancer Details\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>In</dt>\n <dd>\n <AccountTag account={loadBalancer.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{loadBalancer.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{loadBalancer.space.name}</dd>\n {loadBalancer.serverGroups && (\n <>\n <dt>Server Groups</dt>\n <dd>\n <ul>\n {loadBalancer.serverGroups.map((serverGroup, index) => {\n return (\n <li key={index}>\n <UISref\n to=\"^.serverGroup\"\n params={{\n region: serverGroup.region,\n accountId: serverGroup.account,\n serverGroup: serverGroup.name,\n provider: 'cloudfoundry',\n }}\n >\n <a>{serverGroup.name}</a>\n </UISref>\n </li>\n );\n })}\n </ul>\n </dd>\n </>\n )}\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection, HealthCounts } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerStatusSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerStatusSection extends React.Component<\n ICloudFoundryLoadBalancerStatusSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerStatusSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <HealthCounts className=\"pull-left\" container={loadBalancer.instanceCounts} />\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerLinksSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerLinksSection extends React.Component<ICloudFoundryLoadBalancerLinksSectionProps> {\n constructor(props: ICloudFoundryLoadBalancerLinksSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Application links\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>HTTP</dt>\n <dd>\n <a href={'http://' + loadBalancer.name}>{'http://' + loadBalancer.name}</a>\n </dd>\n <dt>HTTPS</dt>\n <dd>\n <a href={'https://' + loadBalancer.name}>{'https://' + loadBalancer.name}</a>\n </dd>\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport React from 'react';\n\nimport type { Application, LoadBalancerWriter } from '@spinnaker/core';\nimport { Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryLoadBalancerActions } from './CloudFoundryLoadBalancerActions';\nimport type { ICloudFoundryLoadBalancer } from '../../domain';\nimport { CloudFoundryLoadBalancerDetailsSection } from './sections';\nimport { CloudFoundryLoadBalancerLinksSection } from './sections/CloudFoundryLoadBalancerLinksSection';\nimport { CloudFoundryLoadBalancerStatusSection } from './sections/CloudFoundryLoadBalancerStatusSection';\n\ninterface ILoadBalancer {\n name: string;\n accountId: string;\n region: string;\n}\n\ninterface ICloudFoundryLoadBalancerDetailsState {\n loadBalancer: ICloudFoundryLoadBalancer;\n loadBalancerNotFound?: string;\n loading: boolean;\n refreshListenerUnsubscribe: () => void;\n}\n\nexport interface ICloudFoundryLoadBalancerDetailsProps {\n app: Application;\n loadBalancer: ILoadBalancer;\n loadBalancerWriter: LoadBalancerWriter;\n}\n\n@UIRouterContext\nexport class CloudFoundryLoadBalancerDetails extends React.Component<\n ICloudFoundryLoadBalancerDetailsProps,\n ICloudFoundryLoadBalancerDetailsState\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsProps) {\n super(props);\n this.state = {\n loading: true,\n loadBalancer: undefined,\n refreshListenerUnsubscribe: () => {},\n };\n\n props.app\n .getDataSource('loadBalancers')\n .ready()\n .then(() => this.extractLoadBalancer());\n }\n\n public componentWillUnmount(): void {\n this.state.refreshListenerUnsubscribe();\n }\n\n private extractLoadBalancer(): void {\n const { name } = this.props.loadBalancer;\n const loadBalancer: ICloudFoundryLoadBalancer = this.props.app\n .getDataSource('loadBalancers')\n .data.find((test: ICloudFoundryLoadBalancer) => {\n return test.name === name && test.account === this.props.loadBalancer.accountId;\n });\n\n this.setState({\n loading: false,\n loadBalancer,\n });\n\n this.state.refreshListenerUnsubscribe();\n\n if (loadBalancer) {\n this.setState({\n refreshListenerUnsubscribe: this.props.app\n .getDataSource('loadBalancers')\n .onRefresh(null, () => this.extractLoadBalancer()),\n });\n } else {\n this.setState({\n refreshListenerUnsubscribe: () => {},\n });\n // this.autoClose();\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { loadBalancer, loadBalancerNotFound, loading } = this.state;\n\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancerNotFound}</h3>\n </div>\n </div>\n );\n const loadBalancerHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <i className=\"fa icon-sitemap\" />\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancer.name}</h3>\n </div>\n <CloudFoundryLoadBalancerActions application={app} loadBalancer={loadBalancer} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const loadBalancerContent = () => (\n <div className=\"content\">\n <CloudFoundryLoadBalancerDetailsSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerStatusSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerLinksSection loadBalancer={loadBalancer} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && !!loadBalancer && loadBalancerHeader()}\n {!loading && !!loadBalancer && loadBalancerContent()}\n {!loading && !loadBalancer && notFoundHeader()}\n {!loading && !loadBalancer && notFoundContent()}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IFormikConfigFieldProps {\n label: string;\n helpKey?: string;\n children?: React.ReactNode;\n}\n\nexport class FormikConfigField extends React.Component<IFormikConfigFieldProps> {\n constructor(props: IFormikConfigFieldProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { label, helpKey, children } = this.props;\n return (\n <div className={'StandardFieldLayout flex-container-h baseline margin-between-lg'}>\n <label className={`sm-label-right`}>\n <span className=\"label-text\">{label} </span>\n {helpKey && <HelpField id={helpKey} />}\n </label>\n <div className={`flex-grow`}>{children}</div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IBuildpacksProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class Buildpacks extends React.Component<IBuildpacksProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Buildpacks</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const buildpacks: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {buildpacks.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Buildpack\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../domain';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IEnvironmentVariablesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class EnvironmentVariables extends React.Component<IEnvironmentVariablesProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Environment Variables</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const environmentVariables: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed tags\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n {environmentVariables.map((_, index: number) => {\n const envPath = `${fieldName}[${index}]`;\n return (\n <tr key={index}>\n <td>\n <FormikFormField\n name={`${envPath}.key`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <FormikFormField\n name={`${envPath}.value`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <a className=\"btn btn-link sm-label\">\n <span\n className=\"glyphicon glyphicon-trash\"\n onClick={() => arrayHelpers.remove(index)}\n />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={3}>\n <button\n type=\"button\"\n className=\"add-new col-md-12\"\n onClick={() => arrayHelpers.push({ key: '', value: '' } as ICloudFoundryEnvVar)}\n >\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Environment Variable\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, RadioButtonInput, TextInput } from '@spinnaker/core';\n\nexport interface IHealthCheckProps {\n healthCheckHttpEndpointFieldName: string;\n healthCheckType: string;\n healthCheckTypeFieldName: string;\n onHealthCheckHttpEndpointChange?: (value: string) => void;\n onHealthCheckTypeChange?: (value: string) => void;\n}\n\nexport class HealthCheck extends React.Component<IHealthCheckProps> {\n private HEALTH_CHECK_TYPE_OPTIONS = [\n { label: 'port', value: 'port' },\n { label: 'HTTP', value: 'http' },\n { label: 'process', value: 'process' },\n ];\n\n public render() {\n const {\n healthCheckTypeFieldName,\n healthCheckType,\n healthCheckHttpEndpointFieldName,\n onHealthCheckTypeChange,\n onHealthCheckHttpEndpointChange,\n } = this.props;\n\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckTypeFieldName}\n label=\"Health Check Type\"\n input={(props) => <RadioButtonInput {...props} inline={true} options={this.HEALTH_CHECK_TYPE_OPTIONS} />}\n onChange={(value) => {\n onHealthCheckTypeChange && onHealthCheckTypeChange(value);\n }}\n />\n </div>\n {healthCheckType === 'http' && (\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckHttpEndpointFieldName}\n label=\"Endpoint\"\n input={(props) => <TextInput {...props} required={true} />}\n onChange={(value) => {\n onHealthCheckHttpEndpointChange && onHealthCheckHttpEndpointChange(value);\n }}\n required={true}\n />\n </div>\n )}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\n\nexport interface IInstanceParametersProps {\n diskQuotaFieldName: string;\n instancesFieldName: string;\n memoryFieldName: string;\n onDiskQuotaChange?: (value: string) => void;\n onInstancesChange?: (value: string) => void;\n onMemoryChange?: (value: string) => void;\n}\n\nexport class InstanceParameters extends React.Component<IInstanceParametersProps> {\n public render() {\n const {\n diskQuotaFieldName,\n instancesFieldName,\n memoryFieldName,\n onDiskQuotaChange,\n onInstancesChange,\n onMemoryChange,\n } = this.props;\n\n return (\n <div>\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={memoryFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Memory\"\n onChange={(value) => {\n onMemoryChange && onMemoryChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={diskQuotaFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Disk Quota\"\n onChange={(value) => {\n onDiskQuotaChange && onDiskQuotaChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={instancesFieldName}\n input={(props) => <TextInput type=\"number\" {...props} />}\n label=\"Instances\"\n onChange={(value) => {\n onInstancesChange && onInstancesChange(value);\n }}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, HelpField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IRoutesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n isRequired?: boolean;\n singleRouteOnly?: boolean;\n}\n\nexport class Routes extends React.Component<IRoutesProps> {\n public render() {\n const { fieldName, isRequired, onChange, singleRouteOnly } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>{singleRouteOnly ? 'Route' : 'Routes'}</b>\n &nbsp;\n {!isRequired && <HelpField id=\"cf.serverGroup.routes\" />}\n {!!isRequired && <HelpField id=\"cf.serverGroup.requiredRoutes\" />}\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const routes: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {routes.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td hidden={singleRouteOnly}>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr hidden={singleRouteOnly}>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Route\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IServicesProps {\n fieldName: string;\n}\n\nexport const Services: React.SFC<IServicesProps> = ({ fieldName }: IServicesProps) => {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Bind Services</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const services: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {services.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Service\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n};\n","import { first, isNil, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select, { Creatable } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IMoniker, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, StageConfigField } from '@spinnaker/core';\n\nexport interface IAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n component: any;\n componentName?: string;\n isSingleRegion?: boolean;\n onComponentUpdate?: (component: any) => void;\n}\n\nexport interface IAccountRegionClusterSelectorState {\n [k: string]: any;\n\n availableRegions: string[];\n clusterField: string;\n clusters: string[];\n componentName: string;\n}\n\nexport class AccountRegionClusterSelector extends React.Component<\n IAccountRegionClusterSelectorProps,\n IAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IAccountRegionClusterSelectorProps) {\n super(props);\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField: clusterField,\n clusters: [],\n componentName: props.componentName || '',\n [clusterField]: props.component[clusterField],\n };\n }\n\n public componentDidMount(): void {\n this.setRegionList(this.props.component.credentials);\n this.setClusterList(\n this.props.component.credentials,\n this.props.isSingleRegion ? [this.props.component.region] : this.props.component.regions,\n );\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n\n const clusterField = this.props.component[this.state.clusterField];\n if (clusterField && !clusters.includes(clusterField)) {\n clusters.push(clusterField);\n }\n this.setState({ clusters });\n });\n };\n\n public onAccountUpdate = (option: Option<string>): void => {\n const credentials = option.value;\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n credentials,\n region: '',\n regions: [],\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionsUpdate = (option: Option<string>): void => {\n const regions = option.map((o: Option) => o.value);\n this.setClusterList(this.props.component.credentials, regions);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n regions,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionUpdate = (option: Option<string>): void => {\n const region = option.value;\n this.setClusterList(this.props.component.credentials, [region]);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n region,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onClusterUpdate = (option: Option<string>): void => {\n const clusterName = option.value;\n const filterByCluster = AppListExtractor.monikerClusterNameFilter(clusterName);\n const clusterMoniker = first(uniq(AppListExtractor.getMonikers([this.props.application], filterByCluster)));\n let moniker: IMoniker;\n\n if (isNil(clusterMoniker)) {\n // remove the moniker from the stage if one doesn't exist.\n moniker = undefined;\n } else {\n // clusters don't contain sequences, so null it out.\n clusterMoniker.sequence = null;\n moniker = clusterMoniker;\n }\n\n if (option.className) {\n const clusters = this.state.clusters;\n clusters.push(clusterName);\n this.setState(clusters);\n }\n\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n [this.state.clusterField]: clusterName,\n moniker,\n });\n };\n\n public render() {\n const { accounts, isSingleRegion, component } = this.props;\n const { availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <>\n <StageConfigField label=\"Account\">\n <Select\n name={componentName ? `${componentName}.credentials` : 'credentials'}\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={component.credentials}\n onChange={this.onAccountUpdate}\n />\n </StageConfigField>\n\n {!isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.regions` : 'regions'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={component.regions}\n onChange={this.onRegionsUpdate}\n />\n </StageConfigField>\n )}\n {isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.region` : 'region'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={false}\n clearable={false}\n value={component.region}\n onChange={this.onRegionUpdate}\n />\n </StageConfigField>\n )}\n <StageConfigField label=\"Cluster\" helpKey={'pipeline.config.findAmi.cluster'}>\n <Creatable\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n options={\n clusters &&\n clusters.map((c: string) => ({\n label: c,\n value: c,\n }))\n }\n clearable={false}\n value={component[clusterField]}\n onChange={this.onClusterUpdate}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, FormikFormField, ReactSelectInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup';\n\nexport interface IFormikAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n componentName?: string;\n credentialsField?: string;\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface IFormikAccountRegionClusterSelectorState {\n availableRegions: string[];\n cloudProvider: string;\n clusterField: string;\n clusters: string[];\n componentName: string;\n credentialsField: string;\n}\n\nexport class FormikAccountRegionClusterSelector extends React.Component<\n IFormikAccountRegionClusterSelectorProps,\n IFormikAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikAccountRegionClusterSelectorProps) {\n super(props);\n const credentialsField = props.credentialsField || 'credentials';\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField,\n clusters: [],\n componentName: props.componentName || '',\n credentialsField,\n };\n }\n\n public componentDidMount(): void {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n const region = get(formik.values, componentName ? `${componentName}.region` : 'region', undefined);\n this.setRegionList(credentials);\n this.setClusterList(credentials, [region]);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n this.setState({ clusters });\n });\n };\n\n public accountChanged = (credentials: string): void => {\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n };\n\n public regionChanged = (region: string): void => {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n this.setClusterList(credentials, [region]);\n };\n\n public render() {\n const { accounts } = this.props;\n const { credentialsField, availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`}\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.region` : 'region'}\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={availableRegions}\n clearable={false}\n />\n )}\n onChange={this.regionChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n label=\"Cluster\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={clusters}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\nexport interface ICloudFoundryAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryAsgStageConfig extends React.Component<IStageConfigProps, ICloudFoundryAsgStageConfigState> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { target } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryLoadBalancersExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'credentials', undefined);\n const region = get(context, 'region', undefined);\n const loadBalancerNames = get(context, 'loadBalancerNames', undefined);\n const serverGroupName = get(context, 'serverGroupName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Server Group Name</dt>\n <dd>\n {serverGroupName}\n <br />\n </dd>\n <dt>Load Balancers</dt>\n <dd>\n {loadBalancerNames.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// TODO: refactor this to not use namespace\n// eslint-disable-next-line\nexport namespace CloudFoundryLoadBalancersExecutionDetails {\n export const title = 'cloudfoundryLoadBalancersConfig';\n}\n","import type { Formik } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpinFormik, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { Routes } from '../../forms/serverGroup';\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryLoadBalancerStageConfigProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\ninterface ICloudFoundryLoadBalancersValues {\n routes: string[];\n}\n\ninterface ICloudFoundryLoadBalancersStageConfigState {\n accounts: IAccount[];\n application: Application;\n initialValues: ICloudFoundryLoadBalancersValues;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryLoadBalancersStageConfig extends React.Component<\n ICloudFoundryLoadBalancerStageConfigProps,\n ICloudFoundryLoadBalancersStageConfigState\n> {\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancersValues>>();\n\n constructor(props: ICloudFoundryLoadBalancerStageConfigProps) {\n super(props);\n const { loadBalancerNames } = props.stage;\n const routes = loadBalancerNames && loadBalancerNames.length ? loadBalancerNames : [''];\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n loadBalancerNames: routes,\n });\n this.state = {\n accounts: [],\n application: props.application,\n initialValues: {\n routes,\n },\n pipeline: props.pipeline,\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n loadBalancerNames: stage.loadBalancerNames,\n });\n };\n\n public render() {\n const { stage } = this.props;\n const { accounts, application, initialValues, pipeline } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <SpinFormik<ICloudFoundryLoadBalancersValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={null}\n render={() => {\n return (\n <Routes\n fieldName={'routes'}\n isRequired={true}\n singleRouteOnly={true}\n onChange={(routes: string[]) => {\n stage.loadBalancerNames = routes;\n this.componentUpdated(stage);\n }}\n />\n );\n }}\n />\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'service.instance.name', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceExecutionDetails {\n export const title = 'cloudfoundryServiceConfig';\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceKeyExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const serviceKeyName = get(context, 'serviceKeyName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Service Key Name</dt>\n <dd>\n {serviceKeyName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceKeyExecutionDetails {\n export const title = 'cloudfoundryServiceKeyConfig';\n}\n","import type { IDeferred } from 'angular';\nimport type { IModalServiceInstance } from 'angular-ui-bootstrap';\nimport type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport { $q } from 'ngimport';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type {\n Application,\n IAccount,\n ILoadBalancerModalProps,\n IModalComponentProps,\n IServerGroup,\n} from '@spinnaker/core';\nimport {\n AccountService,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { AccountRegionClusterSelector, Routes } from '../../presentation';\n\nexport interface ICreateCloudFoundryMapLoadBalancerState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n selectedValues: ICloudFoundryLoadBalancerModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerModalProps extends IModalComponentProps {\n application: Application;\n}\n\nexport interface ICloudFoundryLoadBalancerModalValues {\n credentials: string;\n region: string;\n cluster: string;\n routes: string[];\n}\n\nexport class CloudFoundryMapLoadBalancerModal extends React.Component<\n ICloudFoundryLoadBalancerModalProps,\n ICreateCloudFoundryMapLoadBalancerState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerModalValues>>();\n private $uibModalInstanceEmulation: IModalServiceInstance & { deferred?: IDeferred<any> };\n\n constructor(props: ICloudFoundryLoadBalancerModalProps) {\n super(props);\n\n const deferred = $q.defer();\n const promise = deferred.promise;\n this.$uibModalInstanceEmulation = {\n result: promise,\n close: () => this.props.dismissModal(),\n dismiss: () => this.props.dismissModal(),\n } as IModalServiceInstance;\n Object.assign(this.$uibModalInstanceEmulation, { deferred });\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n selectedValues: {\n credentials: '',\n region: '',\n cluster: '',\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public static show(props: ILoadBalancerModalProps): Promise<void> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(\n CloudFoundryMapLoadBalancerModal,\n {\n application: props.app,\n // className: 'create-pipeline-modal-overflow-visible',\n },\n modalProps,\n );\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private submit = (values: ICloudFoundryLoadBalancerModalValues): void => {\n const { routes } = values;\n const serverGroup: ICloudFoundryServerGroup = this.props.application.serverGroups?.data?.find(\n (sg: ICloudFoundryServerGroup) =>\n sg.cluster === this.state.selectedValues.cluster &&\n sg.account === this.state.selectedValues.credentials &&\n sg.region === this.state.selectedValues.region,\n );\n\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private accountRegionClusterUpdated = (values: any) => {\n this.setState({\n selectedValues: {\n cluster: values.cluster,\n credentials: values.credentials,\n region: values.region,\n routes: [''],\n },\n });\n };\n\n public render() {\n const { accounts, application, selectedValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerModalValues>\n ref={this.formikRef}\n initialValues={selectedValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={selectedValues}\n />\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20width%3D%22300px%22%20height%3D%22300px%22%20viewBox%3D%220%200%20300%20300%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3Ecf_logo%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22cf_logo%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M178.263372%2C122.718681%20C186.913513%2C115.731062%20192.264847%2C105.825834%20192.16919%2C94.8631089%20C191.983342%2C73.9653286%20172.094852%2C57.1484045%20147.743272%2C57.1484045%20C123.391692%2C57.1484045%20103.497736%2C73.9653286%20103.317354%2C94.8631089%20C103.218964%2C105.825834%20108.570299%2C115.728351%20117.220439%2C122.71597%20C127.925842%2C131.365758%20136.693504%2C148.855142%20137.210052%2C167.952465%20C137.781262%2C189.145802%20136.321807%2C213.674325%20135.425363%2C226.155508%20C123.984767%2C227.766159%20115.944099%2C231.559592%20115.944099%2C235.982102%20C115.944099%2C241.866127%20130.180618%2C248.650381%20147.743272%2C248.650381%20C165.303194%2C248.650381%20179.539712%2C241.866127%20179.539712%2C235.982102%20C179.539712%2C231.559592%20171.501778%2C227.766159%20160.058448%2C226.155508%20C159.162004%2C213.674325%20157.702549%2C189.145802%20158.273759%2C167.952465%20C158.790308%2C148.855142%20167.557969%2C131.365758%20178.263372%2C122.718681%22%20id%3D%22Fill-1%22%20fill%3D%22%231B1A19%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M234.330842%2C245.57087%20C235.853157%2C244.936371%20237.629647%2C244.423892%20239.594718%2C244.046988%20C241.423137%2C243.645682%20243.462001%2C243.390798%20245.68398%2C243.317586%20C245.68398%2C243.317586%20245.58559%2C242.63428%20245.448937%2C241.62559%20C245.386076%2C240.625035%20244.910523%2C239.299095%20244.454102%2C237.984002%20C244.224525%2C237.335946%20243.989482%2C236.693313%20243.779036%2C236.094064%20C243.511196%2C235.500238%20243.16683%2C234.952509%20242.920854%2C234.477991%20C242.404306%2C233.550647%20242.05994%2C232.929706%20242.05994%2C232.929706%20C239.865291%2C232.577206%20237.790898%2C232.089131%20235.779364%2C231.516997%20C233.729568%2C230.944864%20231.802759%2C230.288673%20230.108261%2C229.580963%20C226.894181%2C228.179101%20223.874147%2C226.609124%20222.278039%2C224.857474%20C220.351231%2C223.189881%20219.995933%2C221.519577%20220.058793%2C220.011965%20C220.168116%2C219.269005%20220.512482%2C218.550449%20221.102823%2C217.880701%20C221.641236%2C217.221798%20222.354565%2C216.627973%20223.382196%2C216.115493%20C223.382196%2C216.115493%20222.60874%2C215.689783%20221.479985%2C215.057995%20C220.903309%2C214.751592%20220.280171%2C214.388247%20219.542245%2C214.008632%20C218.768788%2C213.642576%20217.957069%2C213.254826%20217.148083%2C212.875212%20C215.551975%2C212.121406%20213.955866%2C211.364888%20212.619399%2C210.868678%20C211.343059%2C210.356198%20210.498543%2C210.014545%20210.498543%2C210.014545%20C208.948897%2C210.220622%20207.270798%2C210.331794%20205.562634%2C210.356198%20C203.794343%2C210.391448%20201.990522%2C210.342641%20200.23863%2C210.212487%20C196.789506%2C209.91693%20193.280255%2C209.442412%20190.246556%2C208.553029%20C188.675046%2C208.151722%20187.338578%2C207.677204%20186.171561%2C207.153878%20C185.004544%2C206.641399%20183.96598%2C206.131631%20183.129663%2C205.559497%20C181.533555%2C204.401673%20180.443064%2C203.233003%20180.451263%2C202.053486%20C180.451263%2C202.053486%20179.483759%2C201.893506%20178.037969%2C201.649468%20C176.540252%2C201.418987%20173.348036%2C200.993277%20171.322837%2C200.724835%20C171.287307%2C201.063777%20171.065929%2C201.383738%20170.992136%2C201.942313%20L170.475588%2C204.401673%20C169.420626%2C209.320393%20172.293074%2C214.312324%20177.16339%2C215.714186%20C189.095937%2C219.157832%20198.112308%2C224.83307%20200.716916%2C231.796285%20C205.980792%2C245.885407%20183.86759%2C259.657281%20150.239999%2C259.657281%20C116.598742%2C259.657281%2094.4828068%2C245.885407%2099.7357514%2C231.796285%20C102.277499%2C225.003896%20110.941304%2C219.439832%20122.442028%2C215.96907%20C127.533722%2C214.434343%20130.553755%2C209.236335%20129.460531%2C204.073578%20L128.749935%2C200.724835%20C127.410734%2C200.882104%20125.852889%2C201.077334%20124.256781%2C201.272565%20C122.258913%2C201.492199%20120.353969%2C201.84741%20118.894514%2C202.07789%20C117.435059%2C202.305659%20116.45389%2C202.479197%20116.45389%2C202.479197%20C116.55228%2C203.623463%20115.729629%2C204.911441%20114.158118%2C206.023169%20C113.335467%2C206.581745%20112.42809%2C207.164725%20111.310268%2C207.690762%20C110.192446%2C208.224934%20108.817715%2C208.675048%20107.382858%2C209.149566%20C105.896073%2C209.613238%20104.24257%2C209.954891%20102.583602%2C210.245025%20C100.951964%2C210.562275%2099.2082705%2C210.792755%2097.4181151%2C210.939178%20C93.8460034%2C211.221177%2090.2629595%2C211.294388%2087.0106161%2C210.893082%20C87.0106161%2C210.893082%2086.7892381%2C210.977139%2086.4202748%2C211.123562%20C86.0649768%2C211.280831%2085.4855677%2C211.486907%2084.9116247%2C211.768907%20C83.7200098%2C212.330194%2082.1129695%2C213.094846%2080.4922639%2C213.86221%20C78.8961559%2C214.653977%2077.4749638%2C215.50811%2076.3216118%2C216.139897%20C75.7422027%2C216.454435%2075.2639169%2C216.725588%2074.9332164%2C216.907261%20C74.6271135%2C217.113337%2074.4549306%2C217.221798%2074.4549306%2C217.221798%20C76.7015073%2C218.257604%2077.9532496%2C219.659466%2078.1964921%2C221.145386%20C78.7622359%2C222.715363%2077.9887794%2C224.344994%2076.5293244%2C226.123759%20C75.6848084%2C227.0267%2074.5423886%2C227.878121%2073.3753712%2C228.705138%20C72.1372943%2C229.543002%2070.5876483%2C230.334769%2068.8576202%2C231.091287%20C65.6189421%2C232.612456%2061.4209593%2C233.951953%2056.9168736%2C234.757278%20C56.9168736%2C234.757278%2056.5260458%2C235.391777%2056.228142%2C236.338102%20C55.8865093%2C237.303407%2055.4328211%2C238.604943%2054.9654675%2C239.933594%20C54.7686871%2C241.245976%2054.585572%2C242.59903%2054.4379866%2C243.634836%20C54.2439392%2C244.678776%2054.3395964%2C245.35937%2054.3395964%2C245.35937%20C58.9912674%2C245.410889%2063.1291229%2C246.189099%2066.2202157%2C247.420135%20C69.8169249%2C248.602363%2071.9897089%2C250.364859%2073.6705419%2C252.520527%20C74.9960768%2C254.847022%2075.5235577%2C257.281978%2074.3428751%2C260.093837%20C73.5202235%2C262.835197%2071.2627145%2C265.891094%2067.5840135%2C268.664991%20C67.5840135%2C268.664991%2067.7917261%2C268.849375%2068.1470242%2C269.153067%20C68.5515173%2C269.445913%2069.1418586%2C269.860777%2069.8524547%2C270.359699%20C71.3146427%2C271.357543%2073.1539932%2C272.770251%2075.315845%2C274.047383%20C77.5979516%2C275.291976%2079.9155879%2C276.544704%2081.6729466%2C277.507298%20C82.5420602%2C277.995374%2083.4275722%2C278.299066%2083.9796507%2C278.55395%20C84.5563267%2C278.808834%2084.8870272%2C278.941699%2084.8870272%2C278.941699%20C90.0771113%2C276.739935%2095.6498242%2C275.606514%20101.222537%2C275.023535%20C104.007527%2C274.727978%20106.743322%2C274.657478%20109.358862%2C274.828304%20C112.020864%2C274.96117%20114.734794%2C275.169958%20117.273808%2C275.763783%20C119.790958%2C276.422686%20122.245248%2C277.043626%20124.393434%2C277.995374%20C126.57715%2C278.930853%20128.517624%2C280.159177%20130.354242%2C281.341405%20C134.024744%2C283.825169%20136.847996%2C287.333892%20138.064209%2C291.021576%20C138.064209%2C291.021576%20139.952755%2C291.094787%20142.78694%2C291.20596%20C145.63479%2C291.27646%20149.428279%2C291.534056%20153.208104%2C291.338825%20C156.990661%2C291.216806%20160.778685%2C291.154441%20163.591005%2C290.972768%20C166.365063%2C290.704327%20168.218079%2C290.536212%20168.218079%2C290.536212%20C168.608907%2C288.611024%20169.469821%2C286.797009%20170.647771%2C285.151108%20C171.22718%2C284.348495%20171.888581%2C283.581131%20172.623774%2C282.865287%20C173.33437%2C282.122327%20174.083229%2C281.365809%20174.919546%2C280.698772%20C176.564849%2C279.359275%20178.43973%2C278.201451%20180.563318%2C277.274107%20C182.624047%2C276.314224%20184.835094%2C275.411284%20187.387774%2C274.841862%20C189.989648%2C274.329382%20192.430272%2C273.819614%20195.081342%2C273.63523%20C197.696882%2C273.426442%20200.544733%2C273.548461%20203.182137%2C273.659634%20C208.571735%2C273.949768%20214.546208%2C275.180804%20219.739025%2C277.127684%20C219.739025%2C277.127684%20220.889644%2C276.495897%20222.60874%2C275.544149%20C224.254043%2C274.57342%20226.623608%2C273.415596%20228.43836%2C271.978484%20C230.294109%2C270.614583%20232.245515%2C269.323894%20233.420732%2C268.252838%20C234.574084%2C267.181783%20235.325676%2C266.476785%20235.325676%2C266.476785%20C231.461127%2C263.833041%20229.236414%2C260.996778%20227.815222%2C258.195765%20C227.151088%2C256.845421%20226.967973%2C255.576424%20226.92971%2C254.323696%20C226.83132%2C253.057411%20227.101893%2C251.877894%20227.815222%2C250.779723%20C228.820989%2C248.539998%20231.398266%2C246.883251%20234.330842%2C245.57087%22%20id%3D%22Fill-2%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M118.447097%2C177.453406%20C118.447097%2C177.453406%20123.443134%2C158.68689%20101.750823%2C134.472906%20L101.026562%2C133.724523%20C91.8872032%2C122.97872%2086.8529035%2C109.342424%2086.8529035%2C95.3265125%20C86.8529035%2C62.4247782%20113.863752%2C35.6538187%20147.067719%2C35.6538187%20L148.464314%2C35.6538187%20C181.671013%2C35.6538187%20208.684595%2C62.4247782%20208.684595%2C95.3265125%20C208.684595%2C109.342424%20203.650296%2C122.97872%20194.519137%2C133.716388%20C194.412547%2C133.835696%20194.166572%2C134.087868%20193.794875%2C134.456637%20C174.534989%2C153.591921%20177.084936%2C177.453406%20177.084936%2C177.453406%20C212.256707%2C165.425049%20236.017946%2C132.612795%20236.220192%2C95.8091653%20C236.471634%2C49.7944603%20199.034155%2C10.5748554%20152.774352%2C8.37309111%20C152.194943%2C8.34597578%20151.623733%2C8.33241812%20151.052523%2C8.33241812%20C150.352859%2C8.33241812%20147.750985%2C8.38393723%20147.761917%2C8.38393723%20C147.688124%2C8.38393723%20145.181907%2C8.33241812%20144.484976%2C8.33241812%20C143.913766%2C8.33241812%20143.339823%2C8.34597578%20142.771346%2C8.37309111%20C96.5006113%2C10.5748554%2059.063132%2C49.7944603%2059.3173068%2C95.8091653%20C59.5140872%2C132.612795%2083.2780588%2C165.425049%20118.447097%2C177.453406%22%20id%3D%22Fill-3%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E\"","import type {\n IPipeline,\n IStage,\n IStageOrTriggerTypeConfig,\n IStageOrTriggerValidator,\n IValidatorConfig,\n} from '@spinnaker/core';\nimport { NameUtils, PipelineConfigService, PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface ITargetImpedanceValidationConfig extends IValidatorConfig {\n stageTypes?: string[];\n stageType?: string;\n message: string;\n}\n\nexport class CfTargetImpedanceValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage,\n validator: ITargetImpedanceValidationConfig,\n _config: IStageOrTriggerTypeConfig,\n ): string {\n const stagesToTest: IStage[] = PipelineConfigService.getAllUpstreamDependencies(pipeline, stage);\n const regions: string[] = stage.regions || [];\n let allRegionsFound = true;\n\n regions.forEach((region) => {\n let regionFound = false;\n stagesToTest.forEach((toTest) => {\n if (toTest.type === 'deploy' && toTest.clusters && toTest.clusters.length) {\n toTest.clusters.forEach((cluster: any) => {\n const clusterName: string = NameUtils.getClusterName(\n cluster.application,\n cluster.stack,\n cluster.freeFormDetails,\n );\n if (clusterName === stage.cluster && cluster.account === stage.credentials && cluster.region === region) {\n regionFound = true;\n }\n });\n } else if (\n toTest.type === 'cloneServerGroup' &&\n NameUtils.getClusterName(toTest.application, toTest.stack, toTest.freeFormDetails) === stage.cluster &&\n toTest.region === region\n ) {\n regionFound = true;\n }\n });\n if (!regionFound) {\n allRegionsFound = false;\n }\n });\n if (!allRegionsFound) {\n return validator.message;\n }\n return null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfTargetImpedance', new CfTargetImpedanceValidator());\n","import { get, has, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface IInstanceFieldSizeValidationConfig extends IValidatorConfig {\n fieldName: string;\n fieldLabel?: string;\n min?: number;\n max?: number;\n message?: string;\n}\n\nexport class CfInstanceSizeFieldValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IInstanceFieldSizeValidationConfig,\n ): string {\n if (!this.passesValidation(stage, validationConfig)) {\n return this.validationMessage(validationConfig, pipeline);\n }\n return null;\n }\n\n protected passesValidation(stage: IStage | ITrigger, validationConfig: IInstanceFieldSizeValidationConfig): boolean {\n return this.fieldIsValid(stage, validationConfig);\n }\n\n protected validationMessage(validationConfig: IInstanceFieldSizeValidationConfig, pipeline: IPipeline): string {\n const fieldLabel: string = this.printableFieldLabel(validationConfig);\n const hasMin = has(validationConfig, 'min');\n const min: any = hasMin ? get(validationConfig, 'min') : 'NA';\n const hasMax = has(validationConfig, 'max');\n const max: any = hasMax ? get(validationConfig, 'max') : 'NA';\n let message = ``;\n if (hasMin) {\n if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be from ${min} to ${max} in ${pipeline.name}.`;\n } else {\n message = `<strong>${fieldLabel}</strong> should be at least ${min} in ${pipeline.name}.`;\n }\n } else if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be no more than ${max} in ${pipeline.name}.`;\n }\n return validationConfig.message || message;\n }\n\n protected printableFieldLabel(config: IInstanceFieldSizeValidationConfig): string {\n const fieldLabel: string = config.fieldLabel || config.fieldName;\n return upperFirst(fieldLabel);\n }\n\n protected fieldIsValid(stage: IStage | ITrigger, config: IInstanceFieldSizeValidationConfig): boolean {\n const fieldExists = has(stage, config.fieldName);\n const field: any = get(stage, config.fieldName);\n const hasMax: boolean = has(config, 'max');\n const hasMin: boolean = has(config, 'min');\n const max: number = get(config, 'max');\n const min: number = get(config, 'min');\n\n return fieldExists && (!hasMax || (hasMax && field <= max)) && (!hasMin || (hasMin && field >= min));\n }\n}\n\nPipelineConfigValidator.registerValidator('cfInstanceSizeField', new CfInstanceSizeFieldValidator());\n","import { get } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport class CfRequiredRoutesFieldValidator implements IStageOrTriggerValidator {\n public validate(_pipeline: IPipeline, stage: IStage | ITrigger, validationConfig: any): string {\n const routes: string[] = get(stage, validationConfig.fieldName);\n const routeErrors = routes\n .map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n route = route || '';\n if (regex.exec(route) === null) {\n const spelRegex = /^\\${.*}$/g;\n if (spelRegex.exec(route) === null) {\n return `\"${route}\" did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n }\n return null;\n })\n .filter((err) => err != null);\n return (routeErrors && routeErrors.length && routeErrors[0]) || null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfRequiredRoutesField', new CfRequiredRoutesFieldValidator());\n","import React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n StageArtifactSelectorDelegate,\n StageConfigField,\n TextInput,\n} from '@spinnaker/core';\n\nexport class BakeCloudFoundryManifestConfigForm extends React.Component<IFormikStageConfigInjectedProps> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n if (stage.inputArtifacts && stage.inputArtifacts.length === 0) {\n this.props.formik.setFieldValue('inputArtifacts', [\n {\n account: '',\n id: '',\n },\n ]);\n }\n }\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, null);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, artifact);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].account`, artifact.artifactAccount);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, id);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [\n ...stage.inputArtifacts,\n {\n account: '',\n id: '',\n },\n ];\n\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [...stage.inputArtifacts];\n newInputArtifacts.splice(index, 1);\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private getInputArtifact = (stage: any, index: number) => {\n if (!stage.inputArtifacts || stage.inputArtifacts.length === 0) {\n return {\n account: '',\n id: '',\n };\n } else {\n return stage.inputArtifacts[index];\n }\n };\n\n private outputNameChange = (outputName: string) => {\n const stage = this.props.formik.values;\n const expectedArtifacts = stage.expectedArtifacts;\n if (\n expectedArtifacts &&\n expectedArtifacts.length === 1 &&\n expectedArtifacts[0].matchArtifact &&\n expectedArtifacts[0].matchArtifact.type === 'embedded/base64'\n ) {\n this.props.formik.setFieldValue('expectedArtifacts', [\n {\n ...expectedArtifacts[0],\n matchArtifact: {\n ...expectedArtifacts[0].matchArtifact,\n name: outputName,\n },\n },\n ]);\n }\n };\n\n public render() {\n const stage = this.props.formik.values;\n\n return (\n <>\n <h4>Manifest Options</h4>\n <StageConfigField fieldColumns={3} label={'Name'} helpKey={'pipeline.config.bake.cf.manifest.name'}>\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue('outputName', e.target.value);\n this.outputNameChange(e.target.value);\n }}\n value={stage.outputName}\n />\n </StageConfigField>\n <h4>Manifest Template</h4>\n <StageArtifactSelectorDelegate\n artifact={this.getInputArtifact(stage, 0).artifact}\n excludedArtifactTypePatterns={BakeCloudFoundryManifestConfigForm.excludedArtifactTypes}\n expectedArtifactId={this.getInputArtifact(stage, 0).id}\n label=\"Template Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, 0);\n }}\n helpKey={'pipeline.config.bake.cf.manifest.templateArtifact'}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) => this.onTemplateArtifactSelected(artifact.id, 0)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <h4>Manifest Variables</h4>\n {stage.inputArtifacts && stage.inputArtifacts.length > 1 && (\n <div className=\"row form-group\">\n {stage.inputArtifacts.slice(1).map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-9\">\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={[]}\n expectedArtifactId={a.id}\n label=\"Variables Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index + 1);\n }}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) =>\n this.onTemplateArtifactSelected(artifact.id, index + 1)\n }\n helpKey={'pipeline.config.bake.cf.manifest.varsArtifact'}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index + 1)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add variables artifact\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { BakeCloudFoundryManifestConfigForm } from './BakeCloudFoundryManifestConfigForm';\n\nexport function BakeCloudFoundryManifestConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n inputArtifacts: [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateBakeCloudFoundryManifestStage}\n render={(props) => <BakeCloudFoundryManifestConfigForm {...props} />}\n />\n );\n}\n\nexport function validateBakeCloudFoundryManifestStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator\n .field('expectedArtifacts', 'Produced artifacts')\n .required()\n .withValidators((artifacts: IExpectedArtifact[]) => {\n if (validateProducedArtifacts(artifacts)) {\n return undefined;\n }\n return 'Exactly one expected artifact of type embedded/base64 must be configured in the Produces Artifacts section';\n });\n formValidator.field('outputName', 'Name').required();\n formValidator\n .field('inputArtifacts', 'Template and Variables Artifacts')\n .required()\n .withValidators((artifacts: IArtifact[]) => {\n if (validateInputArtifacts(artifacts)) {\n return undefined;\n }\n return 'There should be one manifest template and at least one variables artifact';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateProducedArtifacts(artifacts: IExpectedArtifact[]): boolean {\n return artifacts?.length === 1 && artifacts[0]?.matchArtifact?.type === 'embedded/base64';\n}\n\nexport function validateInputArtifacts(artifacts: IArtifact[]): boolean {\n return artifacts?.length >= 2;\n}\n","import React from 'react';\n\nimport type { IArtifact, IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport {\n decodeUnicodeBase64,\n ExecutionDetailsSection,\n ManifestYaml,\n Overridable,\n StageFailureMessage,\n} from '@spinnaker/core';\n\n@Overridable('bakeManifest.bakeManifestDetailsTab')\nexport class BakeCloudFoundryManifestDetailsTab extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'bakedManifest';\n\n public render() {\n const { current, name, stage } = this.props;\n const bakedArtifacts: IArtifact[] = (stage.context.artifacts || []).filter(\n (a: IArtifact) => a.type === 'embedded/base64',\n );\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n {bakedArtifacts.map((artifact, i) => (\n <ManifestYaml\n key={i}\n linkName={bakedArtifacts.length > 1 ? `Baked Manifest ${i} YAML` : 'Baked Manifest YAML'}\n manifestText={decodeUnicodeBase64(artifact.reference)}\n modalTitle=\"Baked Manifest\"\n />\n ))}\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IArtifact, IStage } from '@spinnaker/core';\nimport {\n ArtifactReferenceService,\n ExecutionArtifactTab,\n ExecutionDetailsTasks,\n ExpectedArtifactService,\n Registry,\n} from '@spinnaker/core';\n\nimport {\n BakeCloudFoundryManifestConfig,\n validateBakeCloudFoundryManifestStage,\n} from './BakeCloudFoundryManifestConfig';\nimport { BakeCloudFoundryManifestDetailsTab } from './BakeCloudFoundryManifestDetailsTab';\n\nexport const BAKE_CF_MANIFEST_STAGE_KEY = 'bakeCloudFoundryManifest';\n\nRegistry.pipeline.registerStage({\n label: 'Bake CloudFoundry Manifest',\n description: 'Bake a CF manifest using external variables files.',\n key: BAKE_CF_MANIFEST_STAGE_KEY,\n component: BakeCloudFoundryManifestConfig,\n producesArtifacts: true,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [BakeCloudFoundryManifestDetailsTab, ExecutionDetailsTasks, ExecutionArtifactTab],\n artifactExtractor: (fields: string[]) =>\n ExpectedArtifactService.accumulateArtifacts<IArtifact>(['inputArtifacts'])(fields).map((a: IArtifact) => a.id),\n artifactRemover: (stage: IStage, artifactId: string) => {\n ArtifactReferenceService.removeArtifactFromFields(['expectedArtifactId'])(stage, artifactId);\n const artifactDoesNotMatch = (artifact: IArtifact) => artifact.id !== artifactId;\n stage.expectedArtifacts = (stage.expectedArtifacts ?? []).filter(artifactDoesNotMatch);\n stage.inputArtifacts = (stage.inputArtifacts ?? []).filter(artifactDoesNotMatch);\n },\n validateFn: validateBakeCloudFoundryManifestStage,\n});\n","import type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../../domain';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilder {\n private static envVarsFromObject(someObject: any): ICloudFoundryEnvVar[] {\n const envVars = [];\n for (const property in someObject) {\n if (someObject.hasOwnProperty(property)) {\n const envVar = { key: property, value: someObject[property] };\n envVars.push(envVar);\n }\n }\n return envVars;\n }\n\n private static getSubmitButtonLabel(mode: string) {\n switch (mode) {\n case 'createPipeline':\n return 'Add';\n case 'editPipeline':\n case 'editClonePipeline':\n return 'Done';\n case 'clone':\n return 'Clone';\n default:\n return 'Create';\n }\n }\n\n public static buildNewServerGroupCommand(app: Application, defaults: any): ICloudFoundryCreateServerGroupCommand {\n defaults = defaults || {};\n return {\n application: app.name,\n stack: '',\n freeFormDetails: '',\n region: '',\n strategy: '',\n credentials: '',\n viewState: {\n mode: defaults.mode || 'create',\n submitButtonLabel: CloudFoundryServerGroupCommandBuilder.getSubmitButtonLabel(defaults.mode || 'create'),\n },\n selectedProvider: 'cloudfoundry',\n startApplication: true,\n } as ICloudFoundryCreateServerGroupCommand;\n }\n\n public static buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(app, { mode });\n command.credentials = '';\n command.manifest = {\n direct: {\n memory: serverGroup.memory ? serverGroup.memory + 'M' : '1024M',\n diskQuota: serverGroup.diskQuota ? serverGroup.diskQuota + 'M' : '1024M',\n buildpacks:\n serverGroup.droplet && serverGroup.droplet.buildpacks\n ? serverGroup.droplet.buildpacks.map((item) => item.name)\n : [],\n instances: serverGroup.instances ? serverGroup.instances.length : 1,\n routes: serverGroup.loadBalancers || [],\n environment: CloudFoundryServerGroupCommandBuilder.envVarsFromObject(serverGroup.env),\n services: (serverGroup.serviceInstances || []).map((serviceInstance) => serviceInstance.name),\n healthCheckType: 'port',\n },\n };\n command.region = '';\n command.stack = serverGroup.stack;\n command.freeFormDetails = serverGroup.detail;\n command.source = {\n asgName: serverGroup.name,\n region: serverGroup.region,\n account: serverGroup.account,\n };\n return command;\n }\n\n public static buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(\n { name: pipeline.application } as Application,\n { mode: 'editPipeline' },\n );\n command.viewState = {\n ...command.viewState,\n pipeline,\n requiresTemplateSelection: true,\n stage,\n };\n return command;\n }\n\n public static buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand(application, { mode: 'editPipeline' });\n command.credentials = originalCluster.account;\n command.applicationArtifact = originalCluster.applicationArtifact;\n command.delayBeforeDisableSec = originalCluster.delayBeforeDisableSec;\n command.manifest = originalCluster.manifest;\n command.maxRemainingAsgs = originalCluster.maxRemainingAsgs;\n command.region = originalCluster.region;\n command.rollback = originalCluster.rollback;\n command.strategy = originalCluster.strategy;\n command.startApplication = originalCluster.startApplication;\n command.targetPercentages = originalCluster.targetPercentages;\n command.delayBeforeScaleDownSec = originalCluster.delayBeforeScaleDownSec;\n if (originalCluster.stack) {\n command.stack = originalCluster.stack;\n }\n\n if (originalCluster.freeFormDetails) {\n command.freeFormDetails = originalCluster.freeFormDetails;\n }\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n\n public static buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand({ name: pipeline.application } as Application, {\n mode: 'editClonePipeline',\n });\n command.credentials = stage.credentials;\n command.capacity = stage.capacity;\n command.account = stage.account;\n command.delayBeforeDisableSec = stage.delayBeforeDisableSec;\n command.freeFormDetails = stage.freeFormDetails || command.freeFormDetails;\n command.maxRemainingAsgs = stage.maxRemainingAsgs;\n command.region = stage.region;\n command.startApplication = stage.startApplication === undefined || stage.startApplication;\n command.stack = stage.stack || command.stack;\n command.strategy = stage.strategy;\n command.target = stage.target;\n command.targetCluster = stage.targetCluster;\n command.manifest = stage.manifest || command.manifest;\n command.source = stage.source;\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n}\n","import type { IQService } from 'angular';\n\nimport type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryServerGroup } from '../../domain';\n\nimport { CloudFoundryServerGroupCommandBuilder } from './serverGroupCommandBuilder.service.cf';\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilderShim {\n public static $inject = ['$q'];\n constructor(private $q: IQService) {}\n\n public buildNewServerGroupCommand(\n app: Application,\n defaults: any,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommand(app, defaults));\n }\n\n public buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup, mode),\n );\n }\n\n public buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommandForPipeline(stage, pipeline));\n }\n\n public buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromPipeline(\n application,\n originalCluster,\n stage,\n pipeline,\n ),\n );\n }\n\n public buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline),\n );\n }\n}\n","import React from 'react';\n\nimport type { Application, ITemplateSelectionText } from '@spinnaker/core';\nimport { DeployInitializer } from '@spinnaker/core';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nexport interface IServerGroupTemplateSelectionProps {\n app: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n onDismiss: () => void;\n onTemplateSelected: () => void;\n}\n\nexport interface IServerGroupTemplateSelectionState {\n templateSelectionText: ITemplateSelectionText;\n}\n\nexport class ServerGroupTemplateSelection extends React.Component<\n IServerGroupTemplateSelectionProps,\n IServerGroupTemplateSelectionState\n> {\n constructor(props: IServerGroupTemplateSelectionProps) {\n super(props);\n this.state = {\n templateSelectionText: {\n copied: [\n 'account, region, cluster name (stack, details)',\n 'routes',\n 'service instances',\n 'instance settings',\n 'environment variables',\n ],\n notCopied: ['artifacts'],\n additionalCopyText: '',\n },\n };\n }\n\n public render() {\n const { app, command, onDismiss, onTemplateSelected } = this.props;\n const { templateSelectionText } = this.state;\n\n return (\n <DeployInitializer\n cloudProvider=\"cloudfoundry\"\n application={app}\n command={command}\n onDismiss={onDismiss}\n onTemplateSelected={onTemplateSelected}\n templateSelectionText={templateSelectionText}\n />\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, StageArtifactSelector } from '@spinnaker/core';\nimport { FormikConfigField } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCreateServerGroupArtifactSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupArtifactSettings\n extends React.Component<ICloudFoundryCreateServerGroupArtifactSettingsProps>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n public static get LABEL() {\n return 'Artifact';\n }\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifact: artifact });\n };\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const { applicationArtifact } = this.props.formik.values;\n const errors = {} as any;\n if (\n !applicationArtifact ||\n !(\n (applicationArtifact.artifact && applicationArtifact.artifact.type && applicationArtifact.artifact.reference) ||\n applicationArtifact.artifactId\n )\n ) {\n errors.applicationArtifact = 'Application artifact information is required';\n }\n\n return errors;\n }\n\n public render() {\n const { formik, stage, pipeline } = this.props;\n const applicationArtifact = formik.values.applicationArtifact;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={applicationArtifact && applicationArtifact.artifactId}\n artifact={applicationArtifact && applicationArtifact.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundrySource,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCloneServerGroupProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n source: ICloudFoundrySource;\n}\n\nexport class CloudFoundryServerGroupConstantArtifactSettings extends React.Component<\n ICloudFoundryCloneServerGroupProps\n> {\n constructor(props: ICloudFoundryCloneServerGroupProps) {\n super(props);\n const { source } = props;\n this.props.formik.setFieldValue('source', source);\n }\n\n public render(): JSX.Element {\n const { source } = this.props;\n\n return (\n <div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Account</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.account} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Region</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.region} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Server Group</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.asgName} readOnly={true} />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { set } from 'lodash';\nimport React from 'react';\n\nimport type { IDeploymentStrategyAdditionalFieldsProps, IServerGroupCommand } from '@spinnaker/core';\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IRollingRedBlackCommand extends IServerGroupCommand {\n targetPercentages: number[];\n delayBeforeDisableSec: number;\n delayBeforeScaleDownSec: number;\n maxRemainingAsgs: number;\n rollback: {\n onFailure: boolean;\n };\n scaleDown: boolean;\n}\n\nexport interface IRollingRedBlackStrategyAdditionalFieldsProps extends IDeploymentStrategyAdditionalFieldsProps {\n command: IRollingRedBlackCommand;\n}\n\nexport class AdditionalFields extends React.Component<IRollingRedBlackStrategyAdditionalFieldsProps> {\n private handlePercentChange = (key: string, value: any, index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages[index] = value;\n set(this.props.command, key, percentages);\n this.forceUpdate();\n };\n\n private onDelete = (index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages.splice(index, 1);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private addPercent = () => {\n const percentages = this.props.command.targetPercentages;\n percentages.push(100);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private handleChange = (key: string, value: any) => {\n set(this.props.command, key, value);\n this.forceUpdate();\n };\n\n public render() {\n const { command } = this.props;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <div className=\"col-md-12 checkbox\">\n <label>\n <input\n type=\"checkbox\"\n checked={command.rollback.onFailure}\n onChange={(e) => this.handleChange('rollback.onFailure', e.target.checked)}\n />\n Rollback to previous server group if deployment fails <HelpField id=\"strategy.rollingRedBlack.rollback\" />\n </label>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom sp-margin-m-top\">\n <label>\n Wait Before Scale Down &nbsp;\n <HelpField content=\"Time to wait before scaling down source server group\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeDisableSec}\n onChange={(e) => this.handleChange('delayBeforeDisableSec', e.target.value)}\n placeholder=\"0\"\n />\n &nbsp; seconds\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Maximum number of server groups to leave &nbsp;\n <HelpField id=\"strategy.redblack.maxRemainingAsgs\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"2\"\n type=\"number\"\n value={command.maxRemainingAsgs}\n onChange={(e) => this.handleChange('maxRemainingAsgs', e.target.value)}\n />\n &nbsp; server groups\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Wait Before Cluster Scale Down &nbsp;\n <HelpField content=\"Time to wait before scaling down the cluster after deployment\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeScaleDownSec}\n onChange={(e) => this.handleChange('delayBeforeScaleDownSec', e.target.value)}\n placeholder=\"0\"\n />\n &nbsp; seconds\n </div>\n </div>\n <label>\n Scale by percentages &nbsp;\n <HelpField content=\"Steps to get to full capacity in percent\" />\n </label>\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {command.targetPercentages.map((percentage: number, index: number) => {\n return (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <input\n className=\"form-control\"\n min=\"0\"\n type=\"number\"\n value={percentage}\n onChange={(e) => this.handlePercentChange('targetPercentages', e.target.value, index)}\n placeholder=\"100\"\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => this.onDelete(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => this.addPercent()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add percentage\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n );\n }\n}\n","import { defaultsDeep, unset } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type {\n IDeploymentStrategy,\n IDeploymentStrategyAdditionalFieldsProps,\n IServerGroupCommand,\n} from '@spinnaker/core';\nimport { CoreRedBlackAdditionalFields, HelpField, Markdown } from '@spinnaker/core';\n\nimport type { IRedBlackCommand } from './strategies/redblack/redblack.strategy';\nimport type { IRollingRedBlackCommand } from './strategies/rollingredblack/AdditionalFields';\nimport { AdditionalFields as AdditionalRollingRedBlackFields } from './strategies/rollingredblack/AdditionalFields';\n\nexport interface ICloudFoundryDeploymentStrategySelectorProps {\n command: IServerGroupCommand;\n onFieldChange: (key: string, value: any) => void;\n onStrategyChange: (command: IServerGroupCommand, strategy: IDeploymentStrategy) => void;\n}\n\nexport interface ICloudFoundryDeploymentStrategySelectorState {\n strategies: IDeploymentStrategy[];\n currentStrategy: string;\n AdditionalFieldsComponent: React.ComponentType<IDeploymentStrategyAdditionalFieldsProps>;\n}\n\nexport class CloudFoundryDeploymentStrategySelector extends React.Component<\n ICloudFoundryDeploymentStrategySelectorProps,\n ICloudFoundryDeploymentStrategySelectorState\n> {\n public state: ICloudFoundryDeploymentStrategySelectorState = {\n strategies: [\n {\n label: 'None',\n description: 'Creates the next server group with no impact on existing server groups',\n key: '',\n },\n {\n label: 'Highlander',\n description:\n 'Destroys <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'highlander',\n },\n {\n label: 'Red/Black',\n description:\n 'Disables <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'redblack',\n additionalFields: ['maxRemainingAsgs'],\n AdditionalFieldsComponent: CoreRedBlackAdditionalFields,\n initializationMethod: (command: IRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n maxRemainingAsgs: 2,\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n scaleDown: false,\n });\n },\n },\n {\n label: 'Rolling Red/Black',\n description:\n 'Gradually replaces <i>all</i> previous server group instances in the cluster as soon as new server group instances pass health checks',\n key: 'cfrollingredblack',\n additionalFields: ['targetPercentages'],\n AdditionalFieldsComponent: AdditionalRollingRedBlackFields,\n initializationMethod: (command: IRollingRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n targetPercentages: command.targetPercentages ? command.targetPercentages : [50, 100], // defaultsDeep does not work with arrays\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n maxRemainingAsgs: 2,\n scaleDown: false,\n });\n },\n },\n ],\n currentStrategy: null,\n AdditionalFieldsComponent: undefined,\n };\n\n public selectStrategy(strategy: string): void {\n const { command, onStrategyChange } = this.props;\n const oldStrategy = this.state.strategies.find((s) => s.key === this.state.currentStrategy);\n const newStrategy = this.state.strategies.find((s) => s.key === strategy);\n\n if (oldStrategy && oldStrategy.additionalFields) {\n oldStrategy.additionalFields.forEach((field) => {\n if (!newStrategy || !newStrategy.additionalFields || !newStrategy.additionalFields.includes(field)) {\n unset(command, field);\n }\n });\n }\n\n let AdditionalFieldsComponent;\n if (newStrategy) {\n AdditionalFieldsComponent = newStrategy.AdditionalFieldsComponent;\n if (newStrategy.initializationMethod) {\n newStrategy.initializationMethod(command);\n }\n }\n command.strategy = strategy;\n if (onStrategyChange && newStrategy) {\n onStrategyChange(command, newStrategy);\n }\n this.setState({ currentStrategy: strategy, AdditionalFieldsComponent });\n }\n\n public strategyChanged = (option: Option<IDeploymentStrategy>) => {\n this.selectStrategy(option.key);\n };\n\n public componentDidMount() {\n this.selectStrategy(this.props.command.strategy);\n }\n\n public render() {\n const { command, onFieldChange } = this.props;\n const { AdditionalFieldsComponent, currentStrategy, strategies } = this.state;\n const hasAdditionalFields = Boolean(AdditionalFieldsComponent);\n if (strategies && strategies.length) {\n return (\n <div>\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className={`sm-label-right`} style={{ paddingLeft: '13px' }}>\n Strategy &nbsp;\n <HelpField id=\"core.serverGroup.strategy\" />\n </div>\n <div className=\"flex-grow\">\n <Select\n clearable={false}\n required={true}\n options={strategies}\n placeholder=\"None\"\n valueKey=\"key\"\n value={currentStrategy}\n optionRenderer={this.strategyOptionRenderer}\n valueRenderer={(o) => <>{o.label}</>}\n onChange={this.strategyChanged}\n />\n </div>\n </div>\n {hasAdditionalFields && (\n <div className=\"form-group col-md-9 col-md-offset-3\" style={{ marginTop: '5px', float: 'right' }}>\n <AdditionalFieldsComponent command={command} onChange={onFieldChange} />\n </div>\n )}\n </div>\n );\n }\n\n return null;\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import type { FormikErrors, FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IWizardPageComponent } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n HelpField,\n ReactSelectInput,\n TextInput,\n} from '@spinnaker/core';\nimport { CloudFoundryDeploymentStrategySelector } from '../../../../../deploymentStrategy/CloudFoundryDeploymentStrategySelector';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryServerGroupBasicSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface ICloudFoundryServerGroupLocationSettingsState {\n accounts: IAccount[];\n regions: IRegion[];\n}\n\nexport class CloudFoundryServerGroupBasicSettings\n extends React.Component<ICloudFoundryServerGroupBasicSettingsProps, ICloudFoundryServerGroupLocationSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryServerGroupLocationSettingsState = {\n accounts: [],\n regions: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => {\n this.setState({ accounts });\n this.updateRegionList();\n });\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private accountChanged = (): void => {\n this.updateRegionList();\n this.props.formik.setFieldValue('region', '');\n };\n\n private updateRegionList = (): void => {\n const credentials = get(this.props.formik.values, 'credentials', undefined);\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private strategyChanged = (_values: ICloudFoundryCreateServerGroupCommand, strategy: any) => {\n this.props.formik.setFieldValue('strategy', strategy.key);\n };\n\n private onStrategyFieldChange = (key: string, value: any) => {\n this.props.formik.setFieldValue(key, value);\n };\n\n public render(): JSX.Element {\n const { formik } = this.props;\n const { accounts, regions } = this.state;\n const { values } = formik;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"credentials\"\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"region\"\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n {...props}\n stringOptions={regions && regions.map((region: IRegion) => region.name)}\n inputClassName={'cloudfoundry-react-select'}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"stack\"\n label=\"Stack\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.stack\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"freeFormDetails\"\n label=\"Detail\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.detail\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom cloud-foundry-checkbox\">\n <FormikFormField\n name=\"startApplication\"\n label=\"Start on creation\"\n input={(props) => <CheckboxInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.startApplication\" />}\n />\n </div>\n {(values.viewState.mode === 'editPipeline' ||\n values.viewState.mode === 'createPipeline' ||\n values.viewState.mode === 'editClonePipeline') && (\n <CloudFoundryDeploymentStrategySelector\n onFieldChange={this.onStrategyFieldChange}\n onStrategyChange={this.strategyChanged}\n command={values}\n />\n )}\n </div>\n </div>\n );\n }\n\n public validate(values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n if (values.stack && !values.stack.match(/^[a-zA-Z0-9]*$/)) {\n errors.stack = 'Stack can only contain letters and numbers.';\n }\n if (values.freeFormDetails && !values.freeFormDetails.match(/^[a-zA-Z0-9-]*$/)) {\n errors.freeFormDetails = 'Detail can only contain letters, numbers, and dashes.';\n }\n\n return errors;\n }\n}\n","import type { FormikErrors, FormikProps } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IDeploymentStrategy, IWizardPageComponent } from '@spinnaker/core';\nimport { AccountService, FormikFormField, Markdown, ReactSelectInput, StageConstants } from '@spinnaker/core';\nimport { FormikAccountRegionClusterSelector } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryCloneSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n application: Application;\n}\n\nexport interface ICloudFoundryCloneSettingsState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryServerGroupCloneSettings\n extends React.Component<ICloudFoundryCloneSettingsProps, ICloudFoundryCloneSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryCloneSettingsState = {\n accounts: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n\n public render(): JSX.Element {\n const { application, formik } = this.props;\n const { accounts } = this.state;\n return (\n <div className=\"form-group\">\n <FormikAccountRegionClusterSelector\n componentName={'source'}\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n clusterField={'clusterName'}\n credentialsField={'account'}\n formik={formik}\n />\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={'target'}\n label=\"Target\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n options={StageConstants.TARGET_LIST.map((t) => {\n return {\n label: t.label,\n value: t.val,\n description: t.description,\n };\n })}\n optionRenderer={this.strategyOptionRenderer}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n return errors;\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, RadioButtonInput, StageArtifactSelector } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../../../domain';\nimport {\n Buildpacks,\n EnvironmentVariables,\n FormikConfigField,\n HealthCheck,\n InstanceParameters,\n Routes,\n Services,\n} from '../../../../../presentation';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryManifest,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryServerGroupConfigurationSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupConfigurationSettings\n extends React.Component<ICloudFoundryServerGroupConfigurationSettingsProps>\n implements IWizardPageComponent<ICloudFoundryServerGroupConfigurationSettingsProps> {\n public static LABEL = 'Configuration';\n\n private defaultDirectManifest: ICloudFoundryManifest = {\n direct: {\n memory: '1024M',\n diskQuota: '1024M',\n instances: 1,\n buildpacks: [],\n healthCheckType: 'port',\n routes: [],\n environment: [],\n services: [],\n },\n };\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'artifact':\n this.props.formik.setFieldValue('manifest', {});\n this.capacityUpdated('1');\n break;\n case 'direct':\n this.props.formik.setFieldValue('manifest', this.defaultDirectManifest);\n break;\n }\n };\n\n private capacityUpdated = (capacity: string): void => {\n this.props.formik.setFieldValue('capacity.min', capacity);\n this.props.formik.setFieldValue('capacity.max', capacity);\n this.props.formik.setFieldValue('capacity.desired', capacity);\n };\n\n private getArtifactInput = (): JSX.Element => {\n const { formik, stage, pipeline } = this.props;\n const manifest = formik.values.manifest;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest && manifest.artifactId}\n artifact={manifest && manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifact: artifact });\n };\n\n private getDirectInput = (): JSX.Element => {\n const m = this.props.formik.values.manifest.direct;\n return (\n <div>\n {\n <InstanceParameters\n diskQuotaFieldName={'manifest.direct.diskQuota'}\n instancesFieldName={'manifest.direct.instances'}\n memoryFieldName={'manifest.direct.memory'}\n />\n }\n {<Buildpacks fieldName=\"manifest.direct.buildpacks\" />}\n {\n <HealthCheck\n healthCheckHttpEndpointFieldName={'manifest.direct.healthCheckHttpEndpoint'}\n healthCheckType={m.healthCheckType}\n healthCheckTypeFieldName={'manifest.direct.healthCheckType'}\n />\n }\n {<Routes fieldName=\"manifest.direct.routes\" />}\n {<EnvironmentVariables fieldName=\"manifest.direct.environment\" />}\n {<Services fieldName=\"manifest.direct.services\" />}\n </div>\n );\n };\n\n public render(): JSX.Element {\n const manifest = this.props.formik.values.manifest;\n const direct = manifest && !!manifest.direct;\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className=\"sm-label-right\">Source Type</div>\n <div className=\"flex-grow\">\n <RadioButtonInput\n inline={true}\n value={direct ? 'direct' : 'artifact'}\n options={[\n { label: 'Artifact', value: 'artifact' },\n { label: 'Form', value: 'direct' },\n ]}\n onChange={(e: any) => this.manifestSourceUpdated(e.target.value)}\n />\n </div>\n </div>\n </div>\n </div>\n {direct ? this.getDirectInput() : this.getArtifactInput()}\n </>\n );\n }\n\n public validate(_props: ICloudFoundryServerGroupConfigurationSettingsProps) {\n const errors = {} as any;\n const isStorageSize = (value: string) => /\\d+[MG]/.test(value);\n\n if (!this.props.formik.values.manifest) {\n errors.manifest = 'No manifest information provided';\n return errors;\n }\n\n const direct = this.props.formik.values.manifest.direct;\n if (direct) {\n if (!isStorageSize(direct.memory)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.memory = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (!isStorageSize(direct.diskQuota)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.diskQuota = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (direct.routes) {\n const routeErrors = direct.routes.map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n if (route && regex.exec(route) === null) {\n return `A route did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n return null;\n });\n if (routeErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.routes = routeErrors;\n }\n }\n if (direct.environment) {\n const existingKeys: string[] = [];\n const envErrors = direct.environment.map((e: ICloudFoundryEnvVar) => {\n let myErrors: any;\n if (e.key) {\n const validKeyRegex = /^\\w+$/g;\n if (!validKeyRegex.exec(e.key)) {\n myErrors = {\n key: `This field must be alphanumeric`,\n };\n } else {\n if (existingKeys.filter((key) => key === e.key).length > 0) {\n myErrors = {\n key: `Duplicate variable name`,\n };\n } else {\n existingKeys.push(e.key);\n }\n }\n }\n return myErrors;\n });\n if (envErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.environment = envErrors;\n }\n }\n } else {\n const { manifest } = this.props.formik.values;\n if (\n !manifest ||\n !((manifest.artifact && manifest.artifact.type && manifest.artifact.reference) || manifest.artifactId)\n ) {\n errors.manifest = 'Manifest artifact information is required';\n }\n }\n\n return errors;\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { Application, IModalComponentProps, IPipeline, IStage } from '@spinnaker/core';\nimport { noop, ReactInjector, ReactModal, TaskMonitor, WizardModal, WizardPage } from '@spinnaker/core';\n\nimport { ServerGroupTemplateSelection } from './ServerGroupTemplateSelection';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { CloudFoundryServerGroupArtifactSettings } from './sections/artifactSettings/ArtifactSettings.cf';\nimport { CloudFoundryServerGroupConstantArtifactSettings } from './sections/artifactSettings/ConstantArtifactSettings.cf';\nimport { CloudFoundryServerGroupBasicSettings } from './sections/basicSettings/BasicSettings.cf';\nimport { CloudFoundryServerGroupCloneSettings } from './sections/cloneSettings/CloneSettings.cf';\nimport { CloudFoundryServerGroupConfigurationSettings } from './sections/configurationSettings/ConfigurationSettings.cf';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nimport './serverGroup.less';\n\nexport interface ICloudFoundryCreateServerGroupProps extends IModalComponentProps {\n application: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n isSourceConstant?: boolean;\n serverGroup?: ICloudFoundryServerGroup;\n title: string;\n}\n\nexport interface ICloudFoundryCreateServerGroupState {\n pipeline: IPipeline;\n isClone: boolean;\n loading: boolean;\n requiresTemplateSelection: boolean;\n stage?: IStage;\n taskMonitor: TaskMonitor;\n}\n\nexport class CloudFoundryCreateServerGroupModal extends React.Component<\n ICloudFoundryCreateServerGroupProps,\n ICloudFoundryCreateServerGroupState\n> {\n public static defaultProps: Partial<ICloudFoundryCreateServerGroupProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n public static show(props: ICloudFoundryCreateServerGroupProps): Promise<ICloudFoundryCreateServerGroupCommand> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(CloudFoundryCreateServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryCreateServerGroupProps) {\n super(props);\n const pipeline = get(props, 'command.viewState.pipeline', undefined);\n const stage = get(props, 'command.viewState.stage', undefined);\n const mode = get(props, 'command.viewState.mode', undefined);\n this.state = {\n pipeline: pipeline,\n isClone: !!props.isSourceConstant || mode === 'editClonePipeline',\n loading: false,\n requiresTemplateSelection: get(props, 'command.viewState.requiresTemplateSelection', false),\n stage,\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Creating your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: this.onTaskComplete,\n }),\n };\n }\n\n private templateSelected = () => {\n this.setState({ requiresTemplateSelection: false });\n this.initialize();\n };\n\n private initialize = () => {\n this.setState({ loading: false });\n };\n\n private onTaskComplete = () => {\n this.props.application.serverGroups.refresh();\n };\n\n private submit = (command: ICloudFoundryCreateServerGroupCommand): void => {\n command.selectedProvider = 'cloudfoundry';\n if (\n command.viewState.mode === 'createPipeline' ||\n command.viewState.mode === 'editPipeline' ||\n command.viewState.mode === 'editClonePipeline'\n ) {\n this.props.closeModal && this.props.closeModal(command);\n } else if (command.viewState.mode === 'clone') {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n } else {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n }\n };\n\n public render(): React.ReactElement<CloudFoundryCreateServerGroupModal> {\n const { loading, pipeline, isClone, requiresTemplateSelection, stage, taskMonitor } = this.state;\n const { application, command, dismissModal, title, isSourceConstant } = this.props;\n\n if (requiresTemplateSelection) {\n return (\n <ServerGroupTemplateSelection\n app={application}\n command={command}\n onDismiss={dismissModal}\n onTemplateSelected={this.templateSelected}\n />\n );\n }\n\n return (\n <WizardModal<ICloudFoundryCreateServerGroupCommand>\n heading={title}\n initialValues={command}\n loading={loading}\n taskMonitor={taskMonitor}\n dismissModal={dismissModal}\n closeModal={this.submit}\n submitButtonLabel={command.viewState.submitButtonLabel}\n render={({ formik, nextIdx, wizard }) => (\n <>\n <WizardPage\n label=\"Basic Settings\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => <CloudFoundryServerGroupBasicSettings ref={innerRef} formik={formik} />}\n />\n\n {isClone && isSourceConstant && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConstantArtifactSettings\n ref={innerRef}\n formik={formik}\n source={command.source}\n />\n )}\n />\n )}\n\n {isClone && !isSourceConstant && (\n <WizardPage\n label=\"Source\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupCloneSettings application={application} ref={innerRef} formik={formik} />\n )}\n />\n )}\n\n {!isClone && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupArtifactSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n )}\n\n <WizardPage\n label=\"Manifest\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConfigurationSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n </>\n )}\n />\n );\n }\n}\n","import React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { StageConstants } from '@spinnaker/core';\nimport { CloudFoundryServerGroupCommandBuilder } from '../../../serverGroup/configure';\nimport { CloudFoundryCreateServerGroupModal } from '../../../serverGroup/configure/wizard/CreateServerGroupModal';\n\nexport interface ICloudFoundryCloneServerGroupStageConfigState {\n buttonText: string;\n}\n\nexport class CloudFoundryCloneServerGroupStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCloneServerGroupStageConfigState\n> {\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n application: props.application.name,\n });\n this.state = {\n buttonText: props.stage.destination ? 'Edit clone configuration' : 'Add clone configuration',\n };\n }\n\n private handleResult = (command: any) => {\n this.props.updateStageField({\n credentials: command.credentials,\n capacity: command.capacity,\n account: command.account,\n delayBeforeDisableSec: command.delayBeforeDisableSec,\n freeFormDetails: command.freeFormDetails,\n maxRemainingAsgs: command.maxRemainingAsgs,\n region: command.region,\n startApplication: command.startApplication,\n stack: command.stack,\n strategy: command.strategy,\n target: command.target,\n targetCluster: command.targetCluster,\n manifest: command.manifest,\n source: command.source,\n });\n this.setState({ buttonText: 'Edit clone configuration' });\n };\n\n private addCluster = () => {\n const { application, stage, pipeline } = this.props;\n const title = 'Clone Cluster';\n const command = CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline);\n CloudFoundryCreateServerGroupModal.show({\n application,\n command,\n isSourceConstant: false,\n title,\n })\n .then(this.handleResult)\n .catch(() => {});\n };\n\n public render() {\n const { stage } = this.props;\n const { buttonText } = this.state;\n const cloneTargets = StageConstants.TARGET_LIST;\n return (\n <div className=\"form-horizontal\">\n <div>\n <h4>Clone Source</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n <th>Cluster</th>\n <th>Target</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.source ? stage.source.account : ''}</td>\n <td>{stage.source ? stage.source.region : ''}</td>\n <td>{stage.source ? stage.source.clusterName : ''}</td>\n <td>\n {stage.source ? cloneTargets.filter((t) => t.val === stage.source.target).map((t) => t.label) : ''}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <h4>Clone Destination</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.credentials}</td>\n <td>{stage.region}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addCluster()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> {buttonText}\n </button>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCloneServerGroupStageConfig } from './CloudFoundryCloneServerGroupStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCloneServerGroupStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'cloneServerGroup',\n provides: 'cloneServerGroup',\n validators: [],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IArtifact, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n NgReact,\n StageArtifactSelectorDelegate,\n StageConfigField,\n StageConstants,\n TextInput,\n} from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryCreateServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryCreateServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryCreateServiceBindingsStageConfigState\n> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceBindingRequests && stage.serviceBindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceBindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, null);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, artifact);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, id);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [\n ...stage.serviceBindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [...stage.serviceBindingRequests];\n newServiceBindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private restageRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restageRequired', event.target.checked);\n this.props.formik.setFieldValue('restartRequired', !event.target.checked);\n };\n\n private restartRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restartRequired', event.target.checked);\n this.props.formik.setFieldValue('restageRequired', !event.target.checked);\n };\n\n private updatableBindingUpdated = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].updatable`, event.target.checked);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restage Required\">\n <input type=\"checkbox\" checked={stage.restageRequired} onChange={this.restageRequiredUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restart Required\">\n <input type=\"checkbox\" checked={stage.restartRequired} onChange={this.restartRequiredUpdated} />\n </StageConfigField>\n <h4>Service Bindings</h4>\n {stage.serviceBindingRequests && stage.serviceBindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceBindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceBindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={\n CloudFoundryCreateServiceBindingsStageConfigForm.excludedArtifactTypes\n }\n expectedArtifactId={a.id}\n label=\"Service Binding Parameters\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index);\n }}\n onExpectedArtifactSelected={(artifact) => this.onTemplateArtifactSelected(artifact.id, index)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <StageConfigField label=\"Updatable Binding\">\n <input\n type=\"checkbox\"\n checked={a.updatable}\n onChange={(event) => this.updatableBindingUpdated(event, index)}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Binding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceBindingsStageConfigForm } from './CloudFoundryCreateServiceBindingsStageConfigForm';\n\nexport interface ServiceBindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryCreateServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceBindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryCreateServiceBindingsStage}\n render={(props) => <CloudFoundryCreateServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryCreateServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceBindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceBindingRequests: ServiceBindingRequests[]) => {\n if (validateServiceBindingRequests(serviceBindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceBindingRequests(serviceBindingRequests: ServiceBindingRequests[]): boolean {\n if (serviceBindingRequests?.length < 1) {\n return false;\n }\n return serviceBindingRequests.every((req) => req?.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryCreateServiceBindingsConfig,\n validateCloudFoundryCreateServiceBindingsStage,\n} from './CloudFoundryCreateServiceBindingsConfig';\n\nexport const CF_CREATE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryCreateServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Create Service Bindings',\n description: 'Create CF service bindings with optional parameters.',\n key: CF_CREATE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryCreateServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryCreateServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryCreateServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryCreateServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCreateServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceKeyStageConfig } from './CloudFoundryCreateServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCreateServiceKeyStageConfig,\n description: 'Create a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'createServiceKey',\n label: 'Create Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryDeleteServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDeleteServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDeleteServiceBindingsStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceUnbindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [\n ...stage.serviceUnbindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [...stage.serviceUnbindingRequests];\n newServiceUnbindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <h4>Service Unbindings</h4>\n {stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceUnbindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceUnbindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Unbinding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceBindingsStageConfigForm } from './CloudFoundryDeleteServiceBindingsStageConfigForm';\n\ninterface ServiceUnbindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryDeleteServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceUnbindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDeleteServiceBindingsStage}\n render={(props) => <CloudFoundryDeleteServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDeleteServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceUnbindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceUnbindingRequests: ServiceUnbindingRequests[]) => {\n if (validateServiceUnbindingRequests(serviceUnbindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceUnbindingRequests(serviceUnbindingRequests: ServiceUnbindingRequests[]): boolean {\n if (serviceUnbindingRequests?.length < 1) {\n return false;\n }\n return serviceUnbindingRequests.every((req) => req.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDeleteServiceBindingsConfig,\n validateCloudFoundryDeleteServiceBindingsStage,\n} from './CloudFoundryDeleteServiceBindingsConfig';\n\nexport const CF_DELETE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryDeleteServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Delete Service Bindings',\n description: 'Delete CF service bindings with optional parameters.',\n key: CF_DELETE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryDeleteServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryDeleteServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryDeleteServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryDeleteServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeleteServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceKeyStageConfig } from './CloudFoundryDeleteServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeleteServiceKeyStageConfig,\n description: 'Delete a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'deleteServiceKey',\n label: 'Delete Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import { includes } from 'lodash';\nimport React from 'react';\n\ninterface IServiceTagsInputProps {\n tags: string[];\n onChange: (e: string[]) => void;\n}\n\ninterface IServiceTagsInputState {\n newTag: string;\n tags: string[];\n}\n\nexport class ServiceTagsInput extends React.Component<IServiceTagsInputProps, IServiceTagsInputState> {\n constructor(props: IServiceTagsInputProps) {\n super(props);\n this.state = {\n newTag: '',\n tags: this.props.tags || [],\n };\n }\n\n private newTagUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.setState({ newTag: event.target.value });\n };\n\n private addTag = (): void => {\n const { onChange, tags } = this.props;\n const { newTag } = this.state;\n const currentTags = tags || [];\n\n if (!includes(currentTags, newTag.trim())) {\n const newTags = [...currentTags, newTag.trim()].sort((a, b) => a.localeCompare(b));\n this.setState({\n tags: newTags,\n newTag: '',\n });\n onChange(newTags);\n }\n };\n\n private deleteTag = (index: number): void => {\n const { onChange, tags } = this.props;\n const newTags = tags.slice();\n newTags.splice(index, 1);\n this.setState({ tags: newTags });\n onChange(newTags);\n };\n\n public render() {\n const { tags, newTag } = this.state;\n return (\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <input type=\"text\" className=\"form-control\" name=\"newTag\" onChange={this.newTagUpdated} value={newTag} />\n </div>\n <div className=\"col-md-2\">\n <button disabled={!newTag.trim()} className=\"btn btn-default btn-sm btn-add-tag\" onClick={this.addTag}>\n Add Tag\n </button>\n </div>\n </div>\n <div>\n <div>\n {tags &&\n tags.map((tag: any, index: number) => {\n return (\n <span className=\"badge badge-pill\" key={index}>\n &nbsp;\n {tag}\n &nbsp;\n <button\n type=\"button\"\n className=\"close small\"\n aria-label=\"Close\"\n onClick={() => this.deleteTag(index)}\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </span>\n );\n })}\n </div>\n </div>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IService, IServicePlan } from '@spinnaker/core';\nimport { ReactSelectInput, ServicesReader, StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type { ICloudFoundryServiceManifestDirectSource } from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceDirectInputProps {\n credentials: string;\n region: string;\n service: ICloudFoundryServiceManifestDirectSource;\n onServiceChanged: (_: ICloudFoundryServiceManifestDirectSource) => void;\n}\n\ninterface ICreateServiceInstanceDirectInputState {\n serviceNamesAndPlans: IService[];\n}\n\nexport class CreateServiceInstanceDirectInput extends React.Component<\n ICreateServiceInstanceDirectInputProps,\n ICreateServiceInstanceDirectInputState\n> {\n private destroy$ = new Subject();\n constructor(props: ICreateServiceInstanceDirectInputProps) {\n super(props);\n this.state = { serviceNamesAndPlans: [] };\n }\n\n public componentDidUpdate(prevProps: Readonly<ICreateServiceInstanceDirectInputProps>) {\n const { credentials, region } = this.props;\n if ((credentials && credentials !== prevProps.credentials) || region !== prevProps.region) {\n this.loadServices(credentials, region);\n }\n }\n\n public componentDidMount(): void {\n this.loadServices(this.props.credentials, this.props.region);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadServices(credentials: string, region: string) {\n if (credentials && region) {\n observableFrom(ServicesReader.getServices(credentials, region))\n .pipe(takeUntil(this.destroy$))\n .subscribe((serviceNamesAndPlans) => this.setState({ serviceNamesAndPlans }));\n }\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private serviceUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n service: option.target.value,\n servicePlan: '',\n });\n };\n\n private servicePlanUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n servicePlan: option.target.value,\n });\n };\n\n private parametersUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n parameters: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n const services = this.state.serviceNamesAndPlans.map((item) => item.name);\n const serviceWithPlans = this.state.serviceNamesAndPlans.find((it) => it.name === service.service);\n const servicePlans = serviceWithPlans ? serviceWithPlans.servicePlans.map((it: IServicePlan) => it.name) : [];\n return (\n <div>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service\">\n <ReactSelectInput\n clearable={false}\n onChange={this.serviceUpdated}\n value={service.service}\n stringOptions={services}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Plan\">\n <ReactSelectInput\n clearable={false}\n onChange={this.servicePlanUpdated}\n value={service.servicePlan}\n stringOptions={servicePlans}\n />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Parameters\">\n <TextAreaInput className=\"form-control\" onChange={this.parametersUpdated} value={service.parameters || ''} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type {\n ICloudFoundryServiceManifestSource,\n ICloudFoundryServiceUserProvidedSource,\n} from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceUserProvidedInputProps {\n onChange: (serviceInput: ICloudFoundryServiceManifestSource) => void;\n service: ICloudFoundryServiceUserProvidedSource;\n onServiceChanged: (_: ICloudFoundryServiceUserProvidedSource) => void;\n}\n\nexport class CreateUserProvidedInput extends React.Component<ICreateServiceInstanceUserProvidedInputProps> {\n constructor(props: ICreateServiceInstanceUserProvidedInputProps) {\n super(props);\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private syslogDrainUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n syslogDrainUrl: event.target.value,\n });\n };\n\n private routeServiceUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n routeServiceUrl: event.target.value,\n });\n };\n\n private credentialsUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n credentials: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n return (\n <>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Syslog Drain URL\">\n <TextInput onChange={this.syslogDrainUrlUpdated} value={service.syslogDrainUrl} />\n </StageConfigField>\n <StageConfigField label=\"Route Service URL\">\n <TextInput onChange={this.routeServiceUrlUpdated} value={service.routeServiceUrl} />\n </StageConfigField>\n <StageConfigField label=\"Credentials\">\n <TextAreaInput onChange={this.credentialsUpdated} value={service.credentials} />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IArtifact, IExpectedArtifact, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n ReactSelectInput,\n StageArtifactSelector,\n StageConfigField,\n} from '@spinnaker/core';\n\nimport { CreateServiceInstanceDirectInput } from './CreateServiceInstanceDirectInput';\nimport { CreateUserProvidedInput } from './CreateUserProvidedInput';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\n\nimport './cloudfoundryDeployServiceStage.less';\n\ninterface ICloudFoundryDeployServiceStageConfigState {\n regions: IRegion[];\n accounts: IAccount[];\n}\n\nexport class CloudFoundryDeployServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeployServiceStageConfigState\n> {\n private defaultDirectManifest = {\n direct: {\n parameters: '',\n service: '',\n serviceInstanceName: '',\n servicePlan: '',\n updatable: false,\n versioned: false,\n },\n };\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n private accountUpdated = (option: Option<string>): void => {\n const credentials = option.target.value;\n const updates: any = { credentials: credentials, region: '' };\n if (!this.props.stage.manifest || this.props.stage.manifest.direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n this.reloadRegions();\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.reloadRegions();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private reloadRegions = () => {\n const { credentials } = this.props.stage;\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'direct':\n this.props.updateStageField({ manifest: this.defaultDirectManifest });\n break;\n case 'artifact':\n this.props.updateStageField({ manifest: {} });\n break;\n }\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.updateStageField({ manifest: { artifactId: expectedArtifact.id } });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.updateStageField({ manifest: { artifact } });\n };\n\n private regionUpdated = (option: Option<string>): void => {\n const updates: any = { region: option.target.value };\n const direct = this.props.stage.manifest.direct;\n if (direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n };\n\n private serviceManifestSourceUpdated = (manifest: ICloudFoundryServiceManifestSource) => {\n this.props.updateStageField({ manifest });\n };\n\n private userProvidedUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ userProvided: event.target.checked });\n };\n\n public render() {\n const { pipeline, stage } = this.props;\n const { credentials, region, userProvided, manifest } = this.props.stage;\n const { accounts, regions } = this.state;\n const directInput = !manifest || !!manifest.direct;\n let manifestInput;\n\n if (directInput) {\n const directManifest = (manifest && manifest.direct) || this.defaultDirectManifest;\n manifestInput = userProvided ? (\n <CreateUserProvidedInput\n onChange={this.serviceManifestSourceUpdated}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n ) : (\n <CreateServiceInstanceDirectInput\n credentials={credentials}\n region={region}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n );\n } else {\n manifestInput = (\n <StageConfigField label=\"Artifact\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest.artifactId}\n excludedArtifactTypePatterns={[\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ]}\n artifact={manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n />\n </StageConfigField>\n );\n }\n\n return (\n <div className=\"form-horizontal cloudfoundry-deploy-service-stage\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput\n clearable={false}\n onChange={this.regionUpdated}\n value={region}\n stringOptions={regions.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"User-provided\">\n <input type=\"checkbox\" checked={!!userProvided} onChange={this.userProvidedUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Configuration Source\">\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={!directInput} onChange={() => this.manifestSourceUpdated('artifact')} />{' '}\n Manifest\n </label>\n </div>\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={directInput} onChange={() => this.manifestSourceUpdated('direct')} /> Form\n </label>\n </div>\n </StageConfigField>\n {manifestInput}\n </div>\n );\n }\n}\n","import { safeLoad } from 'js-yaml';\nimport { get, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, PipelineConfigValidator, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeployServiceStageConfig } from './CloudFoundryDeployServiceStageConfig';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\ninterface IServiceFieldValidatorConfig extends IValidatorConfig {\n manifestSource: string;\n}\n\nconst sourceType = (manifest: ICloudFoundryServiceManifestSource, userProvided: boolean) => {\n if (manifest && manifest.direct) {\n return userProvided ? 'userProvided' : 'direct';\n } else {\n return 'artifact';\n }\n};\n\nconst sourceStruct = (manifest: ICloudFoundryServiceManifestSource) => {\n return manifest && manifest.direct ? 'direct' : 'artifact';\n};\n\nPipelineConfigValidator.registerValidator(\n 'requiredDeployServiceField',\n new (class implements IStageOrTriggerValidator {\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const serviceInput: ICloudFoundryServiceManifestSource = get(stage, 'manifest');\n if (sourceType(serviceInput, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(serviceInput, sourceStruct(serviceInput));\n const content: any = get(manifestSource, validationConfig.fieldName);\n const fieldLabel = validationConfig.fieldLabel || upperFirst(validationConfig.fieldName);\n return content ? null : `<strong>${fieldLabel}</strong> is a required field for the Deploy Service stage.`;\n }\n })(),\n);\n\nPipelineConfigValidator.registerValidator(\n 'validDeployServiceParameterJsonOrYaml',\n new (class implements IStageOrTriggerValidator {\n private isJson(value: string): boolean {\n try {\n JSON.parse(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isYaml(value: string): boolean {\n try {\n safeLoad(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const manifest: any = get(stage, 'manifest');\n if (sourceType(manifest, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(manifest, sourceStruct(manifest));\n const fieldContent: any = get(manifestSource, validationConfig.fieldName);\n\n if (fieldContent) {\n if (!this.isJson(fieldContent) && !this.isYaml(fieldContent)) {\n const fieldLabel = upperFirst(validationConfig.fieldLabel || validationConfig.fieldName);\n return validationConfig.message || `<strong>${fieldLabel}</strong> should be a valid JSON or YAML string.`;\n }\n }\n return null;\n }\n })(),\n);\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeployServiceStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n supportsCustomTimeout: true,\n description: 'Deploys services using Open Service Broker and deploys user-provided services',\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'deployService',\n label: 'Deploy Service',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'service',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'servicePlan',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'artifactAccount',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'reference',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'userProvided',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'direct',\n fieldName: 'parameters',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'userProvided',\n fieldName: 'credentials',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'destroyServerGroup',\n provides: 'destroyServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to destroy a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\n\nexport interface ICloudFoundryDestroyServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDestroyServiceStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDestroyServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('application', this.state.application.name);\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const creds = option.value;\n this.props.formik.setFieldValue('credentials', creds);\n this.props.formik.setFieldValue('region', '');\n if (creds) {\n this.loadRegions(creds);\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n this.props.formik.setFieldValue('region', option.value);\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('serviceInstanceName', event.target.value);\n };\n\n private removeBindingsUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('removeBindings', event.target.checked);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, regions } = this.state;\n const { credentials, region, serviceInstanceName } = stage;\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <Select\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={credentials}\n onChange={this.accountUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n clearable={false}\n value={region}\n onChange={this.regionUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <input\n type=\"text\"\n className=\"form-control\"\n required={true}\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Remove Bindings\">\n <input type=\"checkbox\" checked={stage.removeBindings} onChange={this.removeBindingsUpdated} />\n {stage.removeBindings && (\n <div>\n Warning: Prior to destroying, this will attempt to unbind any server groups that are bound to this\n service. This stage will fail if any server groups don't belong to the spinnaker application.\n </div>\n )}\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDestroyServiceStageConfigForm } from './CloudFoundryDestroyServiceStageConfigForm';\n\nexport function CloudFoundryDestroyServiceStageConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n credentials: '',\n serviceInstanceName: '',\n removeBindings: false,\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDestroyServiceStage}\n render={(props) => <CloudFoundryDestroyServiceStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDestroyServiceStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('serviceInstanceName', 'Service Instance Name').required();\n formValidator.field('application', 'Application').required();\n\n return formValidator.validateForm();\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDestroyServiceStageConfig,\n validateCloudFoundryDestroyServiceStage,\n} from './CloudFoundryDestroyServiceStageConfig';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDestroyServiceStageConfig,\n supportsCustomTimeout: true,\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'destroyService',\n provides: 'destroyService',\n validateFn: validateCloudFoundryDestroyServiceStage,\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'disableServerGroup',\n provides: 'disableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'enableServerGroup',\n provides: 'enableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Map a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'mapLoadBalancers',\n label: 'Map Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryResizeAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryResizeAsgStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryResizeAsgStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n const { stage } = props;\n let interestingHealthProviderNames;\n if (\n stage.isNew &&\n props.application.attributes.platformHealthOnlyShowOverride &&\n props.application.attributes.platformHealthOnly\n ) {\n interestingHealthProviderNames = ['Cloud Foundry'];\n }\n const { capacity } = stage;\n this.props.updateStageField({\n action: 'scale_exact',\n capacity: capacity && capacity.desired ? capacity : { desired: 1, min: 1, max: 1 },\n cloudProvider: 'cloudfoundry',\n diskQuota: stage.diskQuota || 1024,\n interestingHealthProviderNames: interestingHealthProviderNames,\n memory: stage.memory || 1024,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private instanceCountUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const instanceCount = parseInt(event.target.value, 10);\n this.props.updateStageField({\n capacity: {\n desired: instanceCount,\n min: instanceCount,\n max: instanceCount,\n },\n });\n };\n\n private memoryUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ memory: parseInt(event.target.value, 10) });\n };\n\n private diskQuotaUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ diskQuota: parseInt(event.target.value, 10) });\n };\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { accounts } = this.state;\n const { application, pipeline, stage } = this.props;\n const { capacity, diskQuota, memory, target } = stage;\n const instanceCount = capacity.desired;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <div className=\"form-group\">\n <span className=\"col-md-3 sm-label-right\" />\n <div className=\"col-md-9\">\n <div className=\"col-md-3 sm-label-left\">Instances</div>\n <div className=\"col-md-3 sm-label-left\">Mem (MB)</div>\n <div className=\"col-md-3 sm-label-left\">Disk (MB)</div>\n </div>\n <StageConfigField label=\"Match capacity\">\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"instanceCount\"\n onChange={this.instanceCountUpdated}\n value={instanceCount}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"memory\"\n onChange={this.memoryUpdated}\n value={memory}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"diskQuota\"\n onChange={this.diskQuotaUpdated}\n value={diskQuota}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-9 col-md-offset-3\">\n <em className=\"subinput-note\">Scaled capacity will match the numbers entered</em>\n </div>\n </StageConfigField>\n </div>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryResizeAsgStageConfig } from './CloudFoundryResizeAsgStageConfig';\nimport type { IInstanceFieldSizeValidationConfig } from '../../config/validation/instanceSize.validator';\n\nconst diskValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'diskQuota',\n fieldLabel: 'Disk Mb',\n min: 256,\n preventSave: true,\n};\n\nconst instanceCountValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'capacity.desired',\n fieldLabel: 'Instances',\n min: 0,\n preventSave: true,\n};\n\nconst memoryValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'memory',\n fieldLabel: 'Mem Mb',\n min: 256,\n preventSave: true,\n};\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryResizeAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'resizeServerGroup',\n provides: 'resizeServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to resize a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n instanceCountValidator,\n memoryValidator,\n diskValidator,\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRollbackClusterStageProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\nexport interface ICloudFoundryRollbackClusterStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryRollbackClusterStageConfig extends React.Component<\n ICloudFoundryRollbackClusterStageProps,\n ICloudFoundryRollbackClusterStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: ICloudFoundryRollbackClusterStageProps) {\n super(props);\n\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n regions: this.props.stage.regions || [],\n targetHealthyRollbackPercentage: 100,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private waitTimeBetweenRegionsUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const time = parseInt(event.target.value || '0', 10);\n this.props.updateStageField({ waitTimeBetweenRegions: time });\n };\n\n private componentUpdate = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n moniker: stage.moniker,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { waitTimeBetweenRegions } = stage;\n const { accounts } = this.state;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdate}\n component={stage}\n />\n )}\n\n {stage.regions.length > 1 && (\n <StageConfigField label=\"Wait\">\n <input\n type=\"number\"\n min=\"0\"\n value={waitTimeBetweenRegions}\n onChange={this.waitTimeBetweenRegionsUpdated}\n className=\"form-control input-sm inline-number\"\n />\n &nbsp;seconds between regional rollbacks.\n </StageConfigField>\n )}\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRollbackClusterStageConfig } from './CloudFoundryRollbackClusterStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryRollbackClusterStageConfig,\n controller: 'cfRollbackClusterStageCtrl',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'regions' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpelText, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRunTaskStageConfigState {\n accounts: IAccount[];\n region: string;\n}\n\nexport class CloudFoundryRunJobStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryRunTaskStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n region: '',\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, stage } = this.props;\n const { target, jobName, command, logsUrl } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n isSingleRegion={true}\n />\n <StageConfigField label=\"Target\">\n <TargetSelect\n model={{ target }}\n options={StageConstants.TARGET_LIST}\n onChange={(t) => this.props.updateStageField({ target: t })}\n />\n </StageConfigField>\n <StageConfigField label=\"Job Name\" helpKey={'cf.runJob.jobName'}>\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ jobName: e.target.value })}\n value={jobName}\n maxLength={238}\n />\n </StageConfigField>\n <StageConfigField label=\"Command\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ command: e.target.value })}\n value={command}\n />\n </StageConfigField>\n <StageConfigField label=\"Logs URL\" helpKey={'cf.runJob.logsUrl'}>\n <SpelText\n placeholder=\"\"\n onChange={(value) => this.props.updateStageField({ logsUrl: value })}\n value={logsUrl}\n pipeline={this.props.pipeline}\n docLink={false}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { bindAll } from 'lodash';\nimport React from 'react';\nimport { Button, Modal } from 'react-bootstrap';\n\nimport type { IInstanceConsoleOutput } from '@spinnaker/core';\nimport { InstanceReader } from '@spinnaker/core';\n\nexport enum CloudFoundryRecentLogsType {\n APP = 'app',\n TASK = 'task',\n}\n\nexport interface ICloudFoundryRecentLogsProps {\n account: string;\n region: string;\n resourceDisplayName: string;\n resourceGuid: string;\n logsType: CloudFoundryRecentLogsType;\n resourceInstanceIndex?: number;\n}\n\nexport interface ICloudFoundryRecentLogsState {\n logs: string;\n showModal: boolean;\n errorMessage: string;\n}\n\nexport class CloudFoundryRecentLogs extends React.Component<\n ICloudFoundryRecentLogsProps,\n ICloudFoundryRecentLogsState\n> {\n constructor(props: ICloudFoundryRecentLogsProps) {\n super(props);\n this.state = {\n logs: '',\n showModal: false,\n errorMessage: null,\n };\n bindAll(this, ['open', 'close', 'onClick']);\n }\n\n private canShow(): boolean {\n const { resourceGuid } = this.props;\n return resourceGuid !== ''; // or null?\n }\n\n private generateResourceId(): string {\n const { resourceGuid, logsType, resourceInstanceIndex } = this.props;\n const optionalInstanceIndex = logsType === CloudFoundryRecentLogsType.APP ? `:${resourceInstanceIndex}` : '';\n return `${logsType}:${resourceGuid}${optionalInstanceIndex}`;\n }\n\n public close() {\n this.setState({ showModal: false });\n }\n\n public open() {\n this.setState({ showModal: true });\n }\n\n public onClick() {\n const { account, region } = this.props;\n InstanceReader.getConsoleOutput(account, region, this.generateResourceId(), 'cloudfoundry')\n .then((response: IInstanceConsoleOutput) => {\n this.setState({\n logs: response.output as string,\n });\n this.open();\n })\n .catch((exception: any) => {\n this.setState({ errorMessage: exception.data.message });\n this.open();\n });\n }\n\n public render() {\n const { showModal, logs, errorMessage } = this.state;\n if (this.canShow()) {\n return (\n <div>\n <a onClick={this.onClick} className=\"clickable\">\n Recent\n </a>\n <Modal show={showModal} onHide={this.close} dialogClassName=\"modal-lg modal-fullscreen\">\n <Modal.Header closeButton={true}>\n <Modal.Title>Recent logs</Modal.Title>\n <h5>\n CloudFoundry {this.props.logsType.valueOf()} name: {this.props.resourceDisplayName}\n </h5>\n </Modal.Header>\n <Modal.Body>\n {logs.length > 0 && (\n <>\n <pre className=\"body-small\">{logs}</pre>\n </>\n )}\n\n {logs.length === 0 && <>No logs returned.</>}\n\n {errorMessage && <pre className=\"body-small\">{errorMessage}</pre>}\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={this.close}>Close</Button>\n </Modal.Footer>\n </Modal>\n </div>\n );\n } else {\n return null;\n }\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection } from '@spinnaker/core';\nimport {\n CloudFoundryRecentLogs,\n CloudFoundryRecentLogsType,\n} from '../../../presentation/widgets/recentLogs/CloudFoundryRecentLogs';\n\nexport class RunJobExecutionDetails extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'runJobDetails';\n\n public render() {\n const { stage, name, current } = this.props;\n const { context } = stage;\n const account = context['deploy.account.name'];\n const region = get(stage, ['context', 'jobStatus', 'location'], '');\n const taskId = get(stage, ['context', 'jobStatus', 'id'], '');\n const taskName = get(stage, ['context', 'jobStatus', 'name'], '');\n const logsUrl: string = get(stage, ['context', 'logsUrl']);\n\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <div className=\"row\">\n <div className=\"col-md-9\">\n <dl className=\"dl-narrow dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n {region && (\n <>\n <dt>Region</dt>\n <dd>{region}</dd>\n <dt>Logs</dt>\n <dd>\n <CloudFoundryRecentLogs\n account={account}\n region={region}\n resourceDisplayName={taskName}\n resourceGuid={taskId}\n logsType={CloudFoundryRecentLogsType.TASK}\n />\n </dd>\n {logsUrl && (\n <dd>\n <a target=\"_blank\" href={logsUrl}>\n External\n </a>\n </dd>\n )}\n </>\n )}\n {!region && <div className=\"well\">Collecting additional details...</div>}\n </dl>\n </div>\n </div>\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRunJobStageConfig } from './CloudFoundryRunJobStageConfig';\nimport { RunJobExecutionDetails } from './RunJobExecutionDetails';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n component: CloudFoundryRunJobStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n key: 'runJob',\n provides: 'runJob',\n restartable: true,\n executionDetailsSections: [ExecutionDetailsTasks, RunJobExecutionDetails],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'command' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryShareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const shareToRegions = get(context, 'shareToRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Sharing Regions</dt>\n <dd>\n {shareToRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryShareServiceExecutionDetails {\n export const title = 'cloudfoundryShareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n shareToRegionsList: string[];\n}\n\nexport class CloudFoundryShareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n shareToRegionsList: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const { region } = this.props.stage;\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n if (region) {\n this.clearAndResetShareToRegionList(region, regions);\n }\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private clearAndResetShareToRegionList = (region: string, regions: string[]) => {\n this.setState({ shareToRegionsList: regions.filter((r) => r !== region) });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n shareToRegionsList: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n shareToRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.setState({ shareToRegionsList: [] });\n this.props.updateStageField({\n region,\n shareToRegions: [],\n });\n this.clearAndResetShareToRegionList(region, this.state.regions);\n };\n\n private shareToRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ shareToRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, shareToRegions } = this.props.stage;\n const { accounts, regions, shareToRegionsList } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Share To Regions\">\n <Select\n options={\n shareToRegionsList &&\n shareToRegionsList.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={shareToRegions}\n onChange={this.shareToRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryShareServiceExecutionDetails } from './CloudFoundryShareServiceExecutionDetails';\nimport { CloudFoundryShareServiceStageConfig } from './CloudFoundryShareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'shareService',\n key: 'shareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryShareServiceStageConfig,\n executionDetailsSections: [CloudFoundryShareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Unmap a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'unmapLoadBalancers',\n label: 'Unmap Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryUnshareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const unshareFromRegions = get(context, 'unshareFromRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Unsharing Regions</dt>\n <dd>\n {unshareFromRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryUnshareServiceExecutionDetails {\n export const title = 'cloudfoundryUnshareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n}\n\nexport class CloudFoundryUnshareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({ regions: [] });\n this.props.updateStageField({\n credentials,\n unshareFromRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private unshareFromRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ unshareFromRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, serviceInstanceName, unshareFromRegions } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Unshare From Regions\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={unshareFromRegions}\n onChange={this.unshareFromRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryUnshareServiceExecutionDetails } from './CloudFoundryUnshareServiceExecutionDetails';\nimport { CloudFoundryUnshareServiceStageConfig } from './CloudFoundryUnshareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'unshareService',\n key: 'unshareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryUnshareServiceStageConfig,\n controller: 'cfUnshareServiceStageCtrl',\n executionDetailsSections: [CloudFoundryUnshareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryBuildpack } from '../../../domain';\n\nexport class ServerGroupInformationSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Created</dt>\n {serverGroup.pipelineId ? (\n <dd>\n <a target=\"_blank\" href={'/#/applications/' + serverGroup.app + '/executions/' + serverGroup.pipelineId}>\n {timestamp(serverGroup.createdTime)}\n </a>\n </dd>\n ) : (\n <dd>{timestamp(serverGroup.createdTime)}</dd>\n )}\n <dt>Account</dt>\n <dd>\n <AccountTag account={serverGroup.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{serverGroup.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{serverGroup.space.name}</dd>\n {serverGroup.droplet && (\n <div>\n <dt>Rootfs</dt>\n <dd>{serverGroup.droplet.stack}</dd>\n <dt>Buildpack</dt>\n {serverGroup.droplet.buildpacks ? (\n serverGroup.droplet.buildpacks.map(function (buildpack: ICloudFoundryBuildpack, index: number) {\n return (\n <dd key={index}>\n {buildpack.name} {buildpack.version}\n </dd>\n );\n })\n ) : (\n <dd>n/a</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ApplicationManagerSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { appsManagerUri } = serverGroup;\n return (\n <>\n {appsManagerUri && (\n <CollapsibleSection heading=\"Apps Manager\" defaultExpanded={true}>\n <div>\n <a href={appsManagerUri} target=\"_blank\">\n Apps Manager\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class MetricsSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { metricsUri } = serverGroup;\n return (\n <>\n {metricsUri && (\n <CollapsibleSection heading=\"Metrics\" defaultExpanded={true}>\n <div>\n <a href={metricsUri} target=\"_blank\">\n Metrics\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ServerGroupSizingSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Sizing\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Instances</dt>\n <dd>{serverGroup.instances.length}</dd>\n <dt>Disk (MB)</dt>\n <dd>{serverGroup.diskQuota}</dd>\n <dt>Memory (MB)</dt>\n <dd>{serverGroup.memory}</dd>\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class HealthCheckSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Health Check\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Type</dt>\n <dd>{serverGroup.healthCheckType === undefined ? 'port' : serverGroup.healthCheckType}</dd>\n {serverGroup.healthCheckType === 'http' && (\n <div>\n <dt>Endpoint</dt>\n <dd>{serverGroup.healthCheckHttpEndpoint}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class PackageSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {serverGroup.droplet && serverGroup.droplet.sourcePackage && (\n <CollapsibleSection heading=\"Package\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Checksum</dt>\n <dd>{serverGroup.droplet.sourcePackage.checksum}</dd>\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class BuildSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Build\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.ciBuild && serverGroup.ciBuild.jobName && (\n <div>\n <dt>Job Name</dt>\n <dd>{serverGroup.ciBuild.jobName}</dd>\n </div>\n )}\n {serverGroup.ciBuild && serverGroup.ciBuild.jobNumber && (\n <div>\n <dt>Job Number</dt>\n {serverGroup.ciBuild.jobUrl ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.ciBuild.jobUrl}>\n {serverGroup.ciBuild.jobNumber}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.ciBuild.jobNumber}</dd>\n )}\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.name && (\n <div>\n <dt>Artifact Name</dt>\n <dd>{serverGroup.appArtifact.name}</dd>\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.version && (\n <div>\n <dt>Version</dt>\n {serverGroup.appArtifact.url ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.appArtifact.url}>\n {serverGroup.appArtifact.version}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.appArtifact.version}</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryServiceInstance } from '../../../domain';\n\nexport class BoundServicesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.serviceInstances) && (\n <CollapsibleSection heading=\"Bound Services\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.serviceInstances.map(function (service: ICloudFoundryServiceInstance, index: number) {\n return (\n <div key={index}>\n <dt>Name</dt>\n <dd>{service.name}</dd>\n <dt>Plan</dt>\n <dd>{service.plan}</dd>\n <dt>Tags</dt>\n {service.tags && <dd>{service.tags.join(', ')}</dd>}\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class EnvironmentVariablesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.env) && (\n <CollapsibleSection heading=\"Environment Variables\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {Object.entries(serverGroup.env).map(([k, v], index) => {\n return (\n <div key={index}>\n <dt>{k}</dt>\n <dd>{v}</dd>\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { defaults } from 'lodash';\n\nimport type { ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../domain';\n\nexport class CloudFoundryServerGroupTransformer {\n public static $inject = ['$q'];\n public constructor(private $q: ng.IQService) {}\n\n public normalizeServerGroupDetails(serverGroup: ICloudFoundryServerGroup): ICloudFoundryServerGroup {\n return serverGroup;\n }\n\n public normalizeServerGroup(serverGroup: ICloudFoundryServerGroup): PromiseLike<ICloudFoundryServerGroup> {\n return this.$q.resolve(serverGroup);\n }\n\n public convertServerGroupCommandToDeployConfiguration(base: any): any {\n const command = defaults({ viewState: [] }, base);\n command.cloudProvider = 'cloudfoundry';\n command.provider = 'cloudfoundry';\n command.account = command.credentials;\n\n delete command.viewState;\n delete command.selectedProvider;\n\n if (command.manifest.type === 'direct') {\n command.manifest.env = this.convertManifestEnv(command.manifest.environment);\n } else {\n command.manifest.env = command.manifest.environment;\n }\n\n return command;\n }\n\n private convertManifestEnv(envVars: ICloudFoundryEnvVar[]): {} {\n const newEnv = Object.create(null);\n for (const envVar of envVars) {\n newEnv[envVar.key] = envVar.value;\n }\n return newEnv;\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryMapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryMapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route to {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryUnmapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryUnmapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Unmapping a route from your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.unmapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Unmap route from {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik, FormikProps } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, ICapacity, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n NumberInput,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryResizeServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryResizeServerGroupModalState {\n initialValues: ICloudFoundryResizeServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryResizeServerGroupValues {\n desired: number | string;\n diskQuota?: number;\n memory?: number;\n reason?: string;\n}\n\nexport interface ICloudFoundryResizeJob extends IServerGroupJob {\n capacity?: Partial<ICapacity>;\n diskQuota?: number;\n instanceCount?: number;\n memory?: number;\n serverGroupName: string;\n reason?: string;\n}\n\nexport class CloudFoundryResizeServerGroupModal extends React.Component<\n ICloudFoundryResizeServerGroupModalProps,\n ICloudFoundryResizeServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryResizeServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryResizeServerGroupValues>>();\n\n public static show(props: ICloudFoundryResizeServerGroupModalProps): Promise<ICloudFoundryResizeJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryResizeServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryResizeServerGroupModalProps) {\n super(props);\n\n const { capacity, diskQuota, memory } = props.serverGroup;\n const { desired } = capacity;\n this.state = {\n initialValues: {\n desired,\n diskQuota: diskQuota,\n memory: memory,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Resizing your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryResizeServerGroupValues): void => {\n const { desired, diskQuota, memory, reason } = values;\n const { serverGroup, application } = this.props;\n const capacity = {\n min: desired,\n max: desired,\n desired,\n };\n\n const command: ICloudFoundryResizeJob = {\n capacity,\n diskQuota,\n memory,\n reason,\n serverGroupName: serverGroup.name,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.resizeServerGroup(serverGroup, application, command);\n });\n };\n\n private renderDesired(formik: FormikProps<ICloudFoundryResizeServerGroupValues>): JSX.Element {\n const { serverGroup } = this.props;\n const { capacity } = serverGroup;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <input type=\"number\" className=\"NumberInput form-control\" value={capacity.desired} disabled={true} />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name=\"desired\"\n input={(props) => <NumberInput {...props} min={0} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderQuota(\n formik: FormikProps<ICloudFoundryResizeServerGroupValues>,\n field: string,\n fieldLabel: string,\n initialValue: number,\n ): JSX.Element {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <input type=\"number\" className=\"NumberInput form-control\" value={initialValue} disabled={true} />\n </div>\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name={field}\n input={(props) => <NumberInput {...props} min={64} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n public render() {\n const { serverGroup } = this.props;\n const { diskQuota, memory } = serverGroup;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryResizeServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Resize {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n {this.renderDesired(formik)}\n {this.renderQuota(formik, 'diskQuota', 'Disk (MB)', diskQuota)}\n {this.renderQuota(formik, 'memory', 'Mem (MB)', memory)}\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n ReactSelectInput,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryRollbackServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n previousServerGroup: ICloudFoundryServerGroup;\n allServerGroups: ICloudFoundryServerGroup[];\n disabledServerGroups: ICloudFoundryServerGroup[];\n}\n\nexport interface ICloudFoundryRollbackServerGroupModalState {\n initialValues: ICloudFoundryRollbackServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryRollbackServerGroupValues {\n restoreServerGroupName: string;\n reason?: string;\n}\n\nexport interface ICloudFoundryRollbackJob extends IServerGroupJob {\n rollbackType: string;\n rollbackContext: {\n rollbackServerGroupName: string;\n restoreServerGroupName: string;\n targetHealthyRollbackPercentage: number;\n };\n}\n\nexport class CloudFoundryRollbackServerGroupModal extends React.Component<\n ICloudFoundryRollbackServerGroupModalProps,\n ICloudFoundryRollbackServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryRollbackServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryRollbackServerGroupValues>>();\n\n public static show(props: ICloudFoundryRollbackServerGroupModalProps): Promise<ICloudFoundryRollbackJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryRollbackServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryRollbackServerGroupModalProps) {\n super(props);\n\n const { previousServerGroup, serverGroup } = props;\n const { name } = serverGroup;\n this.state = {\n initialValues: {\n restoreServerGroupName: previousServerGroup ? previousServerGroup.name : undefined,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Rollback ' + name,\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryRollbackServerGroupValues): void => {\n const { reason, restoreServerGroupName } = values;\n const { serverGroup, application } = this.props;\n\n const command: ICloudFoundryRollbackJob = {\n rollbackType: 'EXPLICIT',\n rollbackContext: {\n rollbackServerGroupName: serverGroup.name,\n restoreServerGroupName,\n targetHealthyRollbackPercentage: 100,\n },\n reason,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.rollbackServerGroup(serverGroup, application, command);\n });\n };\n\n public render() {\n const { allServerGroups, serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryRollbackServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Rollback {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <div className=\"row\" style={{ marginTop: '10px', marginBottom: '10px' }}>\n <div className=\"col-md-3 sm-label-right\">Restore to</div>\n <div className=\"col-md-7\">\n <FormikFormField\n name=\"restoreServerGroupName\"\n fastField={true}\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={\n allServerGroups && allServerGroups.map((sg: ICloudFoundryServerGroup) => sg.name)\n }\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n <div className=\"row\">\n <div className=\"col-sm-4 sm-label-right\">Rollback Operations</div>\n </div>\n <div className=\"row\">\n <div className=\"col-sm-11 col-sm-offset-1\">\n <ol>\n <li>\n Enable <em>{formik.values.restoreServerGroupName || 'previous server group'}</em>\n </li>\n <li>Disable {serverGroup.name}</li>\n </ol>\n <p>\n This rollback will affect server groups in {serverGroup.account} ({serverGroup.region}\n ).\n </p>\n </div>\n </div>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\" onClick={() => this.submit(formik.values)}>\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import { filter, find, get, orderBy } from 'lodash';\nimport React from 'react';\nimport { Dropdown, Tooltip } from 'react-bootstrap';\n\nimport type { IOwnerOption, IServerGroupActionsProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n AddEntityTagLinks,\n ClusterTargetBuilder,\n ConfirmationModalService,\n ReactInjector,\n ServerGroupWarningMessageService,\n SETTINGS,\n} from '@spinnaker/core';\n\nimport { CloudFoundryServerGroupCommandBuilder } from '../configure';\nimport { CloudFoundryCreateServerGroupModal } from '../configure/wizard/CreateServerGroupModal';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { CloudFoundryMapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryMapLoadBalancersModal';\nimport { CloudFoundryUnmapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal';\nimport { CloudFoundryResizeServerGroupModal } from './resize/CloudFoundryResizeServerGroupModal';\nimport { CloudFoundryRollbackServerGroupModal } from './rollback/CloudFoundryRollbackServerGroupModal';\n\nexport interface ICloudFoundryServerGroupActionsProps extends IServerGroupActionsProps {\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryServerGroupJob extends IServerGroupJob {\n serverGroupId: string;\n}\n\nexport class CloudFoundryServerGroupActions extends React.Component<ICloudFoundryServerGroupActionsProps> {\n private isEnableLocked(): boolean {\n if (this.props.serverGroup.isDisabled) {\n const resizeTasks = (this.props.serverGroup.runningTasks || []).filter((task) =>\n get(task, 'execution.stages', []).some((stage) => stage.type === 'resizeServerGroup'),\n );\n if (resizeTasks.length) {\n return true;\n }\n }\n return false;\n }\n\n private isRollbackEnabled(): boolean {\n const { app, serverGroup } = this.props;\n\n if (!serverGroup.isDisabled) {\n // enabled server groups are always a candidate for rollback\n return true;\n }\n\n // if the server group selected for rollback is disabled, ensure that at least one enabled server group exists\n return app\n .getDataSource('serverGroups')\n .data.some(\n (g: ICloudFoundryServerGroup) =>\n g.cluster === serverGroup.cluster &&\n g.region === serverGroup.region &&\n g.account === serverGroup.account &&\n !g.isDisabled,\n );\n }\n\n private hasDisabledInstances(): boolean {\n // server group may have disabled instances (out of service) but NOT itself be disabled\n return this.props.serverGroup.isDisabled || get(this.props.serverGroup, 'instanceCounts.outOfService', 0) > 0;\n }\n\n private destroyServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n\n const stateParams = {\n name: serverGroup.name,\n accountId: serverGroup.account,\n region: serverGroup.region,\n };\n\n const taskMonitor = {\n application: app,\n title: 'Destroying ' + serverGroup.name,\n onTaskComplete: () => {\n if (ReactInjector.$state.includes('**.serverGroup', stateParams)) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.destroyServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really destroy ' + serverGroup.name + '?',\n buttonText: 'Destroy ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n interestingHealthProviderNames: undefined as string[],\n submitMethod,\n askForReason: true,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n };\n\n ServerGroupWarningMessageService.addDestroyWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private disableServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const taskMonitor = {\n application: app,\n title: 'Disabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.disableServerGroup(serverGroup, app.name, params);\n };\n\n const confirmationModalParams = {\n header: 'Really disable ' + serverGroup.name + '?',\n buttonText: 'Disable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private enableServerGroup = (): void => {\n if (!this.isRollbackEnabled()) {\n this.showEnableServerGroupModal();\n return;\n }\n\n const confirmationModalParams = {\n header: 'Rolling back?',\n body: `Spinnaker provides an orchestrated rollback feature to carefully restore a different version of this\n server group. Do you want to use the orchestrated rollback?`,\n buttonText: `Yes, let's start the orchestrated rollback`,\n cancelButtonText: 'No, I just want to enable the server group',\n };\n\n ConfirmationModalService.confirm(confirmationModalParams)\n .then(() => this.rollbackServerGroup())\n .catch(({ source }) => {\n // don't show the enable modal if the user cancels with the header button\n if (source === 'footer') {\n this.showEnableServerGroupModal();\n }\n });\n };\n\n private showEnableServerGroupModal(): void {\n const { app, serverGroup } = this.props;\n\n const taskMonitor = {\n application: app,\n title: 'Enabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.enableServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really enable ' + serverGroup.name + '?',\n buttonText: 'Enable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n }\n\n private rollbackServerGroup = (): void => {\n const { app } = this.props;\n\n let serverGroup: ICloudFoundryServerGroup = this.props.serverGroup;\n let previousServerGroup: ICloudFoundryServerGroup;\n let allServerGroups = (app.serverGroups.data as ICloudFoundryServerGroup[]).filter(\n (g) => g.cluster === serverGroup.cluster && g.region === serverGroup.region && g.account === serverGroup.account,\n );\n\n if (serverGroup.isDisabled) {\n // if the selected server group is disabled, it represents the server group that should be _rolled back to_\n previousServerGroup = serverGroup;\n\n /*\n * Find an existing server group to rollback, prefer the largest enabled server group.\n *\n * isRollbackEnabled() ensures that at least one enabled server group exists.\n */\n serverGroup = orderBy(\n allServerGroups.filter((g: ICloudFoundryServerGroup) => g.name !== previousServerGroup.name && !g.isDisabled),\n ['instanceCounts.total', 'createdTime'],\n ['desc', 'desc'],\n )[0] as ICloudFoundryServerGroup;\n }\n\n // the set of all server groups should not include the server group selected for rollback\n allServerGroups = allServerGroups.filter((g) => g.name !== serverGroup.name);\n\n if (allServerGroups.length === 1 && !previousServerGroup) {\n // if there is only one other server group, default to it being the rollback target\n previousServerGroup = allServerGroups[0];\n }\n const cluster = find(app.clusters, {\n name: serverGroup.cluster,\n account: serverGroup.account,\n serverGroups: [],\n });\n const disabledServerGroups: ICloudFoundryServerGroup[] = filter(cluster.serverGroups, {\n isDisabled: true,\n region: serverGroup.region,\n }) as ICloudFoundryServerGroup[];\n\n CloudFoundryRollbackServerGroupModal.show({\n serverGroup,\n previousServerGroup,\n disabledServerGroups: disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n allServerGroups: allServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n application: app,\n });\n };\n\n private resizeServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryResizeServerGroupModal.show({ application: app, serverGroup });\n };\n\n private mapServerGroupToLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryMapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private unmapServerGroupFromLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryUnmapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private cloneServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const command = CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup);\n const title = `Clone ${serverGroup.name}`;\n CloudFoundryCreateServerGroupModal.show({\n application: app,\n command,\n isSourceConstant: true,\n serverGroup,\n title,\n });\n };\n\n public render(): JSX.Element {\n const { app, serverGroup } = this.props;\n const { loadBalancers } = serverGroup;\n const showEntityTags = SETTINGS.feature && SETTINGS.feature.entityTags;\n const entityTagTargets: IOwnerOption[] = ClusterTargetBuilder.buildClusterTargets(serverGroup);\n\n return (\n <Dropdown className=\"dropdown\" id=\"server-group-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Server Group Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n {this.isRollbackEnabled() && (\n <li>\n <a className=\"clickable\" onClick={this.rollbackServerGroup}>\n Rollback\n </a>\n </li>\n )}\n {this.isRollbackEnabled() && <li role=\"presentation\" className=\"divider\" />}\n <li>\n <a className=\"clickable\" onClick={this.resizeServerGroup}>\n Resize\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.disableServerGroup}>\n Disable\n </a>\n </li>\n )}\n {this.hasDisabledInstances() && !this.isEnableLocked() && (\n <li>\n <a className=\"clickable\" onClick={this.enableServerGroup}>\n Enable\n </a>\n </li>\n )}\n {this.isEnableLocked() && (\n <li className=\"disabled\">\n <Tooltip value=\"Cannot enable this server group until resize operation completes\" placement=\"left\">\n <a>\n <span className=\"small glyphicon glyphicon-lock\" /> Enable\n </a>\n </Tooltip>\n </li>\n )}\n <li>\n <a className=\"clickable\" onClick={this.destroyServerGroup}>\n Destroy\n </a>\n </li>\n <li>\n <a className=\"clickable\" onClick={this.cloneServerGroup}>\n Clone\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.mapServerGroupToLoadBalancers}>\n Map Load Balancer\n </a>\n </li>\n )}\n {!serverGroup.isDisabled && loadBalancers && !!loadBalancers.length && (\n <li>\n <a className=\"clickable\" onClick={this.unmapServerGroupFromLoadBalancers}>\n Unmap Load Balancer\n </a>\n </li>\n )}\n {showEntityTags && (\n <AddEntityTagLinks\n component={serverGroup}\n application={app}\n entityType=\"serverGroup\"\n ownerOptions={entityTagTargets}\n onUpdate={() => app.serverGroups.refresh()}\n />\n )}\n </Dropdown.Menu>\n </Dropdown>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport { Observable } from 'rxjs';\n\nimport type { IServerGroupDetailsProps } from '@spinnaker/core';\nimport { ServerGroupReader } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer, ICloudFoundryServerGroup } from '../../domain';\n\nfunction extractServerGroupSummary(props: IServerGroupDetailsProps): PromiseLike<ICloudFoundryServerGroup> {\n const { app, serverGroup } = props;\n return app.ready().then(() => {\n let summary: ICloudFoundryServerGroup = app.serverGroups.data.find((toCheck: ICloudFoundryServerGroup) => {\n return (\n toCheck.name === serverGroup.name &&\n toCheck.account === serverGroup.accountId &&\n toCheck.region === serverGroup.region\n );\n });\n if (!summary) {\n app.loadBalancers.data.some((loadBalancer: ICloudFoundryLoadBalancer) => {\n if (loadBalancer.account === serverGroup.accountId && loadBalancer.region === serverGroup.region) {\n return loadBalancer.serverGroups.some((possibleServerGroup) => {\n if (possibleServerGroup.name === serverGroup.name) {\n summary = possibleServerGroup;\n return true;\n }\n return false;\n });\n }\n return false;\n });\n }\n return summary;\n });\n}\n\nexport function cfServerGroupDetailsGetter(\n props: IServerGroupDetailsProps,\n autoClose: () => void,\n): Observable<ICloudFoundryServerGroup> {\n const { app, serverGroup: serverGroupInfo } = props;\n return new Observable<ICloudFoundryServerGroup>((observer) => {\n extractServerGroupSummary(props).then((summary) => {\n ServerGroupReader.getServerGroup(\n app.name,\n serverGroupInfo.accountId,\n serverGroupInfo.region,\n serverGroupInfo.name,\n ).then((serverGroup: ICloudFoundryServerGroup) => {\n // it's possible the summary was not found because the clusters are still loading\n Object.assign(serverGroup, summary, { account: serverGroupInfo.accountId });\n\n if (!isEmpty(serverGroup)) {\n observer.next(serverGroup);\n } else {\n autoClose();\n }\n }, autoClose);\n }, autoClose);\n });\n}\n","import { CloudProviderRegistry } from '@spinnaker/core';\n\nimport './common/applicationName.validator';\nimport './help/cloudfoundry.help';\nimport { CloudFoundryInstanceDetails } from './instance/details';\nimport {\n CloudFoundryLoadBalancerDetails,\n CloudFoundryLoadBalancerTransformer,\n CloudFoundryMapLoadBalancerModal,\n} from './loadBalancer';\nimport cloudFoundryLogo from './logo/cf.logo.svg';\nimport './pipeline/config/validation/cfTargetImpedance.validator';\nimport './pipeline/config/validation/instanceSize.validator';\nimport './pipeline/config/validation/requiredRoutes.validator';\nimport './pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage';\nimport './pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module';\nimport './pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage';\nimport './pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module';\nimport './pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage';\nimport './pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module';\nimport './pipeline/stages/deployService/cloudFoundryDeployServiceStage.module';\nimport './pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module';\nimport './pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module';\nimport './pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module';\nimport './pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module';\nimport './pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module';\nimport './pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module';\nimport './pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module';\nimport './pipeline/stages/runJob/cloudFoundryRunJob.module';\nimport './pipeline/stages/shareService/cloudFoundryShareServiceStage.module';\nimport './pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module';\nimport './pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module';\nimport {\n ApplicationManagerSection,\n BoundServicesSection,\n BuildSection,\n cfServerGroupDetailsGetter,\n CloudFoundryCreateServerGroupModal,\n CloudFoundryServerGroupActions,\n CloudFoundryServerGroupCommandBuilderShim,\n CloudFoundryServerGroupTransformer,\n EnvironmentVariablesSection,\n HealthCheckSection,\n MetricsSection,\n PackageSection,\n ServerGroupInformationSection,\n ServerGroupSizingSection,\n} from './serverGroup';\n\nimport './logo/cf.logo.less';\n\nCloudProviderRegistry.registerProvider('cloudfoundry', {\n name: 'Cloud Foundry',\n logo: {\n path: cloudFoundryLogo,\n },\n loadBalancer: {\n transformer: CloudFoundryLoadBalancerTransformer,\n details: CloudFoundryLoadBalancerDetails,\n CreateLoadBalancerModal: CloudFoundryMapLoadBalancerModal,\n },\n serverGroup: {\n skipUpstreamStageCheck: true,\n transformer: CloudFoundryServerGroupTransformer,\n detailsActions: CloudFoundryServerGroupActions,\n detailsGetter: cfServerGroupDetailsGetter,\n detailsSections: [\n ServerGroupInformationSection,\n ApplicationManagerSection,\n MetricsSection,\n ServerGroupSizingSection,\n HealthCheckSection,\n BuildSection,\n PackageSection,\n BoundServicesSection,\n EnvironmentVariablesSection,\n ],\n CloneServerGroupModal: CloudFoundryCreateServerGroupModal,\n commandBuilder: CloudFoundryServerGroupCommandBuilderShim,\n scalingActivitiesEnabled: false, // FIXME enable?\n },\n instance: {\n details: CloudFoundryInstanceDetails,\n },\n});\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface ICloudFoundryProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n };\n}\n\nexport const CloudFoundryProviderSettings: ICloudFoundryProviderSettings = (SETTINGS.providers\n .cloudfoundry as ICloudFoundryProviderSettings) || { defaults: {} };\nif (CloudFoundryProviderSettings) {\n CloudFoundryProviderSettings.resetToOriginal = SETTINGS.resetProvider('cloudfoundry');\n}\n"],"names":["__defProp","__getOwnPropDesc","__decorateClass","observableFrom","AdditionalRollingRedBlackFields"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/common/applicationName.validator.ts","../src/help/cloudfoundry.help.ts","../src/instance/details/CloudFoundryInstanceActions.tsx","../src/instance/details/sections/CloudFoundryInstanceDetailsSection.tsx","../src/instance/details/CloudFoundryInstanceDetails.tsx","../src/loadBalancer/loadBalancer.transformer.ts","../src/loadBalancer/details/CloudFoundryLoadBalancerActions.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerDetailsSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerStatusSection.tsx","../src/loadBalancer/details/sections/CloudFoundryLoadBalancerLinksSection.tsx","../src/loadBalancer/details/CloudFoundryLoadBalancerDetails.tsx","../src/presentation/forms/inputs/FormikConfigField.tsx","../src/presentation/forms/serverGroup/Buildpacks.tsx","../src/presentation/forms/serverGroup/EnvironmentVariables.tsx","../src/presentation/forms/serverGroup/HealthCheck.tsx","../src/presentation/forms/serverGroup/InstanceParameters.tsx","../src/presentation/forms/serverGroup/Routes.tsx","../src/presentation/forms/serverGroup/Services.tsx","../src/presentation/widgets/accountRegionClusterSelector/AccountRegionClusterSelector.tsx","../src/presentation/widgets/accountRegionClusterSelector/FormikAccountRegionClusterSelector.tsx","../src/presentation/pipeline/stages/CloudFoundryAsgStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryLoadBalancersStageConfig.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceExecutionDetails.tsx","../src/presentation/pipeline/stages/CloudFoundryServiceKeyExecutionDetails.tsx","../src/loadBalancer/configure/CloudFoundryMapLoadBalancerModal.tsx","../src/logo/cf.logo.svg","../src/pipeline/config/validation/cfTargetImpedance.validator.ts","../src/pipeline/config/validation/instanceSize.validator.ts","../src/pipeline/config/validation/requiredRoutes.validator.ts","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfigForm.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestConfig.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/BakeCloudFoundryManifestDetailsTab.tsx","../src/pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage.ts","../src/serverGroup/configure/serverGroupCommandBuilder.service.cf.ts","../src/serverGroup/configure/serverGroupCommandBuilderShim.service.cf.ts","../src/serverGroup/configure/wizard/ServerGroupTemplateSelection.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ArtifactSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/artifactSettings/ConstantArtifactSettings.cf.tsx","../src/deploymentStrategy/strategies/rollingredblack/AdditionalFields.tsx","../src/deploymentStrategy/CloudFoundryDeploymentStrategySelector.tsx","../../../node_modules/style-inject/dist/style-inject.es.js","../src/serverGroup/configure/wizard/sections/basicSettings/BasicSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/cloneSettings/CloneSettings.cf.tsx","../src/serverGroup/configure/wizard/sections/configurationSettings/ConfigurationSettings.cf.tsx","../src/serverGroup/configure/wizard/CreateServerGroupModal.tsx","../src/pipeline/stages/cloneServerGroup/CloudFoundryCloneServerGroupStageConfig.tsx","../src/pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module.ts","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/createServiceBindings/CloudFoundryCreateServiceBindingsConfig.tsx","../src/pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage.ts","../src/pipeline/stages/createServiceKey/CloudFoundryCreateServiceKeyStageConfig.tsx","../src/pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module.ts","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsStageConfigForm.tsx","../src/pipeline/stages/deleteServiceBindings/CloudFoundryDeleteServiceBindingsConfig.tsx","../src/pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage.ts","../src/pipeline/stages/deleteServiceKey/CloudFoundryDeleteServiceKeyStageConfig.tsx","../src/pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module.ts","../src/pipeline/stages/deployService/ServiceTagsInput.tsx","../src/pipeline/stages/deployService/CreateServiceInstanceDirectInput.tsx","../src/pipeline/stages/deployService/CreateUserProvidedInput.tsx","../src/pipeline/stages/deployService/CloudFoundryDeployServiceStageConfig.tsx","../src/pipeline/stages/deployService/cloudFoundryDeployServiceStage.module.ts","../src/pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module.ts","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfigForm.tsx","../src/pipeline/stages/destroyService/CloudFoundryDestroyServiceStageConfig.tsx","../src/pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module.ts","../src/pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module.ts","../src/pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module.ts","../src/pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module.ts","../src/pipeline/stages/resizeAsg/CloudFoundryResizeAsgStageConfig.tsx","../src/pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module.ts","../src/pipeline/stages/rollbackCluster/CloudFoundryRollbackClusterStageConfig.tsx","../src/pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module.ts","../src/pipeline/stages/runJob/CloudFoundryRunJobStageConfig.tsx","../src/presentation/widgets/recentLogs/CloudFoundryRecentLogs.tsx","../src/pipeline/stages/runJob/RunJobExecutionDetails.tsx","../src/pipeline/stages/runJob/cloudFoundryRunJob.module.ts","../src/pipeline/stages/shareService/CloudFoundryShareServiceExecutionDetails.tsx","../src/pipeline/stages/shareService/CloudFoundryShareServiceStageConfig.tsx","../src/pipeline/stages/shareService/cloudFoundryShareServiceStage.module.ts","../src/pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module.ts","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceExecutionDetails.tsx","../src/pipeline/stages/unshareService/CloudFoundryUnshareServiceStageConfig.tsx","../src/pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module.ts","../src/serverGroup/details/sections/ServerGroupInformationSection.tsx","../src/serverGroup/details/sections/ApplicationManagerSection.tsx","../src/serverGroup/details/sections/MetricsSection.tsx","../src/serverGroup/details/sections/ServerGroupSizingSection.tsx","../src/serverGroup/details/sections/HealthCheckSection.tsx","../src/serverGroup/details/sections/PackageSection.tsx","../src/serverGroup/details/sections/BuildSection.tsx","../src/serverGroup/details/sections/BoundServicesSection.tsx","../src/serverGroup/details/sections/EnvironmentVariablesSection.tsx","../src/serverGroup/serverGroup.transformer.ts","../src/serverGroup/details/mapLoadBalancers/CloudFoundryMapLoadBalancersModal.tsx","../src/serverGroup/details/mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal.tsx","../src/serverGroup/details/resize/CloudFoundryResizeServerGroupModal.tsx","../src/serverGroup/details/rollback/CloudFoundryRollbackServerGroupModal.tsx","../src/serverGroup/details/cloudFoundryServerGroupActions.tsx","../src/serverGroup/details/cfServerGroupDetailsGetter.ts","../src/cf.module.ts","../src/cf.settings.ts"],"sourcesContent":["import { ApplicationNameValidator } from '@spinnaker/core';\n\nclass CloudFoundryApplicationNameValidator {\n private static MAX_RESOURCE_NAME_LENGTH = 63;\n\n private static validateSpecialCharacters(name: string, _warnings: string[], errors: string[]): void {\n const alphanumPattern = /^([a-zA-Z][a-zA-Z0-9]*)?$/;\n if (!alphanumPattern.test(name)) {\n const alphanumWithDashPattern = /^([a-zA-Z][a-zA-Z0-9-]*)?$/;\n if (!alphanumWithDashPattern.test(name)) {\n errors.push(\n 'The application name must begin with a letter and must contain only letters, digits or dashes. ' +\n 'No special characters are allowed.',\n );\n }\n }\n }\n\n private static validateLength(name: string, errors: string[]): void {\n if (name.length > CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH) {\n errors.push(\n `The maximum length for an application in Cloud Foundry is ${CloudFoundryApplicationNameValidator.MAX_RESOURCE_NAME_LENGTH} characters.`,\n );\n }\n }\n\n public validate(name = '') {\n const warnings: string[] = [];\n const errors: string[] = [];\n\n if (name && name.length) {\n CloudFoundryApplicationNameValidator.validateSpecialCharacters(name, warnings, errors);\n CloudFoundryApplicationNameValidator.validateLength(name, errors);\n }\n\n return {\n warnings,\n errors,\n };\n }\n}\n\nApplicationNameValidator.registerValidator('cloudfoundry', new CloudFoundryApplicationNameValidator());\n","import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents: { [key: string]: string } = {\n 'cf.service.deploy.timeout':\n '(Optional) <b>Override Deploy Timeout</b> is the maximum amount of time allowed for service deployment before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and a service may still be created.',\n 'cf.service.destroy.timeout':\n '(Optional) <b>Override Destroy Timeout</b> is the maximum amount of time allowed for service destruction before Spinnaker reports a timeout error (default: 450 seconds). If a timeout error is reported by Spinnaker, the request may still be processed and the service may be deleted.',\n 'cf.serverGroup.stack':\n '(Optional) <b>Stack</b> is one of the core naming components of a cluster, used to create vertical stacks of dependent services for integration testing.',\n 'cf.serverGroup.detail':\n '(Optional) <b>Detail</b> is a string of free-form alphanumeric characters and hyphens to describe any other variables.',\n 'cf.serverGroup.startApplication':\n '<b>Start on creation</b> is a boolean value that determines if the server group is started upon creation. Default value is <code>true</code>.',\n 'cf.serverGroup.requiredRoutes':\n '<b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.serverGroup.routes':\n '(Optional) <b>Route</b> is a URI in the form of <code>some.host.some.domain[:9999][/some/path]</code> (port and path are optional). The domain has to be a valid domain in the CloudFoundry Org (Region) that this server group runs in.',\n 'cf.artifact.package': `<p>This option allows you to create a new server group from an existing Droplet. You can use this to relocate an existing Cloud Foundry application from one space to another or to launch a clone of an application with different root filesystem or resource settings.</p>`,\n 'cf.artifact.trigger.account': `<p>Specify an artifact account if the trigger source produces an artifact that requires authentication credentials to retrieve. Otherwise, leave blank.</p>`,\n 'cf.runJob.logsUrl':\n '<p>(Optional) A templated URL to an external logging system. The URL is used in the pipeline execution stage task details.</p>' +\n '<p><a href=\"http://spinnaker.github.io/guides/user/pipeline-expressions\" target=\"_blank\">Pipeline expressions</a> can be used to interpolate values from the stage context, for example:' +\n '<ul>' +\n '<li><code>${appGuid}</code> the selected cluster CF app GUID.</li>' +\n '<li><code>${name}</code> the task name.</li>' +\n '</ul>' +\n '</p>',\n 'cf.runJob.jobName': '(Optional) If left empty, a random string will be generated.',\n};\n\nObject.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));\n","import { cloneDeep } from 'lodash';\nimport React from 'react';\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application } from '@spinnaker/core';\nimport { ConfirmationModalService, InstanceWriter, ReactInjector } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../domain';\n\nexport interface ICloudFoundryInstanceActionsProps {\n application: Application;\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceActions extends React.Component<ICloudFoundryInstanceActionsProps> {\n private terminateInstance = () => {\n const { application, instance } = this.props;\n const instanceClone = cloneDeep(instance) as any;\n instanceClone.placement = {};\n instanceClone.id = instance.name;\n const taskMonitor = {\n application: application,\n title: 'Terminating ' + instance.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: instance.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n return InstanceWriter.terminateInstance(instance, application, { cloudProvider: 'cloudfoundry' });\n };\n\n ConfirmationModalService.confirm({\n header: 'Really terminate ' + instance.name + '?',\n buttonText: 'Terminate',\n account: instance.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Instance Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.terminateInstance}>\n Terminate\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\nimport type { ICloudFoundryInstance } from '../../../domain';\n\nexport interface ICloudFoundryInstanceDetailsSectionProps {\n instance: ICloudFoundryInstance;\n}\n\nexport class CloudFoundryInstanceDetailsSection extends React.Component<ICloudFoundryInstanceDetailsSectionProps> {\n constructor(props: ICloudFoundryInstanceDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { instance } = this.props;\n return (\n <div>\n <CollapsibleSection heading=\"Instance Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Launched</dt>\n <dd>{timestamp(instance.launchTime)}</dd>\n <dt>In</dt>\n <dd>\n <AccountTag account={instance.account} />\n </dd>\n <dt>Region</dt>\n <dd>{instance.region}</dd>\n </dl>\n </CollapsibleSection>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>\n <span className={'glyphicon glyphicon-' + instance.healthState + '-triangle'} />\n </dt>\n <dd>{instance.healthState}</dd>\n\n {instance.details && (\n <div>\n <dt>Details</dt>\n <dd>{instance.details}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport { flattenDeep } from 'lodash';\nimport React from 'react';\n\nimport type { Application, ILoadBalancer } from '@spinnaker/core';\nimport { InstanceReader, RecentHistoryService, Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryInstanceActions } from './CloudFoundryInstanceActions';\nimport type { ICloudFoundryInstance } from '../../domain';\nimport { CloudFoundryInstanceDetailsSection } from './sections';\n\ninterface InstanceFromStateParams {\n instanceId: string;\n}\n\ninterface InstanceManager {\n account: string;\n region: string;\n category: string; // e.g., serverGroup, loadBalancer.\n name: string; // Parent resource name, not instance name.\n instances: ICloudFoundryInstance[];\n}\n\ninterface ICloudFoundryInstanceDetailsState {\n instance?: ICloudFoundryInstance;\n instanceIdNotFound: string;\n loading: boolean;\n}\n\ninterface ICloudFoundryInstanceDetailsProps {\n app: Application;\n instance: InstanceFromStateParams;\n loading: boolean;\n}\n\n@UIRouterContext\nexport class CloudFoundryInstanceDetails extends React.Component<\n ICloudFoundryInstanceDetailsProps,\n ICloudFoundryInstanceDetailsState\n> {\n constructor(props: ICloudFoundryInstanceDetailsProps) {\n super(props);\n\n this.state = {\n loading: true,\n instanceIdNotFound: props.instance.instanceId,\n };\n }\n\n public componentDidMount(): void {\n this.props.app.ready().then(() => this.retrieveInstance(this.props.instance));\n }\n\n private retrieveInstance(instanceFromParams: InstanceFromStateParams): void {\n const instanceLocatorPredicate = (dataSource: InstanceManager) => {\n return dataSource.instances.some((possibleMatch) => possibleMatch.id === instanceFromParams.instanceId);\n };\n\n const dataSources: InstanceManager[] = flattenDeep([\n this.props.app.getDataSource('serverGroups').data,\n this.props.app.getDataSource('loadBalancers').data,\n this.props.app\n .getDataSource('loadBalancers')\n .data.map((loadBalancer: ILoadBalancer) => loadBalancer.serverGroups),\n ]);\n\n const instanceManager = dataSources.find(instanceLocatorPredicate);\n\n if (instanceManager) {\n const recentHistoryExtraData: { [key: string]: string } = {\n region: instanceManager.region,\n account: instanceManager.account,\n };\n if (instanceManager.category === 'serverGroup') {\n recentHistoryExtraData.serverGroup = instanceManager.name;\n }\n RecentHistoryService.addExtraDataToLatest('instances', recentHistoryExtraData);\n InstanceReader.getInstanceDetails(instanceManager.account, instanceManager.region, instanceFromParams.instanceId)\n .then((instanceDetails: ICloudFoundryInstance) => {\n instanceDetails.account = instanceManager.account;\n instanceDetails.region = instanceManager.region;\n return instanceDetails;\n })\n .then((instance) => {\n this.setState({\n instance,\n loading: false,\n });\n });\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { instance, instanceIdNotFound, loading } = this.state;\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{instanceIdNotFound}</h3>\n </div>\n </div>\n );\n const instanceHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <span className={'glyphicon glyphicon-hdd ' + instance.healthState} />\n <h3 className=\"horizontal middle space-between flex-1\">{instance.name}</h3>\n </div>\n <CloudFoundryInstanceActions application={app} instance={instance} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const instanceContent = () => (\n <div className=\"content\">\n <CloudFoundryInstanceDetailsSection instance={instance} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && instance && instanceHeader()}\n {!loading && instance && instanceContent()}\n {!loading && !instance && notFoundHeader()}\n {!loading && !instance && notFoundContent()}\n </div>\n );\n }\n}\n","import { camelCase, chain, cloneDeep, has } from 'lodash';\n\nimport type {\n Application,\n IInstance,\n IInstanceCounts,\n ILoadBalancer,\n ILoadBalancerUpsertCommand,\n IServerGroup,\n} from '@spinnaker/core';\nimport type {\n ICloudFoundryLoadBalancer,\n ICloudFoundryLoadBalancerUpsertCommand,\n ICloudFoundryServerGroup,\n ICloudFoundrySpace,\n} from '../domain';\n\nexport class CloudFoundryLoadBalancerUpsertDescription\n implements ILoadBalancerUpsertCommand, ICloudFoundryLoadBalancer {\n public id: string;\n public credentials: string;\n public account: string;\n public loadBalancerName: string;\n public name: string;\n public region: string;\n public cloudProvider: string;\n public serverGroups: ICloudFoundryServerGroup[];\n public space: ICloudFoundrySpace;\n\n constructor(loadBalancer: ICloudFoundryLoadBalancer) {\n this.id = loadBalancer.id;\n this.credentials = loadBalancer.account;\n this.account = this.credentials;\n this.cloudProvider = loadBalancer.cloudProvider;\n this.loadBalancerName = loadBalancer.name;\n this.name = loadBalancer.name;\n this.region = loadBalancer.region;\n this.serverGroups = loadBalancer.serverGroups;\n this.space = loadBalancer.space;\n }\n}\n\nexport class CloudFoundryLoadBalancerTransformer {\n public static $inject = ['$q'];\n constructor(private $q: ng.IQService) {}\n\n public normalizeLoadBalancer(loadBalancer: ILoadBalancer): PromiseLike<ILoadBalancer> {\n loadBalancer.provider = loadBalancer.type;\n loadBalancer.instanceCounts = this.buildInstanceCounts(loadBalancer.serverGroups);\n loadBalancer.instances = [];\n loadBalancer.serverGroups.forEach((serverGroup) => {\n serverGroup.account = loadBalancer.account;\n serverGroup.region = loadBalancer.region;\n serverGroup.cloudProvider = loadBalancer.provider;\n\n if (serverGroup.detachedInstances) {\n serverGroup.detachedInstances = (serverGroup.detachedInstances as any).map((id: string) => ({ id }));\n }\n serverGroup.instances = serverGroup.instances\n .concat(serverGroup.detachedInstances || [])\n .map((instance: any) => this.transformInstance(instance, loadBalancer));\n });\n\n const activeServerGroups = loadBalancer.serverGroups.filter((sg) => !sg.isDisabled);\n loadBalancer.instances = chain(activeServerGroups).map('instances').flatten().value() as IInstance[];\n return this.$q.resolve(loadBalancer);\n }\n\n public constructNewCloudFoundryLoadBalancerTemplate(\n application: Application,\n ): ICloudFoundryLoadBalancerUpsertCommand {\n return {\n cloudProvider: 'cloudfoundry',\n credentials: undefined,\n name: application.name,\n id: undefined,\n host: '',\n path: '',\n port: '',\n region: '',\n domain: '',\n serverGroups: [],\n routes: [],\n };\n }\n\n public convertLoadBalancerForEditing(\n loadBalancer: ICloudFoundryLoadBalancer,\n application: Application,\n ): PromiseLike<ICloudFoundryLoadBalancer> {\n return application\n .getDataSource('loadBalancers')\n .ready()\n .then(() => {\n const upToDateLoadBalancer = application\n .getDataSource('loadBalancers')\n .data.find((candidate: ILoadBalancer) => {\n return candidate.name === loadBalancer.name && candidate.account === loadBalancer.account;\n });\n\n if (upToDateLoadBalancer) {\n loadBalancer.serverGroups = cloneDeep(upToDateLoadBalancer.serverGroups);\n }\n return loadBalancer;\n });\n }\n\n public convertLoadBalancerToUpsertDescription(\n loadBalancer: ICloudFoundryLoadBalancer,\n ): CloudFoundryLoadBalancerUpsertDescription {\n return new CloudFoundryLoadBalancerUpsertDescription(loadBalancer);\n }\n\n private buildInstanceCounts(serverGroups: IServerGroup[]): IInstanceCounts {\n const instanceCounts: IInstanceCounts = chain(serverGroups)\n .map('instances')\n .flatten()\n .reduce(\n (acc: IInstanceCounts, instance: any) => {\n if (has(instance, 'health.state')) {\n acc[camelCase(instance.health.state)]++;\n }\n return acc;\n },\n { up: 0, down: 0, outOfService: 0, succeeded: 0, failed: 0, starting: 0, unknown: 0 },\n )\n .value();\n\n instanceCounts.outOfService += chain(serverGroups).map('detachedInstances').flatten().value().length;\n return instanceCounts;\n }\n\n private transformInstance(instance: any, loadBalancer: ILoadBalancer) {\n instance.provider = loadBalancer.type;\n instance.account = loadBalancer.account;\n instance.region = loadBalancer.region;\n instance.loadBalancers = [loadBalancer.name];\n const health = instance.health || {};\n instance.healthState = health.state ?? 'OutOfService';\n instance.health = [health];\n\n return instance as IInstance;\n }\n}\n","import React from 'react';\n\nimport { Dropdown } from 'react-bootstrap';\n\nimport type { Application, ILoadBalancer, ILoadBalancerDeleteCommand } from '@spinnaker/core';\nimport { ConfirmationModalService, LoadBalancerWriter, ReactInjector } from '@spinnaker/core';\n\nexport interface ICloudFoundryLoadBalancerActionsProps {\n application: Application;\n loadBalancer: ILoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerActions extends React.Component<ICloudFoundryLoadBalancerActionsProps> {\n private deleteLoadBalancer = () => {\n const { application, loadBalancer } = this.props;\n const taskMonitor = {\n application: application,\n title: 'Deleting ' + loadBalancer.name,\n onTaskComplete() {\n if (ReactInjector.$state.includes('**.serverGroup', { instanceId: loadBalancer.name })) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = () => {\n const loadBalancerDeleteCommand: ILoadBalancerDeleteCommand = {\n cloudProvider: loadBalancer.cloudProvider,\n credentials: loadBalancer.account,\n regions: [loadBalancer.region],\n loadBalancerName: loadBalancer.name,\n };\n return LoadBalancerWriter.deleteLoadBalancer(loadBalancerDeleteCommand, application);\n };\n\n ConfirmationModalService.confirm({\n header: 'Really delete ' + loadBalancer.name + '?',\n buttonText: 'Delete ' + loadBalancer.name,\n account: loadBalancer.account,\n taskMonitorConfig: taskMonitor,\n submitMethod,\n });\n };\n\n public render(): JSX.Element {\n return (\n <div className=\"actions\">\n <Dropdown className=\"dropdown\" id=\"instance-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Load Balancer Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n <li>\n <a className=\"clickable\" onClick={this.deleteLoadBalancer}>\n Delete Load Balancer\n </a>\n </li>\n </Dropdown.Menu>\n </Dropdown>\n </div>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport React from 'react';\n\nimport { AccountTag, CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerDetailsSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerDetailsSection extends React.Component<\n ICloudFoundryLoadBalancerDetailsSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Load Balancer Details\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>In</dt>\n <dd>\n <AccountTag account={loadBalancer.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{loadBalancer.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{loadBalancer.space.name}</dd>\n {loadBalancer.serverGroups && (\n <>\n <dt>Server Groups</dt>\n <dd>\n <ul>\n {loadBalancer.serverGroups.map((serverGroup, index) => {\n return (\n <li key={index}>\n <UISref\n to=\"^.serverGroup\"\n params={{\n region: serverGroup.region,\n accountId: serverGroup.account,\n serverGroup: serverGroup.name,\n provider: 'cloudfoundry',\n }}\n >\n <a>{serverGroup.name}</a>\n </UISref>\n </li>\n );\n })}\n </ul>\n </dd>\n </>\n )}\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection, HealthCounts } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerStatusSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerStatusSection extends React.Component<\n ICloudFoundryLoadBalancerStatusSectionProps\n> {\n constructor(props: ICloudFoundryLoadBalancerStatusSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Status\" defaultExpanded={true}>\n <HealthCounts className=\"pull-left\" container={loadBalancer.instanceCounts} />\n </CollapsibleSection>\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer } from '../../../domain';\n\nexport interface ICloudFoundryLoadBalancerLinksSectionProps {\n loadBalancer: ICloudFoundryLoadBalancer;\n}\n\nexport class CloudFoundryLoadBalancerLinksSection extends React.Component<ICloudFoundryLoadBalancerLinksSectionProps> {\n constructor(props: ICloudFoundryLoadBalancerLinksSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { loadBalancer } = this.props;\n return (\n <>\n <CollapsibleSection heading=\"Application links\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>HTTP</dt>\n <dd>\n <a href={'http://' + loadBalancer.name}>{'http://' + loadBalancer.name}</a>\n </dd>\n <dt>HTTPS</dt>\n <dd>\n <a href={'https://' + loadBalancer.name}>{'https://' + loadBalancer.name}</a>\n </dd>\n </dl>\n </CollapsibleSection>\n </>\n );\n }\n}\n","import { UISref } from '@uirouter/react';\nimport { UIRouterContext } from '@uirouter/react-hybrid';\nimport React from 'react';\n\nimport type { Application, LoadBalancerWriter } from '@spinnaker/core';\nimport { Spinner } from '@spinnaker/core';\n\nimport { CloudFoundryLoadBalancerActions } from './CloudFoundryLoadBalancerActions';\nimport type { ICloudFoundryLoadBalancer } from '../../domain';\nimport { CloudFoundryLoadBalancerDetailsSection } from './sections';\nimport { CloudFoundryLoadBalancerLinksSection } from './sections/CloudFoundryLoadBalancerLinksSection';\nimport { CloudFoundryLoadBalancerStatusSection } from './sections/CloudFoundryLoadBalancerStatusSection';\n\ninterface ILoadBalancer {\n name: string;\n accountId: string;\n region: string;\n}\n\ninterface ICloudFoundryLoadBalancerDetailsState {\n loadBalancer: ICloudFoundryLoadBalancer;\n loadBalancerNotFound?: string;\n loading: boolean;\n refreshListenerUnsubscribe: () => void;\n}\n\nexport interface ICloudFoundryLoadBalancerDetailsProps {\n app: Application;\n loadBalancer: ILoadBalancer;\n loadBalancerWriter: LoadBalancerWriter;\n}\n\n@UIRouterContext\nexport class CloudFoundryLoadBalancerDetails extends React.Component<\n ICloudFoundryLoadBalancerDetailsProps,\n ICloudFoundryLoadBalancerDetailsState\n> {\n constructor(props: ICloudFoundryLoadBalancerDetailsProps) {\n super(props);\n this.state = {\n loading: true,\n loadBalancer: undefined,\n refreshListenerUnsubscribe: () => {},\n };\n\n props.app\n .getDataSource('loadBalancers')\n .ready()\n .then(() => this.extractLoadBalancer());\n }\n\n public componentWillUnmount(): void {\n this.state.refreshListenerUnsubscribe();\n }\n\n private extractLoadBalancer(): void {\n const { name } = this.props.loadBalancer;\n const loadBalancer: ICloudFoundryLoadBalancer = this.props.app\n .getDataSource('loadBalancers')\n .data.find((test: ICloudFoundryLoadBalancer) => {\n return test.name === name && test.account === this.props.loadBalancer.accountId;\n });\n\n this.setState({\n loading: false,\n loadBalancer,\n });\n\n this.state.refreshListenerUnsubscribe();\n\n if (loadBalancer) {\n this.setState({\n refreshListenerUnsubscribe: this.props.app\n .getDataSource('loadBalancers')\n .onRefresh(null, () => this.extractLoadBalancer()),\n });\n } else {\n this.setState({\n refreshListenerUnsubscribe: () => {},\n });\n // this.autoClose();\n }\n }\n\n public render(): JSX.Element {\n const { app } = this.props;\n const { loadBalancer, loadBalancerNotFound, loading } = this.state;\n\n const CloseButton = (\n <div className=\"close-button\">\n <UISref to=\"^\">\n <span className=\"glyphicon glyphicon-remove\" />\n </UISref>\n </div>\n );\n const loadingHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"horizontal center middle\">\n <Spinner size=\"small\" />\n </div>\n </div>\n );\n const notFoundHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancerNotFound}</h3>\n </div>\n </div>\n );\n const loadBalancerHeader = () => (\n <div className=\"header\">\n {CloseButton}\n <div className=\"header-text horizontal middle\">\n <i className=\"fa icon-sitemap\" />\n <h3 className=\"horizontal middle space-between flex-1\">{loadBalancer.name}</h3>\n </div>\n <CloudFoundryLoadBalancerActions application={app} loadBalancer={loadBalancer} />\n </div>\n );\n const notFoundContent = () => (\n <div className=\"content\">\n <div className=\"content-section\">\n <div className=\"content-body text-center\">\n <h3>Instance not found.</h3>\n </div>\n </div>\n </div>\n );\n const loadBalancerContent = () => (\n <div className=\"content\">\n <CloudFoundryLoadBalancerDetailsSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerStatusSection loadBalancer={loadBalancer} />\n <CloudFoundryLoadBalancerLinksSection loadBalancer={loadBalancer} />\n </div>\n );\n return (\n <div className=\"details-panel\">\n {loading && loadingHeader()}\n {!loading && !!loadBalancer && loadBalancerHeader()}\n {!loading && !!loadBalancer && loadBalancerContent()}\n {!loading && !loadBalancer && notFoundHeader()}\n {!loading && !loadBalancer && notFoundContent()}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IFormikConfigFieldProps {\n label: string;\n helpKey?: string;\n children?: React.ReactNode;\n}\n\nexport class FormikConfigField extends React.Component<IFormikConfigFieldProps> {\n constructor(props: IFormikConfigFieldProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { label, helpKey, children } = this.props;\n return (\n <div className={'StandardFieldLayout flex-container-h baseline margin-between-lg'}>\n <label className={`sm-label-right`}>\n <span className=\"label-text\">{label} </span>\n {helpKey && <HelpField id={helpKey} />}\n </label>\n <div className={`flex-grow`}>{children}</div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IBuildpacksProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class Buildpacks extends React.Component<IBuildpacksProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Buildpacks</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const buildpacks: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {buildpacks.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Buildpack\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../domain';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IEnvironmentVariablesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n}\n\nexport class EnvironmentVariables extends React.Component<IEnvironmentVariablesProps> {\n public render() {\n const { fieldName, onChange } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Environment Variables</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const environmentVariables: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed tags\">\n <thead>\n <tr>\n <th>Name</th>\n <th>Value</th>\n </tr>\n </thead>\n <tbody>\n {environmentVariables.map((_, index: number) => {\n const envPath = `${fieldName}[${index}]`;\n return (\n <tr key={index}>\n <td>\n <FormikFormField\n name={`${envPath}.key`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <FormikFormField\n name={`${envPath}.value`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </td>\n <td>\n <a className=\"btn btn-link sm-label\">\n <span\n className=\"glyphicon glyphicon-trash\"\n onClick={() => arrayHelpers.remove(index)}\n />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={3}>\n <button\n type=\"button\"\n className=\"add-new col-md-12\"\n onClick={() => arrayHelpers.push({ key: '', value: '' } as ICloudFoundryEnvVar)}\n >\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Environment Variable\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, RadioButtonInput, TextInput } from '@spinnaker/core';\n\nexport interface IHealthCheckProps {\n healthCheckHttpEndpointFieldName: string;\n healthCheckType: string;\n healthCheckTypeFieldName: string;\n onHealthCheckHttpEndpointChange?: (value: string) => void;\n onHealthCheckTypeChange?: (value: string) => void;\n}\n\nexport class HealthCheck extends React.Component<IHealthCheckProps> {\n private HEALTH_CHECK_TYPE_OPTIONS = [\n { label: 'port', value: 'port' },\n { label: 'HTTP', value: 'http' },\n { label: 'process', value: 'process' },\n ];\n\n public render() {\n const {\n healthCheckTypeFieldName,\n healthCheckType,\n healthCheckHttpEndpointFieldName,\n onHealthCheckTypeChange,\n onHealthCheckHttpEndpointChange,\n } = this.props;\n\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckTypeFieldName}\n label=\"Health Check Type\"\n input={(props) => <RadioButtonInput {...props} inline={true} options={this.HEALTH_CHECK_TYPE_OPTIONS} />}\n onChange={(value) => {\n onHealthCheckTypeChange && onHealthCheckTypeChange(value);\n }}\n />\n </div>\n {healthCheckType === 'http' && (\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={healthCheckHttpEndpointFieldName}\n label=\"Endpoint\"\n input={(props) => <TextInput {...props} required={true} />}\n onChange={(value) => {\n onHealthCheckHttpEndpointChange && onHealthCheckHttpEndpointChange(value);\n }}\n required={true}\n />\n </div>\n )}\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\n\nexport interface IInstanceParametersProps {\n diskQuotaFieldName: string;\n instancesFieldName: string;\n memoryFieldName: string;\n onDiskQuotaChange?: (value: string) => void;\n onInstancesChange?: (value: string) => void;\n onMemoryChange?: (value: string) => void;\n}\n\nexport class InstanceParameters extends React.Component<IInstanceParametersProps> {\n public render() {\n const {\n diskQuotaFieldName,\n instancesFieldName,\n memoryFieldName,\n onDiskQuotaChange,\n onInstancesChange,\n onMemoryChange,\n } = this.props;\n\n return (\n <div>\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={memoryFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Memory\"\n onChange={(value) => {\n onMemoryChange && onMemoryChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={diskQuotaFieldName}\n input={(props) => <TextInput {...props} />}\n label=\"Disk Quota\"\n onChange={(value) => {\n onDiskQuotaChange && onDiskQuotaChange(value);\n }}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={instancesFieldName}\n input={(props) => <TextInput type=\"number\" {...props} />}\n label=\"Instances\"\n onChange={(value) => {\n onInstancesChange && onInstancesChange(value);\n }}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, HelpField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IRoutesProps {\n fieldName: string;\n onChange?: (value: string[]) => void;\n isRequired?: boolean;\n singleRouteOnly?: boolean;\n}\n\nexport class Routes extends React.Component<IRoutesProps> {\n public render() {\n const { fieldName, isRequired, onChange, singleRouteOnly } = this.props;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>{singleRouteOnly ? 'Route' : 'Routes'}</b>\n &nbsp;\n {!isRequired && <HelpField id=\"cf.serverGroup.routes\" />}\n {!!isRequired && <HelpField id=\"cf.serverGroup.requiredRoutes\" />}\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const routes: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {routes.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n onChange={() => {\n onChange && onChange(getIn(serverGroupCommand, fieldName) || []);\n }}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td hidden={singleRouteOnly}>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr hidden={singleRouteOnly}>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Route\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { FieldArray, getIn } from 'formik';\nimport React from 'react';\n\nimport { FormikFormField, TextInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup/configure/serverGroupConfigurationModel.cf';\n\nexport interface IServicesProps {\n fieldName: string;\n}\n\nexport const Services: React.SFC<IServicesProps> = ({ fieldName }: IServicesProps) => {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <b>Bind Services</b>\n <FieldArray\n name={fieldName}\n render={(arrayHelpers) => {\n const serverGroupCommand: ICloudFoundryCreateServerGroupCommand = arrayHelpers.form.values;\n const services: string[] = getIn(serverGroupCommand, fieldName) || [];\n\n return (\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {services.map((_, index: number) => (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={`${fieldName}[${index}]`}\n input={(props) => <TextInput {...props} />}\n required={true}\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => arrayHelpers.remove(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n ))}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => arrayHelpers.push('')}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add New Service\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n );\n }}\n />\n </div>\n </div>\n </div>\n );\n};\n","import { first, isNil, uniq } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select, { Creatable } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IMoniker, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, StageConfigField } from '@spinnaker/core';\n\nexport interface IAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n component: any;\n componentName?: string;\n isSingleRegion?: boolean;\n onComponentUpdate?: (component: any) => void;\n}\n\nexport interface IAccountRegionClusterSelectorState {\n [k: string]: any;\n\n availableRegions: string[];\n clusterField: string;\n clusters: string[];\n componentName: string;\n}\n\nexport class AccountRegionClusterSelector extends React.Component<\n IAccountRegionClusterSelectorProps,\n IAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IAccountRegionClusterSelectorProps) {\n super(props);\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField: clusterField,\n clusters: [],\n componentName: props.componentName || '',\n [clusterField]: props.component[clusterField],\n };\n }\n\n public componentDidMount(): void {\n this.setRegionList(this.props.component.credentials);\n this.setClusterList(\n this.props.component.credentials,\n this.props.isSingleRegion ? [this.props.component.region] : this.props.component.regions,\n );\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n\n const clusterField = this.props.component[this.state.clusterField];\n if (clusterField && !clusters.includes(clusterField)) {\n clusters.push(clusterField);\n }\n this.setState({ clusters });\n });\n };\n\n public onAccountUpdate = (option: Option<string>): void => {\n const credentials = option.value;\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n credentials,\n region: '',\n regions: [],\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionsUpdate = (option: Option<string>): void => {\n const regions = option.map((o: Option) => o.value);\n this.setClusterList(this.props.component.credentials, regions);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n regions,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onRegionUpdate = (option: Option<string>): void => {\n const region = option.value;\n this.setClusterList(this.props.component.credentials, [region]);\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n region,\n [this.state.clusterField]: undefined,\n });\n };\n\n public onClusterUpdate = (option: Option<string>): void => {\n const clusterName = option.value;\n const filterByCluster = AppListExtractor.monikerClusterNameFilter(clusterName);\n const clusterMoniker = first(uniq(AppListExtractor.getMonikers([this.props.application], filterByCluster)));\n let moniker: IMoniker;\n\n if (isNil(clusterMoniker)) {\n // remove the moniker from the stage if one doesn't exist.\n moniker = undefined;\n } else {\n // clusters don't contain sequences, so null it out.\n clusterMoniker.sequence = null;\n moniker = clusterMoniker;\n }\n\n if (option.className) {\n const clusters = this.state.clusters;\n clusters.push(clusterName);\n this.setState(clusters);\n }\n\n this.props.onComponentUpdate &&\n this.props.onComponentUpdate({\n ...this.props.component,\n [this.state.clusterField]: clusterName,\n moniker,\n });\n };\n\n public render() {\n const { accounts, isSingleRegion, component } = this.props;\n const { availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <>\n <StageConfigField label=\"Account\">\n <Select\n name={componentName ? `${componentName}.credentials` : 'credentials'}\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={component.credentials}\n onChange={this.onAccountUpdate}\n />\n </StageConfigField>\n\n {!isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.regions` : 'regions'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={component.regions}\n onChange={this.onRegionsUpdate}\n />\n </StageConfigField>\n )}\n {isSingleRegion && (\n <StageConfigField label=\"Region\">\n <Select\n name={componentName ? `${componentName}.region` : 'region'}\n options={\n availableRegions &&\n availableRegions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={false}\n clearable={false}\n value={component.region}\n onChange={this.onRegionUpdate}\n />\n </StageConfigField>\n )}\n <StageConfigField label=\"Cluster\" helpKey={'pipeline.config.findAmi.cluster'}>\n <Creatable\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n options={\n clusters &&\n clusters.map((c: string) => ({\n label: c,\n value: c,\n }))\n }\n clearable={false}\n value={component[clusterField]}\n onChange={this.onClusterUpdate}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IServerGroup, IServerGroupFilter } from '@spinnaker/core';\nimport { AppListExtractor, FormikFormField, ReactSelectInput } from '@spinnaker/core';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroup';\n\nexport interface IFormikAccountRegionClusterSelectorProps {\n accounts: IAccount[];\n application: Application;\n cloudProvider: string;\n clusterField?: string;\n componentName?: string;\n credentialsField?: string;\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface IFormikAccountRegionClusterSelectorState {\n availableRegions: string[];\n cloudProvider: string;\n clusterField: string;\n clusters: string[];\n componentName: string;\n credentialsField: string;\n}\n\nexport class FormikAccountRegionClusterSelector extends React.Component<\n IFormikAccountRegionClusterSelectorProps,\n IFormikAccountRegionClusterSelectorState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikAccountRegionClusterSelectorProps) {\n super(props);\n const credentialsField = props.credentialsField || 'credentials';\n const clusterField = props.clusterField || 'cluster';\n this.state = {\n availableRegions: [],\n cloudProvider: props.cloudProvider,\n clusterField,\n clusters: [],\n componentName: props.componentName || '',\n credentialsField,\n };\n }\n\n public componentDidMount(): void {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n const region = get(formik.values, componentName ? `${componentName}.region` : 'region', undefined);\n this.setRegionList(credentials);\n this.setClusterList(credentials, [region]);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private setRegionList = (credentials: string): void => {\n const { application } = this.props;\n const accountFilter: IServerGroupFilter = (serverGroup: IServerGroup) =>\n serverGroup ? serverGroup.account === credentials : true;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const availableRegions = AppListExtractor.getRegions([application], accountFilter);\n availableRegions.sort();\n this.setState({ availableRegions });\n });\n };\n\n private setClusterList = (credentials: string, regions: string[]): void => {\n const { application } = this.props;\n observableFrom(application.ready())\n .pipe(takeUntil(this.destroy$))\n .subscribe(() => {\n const clusterFilter = AppListExtractor.clusterFilterForCredentialsAndRegion(credentials, regions);\n const clusters = AppListExtractor.getClusters([application], clusterFilter);\n this.setState({ clusters });\n });\n };\n\n public accountChanged = (credentials: string): void => {\n this.setRegionList(credentials);\n this.setClusterList(credentials, []);\n };\n\n public regionChanged = (region: string): void => {\n const { componentName, formik } = this.props;\n const { credentialsField } = this.state;\n const credentials = get(\n formik.values,\n componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`,\n undefined,\n );\n this.setClusterList(credentials, [region]);\n };\n\n public render() {\n const { accounts } = this.props;\n const { credentialsField, availableRegions, clusters, clusterField, componentName } = this.state;\n return (\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${credentialsField}` : `${credentialsField}`}\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.region` : 'region'}\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={availableRegions}\n clearable={false}\n />\n )}\n onChange={this.regionChanged}\n required={true}\n />\n </div>\n\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={componentName ? `${componentName}.${clusterField}` : `${clusterField}`}\n label=\"Cluster\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={clusters}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n );\n }\n}\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\nexport interface ICloudFoundryAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryAsgStageConfig extends React.Component<IStageConfigProps, ICloudFoundryAsgStageConfigState> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { target } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryLoadBalancersExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'credentials', undefined);\n const region = get(context, 'region', undefined);\n const loadBalancerNames = get(context, 'loadBalancerNames', undefined);\n const serverGroupName = get(context, 'serverGroupName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Server Group Name</dt>\n <dd>\n {serverGroupName}\n <br />\n </dd>\n <dt>Load Balancers</dt>\n <dd>\n {loadBalancerNames.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// TODO: refactor this to not use namespace\n// eslint-disable-next-line\nexport namespace CloudFoundryLoadBalancersExecutionDetails {\n export const title = 'cloudfoundryLoadBalancersConfig';\n}\n","import type { Formik } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpinFormik, StageConfigField, StageConstants } from '@spinnaker/core';\n\nimport { Routes } from '../../forms/serverGroup';\nimport { AccountRegionClusterSelector } from '../../widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryLoadBalancerStageConfigProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\ninterface ICloudFoundryLoadBalancersValues {\n routes: string[];\n}\n\ninterface ICloudFoundryLoadBalancersStageConfigState {\n accounts: IAccount[];\n application: Application;\n initialValues: ICloudFoundryLoadBalancersValues;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryLoadBalancersStageConfig extends React.Component<\n ICloudFoundryLoadBalancerStageConfigProps,\n ICloudFoundryLoadBalancersStageConfigState\n> {\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancersValues>>();\n\n constructor(props: ICloudFoundryLoadBalancerStageConfigProps) {\n super(props);\n const { loadBalancerNames } = props.stage;\n const routes = loadBalancerNames && loadBalancerNames.length ? loadBalancerNames : [''];\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n loadBalancerNames: routes,\n });\n this.state = {\n accounts: [],\n application: props.application,\n initialValues: {\n routes,\n },\n pipeline: props.pipeline,\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n loadBalancerNames: stage.loadBalancerNames,\n });\n };\n\n public render() {\n const { stage } = this.props;\n const { accounts, application, initialValues, pipeline } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <SpinFormik<ICloudFoundryLoadBalancersValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={null}\n render={() => {\n return (\n <Routes\n fieldName={'routes'}\n isRequired={true}\n singleRouteOnly={true}\n onChange={(routes: string[]) => {\n stage.loadBalancerNames = routes;\n this.componentUpdated(stage);\n }}\n />\n );\n }}\n />\n </div>\n );\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'service.instance.name', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceExecutionDetails {\n export const title = 'cloudfoundryServiceConfig';\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryServiceKeyExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const serviceKeyName = get(context, 'serviceKeyName', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Service Key Name</dt>\n <dd>\n {serviceKeyName}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={props.stage} message={props.stage.failureMessage} />\n <StageExecutionLogs stage={props.stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryServiceKeyExecutionDetails {\n export const title = 'cloudfoundryServiceKeyConfig';\n}\n","import type { IDeferred } from 'angular';\nimport type { IModalServiceInstance } from 'angular-ui-bootstrap';\nimport type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport { $q } from 'ngimport';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type {\n Application,\n IAccount,\n ILoadBalancerModalProps,\n IModalComponentProps,\n IServerGroup,\n} from '@spinnaker/core';\nimport {\n AccountService,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { AccountRegionClusterSelector, Routes } from '../../presentation';\n\nexport interface ICreateCloudFoundryMapLoadBalancerState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n selectedValues: ICloudFoundryLoadBalancerModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerModalProps extends IModalComponentProps {\n application: Application;\n}\n\nexport interface ICloudFoundryLoadBalancerModalValues {\n credentials: string;\n region: string;\n cluster: string;\n routes: string[];\n}\n\nexport class CloudFoundryMapLoadBalancerModal extends React.Component<\n ICloudFoundryLoadBalancerModalProps,\n ICreateCloudFoundryMapLoadBalancerState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private destroy$ = new Subject();\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerModalValues>>();\n private $uibModalInstanceEmulation: IModalServiceInstance & { deferred?: IDeferred<any> };\n\n constructor(props: ICloudFoundryLoadBalancerModalProps) {\n super(props);\n\n const deferred = $q.defer();\n const promise = deferred.promise;\n this.$uibModalInstanceEmulation = {\n result: promise,\n close: () => this.props.dismissModal(),\n dismiss: () => this.props.dismissModal(),\n } as IModalServiceInstance;\n Object.assign(this.$uibModalInstanceEmulation, { deferred });\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n selectedValues: {\n credentials: '',\n region: '',\n cluster: '',\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public static show(props: ILoadBalancerModalProps): Promise<void> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(\n CloudFoundryMapLoadBalancerModal,\n {\n application: props.app,\n // className: 'create-pipeline-modal-overflow-visible',\n },\n modalProps,\n );\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private submit = (values: ICloudFoundryLoadBalancerModalValues): void => {\n const { routes } = values;\n const serverGroup: ICloudFoundryServerGroup = this.props.application.serverGroups?.data?.find(\n (sg: ICloudFoundryServerGroup) =>\n sg.cluster === this.state.selectedValues.cluster &&\n sg.account === this.state.selectedValues.credentials &&\n sg.region === this.state.selectedValues.region,\n );\n\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private accountRegionClusterUpdated = (values: any) => {\n this.setState({\n selectedValues: {\n cluster: values.cluster,\n credentials: values.credentials,\n region: values.region,\n routes: [''],\n },\n });\n };\n\n public render() {\n const { accounts, application, selectedValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerModalValues>\n ref={this.formikRef}\n initialValues={selectedValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={selectedValues}\n />\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","export default \"data:image/svg+xml,%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%20standalone%3D%22no%22%3F%3E%3Csvg%20width%3D%22300px%22%20height%3D%22300px%22%20viewBox%3D%220%200%20300%20300%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D%22http%3A%2F%2Fwww.w3.org%2F1999%2Fxlink%22%3E%20%20%20%20%20%20%20%20%3Ctitle%3Ecf_logo%3C%2Ftitle%3E%20%20%20%20%3Cdesc%3ECreated%20with%20Sketch.%3C%2Fdesc%3E%20%20%20%20%3Cdefs%3E%3C%2Fdefs%3E%20%20%20%20%3Cg%20id%3D%22cf_logo%22%20stroke%3D%22none%22%20stroke-width%3D%221%22%20fill%3D%22none%22%20fill-rule%3D%22evenodd%22%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M178.263372%2C122.718681%20C186.913513%2C115.731062%20192.264847%2C105.825834%20192.16919%2C94.8631089%20C191.983342%2C73.9653286%20172.094852%2C57.1484045%20147.743272%2C57.1484045%20C123.391692%2C57.1484045%20103.497736%2C73.9653286%20103.317354%2C94.8631089%20C103.218964%2C105.825834%20108.570299%2C115.728351%20117.220439%2C122.71597%20C127.925842%2C131.365758%20136.693504%2C148.855142%20137.210052%2C167.952465%20C137.781262%2C189.145802%20136.321807%2C213.674325%20135.425363%2C226.155508%20C123.984767%2C227.766159%20115.944099%2C231.559592%20115.944099%2C235.982102%20C115.944099%2C241.866127%20130.180618%2C248.650381%20147.743272%2C248.650381%20C165.303194%2C248.650381%20179.539712%2C241.866127%20179.539712%2C235.982102%20C179.539712%2C231.559592%20171.501778%2C227.766159%20160.058448%2C226.155508%20C159.162004%2C213.674325%20157.702549%2C189.145802%20158.273759%2C167.952465%20C158.790308%2C148.855142%20167.557969%2C131.365758%20178.263372%2C122.718681%22%20id%3D%22Fill-1%22%20fill%3D%22%231B1A19%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M234.330842%2C245.57087%20C235.853157%2C244.936371%20237.629647%2C244.423892%20239.594718%2C244.046988%20C241.423137%2C243.645682%20243.462001%2C243.390798%20245.68398%2C243.317586%20C245.68398%2C243.317586%20245.58559%2C242.63428%20245.448937%2C241.62559%20C245.386076%2C240.625035%20244.910523%2C239.299095%20244.454102%2C237.984002%20C244.224525%2C237.335946%20243.989482%2C236.693313%20243.779036%2C236.094064%20C243.511196%2C235.500238%20243.16683%2C234.952509%20242.920854%2C234.477991%20C242.404306%2C233.550647%20242.05994%2C232.929706%20242.05994%2C232.929706%20C239.865291%2C232.577206%20237.790898%2C232.089131%20235.779364%2C231.516997%20C233.729568%2C230.944864%20231.802759%2C230.288673%20230.108261%2C229.580963%20C226.894181%2C228.179101%20223.874147%2C226.609124%20222.278039%2C224.857474%20C220.351231%2C223.189881%20219.995933%2C221.519577%20220.058793%2C220.011965%20C220.168116%2C219.269005%20220.512482%2C218.550449%20221.102823%2C217.880701%20C221.641236%2C217.221798%20222.354565%2C216.627973%20223.382196%2C216.115493%20C223.382196%2C216.115493%20222.60874%2C215.689783%20221.479985%2C215.057995%20C220.903309%2C214.751592%20220.280171%2C214.388247%20219.542245%2C214.008632%20C218.768788%2C213.642576%20217.957069%2C213.254826%20217.148083%2C212.875212%20C215.551975%2C212.121406%20213.955866%2C211.364888%20212.619399%2C210.868678%20C211.343059%2C210.356198%20210.498543%2C210.014545%20210.498543%2C210.014545%20C208.948897%2C210.220622%20207.270798%2C210.331794%20205.562634%2C210.356198%20C203.794343%2C210.391448%20201.990522%2C210.342641%20200.23863%2C210.212487%20C196.789506%2C209.91693%20193.280255%2C209.442412%20190.246556%2C208.553029%20C188.675046%2C208.151722%20187.338578%2C207.677204%20186.171561%2C207.153878%20C185.004544%2C206.641399%20183.96598%2C206.131631%20183.129663%2C205.559497%20C181.533555%2C204.401673%20180.443064%2C203.233003%20180.451263%2C202.053486%20C180.451263%2C202.053486%20179.483759%2C201.893506%20178.037969%2C201.649468%20C176.540252%2C201.418987%20173.348036%2C200.993277%20171.322837%2C200.724835%20C171.287307%2C201.063777%20171.065929%2C201.383738%20170.992136%2C201.942313%20L170.475588%2C204.401673%20C169.420626%2C209.320393%20172.293074%2C214.312324%20177.16339%2C215.714186%20C189.095937%2C219.157832%20198.112308%2C224.83307%20200.716916%2C231.796285%20C205.980792%2C245.885407%20183.86759%2C259.657281%20150.239999%2C259.657281%20C116.598742%2C259.657281%2094.4828068%2C245.885407%2099.7357514%2C231.796285%20C102.277499%2C225.003896%20110.941304%2C219.439832%20122.442028%2C215.96907%20C127.533722%2C214.434343%20130.553755%2C209.236335%20129.460531%2C204.073578%20L128.749935%2C200.724835%20C127.410734%2C200.882104%20125.852889%2C201.077334%20124.256781%2C201.272565%20C122.258913%2C201.492199%20120.353969%2C201.84741%20118.894514%2C202.07789%20C117.435059%2C202.305659%20116.45389%2C202.479197%20116.45389%2C202.479197%20C116.55228%2C203.623463%20115.729629%2C204.911441%20114.158118%2C206.023169%20C113.335467%2C206.581745%20112.42809%2C207.164725%20111.310268%2C207.690762%20C110.192446%2C208.224934%20108.817715%2C208.675048%20107.382858%2C209.149566%20C105.896073%2C209.613238%20104.24257%2C209.954891%20102.583602%2C210.245025%20C100.951964%2C210.562275%2099.2082705%2C210.792755%2097.4181151%2C210.939178%20C93.8460034%2C211.221177%2090.2629595%2C211.294388%2087.0106161%2C210.893082%20C87.0106161%2C210.893082%2086.7892381%2C210.977139%2086.4202748%2C211.123562%20C86.0649768%2C211.280831%2085.4855677%2C211.486907%2084.9116247%2C211.768907%20C83.7200098%2C212.330194%2082.1129695%2C213.094846%2080.4922639%2C213.86221%20C78.8961559%2C214.653977%2077.4749638%2C215.50811%2076.3216118%2C216.139897%20C75.7422027%2C216.454435%2075.2639169%2C216.725588%2074.9332164%2C216.907261%20C74.6271135%2C217.113337%2074.4549306%2C217.221798%2074.4549306%2C217.221798%20C76.7015073%2C218.257604%2077.9532496%2C219.659466%2078.1964921%2C221.145386%20C78.7622359%2C222.715363%2077.9887794%2C224.344994%2076.5293244%2C226.123759%20C75.6848084%2C227.0267%2074.5423886%2C227.878121%2073.3753712%2C228.705138%20C72.1372943%2C229.543002%2070.5876483%2C230.334769%2068.8576202%2C231.091287%20C65.6189421%2C232.612456%2061.4209593%2C233.951953%2056.9168736%2C234.757278%20C56.9168736%2C234.757278%2056.5260458%2C235.391777%2056.228142%2C236.338102%20C55.8865093%2C237.303407%2055.4328211%2C238.604943%2054.9654675%2C239.933594%20C54.7686871%2C241.245976%2054.585572%2C242.59903%2054.4379866%2C243.634836%20C54.2439392%2C244.678776%2054.3395964%2C245.35937%2054.3395964%2C245.35937%20C58.9912674%2C245.410889%2063.1291229%2C246.189099%2066.2202157%2C247.420135%20C69.8169249%2C248.602363%2071.9897089%2C250.364859%2073.6705419%2C252.520527%20C74.9960768%2C254.847022%2075.5235577%2C257.281978%2074.3428751%2C260.093837%20C73.5202235%2C262.835197%2071.2627145%2C265.891094%2067.5840135%2C268.664991%20C67.5840135%2C268.664991%2067.7917261%2C268.849375%2068.1470242%2C269.153067%20C68.5515173%2C269.445913%2069.1418586%2C269.860777%2069.8524547%2C270.359699%20C71.3146427%2C271.357543%2073.1539932%2C272.770251%2075.315845%2C274.047383%20C77.5979516%2C275.291976%2079.9155879%2C276.544704%2081.6729466%2C277.507298%20C82.5420602%2C277.995374%2083.4275722%2C278.299066%2083.9796507%2C278.55395%20C84.5563267%2C278.808834%2084.8870272%2C278.941699%2084.8870272%2C278.941699%20C90.0771113%2C276.739935%2095.6498242%2C275.606514%20101.222537%2C275.023535%20C104.007527%2C274.727978%20106.743322%2C274.657478%20109.358862%2C274.828304%20C112.020864%2C274.96117%20114.734794%2C275.169958%20117.273808%2C275.763783%20C119.790958%2C276.422686%20122.245248%2C277.043626%20124.393434%2C277.995374%20C126.57715%2C278.930853%20128.517624%2C280.159177%20130.354242%2C281.341405%20C134.024744%2C283.825169%20136.847996%2C287.333892%20138.064209%2C291.021576%20C138.064209%2C291.021576%20139.952755%2C291.094787%20142.78694%2C291.20596%20C145.63479%2C291.27646%20149.428279%2C291.534056%20153.208104%2C291.338825%20C156.990661%2C291.216806%20160.778685%2C291.154441%20163.591005%2C290.972768%20C166.365063%2C290.704327%20168.218079%2C290.536212%20168.218079%2C290.536212%20C168.608907%2C288.611024%20169.469821%2C286.797009%20170.647771%2C285.151108%20C171.22718%2C284.348495%20171.888581%2C283.581131%20172.623774%2C282.865287%20C173.33437%2C282.122327%20174.083229%2C281.365809%20174.919546%2C280.698772%20C176.564849%2C279.359275%20178.43973%2C278.201451%20180.563318%2C277.274107%20C182.624047%2C276.314224%20184.835094%2C275.411284%20187.387774%2C274.841862%20C189.989648%2C274.329382%20192.430272%2C273.819614%20195.081342%2C273.63523%20C197.696882%2C273.426442%20200.544733%2C273.548461%20203.182137%2C273.659634%20C208.571735%2C273.949768%20214.546208%2C275.180804%20219.739025%2C277.127684%20C219.739025%2C277.127684%20220.889644%2C276.495897%20222.60874%2C275.544149%20C224.254043%2C274.57342%20226.623608%2C273.415596%20228.43836%2C271.978484%20C230.294109%2C270.614583%20232.245515%2C269.323894%20233.420732%2C268.252838%20C234.574084%2C267.181783%20235.325676%2C266.476785%20235.325676%2C266.476785%20C231.461127%2C263.833041%20229.236414%2C260.996778%20227.815222%2C258.195765%20C227.151088%2C256.845421%20226.967973%2C255.576424%20226.92971%2C254.323696%20C226.83132%2C253.057411%20227.101893%2C251.877894%20227.815222%2C250.779723%20C228.820989%2C248.539998%20231.398266%2C246.883251%20234.330842%2C245.57087%22%20id%3D%22Fill-2%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%20%20%20%20%3Cpath%20d%3D%22M118.447097%2C177.453406%20C118.447097%2C177.453406%20123.443134%2C158.68689%20101.750823%2C134.472906%20L101.026562%2C133.724523%20C91.8872032%2C122.97872%2086.8529035%2C109.342424%2086.8529035%2C95.3265125%20C86.8529035%2C62.4247782%20113.863752%2C35.6538187%20147.067719%2C35.6538187%20L148.464314%2C35.6538187%20C181.671013%2C35.6538187%20208.684595%2C62.4247782%20208.684595%2C95.3265125%20C208.684595%2C109.342424%20203.650296%2C122.97872%20194.519137%2C133.716388%20C194.412547%2C133.835696%20194.166572%2C134.087868%20193.794875%2C134.456637%20C174.534989%2C153.591921%20177.084936%2C177.453406%20177.084936%2C177.453406%20C212.256707%2C165.425049%20236.017946%2C132.612795%20236.220192%2C95.8091653%20C236.471634%2C49.7944603%20199.034155%2C10.5748554%20152.774352%2C8.37309111%20C152.194943%2C8.34597578%20151.623733%2C8.33241812%20151.052523%2C8.33241812%20C150.352859%2C8.33241812%20147.750985%2C8.38393723%20147.761917%2C8.38393723%20C147.688124%2C8.38393723%20145.181907%2C8.33241812%20144.484976%2C8.33241812%20C143.913766%2C8.33241812%20143.339823%2C8.34597578%20142.771346%2C8.37309111%20C96.5006113%2C10.5748554%2059.063132%2C49.7944603%2059.3173068%2C95.8091653%20C59.5140872%2C132.612795%2083.2780588%2C165.425049%20118.447097%2C177.453406%22%20id%3D%22Fill-3%22%20fill%3D%22%23000000%22%3E%3C%2Fpath%3E%20%20%20%20%3C%2Fg%3E%3C%2Fsvg%3E\"","import type {\n IPipeline,\n IStage,\n IStageOrTriggerTypeConfig,\n IStageOrTriggerValidator,\n IValidatorConfig,\n} from '@spinnaker/core';\nimport { NameUtils, PipelineConfigService, PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface ITargetImpedanceValidationConfig extends IValidatorConfig {\n stageTypes?: string[];\n stageType?: string;\n message: string;\n}\n\nexport class CfTargetImpedanceValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage,\n validator: ITargetImpedanceValidationConfig,\n _config: IStageOrTriggerTypeConfig,\n ): string {\n const stagesToTest: IStage[] = PipelineConfigService.getAllUpstreamDependencies(pipeline, stage);\n const regions: string[] = stage.regions || [];\n let allRegionsFound = true;\n\n regions.forEach((region) => {\n let regionFound = false;\n stagesToTest.forEach((toTest) => {\n if (toTest.type === 'deploy' && toTest.clusters && toTest.clusters.length) {\n toTest.clusters.forEach((cluster: any) => {\n const clusterName: string = NameUtils.getClusterName(\n cluster.application,\n cluster.stack,\n cluster.freeFormDetails,\n );\n if (clusterName === stage.cluster && cluster.account === stage.credentials && cluster.region === region) {\n regionFound = true;\n }\n });\n } else if (\n toTest.type === 'cloneServerGroup' &&\n NameUtils.getClusterName(toTest.application, toTest.stack, toTest.freeFormDetails) === stage.cluster &&\n toTest.region === region\n ) {\n regionFound = true;\n }\n });\n if (!regionFound) {\n allRegionsFound = false;\n }\n });\n if (!allRegionsFound) {\n return validator.message;\n }\n return null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfTargetImpedance', new CfTargetImpedanceValidator());\n","import { get, has, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport interface IInstanceFieldSizeValidationConfig extends IValidatorConfig {\n fieldName: string;\n fieldLabel?: string;\n min?: number;\n max?: number;\n message?: string;\n}\n\nexport class CfInstanceSizeFieldValidator implements IStageOrTriggerValidator {\n public validate(\n pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IInstanceFieldSizeValidationConfig,\n ): string {\n if (!this.passesValidation(stage, validationConfig)) {\n return this.validationMessage(validationConfig, pipeline);\n }\n return null;\n }\n\n protected passesValidation(stage: IStage | ITrigger, validationConfig: IInstanceFieldSizeValidationConfig): boolean {\n return this.fieldIsValid(stage, validationConfig);\n }\n\n protected validationMessage(validationConfig: IInstanceFieldSizeValidationConfig, pipeline: IPipeline): string {\n const fieldLabel: string = this.printableFieldLabel(validationConfig);\n const hasMin = has(validationConfig, 'min');\n const min: any = hasMin ? get(validationConfig, 'min') : 'NA';\n const hasMax = has(validationConfig, 'max');\n const max: any = hasMax ? get(validationConfig, 'max') : 'NA';\n let message = ``;\n if (hasMin) {\n if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be from ${min} to ${max} in ${pipeline.name}.`;\n } else {\n message = `<strong>${fieldLabel}</strong> should be at least ${min} in ${pipeline.name}.`;\n }\n } else if (hasMax) {\n message = `<strong>${fieldLabel}</strong> should be no more than ${max} in ${pipeline.name}.`;\n }\n return validationConfig.message || message;\n }\n\n protected printableFieldLabel(config: IInstanceFieldSizeValidationConfig): string {\n const fieldLabel: string = config.fieldLabel || config.fieldName;\n return upperFirst(fieldLabel);\n }\n\n protected fieldIsValid(stage: IStage | ITrigger, config: IInstanceFieldSizeValidationConfig): boolean {\n const fieldExists = has(stage, config.fieldName);\n const field: any = get(stage, config.fieldName);\n const hasMax: boolean = has(config, 'max');\n const hasMin: boolean = has(config, 'min');\n const max: number = get(config, 'max');\n const min: number = get(config, 'min');\n\n return fieldExists && (!hasMax || (hasMax && field <= max)) && (!hasMin || (hasMin && field >= min));\n }\n}\n\nPipelineConfigValidator.registerValidator('cfInstanceSizeField', new CfInstanceSizeFieldValidator());\n","import { get } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger } from '@spinnaker/core';\nimport { PipelineConfigValidator } from '@spinnaker/core';\n\nexport class CfRequiredRoutesFieldValidator implements IStageOrTriggerValidator {\n public validate(_pipeline: IPipeline, stage: IStage | ITrigger, validationConfig: any): string {\n const routes: string[] = get(stage, validationConfig.fieldName);\n const routeErrors = routes\n .map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n route = route || '';\n if (regex.exec(route) === null) {\n const spelRegex = /^\\${.*}$/g;\n if (spelRegex.exec(route) === null) {\n return `\"${route}\" did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n }\n return null;\n })\n .filter((err) => err != null);\n return (routeErrors && routeErrors.length && routeErrors[0]) || null;\n }\n}\n\nPipelineConfigValidator.registerValidator('cfRequiredRoutesField', new CfRequiredRoutesFieldValidator());\n","import React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IFormikStageConfigInjectedProps } from '@spinnaker/core';\nimport {\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n StageArtifactSelectorDelegate,\n StageConfigField,\n TextInput,\n} from '@spinnaker/core';\n\nexport class BakeCloudFoundryManifestConfigForm extends React.Component<IFormikStageConfigInjectedProps> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n if (stage.inputArtifacts && stage.inputArtifacts.length === 0) {\n this.props.formik.setFieldValue('inputArtifacts', [\n {\n account: '',\n id: '',\n },\n ]);\n }\n }\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, null);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, artifact);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].account`, artifact.artifactAccount);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`inputArtifacts[${index}].id`, id);\n this.props.formik.setFieldValue(`inputArtifacts[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [\n ...stage.inputArtifacts,\n {\n account: '',\n id: '',\n },\n ];\n\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newInputArtifacts = [...stage.inputArtifacts];\n newInputArtifacts.splice(index, 1);\n this.props.formik.setFieldValue('inputArtifacts', newInputArtifacts);\n };\n\n private getInputArtifact = (stage: any, index: number) => {\n if (!stage.inputArtifacts || stage.inputArtifacts.length === 0) {\n return {\n account: '',\n id: '',\n };\n } else {\n return stage.inputArtifacts[index];\n }\n };\n\n private outputNameChange = (outputName: string) => {\n const stage = this.props.formik.values;\n const expectedArtifacts = stage.expectedArtifacts;\n if (\n expectedArtifacts &&\n expectedArtifacts.length === 1 &&\n expectedArtifacts[0].matchArtifact &&\n expectedArtifacts[0].matchArtifact.type === 'embedded/base64'\n ) {\n this.props.formik.setFieldValue('expectedArtifacts', [\n {\n ...expectedArtifacts[0],\n matchArtifact: {\n ...expectedArtifacts[0].matchArtifact,\n name: outputName,\n },\n },\n ]);\n }\n };\n\n public render() {\n const stage = this.props.formik.values;\n\n return (\n <>\n <h4>Manifest Options</h4>\n <StageConfigField fieldColumns={3} label={'Name'} helpKey={'pipeline.config.bake.cf.manifest.name'}>\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue('outputName', e.target.value);\n this.outputNameChange(e.target.value);\n }}\n value={stage.outputName}\n />\n </StageConfigField>\n <h4>Manifest Template</h4>\n <StageArtifactSelectorDelegate\n artifact={this.getInputArtifact(stage, 0).artifact}\n excludedArtifactTypePatterns={BakeCloudFoundryManifestConfigForm.excludedArtifactTypes}\n expectedArtifactId={this.getInputArtifact(stage, 0).id}\n label=\"Template Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, 0);\n }}\n helpKey={'pipeline.config.bake.cf.manifest.templateArtifact'}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) => this.onTemplateArtifactSelected(artifact.id, 0)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <h4>Manifest Variables</h4>\n {stage.inputArtifacts && stage.inputArtifacts.length > 1 && (\n <div className=\"row form-group\">\n {stage.inputArtifacts.slice(1).map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-9\">\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={[]}\n expectedArtifactId={a.id}\n label=\"Variables Artifact\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index + 1);\n }}\n onExpectedArtifactSelected={(artifact: IExpectedArtifact) =>\n this.onTemplateArtifactSelected(artifact.id, index + 1)\n }\n helpKey={'pipeline.config.bake.cf.manifest.varsArtifact'}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index + 1)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add variables artifact\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { BakeCloudFoundryManifestConfigForm } from './BakeCloudFoundryManifestConfigForm';\n\nexport function BakeCloudFoundryManifestConfig({ application, pipeline, stage, updateStage }: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n inputArtifacts: [],\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateBakeCloudFoundryManifestStage}\n render={(props) => <BakeCloudFoundryManifestConfigForm {...props} />}\n />\n );\n}\n\nexport function validateBakeCloudFoundryManifestStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator\n .field('expectedArtifacts', 'Produced artifacts')\n .required()\n .withValidators((artifacts: IExpectedArtifact[]) => {\n if (validateProducedArtifacts(artifacts)) {\n return undefined;\n }\n return 'Exactly one expected artifact of type embedded/base64 must be configured in the Produces Artifacts section';\n });\n formValidator.field('outputName', 'Name').required();\n formValidator\n .field('inputArtifacts', 'Template and Variables Artifacts')\n .required()\n .withValidators((artifacts: IArtifact[]) => {\n if (validateInputArtifacts(artifacts)) {\n return undefined;\n }\n return 'There should be one manifest template and at least one variables artifact';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateProducedArtifacts(artifacts: IExpectedArtifact[]): boolean {\n return artifacts?.length === 1 && artifacts[0]?.matchArtifact?.type === 'embedded/base64';\n}\n\nexport function validateInputArtifacts(artifacts: IArtifact[]): boolean {\n return artifacts?.length >= 2;\n}\n","import React from 'react';\n\nimport type { IArtifact, IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport {\n decodeUnicodeBase64,\n ExecutionDetailsSection,\n ManifestYaml,\n Overridable,\n StageFailureMessage,\n} from '@spinnaker/core';\n\n@Overridable('bakeManifest.bakeManifestDetailsTab')\nexport class BakeCloudFoundryManifestDetailsTab extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'bakedManifest';\n\n public render() {\n const { current, name, stage } = this.props;\n const bakedArtifacts: IArtifact[] = (stage.context.artifacts || []).filter(\n (a: IArtifact) => a.type === 'embedded/base64',\n );\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n {bakedArtifacts.map((artifact, i) => (\n <ManifestYaml\n key={i}\n linkName={bakedArtifacts.length > 1 ? `Baked Manifest ${i} YAML` : 'Baked Manifest YAML'}\n manifestText={decodeUnicodeBase64(artifact.reference)}\n modalTitle=\"Baked Manifest\"\n />\n ))}\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IArtifact, IStage } from '@spinnaker/core';\nimport {\n ArtifactReferenceService,\n ExecutionArtifactTab,\n ExecutionDetailsTasks,\n ExpectedArtifactService,\n Registry,\n} from '@spinnaker/core';\n\nimport {\n BakeCloudFoundryManifestConfig,\n validateBakeCloudFoundryManifestStage,\n} from './BakeCloudFoundryManifestConfig';\nimport { BakeCloudFoundryManifestDetailsTab } from './BakeCloudFoundryManifestDetailsTab';\n\nexport const BAKE_CF_MANIFEST_STAGE_KEY = 'bakeCloudFoundryManifest';\n\nRegistry.pipeline.registerStage({\n label: 'Bake CloudFoundry Manifest',\n description: 'Bake a CF manifest using external variables files.',\n key: BAKE_CF_MANIFEST_STAGE_KEY,\n component: BakeCloudFoundryManifestConfig,\n producesArtifacts: true,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [BakeCloudFoundryManifestDetailsTab, ExecutionDetailsTasks, ExecutionArtifactTab],\n artifactExtractor: (fields: string[]) =>\n ExpectedArtifactService.accumulateArtifacts<IArtifact>(['inputArtifacts'])(fields).map((a: IArtifact) => a.id),\n artifactRemover: (stage: IStage, artifactId: string) => {\n ArtifactReferenceService.removeArtifactFromFields(['expectedArtifactId'])(stage, artifactId);\n const artifactDoesNotMatch = (artifact: IArtifact) => artifact.id !== artifactId;\n stage.expectedArtifacts = (stage.expectedArtifacts ?? []).filter(artifactDoesNotMatch);\n stage.inputArtifacts = (stage.inputArtifacts ?? []).filter(artifactDoesNotMatch);\n },\n validateFn: validateBakeCloudFoundryManifestStage,\n});\n","import type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../../domain';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilder {\n private static envVarsFromObject(someObject: any): ICloudFoundryEnvVar[] {\n const envVars = [];\n for (const property in someObject) {\n if (someObject.hasOwnProperty(property)) {\n const envVar = { key: property, value: someObject[property] };\n envVars.push(envVar);\n }\n }\n return envVars;\n }\n\n private static getSubmitButtonLabel(mode: string) {\n switch (mode) {\n case 'createPipeline':\n return 'Add';\n case 'editPipeline':\n case 'editClonePipeline':\n return 'Done';\n case 'clone':\n return 'Clone';\n default:\n return 'Create';\n }\n }\n\n public static buildNewServerGroupCommand(app: Application, defaults: any): ICloudFoundryCreateServerGroupCommand {\n defaults = defaults || {};\n return {\n application: app.name,\n stack: '',\n freeFormDetails: '',\n region: '',\n strategy: '',\n credentials: '',\n viewState: {\n mode: defaults.mode || 'create',\n submitButtonLabel: CloudFoundryServerGroupCommandBuilder.getSubmitButtonLabel(defaults.mode || 'create'),\n },\n selectedProvider: 'cloudfoundry',\n startApplication: true,\n } as ICloudFoundryCreateServerGroupCommand;\n }\n\n public static buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(app, { mode });\n command.credentials = '';\n command.manifest = {\n direct: {\n memory: serverGroup.memory ? serverGroup.memory + 'M' : '1024M',\n diskQuota: serverGroup.diskQuota ? serverGroup.diskQuota + 'M' : '1024M',\n buildpacks:\n serverGroup.droplet && serverGroup.droplet.buildpacks\n ? serverGroup.droplet.buildpacks.map((item) => item.name)\n : [],\n instances: serverGroup.instances ? serverGroup.instances.length : 1,\n routes: serverGroup.loadBalancers || [],\n environment: CloudFoundryServerGroupCommandBuilder.envVarsFromObject(serverGroup.env),\n services: (serverGroup.serviceInstances || []).map((serviceInstance) => serviceInstance.name),\n healthCheckType: 'port',\n },\n };\n command.region = '';\n command.stack = serverGroup.stack;\n command.freeFormDetails = serverGroup.detail;\n command.source = {\n asgName: serverGroup.name,\n region: serverGroup.region,\n account: serverGroup.account,\n };\n return command;\n }\n\n public static buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command: ICloudFoundryCreateServerGroupCommand = this.buildNewServerGroupCommand(\n { name: pipeline.application } as Application,\n { mode: 'editPipeline' },\n );\n command.viewState = {\n ...command.viewState,\n pipeline,\n requiresTemplateSelection: true,\n stage,\n };\n return command;\n }\n\n public static buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand(application, { mode: 'editPipeline' });\n command.credentials = originalCluster.account;\n command.applicationArtifact = originalCluster.applicationArtifact;\n command.delayBeforeDisableSec = originalCluster.delayBeforeDisableSec;\n command.manifest = originalCluster.manifest;\n command.maxRemainingAsgs = originalCluster.maxRemainingAsgs;\n command.region = originalCluster.region;\n command.rollback = originalCluster.rollback;\n command.strategy = originalCluster.strategy;\n command.startApplication = originalCluster.startApplication;\n command.targetPercentages = originalCluster.targetPercentages;\n command.delayBeforeScaleDownSec = originalCluster.delayBeforeScaleDownSec;\n if (originalCluster.stack) {\n command.stack = originalCluster.stack;\n }\n\n if (originalCluster.freeFormDetails) {\n command.freeFormDetails = originalCluster.freeFormDetails;\n }\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n\n public static buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): ICloudFoundryCreateServerGroupCommand {\n const command = this.buildNewServerGroupCommand({ name: pipeline.application } as Application, {\n mode: 'editClonePipeline',\n });\n command.credentials = stage.credentials;\n command.capacity = stage.capacity;\n command.account = stage.account;\n command.delayBeforeDisableSec = stage.delayBeforeDisableSec;\n command.freeFormDetails = stage.freeFormDetails || command.freeFormDetails;\n command.maxRemainingAsgs = stage.maxRemainingAsgs;\n command.region = stage.region;\n command.startApplication = stage.startApplication === undefined || stage.startApplication;\n command.stack = stage.stack || command.stack;\n command.strategy = stage.strategy;\n command.target = stage.target;\n command.targetCluster = stage.targetCluster;\n command.manifest = stage.manifest || command.manifest;\n command.source = stage.source;\n\n command.viewState = {\n ...command.viewState,\n pipeline,\n stage,\n };\n\n return command;\n }\n}\n","import type { IQService } from 'angular';\n\nimport type { Application, IPipeline, IStage } from '@spinnaker/core';\nimport type { ICloudFoundryApplication, ICloudFoundryServerGroup } from '../../domain';\n\nimport { CloudFoundryServerGroupCommandBuilder } from './serverGroupCommandBuilder.service.cf';\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryDeployConfiguration,\n} from './serverGroupConfigurationModel.cf';\n\nexport class CloudFoundryServerGroupCommandBuilderShim {\n public static $inject = ['$q'];\n constructor(private $q: IQService) {}\n\n public buildNewServerGroupCommand(\n app: Application,\n defaults: any,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommand(app, defaults));\n }\n\n public buildServerGroupCommandFromExisting(\n app: Application,\n serverGroup: ICloudFoundryServerGroup,\n mode = 'clone',\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup, mode),\n );\n }\n\n public buildNewServerGroupCommandForPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(CloudFoundryServerGroupCommandBuilder.buildNewServerGroupCommandForPipeline(stage, pipeline));\n }\n\n public buildServerGroupCommandFromPipeline(\n application: ICloudFoundryApplication,\n originalCluster: ICloudFoundryDeployConfiguration,\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromPipeline(\n application,\n originalCluster,\n stage,\n pipeline,\n ),\n );\n }\n\n public buildCloneServerGroupCommandFromPipeline(\n stage: IStage,\n pipeline: IPipeline,\n ): PromiseLike<ICloudFoundryCreateServerGroupCommand> {\n return this.$q.when(\n CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline),\n );\n }\n}\n","import React from 'react';\n\nimport type { Application, ITemplateSelectionText } from '@spinnaker/core';\nimport { DeployInitializer } from '@spinnaker/core';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nexport interface IServerGroupTemplateSelectionProps {\n app: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n onDismiss: () => void;\n onTemplateSelected: () => void;\n}\n\nexport interface IServerGroupTemplateSelectionState {\n templateSelectionText: ITemplateSelectionText;\n}\n\nexport class ServerGroupTemplateSelection extends React.Component<\n IServerGroupTemplateSelectionProps,\n IServerGroupTemplateSelectionState\n> {\n constructor(props: IServerGroupTemplateSelectionProps) {\n super(props);\n this.state = {\n templateSelectionText: {\n copied: [\n 'account, region, cluster name (stack, details)',\n 'routes',\n 'service instances',\n 'instance settings',\n 'environment variables',\n ],\n notCopied: ['artifacts'],\n additionalCopyText: '',\n },\n };\n }\n\n public render() {\n const { app, command, onDismiss, onTemplateSelected } = this.props;\n const { templateSelectionText } = this.state;\n\n return (\n <DeployInitializer\n cloudProvider=\"cloudfoundry\"\n application={app}\n command={command}\n onDismiss={onDismiss}\n onTemplateSelected={onTemplateSelected}\n templateSelectionText={templateSelectionText}\n />\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, StageArtifactSelector } from '@spinnaker/core';\nimport { FormikConfigField } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCreateServerGroupArtifactSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupArtifactSettings\n extends React.Component<ICloudFoundryCreateServerGroupArtifactSettingsProps>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n public static get LABEL() {\n return 'Artifact';\n }\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('applicationArtifact', { artifact: artifact });\n };\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const { applicationArtifact } = this.props.formik.values;\n const errors = {} as any;\n if (\n !applicationArtifact ||\n !(\n (applicationArtifact.artifact && applicationArtifact.artifact.type && applicationArtifact.artifact.reference) ||\n applicationArtifact.artifactId\n )\n ) {\n errors.applicationArtifact = 'Application artifact information is required';\n }\n\n return errors;\n }\n\n public render() {\n const { formik, stage, pipeline } = this.props;\n const applicationArtifact = formik.values.applicationArtifact;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={applicationArtifact && applicationArtifact.artifactId}\n artifact={applicationArtifact && applicationArtifact.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundrySource,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryCloneServerGroupProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n source: ICloudFoundrySource;\n}\n\nexport class CloudFoundryServerGroupConstantArtifactSettings extends React.Component<\n ICloudFoundryCloneServerGroupProps\n> {\n constructor(props: ICloudFoundryCloneServerGroupProps) {\n super(props);\n const { source } = props;\n this.props.formik.setFieldValue('source', source);\n }\n\n public render(): JSX.Element {\n const { source } = this.props;\n\n return (\n <div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Account</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.account} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Region</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.region} readOnly={true} />\n </div>\n </div>\n <div className=\"form-group row\">\n <label className=\"col-md-3 col-form-label sm-label-right\">Server Group</label>\n <div className=\"col-md-7\">\n <input className=\"form-control\" type=\"text\" id=\"cluster\" value={source.asgName} readOnly={true} />\n </div>\n </div>\n </div>\n );\n }\n}\n","import { set } from 'lodash';\nimport React from 'react';\n\nimport type { IDeploymentStrategyAdditionalFieldsProps, IServerGroupCommand } from '@spinnaker/core';\nimport { HelpField } from '@spinnaker/core';\n\nexport interface IRollingRedBlackCommand extends IServerGroupCommand {\n targetPercentages: number[];\n delayBeforeDisableSec: number;\n delayBeforeScaleDownSec: number;\n maxRemainingAsgs: number;\n rollback: {\n onFailure: boolean;\n };\n scaleDown: boolean;\n}\n\nexport interface IRollingRedBlackStrategyAdditionalFieldsProps extends IDeploymentStrategyAdditionalFieldsProps {\n command: IRollingRedBlackCommand;\n}\n\nexport class AdditionalFields extends React.Component<IRollingRedBlackStrategyAdditionalFieldsProps> {\n private handlePercentChange = (key: string, value: any, index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages[index] = value;\n set(this.props.command, key, percentages);\n this.forceUpdate();\n };\n\n private onDelete = (index: number) => {\n const percentages = this.props.command.targetPercentages;\n percentages.splice(index, 1);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private addPercent = () => {\n const percentages = this.props.command.targetPercentages;\n percentages.push(100);\n set(this.props.command, 'targetPercentages', percentages);\n this.forceUpdate();\n };\n\n private handleChange = (key: string, value: any) => {\n set(this.props.command, key, value);\n this.forceUpdate();\n };\n\n public render() {\n const { command } = this.props;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-12\">\n <div className=\"col-md-12 checkbox\">\n <label>\n <input\n type=\"checkbox\"\n checked={command.rollback.onFailure}\n onChange={(e) => this.handleChange('rollback.onFailure', e.target.checked)}\n />\n Rollback to previous server group if deployment fails <HelpField id=\"strategy.rollingRedBlack.rollback\" />\n </label>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom sp-margin-m-top\">\n <label>\n Wait Before Scale Down &nbsp;\n <HelpField content=\"Time to wait before scaling down source server group\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeDisableSec}\n onChange={(e) => this.handleChange('delayBeforeDisableSec', e.target.value)}\n placeholder=\"0\"\n />\n &nbsp; seconds\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Maximum number of server groups to leave &nbsp;\n <HelpField id=\"strategy.redblack.maxRemainingAsgs\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"2\"\n type=\"number\"\n value={command.maxRemainingAsgs}\n onChange={(e) => this.handleChange('maxRemainingAsgs', e.target.value)}\n />\n &nbsp; server groups\n </div>\n </div>\n <div className=\"col-md-12 form-inline sp-margin-m-bottom\">\n <label>\n Wait Before Cluster Scale Down &nbsp;\n <HelpField content=\"Time to wait before scaling down the cluster after deployment\" />\n </label>\n <div>\n <input\n className=\"form-control input-sm\"\n style={{ width: '60px' }}\n min=\"0\"\n type=\"number\"\n value={command.delayBeforeScaleDownSec}\n onChange={(e) => this.handleChange('delayBeforeScaleDownSec', e.target.value)}\n placeholder=\"0\"\n />\n &nbsp; seconds\n </div>\n </div>\n <label>\n Scale by percentages &nbsp;\n <HelpField content=\"Steps to get to full capacity in percent\" />\n </label>\n <table className=\"table table-condensed packed metadata\">\n <tbody>\n {command.targetPercentages.map((percentage: number, index: number) => {\n return (\n <tr key={index}>\n <td>\n <div className=\"sp-margin-m-bottom\">\n <input\n className=\"form-control\"\n min=\"0\"\n type=\"number\"\n value={percentage}\n onChange={(e) => this.handlePercentChange('targetPercentages', e.target.value, index)}\n placeholder=\"100\"\n />\n </div>\n </td>\n <td>\n <a className=\"btn btn-link sm-label\" onClick={() => this.onDelete(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n </a>\n </td>\n </tr>\n );\n })}\n </tbody>\n <tfoot>\n <tr>\n <td colSpan={2}>\n <button type=\"button\" className=\"add-new col-md-12\" onClick={() => this.addPercent()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> Add percentage\n </button>\n </td>\n </tr>\n </tfoot>\n </table>\n </div>\n </div>\n );\n }\n}\n","import { defaultsDeep, unset } from 'lodash';\nimport React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\n\nimport type {\n IDeploymentStrategy,\n IDeploymentStrategyAdditionalFieldsProps,\n IServerGroupCommand,\n} from '@spinnaker/core';\nimport { CoreRedBlackAdditionalFields, HelpField, Markdown } from '@spinnaker/core';\n\nimport type { IRedBlackCommand } from './strategies/redblack/redblack.strategy';\nimport type { IRollingRedBlackCommand } from './strategies/rollingredblack/AdditionalFields';\nimport { AdditionalFields as AdditionalRollingRedBlackFields } from './strategies/rollingredblack/AdditionalFields';\n\nexport interface ICloudFoundryDeploymentStrategySelectorProps {\n command: IServerGroupCommand;\n onFieldChange: (key: string, value: any) => void;\n onStrategyChange: (command: IServerGroupCommand, strategy: IDeploymentStrategy) => void;\n}\n\nexport interface ICloudFoundryDeploymentStrategySelectorState {\n strategies: IDeploymentStrategy[];\n currentStrategy: string;\n AdditionalFieldsComponent: React.ComponentType<IDeploymentStrategyAdditionalFieldsProps>;\n}\n\nexport class CloudFoundryDeploymentStrategySelector extends React.Component<\n ICloudFoundryDeploymentStrategySelectorProps,\n ICloudFoundryDeploymentStrategySelectorState\n> {\n public state: ICloudFoundryDeploymentStrategySelectorState = {\n strategies: [\n {\n label: 'None',\n description: 'Creates the next server group with no impact on existing server groups',\n key: '',\n },\n {\n label: 'Highlander',\n description:\n 'Destroys <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'highlander',\n },\n {\n label: 'Red/Black',\n description:\n 'Disables <i>all</i> previous server groups in the cluster as soon as new server group passes health checks',\n key: 'redblack',\n additionalFields: ['maxRemainingAsgs'],\n AdditionalFieldsComponent: CoreRedBlackAdditionalFields,\n initializationMethod: (command: IRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n maxRemainingAsgs: 2,\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n scaleDown: false,\n });\n },\n },\n {\n label: 'Rolling Red/Black',\n description:\n 'Gradually replaces <i>all</i> previous server group instances in the cluster as soon as new server group instances pass health checks',\n key: 'cfrollingredblack',\n additionalFields: ['targetPercentages'],\n AdditionalFieldsComponent: AdditionalRollingRedBlackFields,\n initializationMethod: (command: IRollingRedBlackCommand) => {\n defaultsDeep(command, {\n rollback: {\n onFailure: false,\n },\n targetPercentages: command.targetPercentages ? command.targetPercentages : [50, 100], // defaultsDeep does not work with arrays\n delayBeforeDisableSec: 0,\n delayBeforeScaleDownSec: 0,\n maxRemainingAsgs: 2,\n scaleDown: false,\n });\n },\n },\n ],\n currentStrategy: null,\n AdditionalFieldsComponent: undefined,\n };\n\n public selectStrategy(strategy: string): void {\n const { command, onStrategyChange } = this.props;\n const oldStrategy = this.state.strategies.find((s) => s.key === this.state.currentStrategy);\n const newStrategy = this.state.strategies.find((s) => s.key === strategy);\n\n if (oldStrategy && oldStrategy.additionalFields) {\n oldStrategy.additionalFields.forEach((field) => {\n if (!newStrategy || !newStrategy.additionalFields || !newStrategy.additionalFields.includes(field)) {\n unset(command, field);\n }\n });\n }\n\n let AdditionalFieldsComponent;\n if (newStrategy) {\n AdditionalFieldsComponent = newStrategy.AdditionalFieldsComponent;\n if (newStrategy.initializationMethod) {\n newStrategy.initializationMethod(command);\n }\n }\n command.strategy = strategy;\n if (onStrategyChange && newStrategy) {\n onStrategyChange(command, newStrategy);\n }\n this.setState({ currentStrategy: strategy, AdditionalFieldsComponent });\n }\n\n public strategyChanged = (option: Option<IDeploymentStrategy>) => {\n this.selectStrategy(option.key);\n };\n\n public componentDidMount() {\n this.selectStrategy(this.props.command.strategy);\n }\n\n public render() {\n const { command, onFieldChange } = this.props;\n const { AdditionalFieldsComponent, currentStrategy, strategies } = this.state;\n const hasAdditionalFields = Boolean(AdditionalFieldsComponent);\n if (strategies && strategies.length) {\n return (\n <div>\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className={`sm-label-right`} style={{ paddingLeft: '13px' }}>\n Strategy &nbsp;\n <HelpField id=\"core.serverGroup.strategy\" />\n </div>\n <div className=\"flex-grow\">\n <Select\n clearable={false}\n required={true}\n options={strategies}\n placeholder=\"None\"\n valueKey=\"key\"\n value={currentStrategy}\n optionRenderer={this.strategyOptionRenderer}\n valueRenderer={(o) => <>{o.label}</>}\n onChange={this.strategyChanged}\n />\n </div>\n </div>\n {hasAdditionalFields && (\n <div className=\"form-group col-md-9 col-md-offset-3\" style={{ marginTop: '5px', float: 'right' }}>\n <AdditionalFieldsComponent command={command} onChange={onFieldChange} />\n </div>\n )}\n </div>\n );\n }\n\n return null;\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import type { FormikErrors, FormikProps } from 'formik';\nimport { get } from 'lodash';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IWizardPageComponent } from '@spinnaker/core';\nimport {\n AccountService,\n CheckboxInput,\n FormikFormField,\n HelpField,\n ReactSelectInput,\n TextInput,\n} from '@spinnaker/core';\nimport { CloudFoundryDeploymentStrategySelector } from '../../../../../deploymentStrategy/CloudFoundryDeploymentStrategySelector';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryServerGroupBasicSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n}\n\nexport interface ICloudFoundryServerGroupLocationSettingsState {\n accounts: IAccount[];\n regions: IRegion[];\n}\n\nexport class CloudFoundryServerGroupBasicSettings\n extends React.Component<ICloudFoundryServerGroupBasicSettingsProps, ICloudFoundryServerGroupLocationSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryServerGroupLocationSettingsState = {\n accounts: [],\n regions: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => {\n this.setState({ accounts });\n this.updateRegionList();\n });\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private accountChanged = (): void => {\n this.updateRegionList();\n this.props.formik.setFieldValue('region', '');\n };\n\n private updateRegionList = (): void => {\n const credentials = get(this.props.formik.values, 'credentials', undefined);\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private strategyChanged = (_values: ICloudFoundryCreateServerGroupCommand, strategy: any) => {\n this.props.formik.setFieldValue('strategy', strategy.key);\n };\n\n private onStrategyFieldChange = (key: string, value: any) => {\n this.props.formik.setFieldValue(key, value);\n };\n\n public render(): JSX.Element {\n const { formik } = this.props;\n const { accounts, regions } = this.state;\n const { values } = formik;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"credentials\"\n label=\"Account\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={accounts && accounts.map((acc: IAccount) => acc.name)}\n clearable={false}\n />\n )}\n onChange={this.accountChanged}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"region\"\n label=\"Region\"\n input={(props) => (\n <ReactSelectInput\n {...props}\n stringOptions={regions && regions.map((region: IRegion) => region.name)}\n inputClassName={'cloudfoundry-react-select'}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"stack\"\n label=\"Stack\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.stack\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name=\"freeFormDetails\"\n label=\"Detail\"\n input={(props) => <TextInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.detail\" />}\n />\n </div>\n <div className=\"sp-margin-m-bottom cloud-foundry-checkbox\">\n <FormikFormField\n name=\"startApplication\"\n label=\"Start on creation\"\n input={(props) => <CheckboxInput {...props} />}\n help={<HelpField id=\"cf.serverGroup.startApplication\" />}\n />\n </div>\n {(values.viewState.mode === 'editPipeline' ||\n values.viewState.mode === 'createPipeline' ||\n values.viewState.mode === 'editClonePipeline') && (\n <CloudFoundryDeploymentStrategySelector\n onFieldChange={this.onStrategyFieldChange}\n onStrategyChange={this.strategyChanged}\n command={values}\n />\n )}\n </div>\n </div>\n );\n }\n\n public validate(values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n if (values.stack && !values.stack.match(/^[a-zA-Z0-9]*$/)) {\n errors.stack = 'Stack can only contain letters and numbers.';\n }\n if (values.freeFormDetails && !values.freeFormDetails.match(/^[a-zA-Z0-9-]*$/)) {\n errors.freeFormDetails = 'Detail can only contain letters, numbers, and dashes.';\n }\n\n return errors;\n }\n}\n","import type { FormikErrors, FormikProps } from 'formik';\nimport React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IDeploymentStrategy, IWizardPageComponent } from '@spinnaker/core';\nimport { AccountService, FormikFormField, Markdown, ReactSelectInput, StageConstants } from '@spinnaker/core';\nimport { FormikAccountRegionClusterSelector } from '../../../../../presentation';\n\nimport type { ICloudFoundryCreateServerGroupCommand } from '../../../serverGroupConfigurationModel.cf';\n\nimport '../../../../../common/cloudFoundry.less';\n\nexport interface ICloudFoundryCloneSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n application: Application;\n}\n\nexport interface ICloudFoundryCloneSettingsState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryServerGroupCloneSettings\n extends React.Component<ICloudFoundryCloneSettingsProps, ICloudFoundryCloneSettingsState>\n implements IWizardPageComponent<ICloudFoundryCreateServerGroupCommand> {\n private destroy$ = new Subject();\n public state: ICloudFoundryCloneSettingsState = {\n accounts: [],\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private strategyOptionRenderer = (option: IDeploymentStrategy) => {\n return (\n <div className=\"body-regular\">\n <strong>\n <Markdown tag=\"span\" message={option.label} />\n </strong>\n <div>\n <Markdown tag=\"span\" message={option.description} />\n </div>\n </div>\n );\n };\n\n public render(): JSX.Element {\n const { application, formik } = this.props;\n const { accounts } = this.state;\n return (\n <div className=\"form-group\">\n <FormikAccountRegionClusterSelector\n componentName={'source'}\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n clusterField={'clusterName'}\n credentialsField={'account'}\n formik={formik}\n />\n <div className=\"col-md-9\">\n <div className=\"sp-margin-m-bottom\">\n <FormikFormField\n name={'target'}\n label=\"Target\"\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n options={StageConstants.TARGET_LIST.map((t) => {\n return {\n label: t.label,\n value: t.val,\n description: t.description,\n };\n })}\n optionRenderer={this.strategyOptionRenderer}\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n </div>\n );\n }\n\n public validate(_values: ICloudFoundryCreateServerGroupCommand) {\n const errors = {} as FormikErrors<ICloudFoundryCreateServerGroupCommand>;\n\n return errors;\n }\n}\n","import type { FormikProps } from 'formik';\nimport React from 'react';\n\nimport type { IArtifact, IExpectedArtifact, IPipeline, IStage, IWizardPageComponent } from '@spinnaker/core';\nimport { ArtifactTypePatterns, RadioButtonInput, StageArtifactSelector } from '@spinnaker/core';\nimport type { ICloudFoundryEnvVar } from '../../../../../domain';\nimport {\n Buildpacks,\n EnvironmentVariables,\n FormikConfigField,\n HealthCheck,\n InstanceParameters,\n Routes,\n Services,\n} from '../../../../../presentation';\n\nimport type {\n ICloudFoundryCreateServerGroupCommand,\n ICloudFoundryManifest,\n} from '../../../serverGroupConfigurationModel.cf';\n\nexport interface ICloudFoundryServerGroupConfigurationSettingsProps {\n formik: FormikProps<ICloudFoundryCreateServerGroupCommand>;\n stage: IStage;\n pipeline: IPipeline;\n}\n\nexport class CloudFoundryServerGroupConfigurationSettings\n extends React.Component<ICloudFoundryServerGroupConfigurationSettingsProps>\n implements IWizardPageComponent<ICloudFoundryServerGroupConfigurationSettingsProps> {\n public static LABEL = 'Configuration';\n\n private defaultDirectManifest: ICloudFoundryManifest = {\n direct: {\n memory: '1024M',\n diskQuota: '1024M',\n instances: 1,\n buildpacks: [],\n healthCheckType: 'port',\n routes: [],\n environment: [],\n services: [],\n },\n };\n\n private excludedArtifactTypePatterns = [\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ];\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'artifact':\n this.props.formik.setFieldValue('manifest', {});\n this.capacityUpdated('1');\n break;\n case 'direct':\n this.props.formik.setFieldValue('manifest', this.defaultDirectManifest);\n break;\n }\n };\n\n private capacityUpdated = (capacity: string): void => {\n this.props.formik.setFieldValue('capacity.min', capacity);\n this.props.formik.setFieldValue('capacity.max', capacity);\n this.props.formik.setFieldValue('capacity.desired', capacity);\n };\n\n private getArtifactInput = (): JSX.Element => {\n const { formik, stage, pipeline } = this.props;\n const manifest = formik.values.manifest;\n return (\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h margin-between-lg\">\n <div className=\"flex-grow\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest && manifest.artifactId}\n artifact={manifest && manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n excludedArtifactTypePatterns={this.excludedArtifactTypePatterns}\n renderLabel={(field: React.ReactNode) => {\n return <FormikConfigField label={'Artifact'}>{field}</FormikConfigField>;\n }}\n />\n </div>\n </div>\n </div>\n </div>\n );\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifactId: expectedArtifact.id });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.formik.setFieldValue('manifest', { artifact: artifact });\n };\n\n private getDirectInput = (): JSX.Element => {\n const m = this.props.formik.values.manifest.direct;\n return (\n <div>\n {\n <InstanceParameters\n diskQuotaFieldName={'manifest.direct.diskQuota'}\n instancesFieldName={'manifest.direct.instances'}\n memoryFieldName={'manifest.direct.memory'}\n />\n }\n {<Buildpacks fieldName=\"manifest.direct.buildpacks\" />}\n {\n <HealthCheck\n healthCheckHttpEndpointFieldName={'manifest.direct.healthCheckHttpEndpoint'}\n healthCheckType={m.healthCheckType}\n healthCheckTypeFieldName={'manifest.direct.healthCheckType'}\n />\n }\n {<Routes fieldName=\"manifest.direct.routes\" />}\n {<EnvironmentVariables fieldName=\"manifest.direct.environment\" />}\n {<Services fieldName=\"manifest.direct.services\" />}\n </div>\n );\n };\n\n public render(): JSX.Element {\n const manifest = this.props.formik.values.manifest;\n const direct = manifest && !!manifest.direct;\n return (\n <>\n <div className=\"form-group\">\n <div className=\"col-md-11\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <div className=\"sm-label-right\">Source Type</div>\n <div className=\"flex-grow\">\n <RadioButtonInput\n inline={true}\n value={direct ? 'direct' : 'artifact'}\n options={[\n { label: 'Artifact', value: 'artifact' },\n { label: 'Form', value: 'direct' },\n ]}\n onChange={(e: any) => this.manifestSourceUpdated(e.target.value)}\n />\n </div>\n </div>\n </div>\n </div>\n {direct ? this.getDirectInput() : this.getArtifactInput()}\n </>\n );\n }\n\n public validate(_props: ICloudFoundryServerGroupConfigurationSettingsProps) {\n const errors = {} as any;\n const isStorageSize = (value: string) => /\\d+[MG]/.test(value);\n\n if (!this.props.formik.values.manifest) {\n errors.manifest = 'No manifest information provided';\n return errors;\n }\n\n const direct = this.props.formik.values.manifest.direct;\n if (direct) {\n if (!isStorageSize(direct.memory)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.memory = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (!isStorageSize(direct.diskQuota)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.diskQuota = `Provide a size (e.g.: 256M, 1G)`;\n }\n if (direct.routes) {\n const routeErrors = direct.routes.map((route: string) => {\n const regex = /^([-\\w]+)\\.([-.\\w]+)(:\\d+)?([-/\\w]+)?$/gm;\n if (route && regex.exec(route) === null) {\n return `A route did not match the expected format \"host.some.domain[:9999][/some/path]\"`;\n }\n return null;\n });\n if (routeErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.routes = routeErrors;\n }\n }\n if (direct.environment) {\n const existingKeys: string[] = [];\n const envErrors = direct.environment.map((e: ICloudFoundryEnvVar) => {\n let myErrors: any;\n if (e.key) {\n const validKeyRegex = /^\\w+$/g;\n if (!validKeyRegex.exec(e.key)) {\n myErrors = {\n key: `This field must be alphanumeric`,\n };\n } else {\n if (existingKeys.filter((key) => key === e.key).length > 0) {\n myErrors = {\n key: `Duplicate variable name`,\n };\n } else {\n existingKeys.push(e.key);\n }\n }\n }\n return myErrors;\n });\n if (envErrors.some((val: string) => !!val)) {\n errors.manifest = errors.manifest || {};\n errors.manifest.environment = envErrors;\n }\n }\n } else {\n const { manifest } = this.props.formik.values;\n if (\n !manifest ||\n !((manifest.artifact && manifest.artifact.type && manifest.artifact.reference) || manifest.artifactId)\n ) {\n errors.manifest = 'Manifest artifact information is required';\n }\n }\n\n return errors;\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { Application, IModalComponentProps, IPipeline, IStage } from '@spinnaker/core';\nimport { noop, ReactInjector, ReactModal, TaskMonitor, WizardModal, WizardPage } from '@spinnaker/core';\n\nimport { ServerGroupTemplateSelection } from './ServerGroupTemplateSelection';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { CloudFoundryServerGroupArtifactSettings } from './sections/artifactSettings/ArtifactSettings.cf';\nimport { CloudFoundryServerGroupConstantArtifactSettings } from './sections/artifactSettings/ConstantArtifactSettings.cf';\nimport { CloudFoundryServerGroupBasicSettings } from './sections/basicSettings/BasicSettings.cf';\nimport { CloudFoundryServerGroupCloneSettings } from './sections/cloneSettings/CloneSettings.cf';\nimport { CloudFoundryServerGroupConfigurationSettings } from './sections/configurationSettings/ConfigurationSettings.cf';\nimport type { ICloudFoundryCreateServerGroupCommand } from '../serverGroupConfigurationModel.cf';\n\nimport './serverGroup.less';\n\nexport interface ICloudFoundryCreateServerGroupProps extends IModalComponentProps {\n application: Application;\n command: ICloudFoundryCreateServerGroupCommand;\n isSourceConstant?: boolean;\n serverGroup?: ICloudFoundryServerGroup;\n title: string;\n}\n\nexport interface ICloudFoundryCreateServerGroupState {\n pipeline: IPipeline;\n isClone: boolean;\n loading: boolean;\n requiresTemplateSelection: boolean;\n stage?: IStage;\n taskMonitor: TaskMonitor;\n}\n\nexport class CloudFoundryCreateServerGroupModal extends React.Component<\n ICloudFoundryCreateServerGroupProps,\n ICloudFoundryCreateServerGroupState\n> {\n public static defaultProps: Partial<ICloudFoundryCreateServerGroupProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n public static show(props: ICloudFoundryCreateServerGroupProps): Promise<ICloudFoundryCreateServerGroupCommand> {\n const modalProps = { dialogClassName: 'wizard-modal modal-lg' };\n return ReactModal.show(CloudFoundryCreateServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryCreateServerGroupProps) {\n super(props);\n const pipeline = get(props, 'command.viewState.pipeline', undefined);\n const stage = get(props, 'command.viewState.stage', undefined);\n const mode = get(props, 'command.viewState.mode', undefined);\n this.state = {\n pipeline: pipeline,\n isClone: !!props.isSourceConstant || mode === 'editClonePipeline',\n loading: false,\n requiresTemplateSelection: get(props, 'command.viewState.requiresTemplateSelection', false),\n stage,\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Creating your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: this.onTaskComplete,\n }),\n };\n }\n\n private templateSelected = () => {\n this.setState({ requiresTemplateSelection: false });\n this.initialize();\n };\n\n private initialize = () => {\n this.setState({ loading: false });\n };\n\n private onTaskComplete = () => {\n this.props.application.serverGroups.refresh();\n };\n\n private submit = (command: ICloudFoundryCreateServerGroupCommand): void => {\n command.selectedProvider = 'cloudfoundry';\n if (\n command.viewState.mode === 'createPipeline' ||\n command.viewState.mode === 'editPipeline' ||\n command.viewState.mode === 'editClonePipeline'\n ) {\n this.props.closeModal && this.props.closeModal(command);\n } else if (command.viewState.mode === 'clone') {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n } else {\n this.state.taskMonitor.submit(() =>\n ReactInjector.serverGroupWriter.cloneServerGroup(command, this.props.application),\n );\n }\n };\n\n public render(): React.ReactElement<CloudFoundryCreateServerGroupModal> {\n const { loading, pipeline, isClone, requiresTemplateSelection, stage, taskMonitor } = this.state;\n const { application, command, dismissModal, title, isSourceConstant } = this.props;\n\n if (requiresTemplateSelection) {\n return (\n <ServerGroupTemplateSelection\n app={application}\n command={command}\n onDismiss={dismissModal}\n onTemplateSelected={this.templateSelected}\n />\n );\n }\n\n return (\n <WizardModal<ICloudFoundryCreateServerGroupCommand>\n heading={title}\n initialValues={command}\n loading={loading}\n taskMonitor={taskMonitor}\n dismissModal={dismissModal}\n closeModal={this.submit}\n submitButtonLabel={command.viewState.submitButtonLabel}\n render={({ formik, nextIdx, wizard }) => (\n <>\n <WizardPage\n label=\"Basic Settings\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => <CloudFoundryServerGroupBasicSettings ref={innerRef} formik={formik} />}\n />\n\n {isClone && isSourceConstant && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConstantArtifactSettings\n ref={innerRef}\n formik={formik}\n source={command.source}\n />\n )}\n />\n )}\n\n {isClone && !isSourceConstant && (\n <WizardPage\n label=\"Source\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupCloneSettings application={application} ref={innerRef} formik={formik} />\n )}\n />\n )}\n\n {!isClone && (\n <WizardPage\n label=\"Application\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupArtifactSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n )}\n\n <WizardPage\n label=\"Manifest\"\n wizard={wizard}\n order={nextIdx()}\n render={({ innerRef }) => (\n <CloudFoundryServerGroupConfigurationSettings\n ref={innerRef}\n formik={formik}\n pipeline={pipeline}\n stage={stage}\n />\n )}\n />\n </>\n )}\n />\n );\n }\n}\n","import React from 'react';\n\nimport type { IStageConfigProps } from '@spinnaker/core';\nimport { StageConstants } from '@spinnaker/core';\nimport { CloudFoundryServerGroupCommandBuilder } from '../../../serverGroup/configure';\nimport { CloudFoundryCreateServerGroupModal } from '../../../serverGroup/configure/wizard/CreateServerGroupModal';\n\nexport interface ICloudFoundryCloneServerGroupStageConfigState {\n buttonText: string;\n}\n\nexport class CloudFoundryCloneServerGroupStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCloneServerGroupStageConfigState\n> {\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n application: props.application.name,\n });\n this.state = {\n buttonText: props.stage.destination ? 'Edit clone configuration' : 'Add clone configuration',\n };\n }\n\n private handleResult = (command: any) => {\n this.props.updateStageField({\n credentials: command.credentials,\n capacity: command.capacity,\n account: command.account,\n delayBeforeDisableSec: command.delayBeforeDisableSec,\n freeFormDetails: command.freeFormDetails,\n maxRemainingAsgs: command.maxRemainingAsgs,\n region: command.region,\n startApplication: command.startApplication,\n stack: command.stack,\n strategy: command.strategy,\n target: command.target,\n targetCluster: command.targetCluster,\n manifest: command.manifest,\n source: command.source,\n });\n this.setState({ buttonText: 'Edit clone configuration' });\n };\n\n private addCluster = () => {\n const { application, stage, pipeline } = this.props;\n const title = 'Clone Cluster';\n const command = CloudFoundryServerGroupCommandBuilder.buildCloneServerGroupCommandFromPipeline(stage, pipeline);\n CloudFoundryCreateServerGroupModal.show({\n application,\n command,\n isSourceConstant: false,\n title,\n })\n .then(this.handleResult)\n .catch(() => {});\n };\n\n public render() {\n const { stage } = this.props;\n const { buttonText } = this.state;\n const cloneTargets = StageConstants.TARGET_LIST;\n return (\n <div className=\"form-horizontal\">\n <div>\n <h4>Clone Source</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n <th>Cluster</th>\n <th>Target</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.source ? stage.source.account : ''}</td>\n <td>{stage.source ? stage.source.region : ''}</td>\n <td>{stage.source ? stage.source.clusterName : ''}</td>\n <td>\n {stage.source ? cloneTargets.filter((t) => t.val === stage.source.target).map((t) => t.label) : ''}\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n <div>\n <h4>Clone Destination</h4>\n <table className=\"table table-condensed table-deployStage\">\n <thead>\n <tr>\n <th>Account</th>\n <th>Region</th>\n </tr>\n </thead>\n <tbody>\n <tr>\n <td>{stage.credentials}</td>\n <td>{stage.region}</td>\n </tr>\n </tbody>\n </table>\n </div>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addCluster()}>\n <span className=\"glyphicon glyphicon-plus-sign\" /> {buttonText}\n </button>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCloneServerGroupStageConfig } from './CloudFoundryCloneServerGroupStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCloneServerGroupStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'cloneServerGroup',\n provides: 'cloneServerGroup',\n validators: [],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IArtifact, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n excludeAllTypesExcept,\n NgReact,\n StageArtifactSelectorDelegate,\n StageConfigField,\n StageConstants,\n TextInput,\n} from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryCreateServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryCreateServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryCreateServiceBindingsStageConfigState\n> {\n private static readonly excludedArtifactTypes = excludeAllTypesExcept(\n ArtifactTypePatterns.BITBUCKET_FILE,\n ArtifactTypePatterns.CUSTOM_OBJECT,\n ArtifactTypePatterns.EMBEDDED_BASE64,\n ArtifactTypePatterns.GCS_OBJECT,\n ArtifactTypePatterns.GITHUB_FILE,\n ArtifactTypePatterns.GITLAB_FILE,\n ArtifactTypePatterns.S3_OBJECT,\n ArtifactTypePatterns.HTTP_FILE,\n ArtifactTypePatterns.ORACLE_OBJECT,\n );\n\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceBindingRequests && stage.serviceBindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceBindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private onTemplateArtifactEdited = (artifact: IArtifact, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, null);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, artifact);\n };\n\n private onTemplateArtifactSelected = (id: string, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].id`, id);\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].artifact`, null);\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [\n ...stage.serviceBindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceBindingRequests = [...stage.serviceBindingRequests];\n newServiceBindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceBindingRequests', newServiceBindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private restageRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restageRequired', event.target.checked);\n this.props.formik.setFieldValue('restartRequired', !event.target.checked);\n };\n\n private restartRequiredUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('restartRequired', event.target.checked);\n this.props.formik.setFieldValue('restageRequired', !event.target.checked);\n };\n\n private updatableBindingUpdated = (event: React.ChangeEvent<HTMLInputElement>, index: number) => {\n this.props.formik.setFieldValue(`serviceBindingRequests[${index}].updatable`, event.target.checked);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restage Required\">\n <input type=\"checkbox\" checked={stage.restageRequired} onChange={this.restageRequiredUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Restart Required\">\n <input type=\"checkbox\" checked={stage.restartRequired} onChange={this.restartRequiredUpdated} />\n </StageConfigField>\n <h4>Service Bindings</h4>\n {stage.serviceBindingRequests && stage.serviceBindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceBindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceBindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n <StageArtifactSelectorDelegate\n artifact={a.artifact}\n excludedArtifactTypePatterns={\n CloudFoundryCreateServiceBindingsStageConfigForm.excludedArtifactTypes\n }\n expectedArtifactId={a.id}\n label=\"Service Binding Parameters\"\n onArtifactEdited={(artifact) => {\n this.onTemplateArtifactEdited(artifact, index);\n }}\n onExpectedArtifactSelected={(artifact) => this.onTemplateArtifactSelected(artifact.id, index)}\n pipeline={this.props.pipeline}\n stage={stage}\n />\n <StageConfigField label=\"Updatable Binding\">\n <input\n type=\"checkbox\"\n checked={a.updatable}\n onChange={(event) => this.updatableBindingUpdated(event, index)}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Binding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceBindingsStageConfigForm } from './CloudFoundryCreateServiceBindingsStageConfigForm';\n\nexport interface ServiceBindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryCreateServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceBindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryCreateServiceBindingsStage}\n render={(props) => <CloudFoundryCreateServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryCreateServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceBindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceBindingRequests: ServiceBindingRequests[]) => {\n if (validateServiceBindingRequests(serviceBindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceBindingRequests(serviceBindingRequests: ServiceBindingRequests[]): boolean {\n if (serviceBindingRequests?.length < 1) {\n return false;\n }\n return serviceBindingRequests.every((req) => req?.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryCreateServiceBindingsConfig,\n validateCloudFoundryCreateServiceBindingsStage,\n} from './CloudFoundryCreateServiceBindingsConfig';\n\nexport const CF_CREATE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryCreateServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Create Service Bindings',\n description: 'Create CF service bindings with optional parameters.',\n key: CF_CREATE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryCreateServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryCreateServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryCreateServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryCreateServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryCreateServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryCreateServiceKeyStageConfig } from './CloudFoundryCreateServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryCreateServiceKeyStageConfig,\n description: 'Create a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'createServiceKey',\n label: 'Create Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\n\nimport { AccountRegionClusterSelector } from '../../../presentation/widgets/accountRegionClusterSelector';\n\ninterface ICloudFoundryDeleteServiceBindingsStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDeleteServiceBindingsStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDeleteServiceBindingsStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n if (stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length === 0) {\n this.props.formik.setFieldValue('serviceUnbindingRequests', [\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ]);\n }\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private addInputArtifact = () => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [\n ...stage.serviceUnbindingRequests,\n {\n serviceInstanceName: '',\n updatable: false,\n },\n ];\n\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private removeInputArtifact = (index: number) => {\n const stage = this.props.formik.values;\n const newServiceUnbindingRequests = [...stage.serviceUnbindingRequests];\n newServiceUnbindingRequests.splice(index, 1);\n this.props.formik.setFieldValue('serviceUnbindingRequests', newServiceUnbindingRequests);\n };\n\n private targetUpdated = (target: string) => {\n this.props.formik.setFieldValue('target', target);\n };\n\n private accountRegionClusterUpdated = (stage: any): void => {\n this.props.formik.setFieldValue(`cluster`, stage.cluster);\n this.props.formik.setFieldValue(`credentials`, stage.credentials);\n this.props.formik.setFieldValue(`region`, stage.region);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, application } = this.state;\n const { target } = stage;\n const { TargetSelect } = NgReact;\n\n return (\n <>\n <h4>Basic Settings</h4>\n <div className=\"form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n isSingleRegion={true}\n onComponentUpdate={this.accountRegionClusterUpdated}\n component={stage}\n />\n </div>\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <h4>Service Unbindings</h4>\n {stage.serviceUnbindingRequests && stage.serviceUnbindingRequests.length > 0 && (\n <div className=\"row form-group\">\n {stage.serviceUnbindingRequests.map((a: any, index: number) => {\n return (\n <div key={index}>\n <div className=\"col-md-offset-1 col-md-8\">\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n onChange={(e: React.ChangeEvent<any>) => {\n this.props.formik.setFieldValue(\n `serviceUnbindingRequests[${index}].serviceInstanceName`,\n e.target.value,\n );\n }}\n value={a.serviceInstanceName}\n />\n </StageConfigField>\n </div>\n <div className=\"col-md-1\">\n <div className=\"form-control-static\">\n <button onClick={() => this.removeInputArtifact(index)}>\n <span className=\"glyphicon glyphicon-trash\" />\n <span className=\"sr-only\">Remove field</span>\n </button>\n </div>\n </div>\n </div>\n );\n })}\n </div>\n )}\n <StageConfigField fieldColumns={8} label={''}>\n <button className=\"btn btn-block btn-sm add-new\" onClick={() => this.addInputArtifact()}>\n <span className=\"glyphicon glyphicon-plus-sign\" />\n Add Service Unbinding\n </button>\n </StageConfigField>\n </>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceBindingsStageConfigForm } from './CloudFoundryDeleteServiceBindingsStageConfigForm';\n\ninterface ServiceUnbindingRequests {\n serviceInstanceName: String;\n}\n\nexport function CloudFoundryDeleteServiceBindingsConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n serviceUnbindingRequests: [],\n restageRequired: true,\n restartRequired: false,\n credentials: '',\n region: '',\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDeleteServiceBindingsStage}\n render={(props) => <CloudFoundryDeleteServiceBindingsStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDeleteServiceBindingsStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('cluster', 'Cluster').required();\n formValidator.field('target', 'Target').required();\n\n formValidator\n .field('serviceUnbindingRequests', 'Service Binding Requests')\n .required()\n .withValidators((serviceUnbindingRequests: ServiceUnbindingRequests[]) => {\n if (validateServiceUnbindingRequests(serviceUnbindingRequests)) {\n return undefined;\n }\n return 'There should be at least one service binding request. At a minimum, each request must have a service instance name.';\n });\n\n return formValidator.validateForm();\n}\n\nexport function validateServiceUnbindingRequests(serviceUnbindingRequests: ServiceUnbindingRequests[]): boolean {\n if (serviceUnbindingRequests?.length < 1) {\n return false;\n }\n return serviceUnbindingRequests.every((req) => req.serviceInstanceName);\n}\n","import { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDeleteServiceBindingsConfig,\n validateCloudFoundryDeleteServiceBindingsStage,\n} from './CloudFoundryDeleteServiceBindingsConfig';\n\nexport const CF_DELETE_SERVICE_BINDINGS_STAGE_KEY = 'cloudFoundryDeleteServiceBindings';\n\nRegistry.pipeline.registerStage({\n label: 'Delete Service Bindings',\n description: 'Delete CF service bindings with optional parameters.',\n key: CF_DELETE_SERVICE_BINDINGS_STAGE_KEY,\n component: CloudFoundryDeleteServiceBindingsConfig,\n producesArtifacts: false,\n cloudProvider: 'cloudfoundry',\n executionDetailsSections: [ExecutionDetailsTasks],\n validateFn: validateCloudFoundryDeleteServiceBindingsStage,\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryDeleteServiceKeyStageConfigState {\n accounts: string[];\n regions: string[];\n}\n\nexport class CloudFoundryDeleteServiceKeyStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeleteServiceKeyStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts.map((it) => it.name) }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private serviceKeyNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceKeyName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n });\n this.clearAndReloadRegions();\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.props.updateStageField({\n region,\n });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, serviceKeyName } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Key Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceKeyNameUpdated}\n value={serviceKeyName}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeleteServiceKeyStageConfig } from './CloudFoundryDeleteServiceKeyStageConfig';\nimport { CloudFoundryServiceKeyExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeleteServiceKeyStageConfig,\n description: 'Delete a service key',\n executionDetailsSections: [CloudFoundryServiceKeyExecutionDetails, ExecutionDetailsTasks],\n key: 'deleteServiceKey',\n label: 'Delete Service Key',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n { type: 'requiredField', fieldName: 'serviceKeyName', preventSave: true },\n ],\n});\n","import { includes } from 'lodash';\nimport React from 'react';\n\ninterface IServiceTagsInputProps {\n tags: string[];\n onChange: (e: string[]) => void;\n}\n\ninterface IServiceTagsInputState {\n newTag: string;\n tags: string[];\n}\n\nexport class ServiceTagsInput extends React.Component<IServiceTagsInputProps, IServiceTagsInputState> {\n constructor(props: IServiceTagsInputProps) {\n super(props);\n this.state = {\n newTag: '',\n tags: this.props.tags || [],\n };\n }\n\n private newTagUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.setState({ newTag: event.target.value });\n };\n\n private addTag = (): void => {\n const { onChange, tags } = this.props;\n const { newTag } = this.state;\n const currentTags = tags || [];\n\n if (!includes(currentTags, newTag.trim())) {\n const newTags = [...currentTags, newTag.trim()].sort((a, b) => a.localeCompare(b));\n this.setState({\n tags: newTags,\n newTag: '',\n });\n onChange(newTags);\n }\n };\n\n private deleteTag = (index: number): void => {\n const { onChange, tags } = this.props;\n const newTags = tags.slice();\n newTags.splice(index, 1);\n this.setState({ tags: newTags });\n onChange(newTags);\n };\n\n public render() {\n const { tags, newTag } = this.state;\n return (\n <>\n <div className=\"row\">\n <div className=\"col-md-4\">\n <input type=\"text\" className=\"form-control\" name=\"newTag\" onChange={this.newTagUpdated} value={newTag} />\n </div>\n <div className=\"col-md-2\">\n <button disabled={!newTag.trim()} className=\"btn btn-default btn-sm btn-add-tag\" onClick={this.addTag}>\n Add Tag\n </button>\n </div>\n </div>\n <div>\n <div>\n {tags &&\n tags.map((tag: any, index: number) => {\n return (\n <span className=\"badge badge-pill\" key={index}>\n &nbsp;\n {tag}\n &nbsp;\n <button\n type=\"button\"\n className=\"close small\"\n aria-label=\"Close\"\n onClick={() => this.deleteTag(index)}\n >\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </span>\n );\n })}\n </div>\n </div>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IService, IServicePlan } from '@spinnaker/core';\nimport { ReactSelectInput, ServicesReader, StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type { ICloudFoundryServiceManifestDirectSource } from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceDirectInputProps {\n credentials: string;\n region: string;\n service: ICloudFoundryServiceManifestDirectSource;\n onServiceChanged: (_: ICloudFoundryServiceManifestDirectSource) => void;\n}\n\ninterface ICreateServiceInstanceDirectInputState {\n serviceNamesAndPlans: IService[];\n}\n\nexport class CreateServiceInstanceDirectInput extends React.Component<\n ICreateServiceInstanceDirectInputProps,\n ICreateServiceInstanceDirectInputState\n> {\n private destroy$ = new Subject();\n constructor(props: ICreateServiceInstanceDirectInputProps) {\n super(props);\n this.state = { serviceNamesAndPlans: [] };\n }\n\n public componentDidUpdate(prevProps: Readonly<ICreateServiceInstanceDirectInputProps>) {\n const { credentials, region } = this.props;\n if ((credentials && credentials !== prevProps.credentials) || region !== prevProps.region) {\n this.loadServices(credentials, region);\n }\n }\n\n public componentDidMount(): void {\n this.loadServices(this.props.credentials, this.props.region);\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadServices(credentials: string, region: string) {\n if (credentials && region) {\n observableFrom(ServicesReader.getServices(credentials, region))\n .pipe(takeUntil(this.destroy$))\n .subscribe((serviceNamesAndPlans) => this.setState({ serviceNamesAndPlans }));\n }\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private serviceUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n service: option.target.value,\n servicePlan: '',\n });\n };\n\n private servicePlanUpdated = (option: Option<string>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n servicePlan: option.target.value,\n });\n };\n\n private parametersUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n parameters: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n const services = this.state.serviceNamesAndPlans.map((item) => item.name);\n const serviceWithPlans = this.state.serviceNamesAndPlans.find((it) => it.name === service.service);\n const servicePlans = serviceWithPlans ? serviceWithPlans.servicePlans.map((it: IServicePlan) => it.name) : [];\n return (\n <div>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Service\">\n <ReactSelectInput\n clearable={false}\n onChange={this.serviceUpdated}\n value={service.service}\n stringOptions={services}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Plan\">\n <ReactSelectInput\n clearable={false}\n onChange={this.servicePlanUpdated}\n value={service.servicePlan}\n stringOptions={servicePlans}\n />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Parameters\">\n <TextAreaInput className=\"form-control\" onChange={this.parametersUpdated} value={service.parameters || ''} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import React from 'react';\n\nimport { StageConfigField, TextAreaInput, TextInput } from '@spinnaker/core';\n\nimport type {\n ICloudFoundryServiceManifestSource,\n ICloudFoundryServiceUserProvidedSource,\n} from './ICloudFoundryServiceManifestSource';\nimport { ServiceTagsInput } from './ServiceTagsInput';\n\ninterface ICreateServiceInstanceUserProvidedInputProps {\n onChange: (serviceInput: ICloudFoundryServiceManifestSource) => void;\n service: ICloudFoundryServiceUserProvidedSource;\n onServiceChanged: (_: ICloudFoundryServiceUserProvidedSource) => void;\n}\n\nexport class CreateUserProvidedInput extends React.Component<ICreateServiceInstanceUserProvidedInputProps> {\n constructor(props: ICreateServiceInstanceUserProvidedInputProps) {\n super(props);\n }\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n serviceInstanceName: event.target.value,\n });\n };\n\n private syslogDrainUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n syslogDrainUrl: event.target.value,\n });\n };\n\n private routeServiceUrlUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n routeServiceUrl: event.target.value,\n });\n };\n\n private credentialsUpdated = (event: React.ChangeEvent<HTMLTextAreaElement>): void => {\n this.props.onServiceChanged({\n ...this.props.service,\n credentials: event.target.value,\n });\n };\n\n private tagsUpdated = (tags: string[]) => {\n this.props.onServiceChanged({\n ...this.props.service,\n tags: tags,\n });\n };\n\n private updatableUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n updatable: event.target.checked,\n versioned: false,\n });\n };\n\n private versionedUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.onServiceChanged({\n ...this.props.service,\n versioned: event.target.checked,\n updatable: false,\n });\n };\n\n public render() {\n const { service } = this.props;\n return (\n <>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={service.serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Syslog Drain URL\">\n <TextInput onChange={this.syslogDrainUrlUpdated} value={service.syslogDrainUrl} />\n </StageConfigField>\n <StageConfigField label=\"Route Service URL\">\n <TextInput onChange={this.routeServiceUrlUpdated} value={service.routeServiceUrl} />\n </StageConfigField>\n <StageConfigField label=\"Credentials\">\n <TextAreaInput onChange={this.credentialsUpdated} value={service.credentials} />\n </StageConfigField>\n <StageConfigField label=\"Tags\">\n <ServiceTagsInput tags={service.tags || []} onChange={this.tagsUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Updatable\" helpKey={'pipeline.config.cf.createservice.updatable'}>\n <input\n type=\"checkbox\"\n disabled={!!service.versioned}\n checked={!!service.updatable}\n onChange={this.updatableUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Versioned\" helpKey={'pipeline.config.cf.createservice.versioned'}>\n <input\n type=\"checkbox\"\n disabled={!!service.updatable}\n checked={!!service.versioned}\n onChange={this.versionedUpdated}\n />\n </StageConfigField>\n </>\n );\n }\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IArtifact, IExpectedArtifact, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport {\n AccountService,\n ArtifactTypePatterns,\n ReactSelectInput,\n StageArtifactSelector,\n StageConfigField,\n} from '@spinnaker/core';\n\nimport { CreateServiceInstanceDirectInput } from './CreateServiceInstanceDirectInput';\nimport { CreateUserProvidedInput } from './CreateUserProvidedInput';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\n\nimport './cloudfoundryDeployServiceStage.less';\n\ninterface ICloudFoundryDeployServiceStageConfigState {\n regions: IRegion[];\n accounts: IAccount[];\n}\n\nexport class CloudFoundryDeployServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryDeployServiceStageConfigState\n> {\n private defaultDirectManifest = {\n direct: {\n parameters: '',\n service: '',\n serviceInstanceName: '',\n servicePlan: '',\n updatable: false,\n versioned: false,\n },\n };\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n this.props.updateStageField({ cloudProvider: 'cloudfoundry' });\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n private accountUpdated = (option: Option<string>): void => {\n const credentials = option.target.value;\n const updates: any = { credentials: credentials, region: '' };\n if (!this.props.stage.manifest || this.props.stage.manifest.direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n this.reloadRegions();\n };\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.reloadRegions();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private reloadRegions = () => {\n const { credentials } = this.props.stage;\n if (credentials) {\n observableFrom(AccountService.getRegionsForAccount(credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regions) => this.setState({ regions }));\n }\n };\n\n private manifestSourceUpdated = (source: string): void => {\n switch (source) {\n case 'direct':\n this.props.updateStageField({ manifest: this.defaultDirectManifest });\n break;\n case 'artifact':\n this.props.updateStageField({ manifest: {} });\n break;\n }\n };\n\n private onExpectedArtifactSelected = (expectedArtifact: IExpectedArtifact): void => {\n this.props.updateStageField({ manifest: { artifactId: expectedArtifact.id } });\n };\n\n private onArtifactChanged = (artifact: IArtifact): void => {\n this.props.updateStageField({ manifest: { artifact } });\n };\n\n private regionUpdated = (option: Option<string>): void => {\n const updates: any = { region: option.target.value };\n const direct = this.props.stage.manifest.direct;\n if (direct) {\n updates.manifest = this.defaultDirectManifest;\n }\n this.props.updateStageField(updates);\n };\n\n private serviceManifestSourceUpdated = (manifest: ICloudFoundryServiceManifestSource) => {\n this.props.updateStageField({ manifest });\n };\n\n private userProvidedUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ userProvided: event.target.checked });\n };\n\n public render() {\n const { pipeline, stage } = this.props;\n const { credentials, region, userProvided, manifest } = this.props.stage;\n const { accounts, regions } = this.state;\n const directInput = !manifest || !!manifest.direct;\n let manifestInput;\n\n if (directInput) {\n const directManifest = (manifest && manifest.direct) || this.defaultDirectManifest;\n manifestInput = userProvided ? (\n <CreateUserProvidedInput\n onChange={this.serviceManifestSourceUpdated}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n ) : (\n <CreateServiceInstanceDirectInput\n credentials={credentials}\n region={region}\n service={directManifest}\n onServiceChanged={(direct) => this.serviceManifestSourceUpdated({ direct })}\n />\n );\n } else {\n manifestInput = (\n <StageConfigField label=\"Artifact\">\n <StageArtifactSelector\n pipeline={pipeline}\n stage={stage}\n expectedArtifactId={manifest.artifactId}\n excludedArtifactTypePatterns={[\n ArtifactTypePatterns.KUBERNETES,\n ArtifactTypePatterns.FRONT50_PIPELINE_TEMPLATE,\n ArtifactTypePatterns.DOCKER_IMAGE,\n ]}\n artifact={manifest.artifact}\n onExpectedArtifactSelected={this.onExpectedArtifactSelected}\n onArtifactEdited={this.onArtifactChanged}\n />\n </StageConfigField>\n );\n }\n\n return (\n <div className=\"form-horizontal cloudfoundry-deploy-service-stage\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput\n clearable={false}\n onChange={this.regionUpdated}\n value={region}\n stringOptions={regions.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"User-provided\">\n <input type=\"checkbox\" checked={!!userProvided} onChange={this.userProvidedUpdated} />\n </StageConfigField>\n <StageConfigField label=\"Configuration Source\">\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={!directInput} onChange={() => this.manifestSourceUpdated('artifact')} />{' '}\n Manifest\n </label>\n </div>\n <div className=\"radio radio-inline\">\n <label>\n <input type=\"radio\" checked={directInput} onChange={() => this.manifestSourceUpdated('direct')} /> Form\n </label>\n </div>\n </StageConfigField>\n {manifestInput}\n </div>\n );\n }\n}\n","import { safeLoad } from 'js-yaml';\nimport { get, upperFirst } from 'lodash';\n\nimport type { IPipeline, IStage, IStageOrTriggerValidator, ITrigger, IValidatorConfig } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, PipelineConfigValidator, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryDeployServiceStageConfig } from './CloudFoundryDeployServiceStageConfig';\nimport type { ICloudFoundryServiceManifestSource } from './ICloudFoundryServiceManifestSource';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\ninterface IServiceFieldValidatorConfig extends IValidatorConfig {\n manifestSource: string;\n}\n\nconst sourceType = (manifest: ICloudFoundryServiceManifestSource, userProvided: boolean) => {\n if (manifest && manifest.direct) {\n return userProvided ? 'userProvided' : 'direct';\n } else {\n return 'artifact';\n }\n};\n\nconst sourceStruct = (manifest: ICloudFoundryServiceManifestSource) => {\n return manifest && manifest.direct ? 'direct' : 'artifact';\n};\n\nPipelineConfigValidator.registerValidator(\n 'requiredDeployServiceField',\n new (class implements IStageOrTriggerValidator {\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const serviceInput: ICloudFoundryServiceManifestSource = get(stage, 'manifest');\n if (sourceType(serviceInput, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(serviceInput, sourceStruct(serviceInput));\n const content: any = get(manifestSource, validationConfig.fieldName);\n const fieldLabel = validationConfig.fieldLabel || upperFirst(validationConfig.fieldName);\n return content ? null : `<strong>${fieldLabel}</strong> is a required field for the Deploy Service stage.`;\n }\n })(),\n);\n\nPipelineConfigValidator.registerValidator(\n 'validDeployServiceParameterJsonOrYaml',\n new (class implements IStageOrTriggerValidator {\n private isJson(value: string): boolean {\n try {\n JSON.parse(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n private isYaml(value: string): boolean {\n try {\n safeLoad(value);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n public validate(\n _pipeline: IPipeline,\n stage: IStage | ITrigger,\n validationConfig: IServiceFieldValidatorConfig,\n ): string {\n const manifest: any = get(stage, 'manifest');\n if (sourceType(manifest, get(stage, 'userProvided')) !== validationConfig.manifestSource) {\n return null;\n }\n const manifestSource: any = get(manifest, sourceStruct(manifest));\n const fieldContent: any = get(manifestSource, validationConfig.fieldName);\n\n if (fieldContent) {\n if (!this.isJson(fieldContent) && !this.isYaml(fieldContent)) {\n const fieldLabel = upperFirst(validationConfig.fieldLabel || validationConfig.fieldName);\n return validationConfig.message || `<strong>${fieldLabel}</strong> should be a valid JSON or YAML string.`;\n }\n }\n return null;\n }\n })(),\n);\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDeployServiceStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n supportsCustomTimeout: true,\n description: 'Deploys services using Open Service Broker and deploys user-provided services',\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'deployService',\n label: 'Deploy Service',\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'service',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'direct',\n fieldName: 'servicePlan',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'artifactAccount',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'artifact',\n fieldName: 'reference',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'requiredDeployServiceField',\n manifestSource: 'userProvided',\n fieldName: 'serviceInstanceName',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'direct',\n fieldName: 'parameters',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n {\n type: 'validDeployServiceParameterJsonOrYaml',\n manifestSource: 'userProvided',\n fieldName: 'credentials',\n preventSave: true,\n } as IServiceFieldValidatorConfig,\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'destroyServerGroup',\n provides: 'destroyServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to destroy a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { Application, IAccount, IFormikStageConfigInjectedProps, IRegion } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\n\nexport interface ICloudFoundryDestroyServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n application: Application;\n}\n\nexport class CloudFoundryDestroyServiceStageConfigForm extends React.Component<\n IFormikStageConfigInjectedProps,\n ICloudFoundryDestroyServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IFormikStageConfigInjectedProps, context: any) {\n super(props, context);\n this.props.formik.setFieldValue('cloudProvider', 'cloudfoundry');\n this.state = {\n accounts: [],\n regions: [],\n application: props.application,\n };\n }\n\n public componentDidMount() {\n const stage = this.props.formik.values;\n this.props.formik.setFieldValue('application', this.state.application.name);\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((rawAccounts: IAccount[]) => this.setState({ accounts: rawAccounts }));\n if (stage.credentials) {\n this.loadRegions(stage.credentials);\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private loadRegions = (creds: string) => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(creds))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions: regions });\n });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const creds = option.value;\n this.props.formik.setFieldValue('credentials', creds);\n this.props.formik.setFieldValue('region', '');\n if (creds) {\n this.loadRegions(creds);\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n this.props.formik.setFieldValue('region', option.value);\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('serviceInstanceName', event.target.value);\n };\n\n private removeBindingsUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.formik.setFieldValue('removeBindings', event.target.checked);\n };\n\n public render() {\n const stage = this.props.formik.values;\n const { accounts, regions } = this.state;\n const { credentials, region, serviceInstanceName } = stage;\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <Select\n options={\n accounts &&\n accounts.map((acc: IAccount) => ({\n label: acc.name,\n value: acc.name,\n }))\n }\n clearable={false}\n value={credentials}\n onChange={this.accountUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n clearable={false}\n value={region}\n onChange={this.regionUpdated}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <input\n type=\"text\"\n className=\"form-control\"\n required={true}\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Remove Bindings\">\n <input type=\"checkbox\" checked={stage.removeBindings} onChange={this.removeBindingsUpdated} />\n {stage.removeBindings && (\n <div>\n Warning: Prior to destroying, this will attempt to unbind any server groups that are bound to this\n service. This stage will fail if any server groups don't belong to the spinnaker application.\n </div>\n )}\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { FormikErrors } from 'formik';\nimport { cloneDeep } from 'lodash';\nimport React from 'react';\n\nimport type { IStage, IStageConfigProps } from '@spinnaker/core';\nimport { FormikStageConfig, FormValidator } from '@spinnaker/core';\n\nimport { CloudFoundryDestroyServiceStageConfigForm } from './CloudFoundryDestroyServiceStageConfigForm';\n\nexport function CloudFoundryDestroyServiceStageConfig({\n application,\n pipeline,\n stage,\n updateStage,\n}: IStageConfigProps) {\n const stageWithDefaults = React.useMemo(() => {\n return {\n credentials: '',\n serviceInstanceName: '',\n removeBindings: false,\n ...cloneDeep(stage),\n };\n }, []);\n\n return (\n <FormikStageConfig\n application={application}\n onChange={updateStage}\n pipeline={pipeline}\n stage={stageWithDefaults}\n validate={validateCloudFoundryDestroyServiceStage}\n render={(props) => <CloudFoundryDestroyServiceStageConfigForm {...props} />}\n />\n );\n}\n\nexport function validateCloudFoundryDestroyServiceStage(stage: IStage): FormikErrors<IStage> {\n const formValidator = new FormValidator(stage);\n\n formValidator.field('credentials', 'Account').required();\n formValidator.field('region', 'Region').required();\n formValidator.field('serviceInstanceName', 'Service Instance Name').required();\n formValidator.field('application', 'Application').required();\n\n return formValidator.validateForm();\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport {\n CloudFoundryDestroyServiceStageConfig,\n validateCloudFoundryDestroyServiceStage,\n} from './CloudFoundryDestroyServiceStageConfig';\nimport { CloudFoundryServiceExecutionDetails } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryDestroyServiceStageConfig,\n supportsCustomTimeout: true,\n executionDetailsSections: [CloudFoundryServiceExecutionDetails, ExecutionDetailsTasks],\n key: 'destroyService',\n provides: 'destroyService',\n validateFn: validateCloudFoundryDestroyServiceStage,\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'disableServerGroup',\n provides: 'disableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\nimport { CloudFoundryAsgStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'enableServerGroup',\n provides: 'enableServerGroup',\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Map a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'mapLoadBalancers',\n label: 'Map Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, StageConfigField, StageConstants } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryResizeAsgStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryResizeAsgStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryResizeAsgStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n const { stage } = props;\n let interestingHealthProviderNames;\n if (\n stage.isNew &&\n props.application.attributes.platformHealthOnlyShowOverride &&\n props.application.attributes.platformHealthOnly\n ) {\n interestingHealthProviderNames = ['Cloud Foundry'];\n }\n const { capacity } = stage;\n this.props.updateStageField({\n action: 'scale_exact',\n capacity: capacity && capacity.desired ? capacity : { desired: 1, min: 1, max: 1 },\n cloudProvider: 'cloudfoundry',\n diskQuota: stage.diskQuota || 1024,\n interestingHealthProviderNames: interestingHealthProviderNames,\n memory: stage.memory || 1024,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private instanceCountUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const instanceCount = parseInt(event.target.value, 10);\n this.props.updateStageField({\n capacity: {\n desired: instanceCount,\n min: instanceCount,\n max: instanceCount,\n },\n });\n };\n\n private memoryUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ memory: parseInt(event.target.value, 10) });\n };\n\n private diskQuotaUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n this.props.updateStageField({ diskQuota: parseInt(event.target.value, 10) });\n };\n\n private targetUpdated = (target: string) => {\n this.props.updateStageField({ target });\n };\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { accounts } = this.state;\n const { application, pipeline, stage } = this.props;\n const { capacity, diskQuota, memory, target } = stage;\n const instanceCount = capacity.desired;\n const { TargetSelect } = NgReact;\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n />\n )}\n <StageConfigField label=\"Target\">\n <TargetSelect model={{ target }} options={StageConstants.TARGET_LIST} onChange={this.targetUpdated} />\n </StageConfigField>\n <div className=\"form-group\">\n <span className=\"col-md-3 sm-label-right\" />\n <div className=\"col-md-9\">\n <div className=\"col-md-3 sm-label-left\">Instances</div>\n <div className=\"col-md-3 sm-label-left\">Mem (MB)</div>\n <div className=\"col-md-3 sm-label-left\">Disk (MB)</div>\n </div>\n <StageConfigField label=\"Match capacity\">\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"instanceCount\"\n onChange={this.instanceCountUpdated}\n value={instanceCount}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"memory\"\n onChange={this.memoryUpdated}\n value={memory}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-3\">\n <input\n type=\"number\"\n key=\"diskQuota\"\n onChange={this.diskQuotaUpdated}\n value={diskQuota}\n className=\"form-control input-sm\"\n />\n </div>\n <div className=\"col-md-9 col-md-offset-3\">\n <em className=\"subinput-note\">Scaled capacity will match the numbers entered</em>\n </div>\n </StageConfigField>\n </div>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryResizeAsgStageConfig } from './CloudFoundryResizeAsgStageConfig';\nimport type { IInstanceFieldSizeValidationConfig } from '../../config/validation/instanceSize.validator';\n\nconst diskValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'diskQuota',\n fieldLabel: 'Disk Mb',\n min: 256,\n preventSave: true,\n};\n\nconst instanceCountValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'capacity.desired',\n fieldLabel: 'Instances',\n min: 0,\n preventSave: true,\n};\n\nconst memoryValidator: IInstanceFieldSizeValidationConfig = {\n type: 'cfInstanceSizeField',\n fieldName: 'memory',\n fieldLabel: 'Mem Mb',\n min: 256,\n preventSave: true,\n};\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryResizeAsgStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n key: 'resizeServerGroup',\n provides: 'resizeServerGroup',\n validators: [\n {\n type: 'cfTargetImpedance',\n message:\n 'This pipeline will attempt to resize a server group without deploying a new version into the same cluster.',\n },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n instanceCountValidator,\n memoryValidator,\n diskValidator,\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IPipeline, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, StageConfigField } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRollbackClusterStageProps extends IStageConfigProps {\n pipeline: IPipeline;\n}\n\nexport interface ICloudFoundryRollbackClusterStageConfigState {\n accounts: IAccount[];\n}\n\nexport class CloudFoundryRollbackClusterStageConfig extends React.Component<\n ICloudFoundryRollbackClusterStageProps,\n ICloudFoundryRollbackClusterStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: ICloudFoundryRollbackClusterStageProps) {\n super(props);\n\n this.props.updateStageField({\n cloudProvider: 'cloudfoundry',\n regions: this.props.stage.regions || [],\n targetHealthyRollbackPercentage: 100,\n });\n\n this.state = { accounts: [] };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private waitTimeBetweenRegionsUpdated = (event: React.ChangeEvent<HTMLInputElement>): void => {\n const time = parseInt(event.target.value || '0', 10);\n this.props.updateStageField({ waitTimeBetweenRegions: time });\n };\n\n private componentUpdate = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n regions: stage.regions,\n cluster: stage.cluster,\n moniker: stage.moniker,\n });\n };\n\n public render() {\n const { application, pipeline, stage } = this.props;\n const { waitTimeBetweenRegions } = stage;\n const { accounts } = this.state;\n return (\n <div className=\"form-horizontal\">\n {!pipeline.strategy && (\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdate}\n component={stage}\n />\n )}\n\n {stage.regions.length > 1 && (\n <StageConfigField label=\"Wait\">\n <input\n type=\"number\"\n min=\"0\"\n value={waitTimeBetweenRegions}\n onChange={this.waitTimeBetweenRegionsUpdated}\n className=\"form-control input-sm inline-number\"\n />\n &nbsp;seconds between regional rollbacks.\n </StageConfigField>\n )}\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRollbackClusterStageConfig } from './CloudFoundryRollbackClusterStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'rollbackCluster',\n key: 'rollbackCluster',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryRollbackClusterStageConfig,\n controller: 'cfRollbackClusterStageCtrl',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'regions' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n ],\n});\n","import React from 'react';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, NgReact, SpelText, StageConfigField, StageConstants, TextInput } from '@spinnaker/core';\nimport { AccountRegionClusterSelector } from '../../../presentation';\n\nexport interface ICloudFoundryRunTaskStageConfigState {\n accounts: IAccount[];\n region: string;\n}\n\nexport class CloudFoundryRunJobStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryRunTaskStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n region: '',\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n this.props.stageFieldUpdated();\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private componentUpdated = (stage: any): void => {\n this.props.updateStageField({\n credentials: stage.credentials,\n region: stage.region,\n cluster: stage.cluster,\n });\n };\n\n public render() {\n const { application, stage } = this.props;\n const { target, jobName, command, logsUrl } = stage;\n const { accounts } = this.state;\n const { TargetSelect } = NgReact;\n\n return (\n <div className=\"cloudfoundry-resize-asg-stage form-horizontal\">\n <AccountRegionClusterSelector\n accounts={accounts}\n application={application}\n cloudProvider={'cloudfoundry'}\n onComponentUpdate={this.componentUpdated}\n component={stage}\n isSingleRegion={true}\n />\n <StageConfigField label=\"Target\">\n <TargetSelect\n model={{ target }}\n options={StageConstants.TARGET_LIST}\n onChange={(t) => this.props.updateStageField({ target: t })}\n />\n </StageConfigField>\n <StageConfigField label=\"Job Name\" helpKey={'cf.runJob.jobName'}>\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ jobName: e.target.value })}\n value={jobName}\n maxLength={238}\n />\n </StageConfigField>\n <StageConfigField label=\"Command\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={(e) => this.props.updateStageField({ command: e.target.value })}\n value={command}\n />\n </StageConfigField>\n <StageConfigField label=\"Logs URL\" helpKey={'cf.runJob.logsUrl'}>\n <SpelText\n placeholder=\"\"\n onChange={(value) => this.props.updateStageField({ logsUrl: value })}\n value={logsUrl}\n pipeline={this.props.pipeline}\n docLink={false}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import { bindAll } from 'lodash';\nimport React from 'react';\nimport { Button, Modal } from 'react-bootstrap';\n\nimport type { IInstanceConsoleOutput } from '@spinnaker/core';\nimport { InstanceReader } from '@spinnaker/core';\n\nexport enum CloudFoundryRecentLogsType {\n APP = 'app',\n TASK = 'task',\n}\n\nexport interface ICloudFoundryRecentLogsProps {\n account: string;\n region: string;\n resourceDisplayName: string;\n resourceGuid: string;\n logsType: CloudFoundryRecentLogsType;\n resourceInstanceIndex?: number;\n}\n\nexport interface ICloudFoundryRecentLogsState {\n logs: string;\n showModal: boolean;\n errorMessage: string;\n}\n\nexport class CloudFoundryRecentLogs extends React.Component<\n ICloudFoundryRecentLogsProps,\n ICloudFoundryRecentLogsState\n> {\n constructor(props: ICloudFoundryRecentLogsProps) {\n super(props);\n this.state = {\n logs: '',\n showModal: false,\n errorMessage: null,\n };\n bindAll(this, ['open', 'close', 'onClick']);\n }\n\n private canShow(): boolean {\n const { resourceGuid } = this.props;\n return resourceGuid !== ''; // or null?\n }\n\n private generateResourceId(): string {\n const { resourceGuid, logsType, resourceInstanceIndex } = this.props;\n const optionalInstanceIndex = logsType === CloudFoundryRecentLogsType.APP ? `:${resourceInstanceIndex}` : '';\n return `${logsType}:${resourceGuid}${optionalInstanceIndex}`;\n }\n\n public close() {\n this.setState({ showModal: false });\n }\n\n public open() {\n this.setState({ showModal: true });\n }\n\n public onClick() {\n const { account, region } = this.props;\n InstanceReader.getConsoleOutput(account, region, this.generateResourceId(), 'cloudfoundry')\n .then((response: IInstanceConsoleOutput) => {\n this.setState({\n logs: response.output as string,\n });\n this.open();\n })\n .catch((exception: any) => {\n this.setState({ errorMessage: exception.data.message });\n this.open();\n });\n }\n\n public render() {\n const { showModal, logs, errorMessage } = this.state;\n if (this.canShow()) {\n return (\n <div>\n <a onClick={this.onClick} className=\"clickable\">\n Recent\n </a>\n <Modal show={showModal} onHide={this.close} dialogClassName=\"modal-lg modal-fullscreen\">\n <Modal.Header closeButton={true}>\n <Modal.Title>Recent logs</Modal.Title>\n <h5>\n CloudFoundry {this.props.logsType.valueOf()} name: {this.props.resourceDisplayName}\n </h5>\n </Modal.Header>\n <Modal.Body>\n {logs.length > 0 && (\n <>\n <pre className=\"body-small\">{logs}</pre>\n </>\n )}\n\n {logs.length === 0 && <>No logs returned.</>}\n\n {errorMessage && <pre className=\"body-small\">{errorMessage}</pre>}\n </Modal.Body>\n <Modal.Footer>\n <Button onClick={this.close}>Close</Button>\n </Modal.Footer>\n </Modal>\n </div>\n );\n } else {\n return null;\n }\n }\n}\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection } from '@spinnaker/core';\nimport {\n CloudFoundryRecentLogs,\n CloudFoundryRecentLogsType,\n} from '../../../presentation/widgets/recentLogs/CloudFoundryRecentLogs';\n\nexport class RunJobExecutionDetails extends React.Component<IExecutionDetailsSectionProps> {\n public static title = 'runJobDetails';\n\n public render() {\n const { stage, name, current } = this.props;\n const { context } = stage;\n const account = context['deploy.account.name'];\n const region = get(stage, ['context', 'jobStatus', 'location'], '');\n const taskId = get(stage, ['context', 'jobStatus', 'id'], '');\n const taskName = get(stage, ['context', 'jobStatus', 'name'], '');\n const logsUrl: string = get(stage, ['context', 'logsUrl']);\n\n return (\n <ExecutionDetailsSection name={name} current={current}>\n <div className=\"row\">\n <div className=\"col-md-9\">\n <dl className=\"dl-narrow dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n {region && (\n <>\n <dt>Region</dt>\n <dd>{region}</dd>\n <dt>Logs</dt>\n <dd>\n <CloudFoundryRecentLogs\n account={account}\n region={region}\n resourceDisplayName={taskName}\n resourceGuid={taskId}\n logsType={CloudFoundryRecentLogsType.TASK}\n />\n </dd>\n {logsUrl && (\n <dd>\n <a target=\"_blank\" href={logsUrl}>\n External\n </a>\n </dd>\n )}\n </>\n )}\n {!region && <div className=\"well\">Collecting additional details...</div>}\n </dl>\n </div>\n </div>\n </ExecutionDetailsSection>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryRunJobStageConfig } from './CloudFoundryRunJobStageConfig';\nimport { RunJobExecutionDetails } from './RunJobExecutionDetails';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n component: CloudFoundryRunJobStageConfig,\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n key: 'runJob',\n provides: 'runJob',\n restartable: true,\n executionDetailsSections: [ExecutionDetailsTasks, RunJobExecutionDetails],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'target' },\n { type: 'requiredField', fieldName: 'command' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryShareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const region = get(context, 'service.region', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const shareToRegions = get(context, 'shareToRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Region</dt>\n <dd>\n {region}\n <br />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Sharing Regions</dt>\n <dd>\n {shareToRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryShareServiceExecutionDetails {\n export const title = 'cloudfoundryShareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n shareToRegionsList: string[];\n}\n\nexport class CloudFoundryShareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n shareToRegionsList: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const { region } = this.props.stage;\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n if (region) {\n this.clearAndResetShareToRegionList(region, regions);\n }\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private clearAndResetShareToRegionList = (region: string, regions: string[]) => {\n this.setState({ shareToRegionsList: regions.filter((r) => r !== region) });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({\n regions: [],\n shareToRegionsList: [],\n });\n this.props.updateStageField({\n credentials,\n region: '',\n shareToRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private regionUpdated = (option: Option<string>) => {\n const region = option.target.value;\n this.setState({ shareToRegionsList: [] });\n this.props.updateStageField({\n region,\n shareToRegions: [],\n });\n this.clearAndResetShareToRegionList(region, this.state.regions);\n };\n\n private shareToRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ shareToRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, region, serviceInstanceName, shareToRegions } = this.props.stage;\n const { accounts, regions, shareToRegionsList } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Region\">\n <ReactSelectInput clearable={false} onChange={this.regionUpdated} value={region} stringOptions={regions} />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Share To Regions\">\n <Select\n options={\n shareToRegionsList &&\n shareToRegionsList.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={shareToRegions}\n onChange={this.shareToRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryShareServiceExecutionDetails } from './CloudFoundryShareServiceExecutionDetails';\nimport { CloudFoundryShareServiceStageConfig } from './CloudFoundryShareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'shareService',\n key: 'shareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryShareServiceStageConfig,\n executionDetailsSections: [CloudFoundryShareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\nimport { CloudFoundryLoadBalancersExecutionDetails, CloudFoundryLoadBalancersStageConfig } from '../../../presentation';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryLoadBalancersStageConfig,\n description: 'Unmap a load balancer',\n executionDetailsSections: [CloudFoundryLoadBalancersExecutionDetails, ExecutionDetailsTasks],\n key: 'unmapLoadBalancers',\n label: 'Unmap Load Balancer',\n validators: [\n { type: 'requiredField', preventSave: true, fieldName: 'cluster' },\n { type: 'requiredField', preventSave: true, fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', preventSave: true, fieldName: 'region' },\n { type: 'requiredField', preventSave: true, fieldName: 'target' },\n { type: 'cfRequiredRoutesField', preventSave: true, fieldName: 'loadBalancerNames' },\n ],\n});\n","import { get } from 'lodash';\nimport React from 'react';\n\nimport type { IExecutionDetailsSectionProps } from '@spinnaker/core';\nimport { AccountTag, ExecutionDetailsSection, StageExecutionLogs, StageFailureMessage } from '@spinnaker/core';\n\nexport function CloudFoundryUnshareServiceExecutionDetails(props: IExecutionDetailsSectionProps) {\n const { stage } = props;\n const { context } = stage;\n const account = get(context, 'service.account', undefined);\n const serviceInstanceName = get(context, 'serviceInstanceName', undefined);\n const unshareFromRegions = get(context, 'unshareFromRegions', undefined);\n return (\n <ExecutionDetailsSection name={props.name} current={props.current}>\n <div className=\"step-section-details\">\n <div className=\"row\">\n <div className=\"col-md-12\">\n <dl className=\"dl-horizontal\">\n <dt>Account</dt>\n <dd>\n <AccountTag account={account} />\n </dd>\n <dt>Service Instance Name</dt>\n <dd>\n {serviceInstanceName}\n <br />\n </dd>\n <dt>Unsharing Regions</dt>\n <dd>\n {unshareFromRegions.join(', ')}\n <br />\n </dd>\n </dl>\n </div>\n </div>\n </div>\n <StageFailureMessage stage={stage} message={stage.failureMessage} />\n <StageExecutionLogs stage={stage} />\n </ExecutionDetailsSection>\n );\n}\n\n// eslint-disable-next-line\nexport namespace CloudFoundryUnshareServiceExecutionDetails {\n export const title = 'cloudfoundryUnshareServiceConfig';\n}\n","import React from 'react';\nimport type { Option } from 'react-select';\nimport Select from 'react-select';\nimport { from as observableFrom, Subject } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\n\nimport type { IAccount, IRegion, IStageConfigProps } from '@spinnaker/core';\nimport { AccountService, ReactSelectInput, StageConfigField, TextInput } from '@spinnaker/core';\n\ninterface ICloudFoundryShareServiceStageConfigState {\n accounts: IAccount[];\n regions: string[];\n}\n\nexport class CloudFoundryUnshareServiceStageConfig extends React.Component<\n IStageConfigProps,\n ICloudFoundryShareServiceStageConfigState\n> {\n private destroy$ = new Subject();\n\n constructor(props: IStageConfigProps) {\n super(props);\n props.stage.cloudProvider = 'cloudfoundry';\n this.state = {\n accounts: [],\n regions: [],\n };\n }\n\n public componentDidMount(): void {\n observableFrom(AccountService.listAccounts('cloudfoundry'))\n .pipe(takeUntil(this.destroy$))\n .subscribe((accounts) => this.setState({ accounts }));\n if (this.props.stage.credentials) {\n this.clearAndReloadRegions();\n }\n }\n\n public componentWillUnmount(): void {\n this.destroy$.next();\n }\n\n private clearAndReloadRegions = () => {\n this.setState({ regions: [] });\n observableFrom(AccountService.getRegionsForAccount(this.props.stage.credentials))\n .pipe(takeUntil(this.destroy$))\n .subscribe((regionList: IRegion[]) => {\n const regions = regionList.map((r) => r.name);\n regions.sort((a, b) => a.localeCompare(b));\n this.setState({ regions });\n });\n };\n\n private serviceInstanceNameUpdated = (event: React.ChangeEvent<HTMLInputElement>) => {\n this.props.updateStageField({ serviceInstanceName: event.target.value });\n };\n\n private accountUpdated = (option: Option<string>) => {\n const credentials = option.target.value;\n this.setState({ regions: [] });\n this.props.updateStageField({\n credentials,\n unshareFromRegions: [],\n });\n if (credentials) {\n this.clearAndReloadRegions();\n }\n };\n\n private unshareFromRegionsUpdated = (option: Option<string>) => {\n this.props.updateStageField({ unshareFromRegions: option.map((o: Option) => o.value) });\n };\n\n public render() {\n const { credentials, serviceInstanceName, unshareFromRegions } = this.props.stage;\n const { accounts, regions } = this.state;\n\n return (\n <div className=\"form-horizontal\">\n <StageConfigField label=\"Account\">\n <ReactSelectInput\n clearable={false}\n onChange={this.accountUpdated}\n value={credentials}\n stringOptions={accounts.map((it) => it.name)}\n />\n </StageConfigField>\n <StageConfigField label=\"Service Instance Name\">\n <TextInput\n type=\"text\"\n className=\"form-control\"\n onChange={this.serviceInstanceNameUpdated}\n value={serviceInstanceName}\n />\n </StageConfigField>\n <StageConfigField label=\"Unshare From Regions\">\n <Select\n options={\n regions &&\n regions.map((r: string) => ({\n label: r,\n value: r,\n }))\n }\n multi={true}\n clearable={false}\n value={unshareFromRegions}\n onChange={this.unshareFromRegionsUpdated}\n />\n </StageConfigField>\n </div>\n );\n }\n}\n","import type { IStage } from '@spinnaker/core';\nimport { ExecutionDetailsTasks, Registry } from '@spinnaker/core';\n\nimport { CloudFoundryUnshareServiceExecutionDetails } from './CloudFoundryUnshareServiceExecutionDetails';\nimport { CloudFoundryUnshareServiceStageConfig } from './CloudFoundryUnshareServiceStageConfig';\n\nRegistry.pipeline.registerStage({\n accountExtractor: (stage: IStage) => [stage.context.credentials],\n configAccountExtractor: (stage: IStage) => [stage.credentials],\n provides: 'unshareService',\n key: 'unshareService',\n cloudProvider: 'cloudfoundry',\n component: CloudFoundryUnshareServiceStageConfig,\n controller: 'cfUnshareServiceStageCtrl',\n executionDetailsSections: [CloudFoundryUnshareServiceExecutionDetails, ExecutionDetailsTasks],\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n { type: 'requiredField', fieldName: 'serviceInstanceName', preventSave: true },\n ],\n});\n","import React from 'react';\n\nimport { AccountTag, CollapsibleSection, timestamp } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryBuildpack } from '../../../domain';\n\nexport class ServerGroupInformationSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Information\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Created</dt>\n {serverGroup.pipelineId ? (\n <dd>\n <a target=\"_blank\" href={'/#/applications/' + serverGroup.app + '/executions/' + serverGroup.pipelineId}>\n {timestamp(serverGroup.createdTime)}\n </a>\n </dd>\n ) : (\n <dd>{timestamp(serverGroup.createdTime)}</dd>\n )}\n <dt>Account</dt>\n <dd>\n <AccountTag account={serverGroup.account} />\n </dd>\n <dt>Organization</dt>\n <dd>{serverGroup.space.organization.name}</dd>\n <dt>Space</dt>\n <dd>{serverGroup.space.name}</dd>\n {serverGroup.droplet && (\n <div>\n <dt>Rootfs</dt>\n <dd>{serverGroup.droplet.stack}</dd>\n <dt>Buildpack</dt>\n {serverGroup.droplet.buildpacks ? (\n serverGroup.droplet.buildpacks.map(function (buildpack: ICloudFoundryBuildpack, index: number) {\n return (\n <dd key={index}>\n {buildpack.name} {buildpack.version}\n </dd>\n );\n })\n ) : (\n <dd>n/a</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ApplicationManagerSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { appsManagerUri } = serverGroup;\n return (\n <>\n {appsManagerUri && (\n <CollapsibleSection heading=\"Apps Manager\" defaultExpanded={true}>\n <div>\n <a href={appsManagerUri} target=\"_blank\">\n Apps Manager\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class MetricsSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n const { metricsUri } = serverGroup;\n return (\n <>\n {metricsUri && (\n <CollapsibleSection heading=\"Metrics\" defaultExpanded={true}>\n <div>\n <a href={metricsUri} target=\"_blank\">\n Metrics\n </a>\n </div>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class ServerGroupSizingSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Server Group Sizing\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Instances</dt>\n <dd>{serverGroup.instances.length}</dd>\n <dt>Disk (MB)</dt>\n <dd>{serverGroup.diskQuota}</dd>\n <dt>Memory (MB)</dt>\n <dd>{serverGroup.memory}</dd>\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class HealthCheckSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Health Check\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Type</dt>\n <dd>{serverGroup.healthCheckType === undefined ? 'port' : serverGroup.healthCheckType}</dd>\n {serverGroup.healthCheckType === 'http' && (\n <div>\n <dt>Endpoint</dt>\n <dd>{serverGroup.healthCheckHttpEndpoint}</dd>\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class PackageSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {serverGroup.droplet && serverGroup.droplet.sourcePackage && (\n <CollapsibleSection heading=\"Package\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n <dt>Checksum</dt>\n <dd>{serverGroup.droplet.sourcePackage.checksum}</dd>\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class BuildSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <CollapsibleSection heading=\"Build\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.ciBuild && serverGroup.ciBuild.jobName && (\n <div>\n <dt>Job Name</dt>\n <dd>{serverGroup.ciBuild.jobName}</dd>\n </div>\n )}\n {serverGroup.ciBuild && serverGroup.ciBuild.jobNumber && (\n <div>\n <dt>Job Number</dt>\n {serverGroup.ciBuild.jobUrl ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.ciBuild.jobUrl}>\n {serverGroup.ciBuild.jobNumber}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.ciBuild.jobNumber}</dd>\n )}\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.name && (\n <div>\n <dt>Artifact Name</dt>\n <dd>{serverGroup.appArtifact.name}</dd>\n </div>\n )}\n {serverGroup.appArtifact && serverGroup.appArtifact.version && (\n <div>\n <dt>Version</dt>\n {serverGroup.appArtifact.url ? (\n <dd>\n <a target=\"_blank\" href={serverGroup.appArtifact.url}>\n {serverGroup.appArtifact.version}\n </a>\n </dd>\n ) : (\n <dd>{serverGroup.appArtifact.version}</dd>\n )}\n </div>\n )}\n </dl>\n </CollapsibleSection>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\nimport type { ICloudFoundryServiceInstance } from '../../../domain';\n\nexport class BoundServicesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.serviceInstances) && (\n <CollapsibleSection heading=\"Bound Services\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {serverGroup.serviceInstances.map(function (service: ICloudFoundryServiceInstance, index: number) {\n return (\n <div key={index}>\n <dt>Name</dt>\n <dd>{service.name}</dd>\n <dt>Plan</dt>\n <dd>{service.plan}</dd>\n <dt>Tags</dt>\n {service.tags && <dd>{service.tags.join(', ')}</dd>}\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport React from 'react';\n\nimport { CollapsibleSection } from '@spinnaker/core';\n\nimport type { ICloudFoundryServerGroupDetailsSectionProps } from './ICloudFoundryServerGroupDetailsSectionProps';\n\nexport class EnvironmentVariablesSection extends React.Component<ICloudFoundryServerGroupDetailsSectionProps> {\n constructor(props: ICloudFoundryServerGroupDetailsSectionProps) {\n super(props);\n }\n\n public render(): JSX.Element {\n const { serverGroup } = this.props;\n return (\n <>\n {!isEmpty(serverGroup.env) && (\n <CollapsibleSection heading=\"Environment Variables\" defaultExpanded={true}>\n <dl className=\"dl-horizontal dl-narrow\">\n {Object.entries(serverGroup.env).map(([k, v], index) => {\n return (\n <div key={index}>\n <dt>{k}</dt>\n <dd>{v}</dd>\n </div>\n );\n })}\n </dl>\n </CollapsibleSection>\n )}\n </>\n );\n }\n}\n","import { defaults } from 'lodash';\n\nimport type { ICloudFoundryEnvVar, ICloudFoundryServerGroup } from '../domain';\n\nexport class CloudFoundryServerGroupTransformer {\n public static $inject = ['$q'];\n public constructor(private $q: ng.IQService) {}\n\n public normalizeServerGroupDetails(serverGroup: ICloudFoundryServerGroup): ICloudFoundryServerGroup {\n return serverGroup;\n }\n\n public normalizeServerGroup(serverGroup: ICloudFoundryServerGroup): PromiseLike<ICloudFoundryServerGroup> {\n return this.$q.resolve(serverGroup);\n }\n\n public convertServerGroupCommandToDeployConfiguration(base: any): any {\n const command = defaults({ viewState: [] }, base);\n command.cloudProvider = 'cloudfoundry';\n command.provider = 'cloudfoundry';\n command.account = command.credentials;\n\n delete command.viewState;\n delete command.selectedProvider;\n\n if (command.manifest.type === 'direct') {\n command.manifest.env = this.convertManifestEnv(command.manifest.environment);\n } else {\n command.manifest.env = command.manifest.environment;\n }\n\n return command;\n }\n\n private convertManifestEnv(envVars: ICloudFoundryEnvVar[]): {} {\n const newEnv = Object.create(null);\n for (const envVar of envVars) {\n newEnv[envVar.key] = envVar.value;\n }\n return newEnv;\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryMapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryMapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Mapping a route to your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.mapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Map route to {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroup, IServerGroupJob } from '@spinnaker/core';\nimport {\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\nimport { Routes } from '../../../presentation/forms/serverGroup';\n\nexport interface ICloudFoundryLoadBalancerLinksModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalState {\n initialValues: ICloudFoundryLoadBalancerLinksModalValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryLoadBalancerLinksModalValues {\n routes: string[];\n}\n\nexport interface ICloudFoundryLoadBalancerLinkJob extends IServerGroupJob {\n routes: string[];\n serverGroupName: string;\n}\n\nexport class CloudFoundryUnmapLoadBalancersModal extends React.Component<\n ICloudFoundryLoadBalancerLinksModalProps,\n ICloudFoundryLoadBalancerLinksModalState\n> {\n public static defaultProps: Partial<ICloudFoundryLoadBalancerLinksModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryLoadBalancerLinksModalValues>>();\n\n public static show(props: ICloudFoundryLoadBalancerLinksModalProps): Promise<ICloudFoundryLoadBalancerLinkJob> {\n return ReactModal.show(CloudFoundryUnmapLoadBalancersModal, props, {});\n }\n\n constructor(props: ICloudFoundryLoadBalancerLinksModalProps) {\n super(props);\n\n this.state = {\n initialValues: {\n routes: [''],\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Unmapping a route from your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryLoadBalancerLinksModalValues): void => {\n const { routes } = values;\n const { serverGroup } = this.props;\n const coreServerGroup: IServerGroup = {\n account: serverGroup.account,\n cloudProvider: serverGroup.cloudProvider,\n cluster: serverGroup.cluster,\n instanceCounts: serverGroup.instanceCounts,\n instances: serverGroup.instances,\n loadBalancers: routes,\n name: serverGroup.name,\n region: serverGroup.region,\n type: serverGroup.type,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.unmapLoadBalancers(coreServerGroup, this.props.application, {\n serverGroupName: serverGroup.name,\n });\n });\n };\n\n public render() {\n const { serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryLoadBalancerLinksModalValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Unmap route from {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <Routes fieldName=\"routes\" isRequired={true} singleRouteOnly={true} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik, FormikProps } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, ICapacity, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n NumberInput,\n ReactInjector,\n ReactModal,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryResizeServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryResizeServerGroupModalState {\n initialValues: ICloudFoundryResizeServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryResizeServerGroupValues {\n desired: number | string;\n diskQuota?: number;\n memory?: number;\n reason?: string;\n}\n\nexport interface ICloudFoundryResizeJob extends IServerGroupJob {\n capacity?: Partial<ICapacity>;\n diskQuota?: number;\n instanceCount?: number;\n memory?: number;\n serverGroupName: string;\n reason?: string;\n}\n\nexport class CloudFoundryResizeServerGroupModal extends React.Component<\n ICloudFoundryResizeServerGroupModalProps,\n ICloudFoundryResizeServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryResizeServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryResizeServerGroupValues>>();\n\n public static show(props: ICloudFoundryResizeServerGroupModalProps): Promise<ICloudFoundryResizeJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryResizeServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryResizeServerGroupModalProps) {\n super(props);\n\n const { capacity, diskQuota, memory } = props.serverGroup;\n const { desired } = capacity;\n this.state = {\n initialValues: {\n desired,\n diskQuota: diskQuota,\n memory: memory,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Resizing your server group',\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryResizeServerGroupValues): void => {\n const { desired, diskQuota, memory, reason } = values;\n const { serverGroup, application } = this.props;\n const capacity = {\n min: desired,\n max: desired,\n desired,\n };\n\n const command: ICloudFoundryResizeJob = {\n capacity,\n diskQuota,\n memory,\n reason,\n serverGroupName: serverGroup.name,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.resizeServerGroup(serverGroup, application, command);\n });\n };\n\n private renderDesired(formik: FormikProps<ICloudFoundryResizeServerGroupValues>): JSX.Element {\n const { serverGroup } = this.props;\n const { capacity } = serverGroup;\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <input type=\"number\" className=\"NumberInput form-control\" value={capacity.desired} disabled={true} />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-4\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name=\"desired\"\n input={(props) => <NumberInput {...props} min={0} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">instances</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n private renderQuota(\n formik: FormikProps<ICloudFoundryResizeServerGroupValues>,\n field: string,\n fieldLabel: string,\n initialValue: number,\n ): JSX.Element {\n return (\n <div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Current size</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <div className=\"StandardFieldLayout flex-container-h baseline margin-between-lg\">\n <input type=\"number\" className=\"NumberInput form-control\" value={initialValue} disabled={true} />\n </div>\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n <div className=\"form-group\">\n <div className=\"col-md-3 sm-label-right\">Resize to</div>\n <div className=\"col-md-5\">\n <div className=\"horizontal middle\">\n <FormikFormField\n name={field}\n input={(props) => <NumberInput {...props} min={64} />}\n touched={true}\n required={true}\n onChange={(value) => {\n formik.setFieldValue('min', value);\n formik.setFieldValue('max', value);\n }}\n />\n <div className=\"sp-padding-xs-xaxis\">{fieldLabel}</div>\n </div>\n </div>\n </div>\n </div>\n );\n }\n\n public render() {\n const { serverGroup } = this.props;\n const { diskQuota, memory } = serverGroup;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryResizeServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Resize {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n {this.renderDesired(formik)}\n {this.renderQuota(formik, 'diskQuota', 'Disk (MB)', diskQuota)}\n {this.renderQuota(formik, 'memory', 'Mem (MB)', memory)}\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button\n type=\"submit\"\n className=\"btn btn-primary\"\n onClick={() => this.submit(formik.values)}\n disabled={!formik.isValid}\n >\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import type { Formik } from 'formik';\nimport { Form } from 'formik';\nimport React from 'react';\nimport { Modal, ModalFooter } from 'react-bootstrap';\n\nimport type { Application, IModalComponentProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n FormikFormField,\n ModalClose,\n noop,\n ReactInjector,\n ReactModal,\n ReactSelectInput,\n SpinFormik,\n TaskMonitor,\n TaskMonitorWrapper,\n TaskReason,\n} from '@spinnaker/core';\nimport type { ICloudFoundryServerGroup } from '../../../domain';\n\nexport interface ICloudFoundryRollbackServerGroupModalProps extends IModalComponentProps {\n application: Application;\n serverGroup: ICloudFoundryServerGroup;\n previousServerGroup: ICloudFoundryServerGroup;\n allServerGroups: ICloudFoundryServerGroup[];\n disabledServerGroups: ICloudFoundryServerGroup[];\n}\n\nexport interface ICloudFoundryRollbackServerGroupModalState {\n initialValues: ICloudFoundryRollbackServerGroupValues;\n taskMonitor: TaskMonitor;\n}\n\nexport interface ICloudFoundryRollbackServerGroupValues {\n restoreServerGroupName: string;\n reason?: string;\n}\n\nexport interface ICloudFoundryRollbackJob extends IServerGroupJob {\n rollbackType: string;\n rollbackContext: {\n rollbackServerGroupName: string;\n restoreServerGroupName: string;\n targetHealthyRollbackPercentage: number;\n };\n}\n\nexport class CloudFoundryRollbackServerGroupModal extends React.Component<\n ICloudFoundryRollbackServerGroupModalProps,\n ICloudFoundryRollbackServerGroupModalState\n> {\n public static defaultProps: Partial<ICloudFoundryRollbackServerGroupModalProps> = {\n closeModal: noop,\n dismissModal: noop,\n };\n\n private formikRef = React.createRef<Formik<ICloudFoundryRollbackServerGroupValues>>();\n\n public static show(props: ICloudFoundryRollbackServerGroupModalProps): Promise<ICloudFoundryRollbackJob> {\n const modalProps = {};\n return ReactModal.show(CloudFoundryRollbackServerGroupModal, props, modalProps);\n }\n\n constructor(props: ICloudFoundryRollbackServerGroupModalProps) {\n super(props);\n\n const { previousServerGroup, serverGroup } = props;\n const { name } = serverGroup;\n this.state = {\n initialValues: {\n restoreServerGroupName: previousServerGroup ? previousServerGroup.name : undefined,\n },\n taskMonitor: new TaskMonitor({\n application: props.application,\n title: 'Rollback ' + name,\n modalInstance: TaskMonitor.modalInstanceEmulation(() => this.props.dismissModal()),\n onTaskComplete: () => this.props.application.serverGroups.refresh(),\n }),\n };\n }\n\n private close = (args?: any): void => {\n this.props.dismissModal.apply(null, args);\n };\n\n private submit = (values: ICloudFoundryRollbackServerGroupValues): void => {\n const { reason, restoreServerGroupName } = values;\n const { serverGroup, application } = this.props;\n\n const command: ICloudFoundryRollbackJob = {\n rollbackType: 'EXPLICIT',\n rollbackContext: {\n rollbackServerGroupName: serverGroup.name,\n restoreServerGroupName,\n targetHealthyRollbackPercentage: 100,\n },\n reason,\n };\n\n this.state.taskMonitor.submit(() => {\n return ReactInjector.serverGroupWriter.rollbackServerGroup(serverGroup, application, command);\n });\n };\n\n public render() {\n const { allServerGroups, serverGroup } = this.props;\n const { initialValues } = this.state;\n return (\n <>\n <TaskMonitorWrapper monitor={this.state.taskMonitor} />\n <SpinFormik<ICloudFoundryRollbackServerGroupValues>\n ref={this.formikRef}\n initialValues={initialValues}\n onSubmit={this.submit}\n render={(formik) => {\n return (\n <>\n <ModalClose dismiss={this.close} />\n <Modal.Header>\n <Modal.Title>Rollback {serverGroup.name}</Modal.Title>\n </Modal.Header>\n <Modal.Body>\n <Form className=\"form-horizontal\">\n <div className=\"row\" style={{ marginTop: '10px', marginBottom: '10px' }}>\n <div className=\"col-md-3 sm-label-right\">Restore to</div>\n <div className=\"col-md-7\">\n <FormikFormField\n name=\"restoreServerGroupName\"\n fastField={true}\n input={(props) => (\n <ReactSelectInput\n inputClassName=\"cloudfoundry-react-select\"\n {...props}\n stringOptions={\n allServerGroups && allServerGroups.map((sg: ICloudFoundryServerGroup) => sg.name)\n }\n clearable={false}\n />\n )}\n required={true}\n />\n </div>\n </div>\n <TaskReason reason={formik.values.reason} onChange={(val) => formik.setFieldValue('reason', val)} />\n </Form>\n <div className=\"row\">\n <div className=\"col-sm-4 sm-label-right\">Rollback Operations</div>\n </div>\n <div className=\"row\">\n <div className=\"col-sm-11 col-sm-offset-1\">\n <ol>\n <li>\n Enable <em>{formik.values.restoreServerGroupName || 'previous server group'}</em>\n </li>\n <li>Disable {serverGroup.name}</li>\n </ol>\n <p>\n This rollback will affect server groups in {serverGroup.account} ({serverGroup.region}\n ).\n </p>\n </div>\n </div>\n </Modal.Body>\n <ModalFooter>\n <button className=\"btn btn-default\" onClick={this.close}>\n Cancel\n </button>\n <button type=\"submit\" className=\"btn btn-primary\" onClick={() => this.submit(formik.values)}>\n Submit\n </button>\n </ModalFooter>\n </>\n );\n }}\n />\n </>\n );\n }\n}\n","import { filter, find, get, orderBy } from 'lodash';\nimport React from 'react';\nimport { Dropdown, Tooltip } from 'react-bootstrap';\n\nimport type { IOwnerOption, IServerGroupActionsProps, IServerGroupJob } from '@spinnaker/core';\nimport {\n AddEntityTagLinks,\n ClusterTargetBuilder,\n ConfirmationModalService,\n ReactInjector,\n ServerGroupWarningMessageService,\n SETTINGS,\n} from '@spinnaker/core';\n\nimport { CloudFoundryServerGroupCommandBuilder } from '../configure';\nimport { CloudFoundryCreateServerGroupModal } from '../configure/wizard/CreateServerGroupModal';\nimport type { ICloudFoundryServerGroup } from '../../domain';\nimport { CloudFoundryMapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryMapLoadBalancersModal';\nimport { CloudFoundryUnmapLoadBalancersModal } from './mapLoadBalancers/CloudFoundryUnmapLoadBalancersModal';\nimport { CloudFoundryResizeServerGroupModal } from './resize/CloudFoundryResizeServerGroupModal';\nimport { CloudFoundryRollbackServerGroupModal } from './rollback/CloudFoundryRollbackServerGroupModal';\n\nexport interface ICloudFoundryServerGroupActionsProps extends IServerGroupActionsProps {\n serverGroup: ICloudFoundryServerGroup;\n}\n\nexport interface ICloudFoundryServerGroupJob extends IServerGroupJob {\n serverGroupId: string;\n}\n\nexport class CloudFoundryServerGroupActions extends React.Component<ICloudFoundryServerGroupActionsProps> {\n private isEnableLocked(): boolean {\n if (this.props.serverGroup.isDisabled) {\n const resizeTasks = (this.props.serverGroup.runningTasks || []).filter((task) =>\n get(task, 'execution.stages', []).some((stage) => stage.type === 'resizeServerGroup'),\n );\n if (resizeTasks.length) {\n return true;\n }\n }\n return false;\n }\n\n private isRollbackEnabled(): boolean {\n const { app, serverGroup } = this.props;\n\n if (!serverGroup.isDisabled) {\n // enabled server groups are always a candidate for rollback\n return true;\n }\n\n // if the server group selected for rollback is disabled, ensure that at least one enabled server group exists\n return app\n .getDataSource('serverGroups')\n .data.some(\n (g: ICloudFoundryServerGroup) =>\n g.cluster === serverGroup.cluster &&\n g.region === serverGroup.region &&\n g.account === serverGroup.account &&\n !g.isDisabled,\n );\n }\n\n private hasDisabledInstances(): boolean {\n // server group may have disabled instances (out of service) but NOT itself be disabled\n return this.props.serverGroup.isDisabled || get(this.props.serverGroup, 'instanceCounts.outOfService', 0) > 0;\n }\n\n private destroyServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n\n const stateParams = {\n name: serverGroup.name,\n accountId: serverGroup.account,\n region: serverGroup.region,\n };\n\n const taskMonitor = {\n application: app,\n title: 'Destroying ' + serverGroup.name,\n onTaskComplete: () => {\n if (ReactInjector.$state.includes('**.serverGroup', stateParams)) {\n ReactInjector.$state.go('^');\n }\n },\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.destroyServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really destroy ' + serverGroup.name + '?',\n buttonText: 'Destroy ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n interestingHealthProviderNames: undefined as string[],\n submitMethod,\n askForReason: true,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n };\n\n ServerGroupWarningMessageService.addDestroyWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private disableServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const taskMonitor = {\n application: app,\n title: 'Disabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.disableServerGroup(serverGroup, app.name, params);\n };\n\n const confirmationModalParams = {\n header: 'Really disable ' + serverGroup.name + '?',\n buttonText: 'Disable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n private enableServerGroup = (): void => {\n if (!this.isRollbackEnabled()) {\n this.showEnableServerGroupModal();\n return;\n }\n\n const confirmationModalParams = {\n header: 'Rolling back?',\n body: `Spinnaker provides an orchestrated rollback feature to carefully restore a different version of this\n server group. Do you want to use the orchestrated rollback?`,\n buttonText: `Yes, let's start the orchestrated rollback`,\n cancelButtonText: 'No, I just want to enable the server group',\n };\n\n ConfirmationModalService.confirm(confirmationModalParams)\n .then(() => this.rollbackServerGroup())\n .catch(({ source }) => {\n // don't show the enable modal if the user cancels with the header button\n if (source === 'footer') {\n this.showEnableServerGroupModal();\n }\n });\n };\n\n private showEnableServerGroupModal(): void {\n const { app, serverGroup } = this.props;\n\n const taskMonitor = {\n application: app,\n title: 'Enabling ' + serverGroup.name,\n };\n\n const submitMethod = (params: ICloudFoundryServerGroupJob) => {\n params.serverGroupName = serverGroup.name;\n return ReactInjector.serverGroupWriter.enableServerGroup(serverGroup, app, params);\n };\n\n const confirmationModalParams = {\n header: 'Really enable ' + serverGroup.name + '?',\n buttonText: 'Enable ' + serverGroup.name,\n account: serverGroup.account,\n interestingHealthProviderNames: undefined as string[],\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Cloud Foundry',\n submitMethod,\n askForReason: true,\n };\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Cloud Foundry'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n }\n\n private rollbackServerGroup = (): void => {\n const { app } = this.props;\n\n let serverGroup: ICloudFoundryServerGroup = this.props.serverGroup;\n let previousServerGroup: ICloudFoundryServerGroup;\n let allServerGroups = (app.serverGroups.data as ICloudFoundryServerGroup[]).filter(\n (g) => g.cluster === serverGroup.cluster && g.region === serverGroup.region && g.account === serverGroup.account,\n );\n\n if (serverGroup.isDisabled) {\n // if the selected server group is disabled, it represents the server group that should be _rolled back to_\n previousServerGroup = serverGroup;\n\n /*\n * Find an existing server group to rollback, prefer the largest enabled server group.\n *\n * isRollbackEnabled() ensures that at least one enabled server group exists.\n */\n serverGroup = orderBy(\n allServerGroups.filter((g: ICloudFoundryServerGroup) => g.name !== previousServerGroup.name && !g.isDisabled),\n ['instanceCounts.total', 'createdTime'],\n ['desc', 'desc'],\n )[0] as ICloudFoundryServerGroup;\n }\n\n // the set of all server groups should not include the server group selected for rollback\n allServerGroups = allServerGroups.filter((g) => g.name !== serverGroup.name);\n\n if (allServerGroups.length === 1 && !previousServerGroup) {\n // if there is only one other server group, default to it being the rollback target\n previousServerGroup = allServerGroups[0];\n }\n const cluster = find(app.clusters, {\n name: serverGroup.cluster,\n account: serverGroup.account,\n serverGroups: [],\n });\n const disabledServerGroups: ICloudFoundryServerGroup[] = filter(cluster.serverGroups, {\n isDisabled: true,\n region: serverGroup.region,\n }) as ICloudFoundryServerGroup[];\n\n CloudFoundryRollbackServerGroupModal.show({\n serverGroup,\n previousServerGroup,\n disabledServerGroups: disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n allServerGroups: allServerGroups.sort((a, b) => b.name.localeCompare(a.name)),\n application: app,\n });\n };\n\n private resizeServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryResizeServerGroupModal.show({ application: app, serverGroup });\n };\n\n private mapServerGroupToLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryMapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private unmapServerGroupFromLoadBalancers = (): void => {\n const { app, serverGroup } = this.props;\n CloudFoundryUnmapLoadBalancersModal.show({ application: app, serverGroup });\n };\n\n private cloneServerGroup = (): void => {\n const { app, serverGroup } = this.props;\n const command = CloudFoundryServerGroupCommandBuilder.buildServerGroupCommandFromExisting(app, serverGroup);\n const title = `Clone ${serverGroup.name}`;\n CloudFoundryCreateServerGroupModal.show({\n application: app,\n command,\n isSourceConstant: true,\n serverGroup,\n title,\n });\n };\n\n public render(): JSX.Element {\n const { app, serverGroup } = this.props;\n const { loadBalancers } = serverGroup;\n const showEntityTags = SETTINGS.feature && SETTINGS.feature.entityTags;\n const entityTagTargets: IOwnerOption[] = ClusterTargetBuilder.buildClusterTargets(serverGroup);\n\n return (\n <Dropdown className=\"dropdown\" id=\"server-group-actions-dropdown\">\n <Dropdown.Toggle className=\"btn btn-sm btn-primary dropdown-toggle\">Server Group Actions</Dropdown.Toggle>\n <Dropdown.Menu className=\"dropdown-menu\">\n {this.isRollbackEnabled() && (\n <li>\n <a className=\"clickable\" onClick={this.rollbackServerGroup}>\n Rollback\n </a>\n </li>\n )}\n {this.isRollbackEnabled() && <li role=\"presentation\" className=\"divider\" />}\n <li>\n <a className=\"clickable\" onClick={this.resizeServerGroup}>\n Resize\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.disableServerGroup}>\n Disable\n </a>\n </li>\n )}\n {this.hasDisabledInstances() && !this.isEnableLocked() && (\n <li>\n <a className=\"clickable\" onClick={this.enableServerGroup}>\n Enable\n </a>\n </li>\n )}\n {this.isEnableLocked() && (\n <li className=\"disabled\">\n <Tooltip value=\"Cannot enable this server group until resize operation completes\" placement=\"left\">\n <a>\n <span className=\"small glyphicon glyphicon-lock\" /> Enable\n </a>\n </Tooltip>\n </li>\n )}\n <li>\n <a className=\"clickable\" onClick={this.destroyServerGroup}>\n Destroy\n </a>\n </li>\n <li>\n <a className=\"clickable\" onClick={this.cloneServerGroup}>\n Clone\n </a>\n </li>\n {!serverGroup.isDisabled && (\n <li>\n <a className=\"clickable\" onClick={this.mapServerGroupToLoadBalancers}>\n Map Load Balancer\n </a>\n </li>\n )}\n {!serverGroup.isDisabled && loadBalancers && !!loadBalancers.length && (\n <li>\n <a className=\"clickable\" onClick={this.unmapServerGroupFromLoadBalancers}>\n Unmap Load Balancer\n </a>\n </li>\n )}\n {showEntityTags && (\n <AddEntityTagLinks\n component={serverGroup}\n application={app}\n entityType=\"serverGroup\"\n ownerOptions={entityTagTargets}\n onUpdate={() => app.serverGroups.refresh()}\n />\n )}\n </Dropdown.Menu>\n </Dropdown>\n );\n }\n}\n","import { isEmpty } from 'lodash';\nimport { Observable } from 'rxjs';\n\nimport type { IServerGroupDetailsProps } from '@spinnaker/core';\nimport { ServerGroupReader } from '@spinnaker/core';\nimport type { ICloudFoundryLoadBalancer, ICloudFoundryServerGroup } from '../../domain';\n\nfunction extractServerGroupSummary(props: IServerGroupDetailsProps): PromiseLike<ICloudFoundryServerGroup> {\n const { app, serverGroup } = props;\n return app.ready().then(() => {\n let summary: ICloudFoundryServerGroup = app.serverGroups.data.find((toCheck: ICloudFoundryServerGroup) => {\n return (\n toCheck.name === serverGroup.name &&\n toCheck.account === serverGroup.accountId &&\n toCheck.region === serverGroup.region\n );\n });\n if (!summary) {\n app.loadBalancers.data.some((loadBalancer: ICloudFoundryLoadBalancer) => {\n if (loadBalancer.account === serverGroup.accountId && loadBalancer.region === serverGroup.region) {\n return loadBalancer.serverGroups.some((possibleServerGroup) => {\n if (possibleServerGroup.name === serverGroup.name) {\n summary = possibleServerGroup;\n return true;\n }\n return false;\n });\n }\n return false;\n });\n }\n return summary;\n });\n}\n\nexport function cfServerGroupDetailsGetter(\n props: IServerGroupDetailsProps,\n autoClose: () => void,\n): Observable<ICloudFoundryServerGroup> {\n const { app, serverGroup: serverGroupInfo } = props;\n return new Observable<ICloudFoundryServerGroup>((observer) => {\n extractServerGroupSummary(props).then((summary) => {\n ServerGroupReader.getServerGroup(\n app.name,\n serverGroupInfo.accountId,\n serverGroupInfo.region,\n serverGroupInfo.name,\n ).then((serverGroup: ICloudFoundryServerGroup) => {\n // it's possible the summary was not found because the clusters are still loading\n Object.assign(serverGroup, summary, { account: serverGroupInfo.accountId });\n\n if (!isEmpty(serverGroup)) {\n observer.next(serverGroup);\n } else {\n autoClose();\n }\n }, autoClose);\n }, autoClose);\n });\n}\n","import { CloudProviderRegistry } from '@spinnaker/core';\n\nimport './common/applicationName.validator';\nimport './help/cloudfoundry.help';\nimport { CloudFoundryInstanceDetails } from './instance/details';\nimport {\n CloudFoundryLoadBalancerDetails,\n CloudFoundryLoadBalancerTransformer,\n CloudFoundryMapLoadBalancerModal,\n} from './loadBalancer';\nimport cloudFoundryLogo from './logo/cf.logo.svg';\nimport './pipeline/config/validation/cfTargetImpedance.validator';\nimport './pipeline/config/validation/instanceSize.validator';\nimport './pipeline/config/validation/requiredRoutes.validator';\nimport './pipeline/stages/bakeCloudFoundryManifest/bakeCloudFoundryManifestStage';\nimport './pipeline/stages/cloneServerGroup/cloudFoundryCloneServerGroupStage.module';\nimport './pipeline/stages/createServiceBindings/cloudFoundryCreateServiceBindingsStage';\nimport './pipeline/stages/createServiceKey/cloudFoundryCreateServiceKeyStage.module';\nimport './pipeline/stages/deleteServiceBindings/cloudFoundryDeleteServiceBindingsStage';\nimport './pipeline/stages/deleteServiceKey/cloudFoundryDeleteServiceKeyStage.module';\nimport './pipeline/stages/deployService/cloudFoundryDeployServiceStage.module';\nimport './pipeline/stages/destroyAsg/cloudFoundryDestroyAsgStage.module';\nimport './pipeline/stages/destroyService/cloudFoundryDestroyServiceStage.module';\nimport './pipeline/stages/disableAsg/cloudFoundryDisableAsgStage.module';\nimport './pipeline/stages/enableAsg/cloudFoundryEnableAsgStage.module';\nimport './pipeline/stages/mapLoadBalancers/cloudFoundryMapLoadBalancersStage.module';\nimport './pipeline/stages/resizeAsg/cloudFoundryResizeAsgStage.module';\nimport './pipeline/stages/rollbackCluster/cloudFoundryRollbackClusterStage.module';\nimport './pipeline/stages/runJob/cloudFoundryRunJob.module';\nimport './pipeline/stages/shareService/cloudFoundryShareServiceStage.module';\nimport './pipeline/stages/unmapLoadBalancers/cloudFoundryUnmapLoadBalancersStage.module';\nimport './pipeline/stages/unshareService/cloudFoundryUnshareServiceStage.module';\nimport {\n ApplicationManagerSection,\n BoundServicesSection,\n BuildSection,\n cfServerGroupDetailsGetter,\n CloudFoundryCreateServerGroupModal,\n CloudFoundryServerGroupActions,\n CloudFoundryServerGroupCommandBuilderShim,\n CloudFoundryServerGroupTransformer,\n EnvironmentVariablesSection,\n HealthCheckSection,\n MetricsSection,\n PackageSection,\n ServerGroupInformationSection,\n ServerGroupSizingSection,\n} from './serverGroup';\n\nimport './logo/cf.logo.less';\n\nCloudProviderRegistry.registerProvider('cloudfoundry', {\n name: 'Cloud Foundry',\n logo: {\n path: cloudFoundryLogo,\n },\n loadBalancer: {\n transformer: CloudFoundryLoadBalancerTransformer,\n details: CloudFoundryLoadBalancerDetails,\n CreateLoadBalancerModal: CloudFoundryMapLoadBalancerModal,\n },\n serverGroup: {\n skipUpstreamStageCheck: true,\n transformer: CloudFoundryServerGroupTransformer,\n detailsActions: CloudFoundryServerGroupActions,\n detailsGetter: cfServerGroupDetailsGetter,\n detailsSections: [\n ServerGroupInformationSection,\n ApplicationManagerSection,\n MetricsSection,\n ServerGroupSizingSection,\n HealthCheckSection,\n BuildSection,\n PackageSection,\n BoundServicesSection,\n EnvironmentVariablesSection,\n ],\n CloneServerGroupModal: CloudFoundryCreateServerGroupModal,\n commandBuilder: CloudFoundryServerGroupCommandBuilderShim,\n scalingActivitiesEnabled: false, // FIXME enable?\n },\n instance: {\n details: CloudFoundryInstanceDetails,\n },\n});\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface ICloudFoundryProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n };\n}\n\nexport const CloudFoundryProviderSettings: ICloudFoundryProviderSettings = (SETTINGS.providers\n .cloudfoundry as ICloudFoundryProviderSettings) || { defaults: {} };\nif (CloudFoundryProviderSettings) {\n CloudFoundryProviderSettings.resetToOriginal = SETTINGS.resetProvider('cloudfoundry');\n}\n"],"names":["__decorateClass","observableFrom","AdditionalRollingRedBlackFields"],"mappings":"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"}