@spinnaker/oracle 2025.0.5 → 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.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ILoadBalancer, ILoadBalancerDeleteCommand, ILoadBalancerUpsertCommand, ISubnet } from '@spinnaker/core';
|
|
2
|
-
export
|
|
2
|
+
export type ListenerProtocol = 'HTTP' | 'HTTPS' | 'TCP' | 'SSL';
|
|
3
3
|
export declare enum LoadBalancingPolicy {
|
|
4
4
|
ROUND_ROBIN = "ROUND_ROBIN",
|
|
5
5
|
IP_HASH = "IP_HASH",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/helpContents/oracleHelpContents.ts","../src/image/image.reader.js","../src/instance/details/instance.details.controller.js","../src/domain/IOracleLoadBalancer.ts","../src/oracle.settings.ts","../src/loadBalancer/loadBalancer.transformer.ts","../src/loadBalancer/configure/createLoadBalancer.controller.ts","../src/loadBalancer/details/loadBalancerDetail.controller.ts","../src/pipeline/stages/bake/bakeExecutionDetails.controller.js","../src/pipeline/stages/bake/ociBakeStage.js","../src/pipeline/stages/destroyAsg/destroyAsgStage.js","../src/pipeline/stages/disableAsg/disableAsgStage.js","../src/pipeline/stages/findAmi/findAmiStage.js","../src/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.js","../src/pipeline/stages/resizeAsg/resizeAsgStage.js","../src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.js","../src/pipeline/stages/shrinkCluster/shrinkClusterStage.js","../src/securityGroup/configure/createSecurityGroup.controller.js","../src/securityGroup/securityGroup.reader.js","../src/securityGroup/securityGroup.transformer.js","../src/serverGroup/configure/serverGroupConfiguration.service.js","../src/serverGroup/configure/wizard/basicSettings/basicSettings.controller.js","../src/serverGroup/configure/wizard/capacity/capacitySelector.component.js","../src/serverGroup/configure/serverGroup.configure.module.js","../src/serverGroup/configure/serverGroupCommandBuilder.service.js","../src/serverGroup/configure/wizard/cloneServerGroup.controller.js","../src/common/footer.component.js","../src/serverGroup/details/resize/resizeCapacity.component.js","../src/serverGroup/details/resize/resizeServerGroup.controller.js","../src/serverGroup/details/rollback/rollbackServerGroup.controller.js","../src/serverGroup/details/serverGroupDetails.controller.js","../src/serverGroup/serverGroup.transformer.js","../src/oracle.module.ts"],"sourcesContent":["import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents = [\n {\n key: 'oracle.serverGroup.stack',\n value: '(Optional) <b>Stack</b> Stack name',\n },\n {\n key: 'oracle.serverGroup.detail',\n value: '(Optional) <b>Detail</b> is a naming component to help distinguish specifics of the server group.',\n },\n {\n key: 'oracle.pipeline.config.bake.baseOsOption',\n value: '<p>The base image from which the image will be created.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.image_name',\n value: '<p>The base name of the image that will be created.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.package',\n value:\n '<p>The name of the package you want installed (without any version identifiers).</p>' +\n '<p>If there are multiple packages (space separated), then they will be installed in the order they are entered.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.upgrade',\n value:\n '<p>Perform a package manager upgrade before proceeding with the package installation.</p>' +\n '<p>For example: <i>yum update</i>.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.regions',\n value:\n '<p>The region in which the new image will be created.</p>' +\n '<p>NB: <i>Currently baked images are restricted to a single region</i>.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.user',\n value: '<p>The name of Oracle <i>user</i> that will be used during the baking process.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.account_name',\n value: '<p>The name of Oracle <i>account</i> that will be used during the baking process.</p>',\n },\n {\n key: 'oracle.serverGroup.sshAuthorizedKeys',\n value: '<p>The public SSH key for the default user on the instance.</p>',\n },\n];\n\nhelpContents.forEach((entry) => HelpContentsRegistry.register(entry.key, entry.value));\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { REST } from '@spinnaker/core';\n\nexport const ORACLE_IMAGE_IMAGE_READER = 'spinnaker.oracle.image.reader';\nexport const name = ORACLE_IMAGE_IMAGE_READER; // for backwards compatibility\nmodule(ORACLE_IMAGE_IMAGE_READER, []).factory('oracleImageReader', function () {\n function findImages(params) {\n return REST('/images/find')\n .query(params)\n .get()\n .catch(function () {\n return [];\n });\n }\n\n function getImage(imageId, region, credentials) {\n return REST('/images')\n .path(credentials, region, imageId)\n .query({ provider: 'oracle' })\n .get()\n .then(\n function (results) {\n return results && results.length ? results[0] : null;\n },\n function () {\n return null;\n },\n );\n }\n\n return {\n findImages,\n getImage,\n };\n});\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { InstanceReader } from '@spinnaker/core';\n\nexport const ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER = 'spinnaker.oracle.instance.details.controller';\nexport const name = ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'oracleInstanceDetailsCtrl',\n [\n '$scope',\n '$q',\n 'app',\n 'instance',\n function ($scope, $q, app, instance) {\n $scope.application = app;\n\n const initialize = app.isStandalone\n ? retrieveInstance()\n : $q.all([app.serverGroups.ready()]).then(retrieveInstance);\n\n initialize.then(() => {\n if (!$scope.$$destroyed && !app.isStandalone) {\n app.serverGroups.onRefresh($scope, retrieveInstance);\n }\n });\n\n function retrieveInstance() {\n let instanceSummary, account, region;\n if (!$scope.application.serverGroups) {\n instanceSummary = {};\n account = instance.account;\n region = instance.region;\n } else {\n $scope.application.serverGroups.data.some((serverGroup) => {\n return serverGroup.instances.some((possibleInstance) => {\n if (possibleInstance.id === instance.instanceId || possibleInstance.name === instance.instanceId) {\n instanceSummary = possibleInstance;\n account = serverGroup.account;\n region = serverGroup.region;\n return true;\n }\n });\n });\n }\n\n $scope.instance = instanceSummary;\n InstanceReader.getInstanceDetails(account, region, instance.instanceId).then((instanceDetails) => {\n Object.assign($scope.instance, instanceDetails);\n });\n }\n },\n ],\n);\n","import type { ILoadBalancer, ILoadBalancerDeleteCommand, ILoadBalancerUpsertCommand, ISubnet } from '@spinnaker/core';\n\nexport type ListenerProtocol = 'HTTP' | 'HTTPS' | 'TCP' | 'SSL';\nexport enum LoadBalancingPolicy {\n ROUND_ROBIN = 'ROUND_ROBIN',\n IP_HASH = 'IP_HASH',\n LEAST_CONNECTIONS = 'LEAST_CONNECTIONS',\n}\n\nexport interface IOracleSubnet extends ISubnet {\n id: string;\n name: string;\n availabilityDomain: string;\n securityListIds: string[];\n vcnId: string;\n}\n\nexport interface IOracleLoadBalancer extends ILoadBalancer {\n shape: string; // required\n isPrivate: boolean; // required\n subnets: IOracleSubnet[]; // required 1 for private LB, 2 for public LB\n certificates?: { [name: string]: IOracleListenerCertificate };\n listeners?: { [name: string]: IOracleListener }; // not required to create LB, but useless without it\n hostnames?: IOracleHostname[];\n backendSets?: { [name: string]: IOracleBackEndSet }; // not required to create LB, but useless without it\n freeformTags?: { [tagName: string]: string };\n id?: string; // not required to create LB\n subnetTypeMap?: { [id: string]: 'AD' | 'Regional' };\n // TODO support path route sets\n}\n\n// This is created from loadBalancer/loadBalancer.states.ts\nexport interface ILoadBalancerDetails {\n name: string;\n accountId: string;\n region: string;\n vpcId: string;\n}\n\nexport interface IOracleListener {\n name: string;\n protocol: ListenerProtocol;\n port: number;\n defaultBackendSetName: string;\n isSsl: boolean;\n sslConfiguration?: IOracleListenerSSLConfiguration;\n hostnames?: IOracleHostname[];\n // TODO support pathRouteSets\n}\n\nexport interface IOracleListenerSSLConfiguration {\n certificateName: string;\n verifyDepth: number;\n verifyPeerCertificates: boolean;\n}\n\nexport interface IOracleHostname {\n name: string;\n hostname: string;\n}\n\nexport interface IOracleBackEndSet {\n name: string;\n policy: LoadBalancingPolicy;\n healthChecker: IOracleBackendSetHealthCheck;\n // TODO desagar sessionPersistenceConfiguration?: IOracleLoadBalancerSessionPersistenceConfiguration;\n backends: any[];\n isNew: boolean;\n}\n\nexport interface IOracleListenerCertificate {\n certificateName: string;\n publicCertificate: string;\n caCertificate: string;\n privateKey: string;\n passphrase: string;\n isNew: boolean;\n}\n\nexport interface IOracleBackendSetHealthCheck {\n urlPath: string; // required\n protocol: 'HTTP' | 'TCP';\n port: number;\n intervalMillis?: number;\n timeoutMillis?: number;\n retries?: number;\n returnCode?: number;\n responseBodyRegex?: string;\n}\n\n/**\n * IOracleLoadBalancerUpsertCommand is nearly identical to IOracleLoadBalancer -\n * Command objects are the shape of data sent to gate.\n */\nexport interface IOracleLoadBalancerUpsertCommand extends ILoadBalancerUpsertCommand {\n shape: string; // required\n isPrivate: boolean; // required\n subnetIds: string[]; // required 1 for private LB, 2 for public LB\n certificates?: { [name: string]: IOracleListenerCertificate };\n listeners?: { [name: string]: IOracleListener }; // not required to create LB, but useless without it\n hostnames?: IOracleHostname[];\n backendSets?: { [name: string]: IOracleBackEndSet }; // not required to create LB, but useless without it\n freeformTags?: { [tagName: string]: string };\n vpcId: string;\n subnetTypeMap?: { [id: string]: 'AD' | 'Regional' };\n}\n\nexport interface IOracleLoadBalancerDeleteCommand extends ILoadBalancerDeleteCommand {\n loadBalancerId: string;\n}\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface IOracleProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n region?: string;\n };\n}\n\nexport const OracleProviderSettings: IOracleProviderSettings = (SETTINGS.providers\n .oracle as IOracleProviderSettings) || { defaults: {} };\nif (OracleProviderSettings) {\n OracleProviderSettings.resetToOriginal = SETTINGS.resetProvider('oracle');\n}\n\nexport const OracleDefaultProviderSettings = {\n defaults: { account: 'DEFAULT', bakeryRegions: 'us-phoenix-1', region: 'us-phoenix-1' },\n};\n","import { module } from 'angular';\nimport { $q } from 'ngimport';\n\nimport type { Application } from '@spinnaker/core';\nimport type {\n IOracleBackEndSet,\n IOracleListener,\n IOracleListenerCertificate,\n IOracleListenerSSLConfiguration,\n IOracleLoadBalancer,\n IOracleLoadBalancerUpsertCommand,\n} from '../domain/IOracleLoadBalancer';\nimport { LoadBalancingPolicy } from '../domain/IOracleLoadBalancer';\nimport { OracleProviderSettings } from '../oracle.settings';\nimport { OracleDefaultProviderSettings } from '../oracle.settings';\n\nexport class OracleLoadBalancerTransformer {\n public normalizeLoadBalancer(loadBalancer: IOracleLoadBalancer): PromiseLike<IOracleLoadBalancer> {\n /*loadBalancer.serverGroups.forEach(function(serverGroup) {\n serverGroup.account = loadBalancer.account;\n serverGroup.region = loadBalancer.region;\n\n if (serverGroup.detachedInstances) {\n serverGroup.detachedInstances = serverGroup.detachedInstances.map(function(instanceId) {\n return { id: instanceId };\n });\n serverGroup.instances = serverGroup.instances.concat(serverGroup.detachedInstances);\n } else {\n serverGroup.detachedInstances = [];\n }\n });\n var activeServerGroups = _.filter(loadBalancer.serverGroups, { isDisabled: false });\n loadBalancer.provider = loadBalancer.type;\n loadBalancer.instances = _.chain(activeServerGroups)\n .map('instances')\n .flatten()\n .value();\n loadBalancer.detachedInstances = _.chain(activeServerGroups)\n .map('detachedInstances')\n .flatten()\n .value();*/\n return $q.resolve(loadBalancer);\n }\n\n public convertLoadBalancerForEditing(loadBalancer: IOracleLoadBalancer): IOracleLoadBalancerUpsertCommand {\n if (loadBalancer.listeners) {\n Object.keys(loadBalancer.listeners).forEach((key) => {\n const lis = loadBalancer.listeners[key];\n lis.isSsl = !!lis.sslConfiguration; // use !! operator to get truthiness value\n });\n }\n const toEdit: IOracleLoadBalancerUpsertCommand = {\n name: loadBalancer.name,\n cloudProvider: loadBalancer.cloudProvider,\n credentials: loadBalancer.account,\n region: loadBalancer.region,\n shape: loadBalancer.shape,\n isPrivate: loadBalancer.isPrivate,\n subnetIds: loadBalancer.subnets.map((subnet) => subnet.id),\n certificates: loadBalancer.certificates,\n listeners: loadBalancer.listeners,\n hostnames: loadBalancer.hostnames,\n backendSets: loadBalancer.backendSets,\n freeformTags: loadBalancer.freeformTags,\n loadBalancerType: loadBalancer.type,\n securityGroups: loadBalancer.securityGroups,\n vpcId: loadBalancer.vpcId,\n subnetTypeMap: loadBalancer.subnetTypeMap,\n };\n return toEdit;\n }\n\n public constructNewLoadBalancerTemplate(application: Application): IOracleLoadBalancerUpsertCommand {\n const defaultCredentials =\n application.defaultCredentials.oracle ||\n (OracleProviderSettings.defaults\n ? OracleProviderSettings.defaults.account\n : OracleDefaultProviderSettings.defaults.account);\n const defaultRegion =\n application.defaultRegions.oracle ||\n (OracleProviderSettings.defaults\n ? OracleProviderSettings.defaults.region\n : OracleDefaultProviderSettings.defaults.region);\n return {\n name: undefined,\n cloudProvider: 'oracle',\n credentials: defaultCredentials,\n region: defaultRegion,\n shape: null,\n isPrivate: false,\n subnetIds: [],\n listeners: {},\n hostnames: [],\n backendSets: {},\n freeformTags: {},\n loadBalancerType: null,\n securityGroups: [],\n vpcId: null,\n subnetTypeMap: {},\n };\n }\n\n public constructNewListenerTemplate(): IOracleListener {\n return {\n name: 'HTTP_80',\n port: 80,\n protocol: 'HTTP',\n defaultBackendSetName: undefined,\n isSsl: false,\n };\n }\n\n public constructNewBackendSetTemplate(name: string): IOracleBackEndSet {\n return {\n name: name,\n policy: LoadBalancingPolicy.ROUND_ROBIN,\n healthChecker: { protocol: 'HTTP', port: 80, urlPath: '/' },\n backends: [],\n isNew: true,\n };\n }\n\n public constructNewSSLConfiguration(): IOracleListenerSSLConfiguration {\n return {\n certificateName: '',\n verifyDepth: 0,\n verifyPeerCertificates: false,\n };\n }\n\n public constructNewCertificateTemplate(name: string): IOracleListenerCertificate {\n return {\n certificateName: name,\n publicCertificate: undefined,\n caCertificate: undefined,\n privateKey: undefined,\n passphrase: undefined,\n isNew: true,\n };\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_TRANSFORMER = 'spinnaker.oracle.loadBalancer.transformer';\nmodule(ORACLE_LOAD_BALANCER_TRANSFORMER, []).service('oracleLoadBalancerTransformer', OracleLoadBalancerTransformer);\n","import type { StateService } from '@uirouter/angularjs';\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport type { IController } from 'angular';\nimport { module } from 'angular';\nimport type { IModalServiceInstance } from 'angular-ui-bootstrap';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\nimport { cloneDeep, trimEnd } from 'lodash';\n\nimport type { Application, IAccountDetails, ILoadBalancer, INetwork, IRegion, ISubnet } from '@spinnaker/core';\nimport {\n AccountService,\n LoadBalancerWriter,\n NameUtils,\n NetworkReader,\n SubnetReader,\n TaskMonitor,\n} from '@spinnaker/core';\nimport type {\n IOracleBackEndSet,\n IOracleListener,\n IOracleListenerCertificate,\n IOracleLoadBalancer,\n IOracleSubnet,\n} from '../../domain/IOracleLoadBalancer';\nimport { LoadBalancingPolicy } from '../../domain/IOracleLoadBalancer';\n\nimport type { OracleLoadBalancerTransformer } from '../loadBalancer.transformer';\nimport { ORACLE_LOAD_BALANCER_TRANSFORMER } from '../loadBalancer.transformer';\n\nexport class OracleLoadBalancerController implements IController {\n public oracle = 'oracle';\n public shapes: string[] = ['100Mbps', '400Mbps', '8000Mbps']; // TODO desagar use listShapes to get this from clouddriver later\n public loadBalancingPolicies: string[] = Object.keys(LoadBalancingPolicy).map((k) => (LoadBalancingPolicy as any)[k]);\n public pages: { [key: string]: any } = {\n properties: require('./createLoadBalancerProperties.html'),\n listeners: require('./listeners.html'),\n backendSets: require('./backendSets.html'),\n certificates: require('./certificates.html'),\n };\n\n public state: { [key: string]: boolean } = {\n accountsLoaded: false,\n submitting: false,\n };\n\n public allVnets: INetwork[];\n public allSubnets: IOracleSubnet[];\n public filteredVnets: INetwork[];\n public filteredSubnets: ISubnet[];\n public filteredSubnetsByType: ISubnet[];\n public selectedVnet: INetwork;\n public selectedSubnets: IOracleSubnet[];\n public numSubnetsAllowed = 1;\n public listeners: IOracleListener[] = [];\n public backendSets: IOracleBackEndSet[] = [];\n public certificates: IOracleListenerCertificate[] = [];\n\n public static $inject = [\n '$scope',\n '$uibModalInstance',\n '$state',\n 'oracleLoadBalancerTransformer',\n 'application',\n 'loadBalancer',\n 'isNew',\n ];\n constructor(\n private $scope: ng.IScope,\n private $uibModalInstance: IModalServiceInstance,\n private $state: StateService,\n private oracleLoadBalancerTransformer: OracleLoadBalancerTransformer,\n private application: Application,\n private loadBalancer: IOracleLoadBalancer,\n private isNew: boolean,\n ) {\n this.initializeController();\n }\n\n public onApplicationRefresh() {\n // If the user has already closed the modal, do not navigate to the new details view\n if (this.$scope.$$destroyed) {\n return;\n }\n this.$uibModalInstance.close();\n const newStateParams = {\n name: this.loadBalancer.name,\n accountId: this.loadBalancer.account,\n region: this.loadBalancer.region,\n provider: 'oracle',\n };\n\n if (!this.$state.includes('**.loadBalancerDetails')) {\n this.$state.go('.loadBalancerDetails', newStateParams);\n } else {\n this.$state.go('^.loadBalancerDetails', newStateParams);\n }\n }\n\n public onTaskComplete() {\n this.application.loadBalancers.refresh();\n this.application.loadBalancers.onNextRefresh(this.$scope, this.onApplicationRefresh);\n }\n\n public initializeCreateMode() {\n AccountService.listAccounts(this.oracle).then((accounts: IAccountDetails[]) => {\n this.$scope.accounts = accounts; // TODO desagar does this need to be in $scope?\n this.state.accountsLoaded = true;\n this.$scope.state = this.state;\n this.accountUpdated();\n });\n this.loadVnets();\n this.loadSubnets();\n }\n\n private initControllerFromLoadBalancerCmd() {\n this.numSubnetsAllowed = this.calcNumSubnetsAllowed();\n if (this.$scope.loadBalancerCmd.listeners) {\n Object.keys(this.$scope.loadBalancerCmd.listeners).forEach((lis) => {\n this.listeners.push(this.$scope.loadBalancerCmd.listeners[lis]);\n });\n }\n if (this.$scope.loadBalancerCmd.backendSets) {\n Object.keys(this.$scope.loadBalancerCmd.backendSets).forEach((b) => {\n this.backendSets.push(this.$scope.loadBalancerCmd.backendSets[b]);\n });\n }\n if (this.$scope.loadBalancerCmd.certificates) {\n Object.keys(this.$scope.loadBalancerCmd.certificates).forEach((b) => {\n this.certificates.push(this.$scope.loadBalancerCmd.certificates[b]);\n });\n }\n }\n\n public initializeController() {\n if (this.loadBalancer) {\n this.$scope.loadBalancerCmd = this.oracleLoadBalancerTransformer.convertLoadBalancerForEditing(this.loadBalancer);\n this.initControllerFromLoadBalancerCmd();\n if (this.isNew) {\n const nameParts = NameUtils.parseLoadBalancerName(this.loadBalancer.name);\n this.$scope.loadBalancerCmd.stack = nameParts.stack;\n this.$scope.loadBalancerCmd.detail = nameParts.freeFormDetails;\n delete this.$scope.loadBalancerCmd.name;\n }\n } else {\n this.$scope.loadBalancerCmd = this.oracleLoadBalancerTransformer.constructNewLoadBalancerTemplate(\n this.application,\n );\n }\n this.$scope.prevBackendSetNames = [];\n this.$scope.prevCertNames = [];\n if (this.isNew) {\n this.updateName();\n this.updateLoadBalancerNames();\n this.initializeCreateMode();\n }\n this.$scope.taskMonitor = new TaskMonitor({\n application: this.application,\n title: (this.isNew ? 'Creating ' : 'Updating ') + 'your load balancer',\n modalInstance: this.$uibModalInstance,\n onTaskComplete: this.onTaskComplete,\n });\n }\n\n public updateLoadBalancerNames() {\n const account = this.$scope.loadBalancerCmd.credentials;\n const region = this.$scope.loadBalancerCmd.region;\n\n const accountLoadBalancerNamesByRegion: { [key: string]: string[] } = {};\n this.application\n .getDataSource('loadBalancers')\n .refresh(true)\n .then(() => {\n const loadBalancers: ILoadBalancer[] = this.application.loadBalancers.data;\n loadBalancers.forEach((loadBalancer) => {\n if (loadBalancer.account === account) {\n accountLoadBalancerNamesByRegion[loadBalancer.region] =\n accountLoadBalancerNamesByRegion[loadBalancer.region] || [];\n accountLoadBalancerNamesByRegion[loadBalancer.region].push(loadBalancer.name);\n }\n });\n\n this.$scope.existingLoadBalancerNames = accountLoadBalancerNamesByRegion[region] || [];\n });\n }\n\n public validateBeforeSubmit() {\n return this.propertiesValid() && this.listenersValid();\n }\n\n /**\n * Used to prevent form submission if listeners are invalid\n * Currently it calls the two validations applicable to listeners.\n * @returns {boolean}\n */\n public listenersValid() {\n return this.listenersUniqueProtocolPort() && this.listenersBackendSetsExist() && this.listenersCertificatesExist();\n }\n\n /**\n * Used to prevent form submission if the properties section is invalid\n * Current the only validation is for subnet count.\n */\n public propertiesValid() {\n return this.selectedSubnets && this.selectedSubnets.length === this.calcNumSubnetsAllowed();\n }\n\n public listenersUniqueProtocolPort() {\n // validate that listeners have unique protocol/port combination\n const countsMap: { [key: string]: number } = {};\n this.listeners.reduce((counts, listener) => {\n const protocolPort = listener.protocol + '_' + listener.port;\n counts[protocolPort] = counts[protocolPort] ? counts[protocolPort] + 1 : 1;\n return counts;\n }, countsMap);\n // There should be no protocol/port combo in the countsMap with a count > 1\n return (\n Object.keys(countsMap).filter((key) => {\n return countsMap[key] > 1;\n }).length === 0\n );\n }\n\n public listenersBackendSetsExist() {\n // validate that the listeners' selected backend sets must exist. This is needed because Angular\n // does not clear the selected backendSet from the drop down if the backend set is deleted.\n const listenersWithNonExistentBackendSet: IOracleListener[] = this.listeners.filter(\n (listener) => !this.backendSets.find((backendSet) => backendSet.name === listener.defaultBackendSetName),\n );\n return listenersWithNonExistentBackendSet.length === 0;\n }\n\n public listenersCertificatesExist() {\n // validate that the listeners' selected certificate names exist. This is needed because Angular\n // does not clear the selected certificate from the drop down if the certificate is deleted.\n const listenersWithNonExistentCertificate: IOracleListener[] = this.listeners.filter(\n (listener) =>\n listener.sslConfiguration &&\n !this.certificates.find((cert) => cert.certificateName === listener.sslConfiguration.certificateName),\n );\n return listenersWithNonExistentCertificate.length === 0;\n }\n\n public updateName() {\n this.$scope.loadBalancerCmd.name = this.getName();\n }\n\n public getName() {\n const lb = this.$scope.loadBalancerCmd;\n const lbName = [this.application.name, lb.stack || '', lb.detail || ''].join('-');\n return trimEnd(lbName, '-');\n }\n\n public accountUpdated() {\n this.loadRegionsForAccount();\n }\n\n public regionUpdated() {\n this.updateLoadBalancerNames();\n this.updateVnets();\n }\n\n public loadRegionsForAccount() {\n AccountService.getRegionsForAccount(this.$scope.loadBalancerCmd.credentials).then((regions: IRegion[]) => {\n this.$scope.regions = regions; // TODO desagar does this need to be in $scope?\n if (regions.length === 1) {\n this.$scope.loadBalancerCmd.region = regions[0].name;\n this.regionUpdated();\n }\n });\n }\n\n public loadVnets() {\n NetworkReader.listNetworksByProvider(this.oracle).then((vnets: INetwork[]) => {\n this.allVnets = vnets || [];\n if (this.$scope.loadBalancerCmd.region) {\n this.updateVnets();\n }\n });\n }\n\n public loadSubnets() {\n SubnetReader.listSubnetsByProvider(this.oracle).then((subnets: IOracleSubnet[]) => {\n this.allSubnets = subnets || [];\n });\n }\n\n public updateVnets() {\n const account = this.$scope.loadBalancerCmd.credentials;\n const region = this.$scope.loadBalancerCmd.region;\n this.filteredVnets = this.allVnets.filter((vnet: INetwork) => {\n return vnet.account === account && vnet.region === region;\n });\n }\n\n public updateSubnets(network: INetwork) {\n this.selectedSubnets = [];\n this.$scope.loadBalancerCmd.subnetIds = [];\n this.filteredSubnets = this.allSubnets.filter((subnet: IOracleSubnet) => {\n return subnet.vcnId === network.id;\n });\n this.filteredSubnetsByType = cloneDeep(this.filteredSubnets);\n }\n\n public selectedVnetChanged(network: INetwork) {\n this.selectedVnet = network;\n this.$scope.loadBalancerCmd.vpcId = network.id;\n this.updateSubnets(network);\n }\n\n public selectedSubnetsChanged(selectedSubnet: IOracleSubnet) {\n if (selectedSubnet.availabilityDomain) {\n this.filteredSubnetsByType = this.filteredSubnets.filter((subnet: IOracleSubnet) => {\n return !!subnet.availabilityDomain;\n });\n } else {\n this.filteredSubnetsByType = [];\n }\n }\n\n public selectedSubnetRemoved() {\n if (this.selectedSubnets.length === 0) {\n this.filteredSubnetsByType = cloneDeep(this.filteredSubnets);\n }\n if (this.selectedSubnets.length === 1 && this.selectedSubnets[0].availabilityDomain) {\n this.filteredSubnetsByType = this.filteredSubnets.filter((subnet: IOracleSubnet) => {\n return !!subnet.availabilityDomain;\n });\n }\n }\n\n public isPrivateChanged() {\n this.numSubnetsAllowed = this.calcNumSubnetsAllowed();\n }\n\n public listenerIsSslChanged(listener: IOracleListener) {\n if (listener.isSsl) {\n listener.sslConfiguration = this.oracleLoadBalancerTransformer.constructNewSSLConfiguration();\n } else {\n listener.sslConfiguration = undefined;\n }\n }\n\n public calcNumSubnetsAllowed() {\n if (this.$scope.loadBalancerCmd.isPrivate) {\n return 1;\n }\n\n if (this.selectedSubnets && this.selectedSubnets.length === 1 && !this.selectedSubnets[0].availabilityDomain) {\n return 1;\n }\n\n return 2;\n }\n\n public getSubnetLimit() {}\n\n public removeListener(idx: number) {\n this.listeners.splice(idx, 1);\n }\n\n public addListener() {\n this.listeners.push(this.oracleLoadBalancerTransformer.constructNewListenerTemplate());\n }\n\n public removeBackendSet(idx: number) {\n const backendSet = this.backendSets[idx];\n this.backendSets.splice(idx, 1);\n this.$scope.prevBackendSetNames.splice(idx, 1);\n // Also clear the defaultBackendSetName field of any listeners who are using this backendSet\n this.listeners.forEach((lis) => {\n if (lis.defaultBackendSetName === backendSet.name) {\n lis.defaultBackendSetName = undefined;\n }\n });\n }\n\n public isBackendSetRemovable(idx: number): boolean {\n const backendSet = this.backendSets[idx];\n if (backendSet && backendSet.backends && backendSet.backends.length > 0) {\n return false;\n }\n let hasListener = false;\n this.listeners.forEach((lis) => {\n if (lis.defaultBackendSetName === backendSet.name) {\n hasListener = true;\n }\n });\n return !hasListener;\n }\n\n public addBackendSet() {\n const nameSuffix: number = this.backendSets.length + 1;\n const name: string = 'backendSet' + nameSuffix;\n this.$scope.prevBackendSetNames.push(name);\n this.backendSets.push(this.oracleLoadBalancerTransformer.constructNewBackendSetTemplate(name));\n }\n\n public backendSetNameChanged(idx: number) {\n const prevName = this.$scope.prevBackendSetNames && this.$scope.prevBackendSetNames[idx];\n if (prevName && prevName !== this.backendSets[idx].name) {\n this.listeners\n .filter((lis) => lis.defaultBackendSetName === prevName)\n .forEach((lis) => {\n lis.defaultBackendSetName = this.backendSets[idx].name;\n });\n }\n }\n\n public isCertRemovable(idx: number): boolean {\n const cert = this.certificates[idx];\n let hasListener = false;\n this.listeners.forEach((lis) => {\n if (lis.isSsl && lis.sslConfiguration && lis.sslConfiguration.certificateName === cert.certificateName) {\n hasListener = true;\n }\n });\n return !hasListener;\n }\n\n public removeCert(idx: number) {\n const cert = this.certificates[idx];\n this.certificates.splice(idx, 1);\n this.$scope.prevCertNames.splice(idx, 1);\n // Also clear the certificateName field of any listeners who are using this certificate\n this.listeners.forEach((lis) => {\n if (lis.sslConfiguration && lis.sslConfiguration.certificateName === cert.certificateName) {\n lis.sslConfiguration.certificateName = undefined;\n }\n });\n }\n\n public addCert() {\n const nameSuffix: number = this.certificates.length + 1;\n const name: string = 'certificate' + nameSuffix;\n this.$scope.prevCertNames.push(name);\n this.certificates.push(this.oracleLoadBalancerTransformer.constructNewCertificateTemplate(name));\n }\n\n public certNameChanged(idx: number) {\n const prevName = this.$scope.prevCertNames && this.$scope.prevCertNames[idx];\n if (prevName && prevName !== this.certificates[idx].certificateName) {\n this.listeners\n .filter((lis) => lis.sslConfiguration && lis.sslConfiguration.certificateName === prevName)\n .forEach((lis) => {\n lis.sslConfiguration.certificateName = this.certificates[idx].certificateName;\n });\n }\n }\n\n public submit() {\n const descriptor = this.isNew ? 'Create' : 'Update';\n\n this.$scope.taskMonitor.submit(() => {\n const params = {\n cloudProvider: 'oracle',\n application: this.application.name,\n clusterName: this.$scope.loadBalancerCmd.clusterName,\n resourceGroupName: this.$scope.loadBalancerCmd.clusterName,\n loadBalancerName: this.$scope.loadBalancerCmd.name,\n loadBalancerId: null as string,\n };\n if (this.loadBalancer && this.loadBalancer.id) {\n params.loadBalancerId = this.loadBalancer.id;\n }\n\n if (this.selectedVnet) {\n this.$scope.loadBalancerCmd.vpcId = this.selectedVnet.id;\n }\n\n if (this.selectedSubnets && this.selectedSubnets.length > 0) {\n this.$scope.loadBalancerCmd.subnetIds = this.selectedSubnets.map((subnet: IOracleSubnet) => {\n return subnet.id;\n });\n\n for (const subnet of this.selectedSubnets) {\n if (!this.$scope.loadBalancerCmd.subnetTypeMap) {\n this.$scope.loadBalancerCmd.subnetTypeMap = {\n [subnet.id]: !subnet.availabilityDomain ? 'Regional' : 'AD',\n };\n } else {\n this.$scope.loadBalancerCmd.subnetTypeMap[subnet.id] = !subnet.availabilityDomain ? 'Regional' : 'AD';\n }\n }\n }\n\n if (this.backendSets) {\n this.$scope.loadBalancerCmd.backendSets = this.backendSets.reduce(\n (backendSetsMap: { [name: string]: IOracleBackEndSet }, backendSet: IOracleBackEndSet) => {\n backendSetsMap[backendSet.name] = backendSet;\n return backendSetsMap;\n },\n {},\n );\n }\n\n if (this.listeners) {\n this.$scope.loadBalancerCmd.listeners = this.listeners.reduce(\n (listenersMap: { [name: string]: IOracleListener }, listener: IOracleListener) => {\n listener.name = listener.protocol + '_' + listener.port;\n listenersMap[listener.name] = listener;\n return listenersMap;\n },\n {},\n );\n }\n\n if (this.certificates) {\n this.$scope.loadBalancerCmd.certificates = this.certificates.reduce(\n (certMap: { [name: string]: IOracleListenerCertificate }, cert: IOracleListenerCertificate) => {\n certMap[cert.certificateName] = cert;\n if (!cert.isNew) {\n // existing certificate sends only the name\n certMap[cert.certificateName].publicCertificate = null;\n }\n return certMap;\n },\n {},\n );\n }\n\n this.$scope.loadBalancerCmd.type = 'upsertLoadBalancer';\n if (!this.$scope.loadBalancerCmd.vnet && !this.$scope.loadBalancerCmd.subnetType) {\n this.$scope.loadBalancerCmd.securityGroups = null;\n }\n\n return LoadBalancerWriter.upsertLoadBalancer(this.$scope.loadBalancerCmd, this.application, descriptor, params);\n });\n }\n\n public cancel() {\n this.$uibModalInstance.dismiss();\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_CREATE_CONTROLLER = 'spinnaker.oracle.loadBalancer.create.controller';\nmodule(ORACLE_LOAD_BALANCER_CREATE_CONTROLLER, [\n ANGULAR_UI_BOOTSTRAP as any,\n UIROUTER_ANGULARJS,\n ORACLE_LOAD_BALANCER_TRANSFORMER,\n]).controller('oracleCreateLoadBalancerCtrl', OracleLoadBalancerController);\n","import type { StateService } from '@uirouter/angularjs';\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport type { IController } from 'angular';\nimport angular, { module } from 'angular';\nimport type { IModalService } from 'angular-ui-bootstrap';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\nimport { sortBy } from 'lodash';\n\nimport type { Application, ISecurityGroup, LoadBalancerReader, SecurityGroupReader } from '@spinnaker/core';\nimport { ConfirmationModalService, FirewallLabels, LoadBalancerWriter } from '@spinnaker/core';\n\nimport { OracleLoadBalancerController } from '../configure/createLoadBalancer.controller';\nimport type { ILoadBalancerDetails, IOracleLoadBalancer } from '../../domain/IOracleLoadBalancer';\n\nexport class OracleLoadBalancerDetailController implements IController {\n public static $inject = [\n '$scope',\n '$state',\n '$uibModal',\n 'loadBalancer',\n 'app',\n 'securityGroupReader',\n 'loadBalancerReader',\n '$q',\n ];\n constructor(\n private $scope: ng.IScope,\n private $state: StateService,\n private $uibModal: IModalService,\n private loadBalancer: ILoadBalancerDetails,\n private app: Application,\n private securityGroupReader: SecurityGroupReader,\n private loadBalancerReader: LoadBalancerReader,\n private $q: angular.IQService,\n ) {\n $scope.state = {\n loading: true,\n };\n $scope.firewallsLabel = FirewallLabels.get('Firewalls');\n\n const extractLoadBalancer = (): PromiseLike<any> => {\n $scope.loadBalancer = app.loadBalancers.data.filter((test: IOracleLoadBalancer) => {\n return (\n test.name === loadBalancer.name &&\n test.region === loadBalancer.region &&\n test.account === loadBalancer.accountId\n );\n })[0];\n\n if ($scope.loadBalancer) {\n const detailsLoader = this.loadBalancerReader.getLoadBalancerDetails(\n $scope.loadBalancer.cloudProvider,\n loadBalancer.accountId,\n loadBalancer.region,\n loadBalancer.name,\n );\n\n return detailsLoader.then((details) => {\n // ILoadBalancerSourceData\n $scope.state.loading = false;\n const securityGroups: ISecurityGroup[] = [];\n\n const filtered = details.filter((test: IOracleLoadBalancer) => {\n return test.name === loadBalancer.name;\n });\n\n if (filtered.length) {\n $scope.loadBalancer.elb = filtered[0];\n\n $scope.loadBalancer.account = loadBalancer.accountId;\n\n if ($scope.loadBalancer.elb.securityGroups) {\n $scope.loadBalancer.elb.securityGroups.forEach((securityGroupId: string) => {\n const match = this.securityGroupReader.getApplicationSecurityGroup(\n this.app,\n loadBalancer.accountId,\n loadBalancer.region,\n securityGroupId,\n );\n if (match) {\n securityGroups.push(match);\n }\n });\n this.$scope.securityGroups = sortBy(securityGroups, 'name');\n }\n }\n });\n }\n if (!this.$scope.loadBalancer) {\n this.$state.go('^');\n }\n\n return this.$q.when(null);\n };\n\n this.app\n .ready()\n .then(extractLoadBalancer)\n .then(() => {\n // If the user navigates away from the view before the initial extractLoadBalancer call completes,\n // do not bother subscribing to the refresh\n if (!this.$scope.$$destroyed) {\n this.app.onRefresh($scope, extractLoadBalancer);\n }\n });\n }\n\n public editLoadBalancer() {\n this.$uibModal.open({\n templateUrl: require('../configure/editLoadBalancer.html'),\n controller: OracleLoadBalancerController,\n controllerAs: 'ctrl',\n size: 'lg',\n resolve: {\n application: () => {\n return this.app;\n },\n loadBalancer: () => {\n return angular.copy(this.$scope.loadBalancer);\n },\n isNew: () => {\n return false;\n },\n },\n });\n }\n\n public deleteLoadBalancer() {\n if (this.$scope.loadBalancer.instances && this.$scope.loadBalancer.instances.length) {\n return;\n }\n\n const taskMonitor = {\n application: this.app,\n title: 'Deleting ' + this.loadBalancer.name,\n };\n\n const command = {\n cloudProvider: 'oracle',\n loadBalancerName: this.$scope.loadBalancer.name,\n credentials: this.$scope.loadBalancer.account,\n region: this.loadBalancer.region,\n application: this.app.name,\n loadBalancerId: this.$scope.loadBalancer.id,\n };\n\n const submitMethod = () => LoadBalancerWriter.deleteLoadBalancer(command, this.app);\n\n ConfirmationModalService.confirm({\n header: 'Really delete ' + this.loadBalancer.name + '?',\n buttonText: 'Delete ' + this.loadBalancer.name,\n account: this.loadBalancer.accountId,\n taskMonitorConfig: taskMonitor,\n submitMethod: submitMethod,\n });\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER = 'spinnaker.oracle.loadBalancerDetail.controller';\nmodule(ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER, [UIROUTER_ANGULARJS, ANGULAR_UI_BOOTSTRAP as any]).controller(\n 'oracleLoadBalancerDetailCtrl',\n OracleLoadBalancerDetailController,\n);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { EXECUTION_DETAILS_SECTION_SERVICE, SETTINGS } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER =\n 'spinnaker.oracle.pipeline.stage.bake.executionDetails.controller';\nexport const name = ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER, [\n EXECUTION_DETAILS_SECTION_SERVICE,\n UIROUTER_ANGULARJS,\n]).controller('oracleBakeExecutionDetailsCtrl', [\n '$log',\n '$scope',\n '$stateParams',\n 'executionDetailsSectionService',\n '$interpolate',\n function ($log, $scope, $stateParams, executionDetailsSectionService, $interpolate) {\n $scope.configSections = ['bakeConfig', 'taskStatus'];\n\n const initialized = () => {\n $scope.detailsSection = $stateParams.details;\n $scope.provider = $scope.stage.context.cloudProviderType || 'oracle';\n $scope.roscoMode = SETTINGS.feature.roscoMode;\n $scope.bakeryDetailUrl = $interpolate(\n $scope.roscoMode && SETTINGS.roscoDetailUrl ? SETTINGS.roscoDetailUrl : SETTINGS.bakeryDetailUrl,\n );\n };\n\n const initialize = () => executionDetailsSectionService.synchronizeSection($scope.configSections, initialized);\n\n initialize();\n\n $scope.$on('$stateChangeSuccess', initialize);\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\nimport { size } from 'lodash';\n\nimport {\n AccountService,\n AuthenticationService,\n BakeExecutionLabel,\n BakeryReader,\n PipelineTemplates,\n Registry,\n} from '@spinnaker/core';\n\nimport { ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER } from './bakeExecutionDetails.controller';\n\nexport const ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE = 'spinnaker.oracle.pipeline.stage.bakeStage';\nexport const name = ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE, [ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'bake',\n cloudProvider: 'oracle',\n label: 'Bake',\n description: 'Bakes an image',\n templateUrl: require('./bakeStage.html'),\n executionDetailsUrl: require('./bakeExecutionDetails.html'),\n executionLabelComponent: BakeExecutionLabel,\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'accountName' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'baseOs' },\n { type: 'requiredField', fieldName: 'upgrade' },\n { type: 'requiredField', fieldName: 'cloudProviderType' },\n { type: 'requiredField', fieldName: 'amiName', fieldLabel: 'Image Name' },\n ],\n restartable: true,\n });\n })\n .controller('oracleBakeStageCtrl', [\n '$scope',\n '$q',\n '$uibModal',\n function ($scope, $q, $uibModal) {\n const provider = 'oracle';\n\n if (!$scope.stage.cloudProvider) {\n $scope.stage.cloudProvider = provider;\n }\n\n if (!$scope.stage) {\n $scope.stage = {};\n }\n\n $scope.stage.extendedAttributes = $scope.stage.extendedAttributes || {};\n\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n\n function initialize() {\n $scope.viewState.providerSelected = true;\n\n $q.all([BakeryReader.getBaseOsOptions(provider), AccountService.listAccounts(provider)]).then(\n ([baseOsOptions, accounts]) => {\n if (baseOsOptions.baseImages.length > 0) {\n $scope.baseOsOptions = baseOsOptions;\n if (!$scope.stage.baseOs) {\n $scope.stage.baseOs = $scope.baseOsOptions.baseImages[0].id;\n }\n }\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n if (!$scope.stage.upgrade) {\n $scope.stage.upgrade = true;\n }\n\n $scope.accounts = accounts;\n\n if ($scope.stage.accountName) {\n AccountService.getRegionsForAccount($scope.stage.accountName).then(function (regions) {\n if (Array.isArray(regions) && regions.length != 0) {\n // there is exactly one region per account\n $scope.stage.region = regions[0].name;\n }\n });\n }\n\n $scope.viewState.loading = false;\n },\n );\n }\n\n this.getBaseOsDescription = function (baseOsOption) {\n return baseOsOption.id + (baseOsOption.shortDescription ? ' (' + baseOsOption.shortDescription + ')' : '');\n };\n\n this.accountUpdated = function () {\n AccountService.getRegionsForAccount($scope.stage.accountName).then(function (regions) {\n if (Array.isArray(regions) && regions.length != 0) {\n // there is exactly one region per account\n $scope.stage.region = regions[0].name;\n }\n });\n };\n\n this.addExtendedAttribute = function () {\n if (!$scope.stage.extendedAttributes) {\n $scope.stage.extendedAttributes = {};\n }\n $uibModal\n .open({\n templateUrl: PipelineTemplates.addExtendedAttributes,\n controller: 'bakeStageAddExtendedAttributeController',\n controllerAs: 'addExtendedAttribute',\n resolve: {\n extendedAttribute: function () {\n return {\n key: '',\n value: '',\n };\n },\n },\n })\n .result.then(function (extendedAttribute) {\n $scope.stage.extendedAttributes[extendedAttribute.key] = extendedAttribute.value;\n })\n .catch(() => {});\n };\n\n this.removeExtendedAttribute = function (key) {\n delete $scope.stage.extendedAttributes[key];\n };\n\n this.showExtendedAttributes = function () {\n return (\n $scope.viewState.roscoMode || ($scope.stage.extendedAttributes && size($scope.stage.extendedAttributes) > 0)\n );\n };\n\n $scope.$watch('stage.accountName', $scope.accountUpdated);\n\n initialize();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE = 'spinnaker.oracle.pipeline.stage.destroyAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'destroyServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./destroyAsgStage.html'),\n executionStepLabelUrl: require('./destroyAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\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 })\n .controller('oracleDestroyAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n const provider = 'oracle';\n\n $scope.targets = StageConstants.TARGET_LIST;\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n init();\n\n function init() {\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (!stage.target) {\n stage.target = $scope.targets[0].val;\n }\n }\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE = 'spinnaker.oracle.pipeline.stage.disableAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'disableServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./disableAsgStage.html'),\n executionStepLabelUrl: require('./disableAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\n message:\n 'This pipeline will attempt to disable 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 })\n .controller('oracleDisableAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n\n const provider = 'oracle';\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n $scope.targets = StageConstants.TARGET_LIST;\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (!stage.target) {\n stage.target = $scope.targets[0].val;\n }\n },\n ]);\n","'use strict';\n\nimport * as angular from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE = 'spinnaker.oracle.pipeline.stage.findAmiStage';\nexport const name = ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE; // for backwards compatibility\nangular\n .module(ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'findImage',\n cloudProvider: 'oracle',\n templateUrl: require('./findAmiStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'selectionStrategy', fieldLabel: 'Server Group Selection' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials' },\n ],\n });\n })\n .controller('oracleFindAmiStageCtrl', [\n '$scope',\n ($scope) => {\n const provider = 'oracle';\n\n const stage = $scope.stage;\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n $scope.selectionStrategies = [\n {\n label: 'Largest',\n val: 'LARGEST',\n description: 'When multiple server groups exist, prefer the server group with the most instances',\n },\n {\n label: 'Newest',\n val: 'NEWEST',\n description: 'When multiple server groups exist, prefer the newest',\n },\n {\n label: 'Oldest',\n val: 'OLDEST',\n description: 'When multiple server groups exist, prefer the oldest',\n },\n {\n label: 'Fail',\n val: 'FAIL',\n description: 'When multiple server groups exist, fail',\n },\n ];\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n stage.selectionStrategy = stage.selectionStrategy || $scope.selectionStrategies[0].val;\n\n if (angular.isUndefined(stage.onlyEnabled)) {\n stage.onlyEnabled = true;\n }\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n $scope.$watch('stage.credentials', $scope.accountUpdated);\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { BakeryReader, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE =\n 'spinnaker.oracle.pipeline.stage.findImageFromTagsStage';\nexport const name = ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'findImageFromTags',\n cloudProvider: 'oracle',\n templateUrl: require('./findImageFromTagsStage.html'),\n executionDetailsUrl: require('./findImageFromTagsExecutionDetails.html'),\n executionConfigSections: ['findImageConfig', 'taskStatus'],\n validators: [\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'packageName' },\n ],\n });\n })\n .controller('oracleFindImageFromTagsStageCtrl', [\n '$scope',\n function ($scope) {\n $scope.stage.packageName = $scope.stage.packageName || '*';\n $scope.stage.tags = $scope.stage.tags || {};\n $scope.stage.regions = $scope.stage.regions || [];\n $scope.stage.cloudProvider = $scope.stage.cloudProvider || 'oracle';\n\n BakeryReader.getRegions('oracle').then(function (regions) {\n $scope.regions = regions;\n });\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE = 'spinnaker.oracle.pipeline.stage.resizeAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'resizeServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./resizeAsgStage.html'),\n executionStepLabelUrl: require('./resizeAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\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: 'action' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n });\n })\n .controller('oracleResizeAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const ctrl = this;\n\n const provider = 'oracle';\n\n const stage = $scope.stage;\n\n $scope.viewState = {\n accountsLoaded: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then(function (accounts) {\n $scope.accounts = accounts;\n $scope.viewState.accountsLoaded = true;\n });\n\n $scope.resizeTargets = StageConstants.TARGET_LIST;\n\n $scope.scaleActions = [\n { label: 'Scale Up', val: 'scale_up' },\n { label: 'Scale Down', val: 'scale_down' },\n { label: 'Scale to Cluster Size', val: 'scale_to_cluster' },\n { label: 'Scale to Exact Size', val: 'scale_exact' },\n ];\n\n $scope.resizeTypes = [\n { label: 'Percentage', val: 'pct' },\n { label: 'Incremental', val: 'incr' },\n ];\n\n stage.capacity = stage.capacity || {};\n stage.regions = stage.regions || [];\n stage.target = stage.target || $scope.resizeTargets[0].val;\n stage.action = stage.action || $scope.scaleActions[0].val;\n stage.resizeType = stage.resizeType || $scope.resizeTypes[0].val;\n\n if (!stage.action && stage.resizeType === 'exact') {\n stage.action = 'scale_exact';\n }\n\n stage.cloudProvider = provider;\n stage.cloudProviderType = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.gce) {\n stage.credentials = $scope.application.defaultCredentials.gce;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.gce);\n }\n\n ctrl.updateResizeType = function () {\n if (stage.action === 'scale_exact') {\n stage.resizeType = 'exact';\n delete stage.scalePct;\n delete stage.scaleNum;\n } else {\n stage.capacity = {};\n if (stage.resizeType === 'pct') {\n delete stage.scaleNum;\n } else {\n stage.resizeType = 'incr';\n delete stage.scalePct;\n stage.scaleNum = stage.scaleNum || 0;\n }\n }\n };\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE =\n 'spinnaker.oracle.pipeline.stage.scaleDownClusterStage';\nexport const name = ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'scaleDownCluster',\n cloudProvider: 'oracle',\n templateUrl: require('./scaleDownClusterStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n {\n type: 'requiredField',\n fieldName: 'remainingFullSizeServerGroups',\n fieldLabel: 'Keep [X] full size Server Groups',\n },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n strategy: true,\n });\n })\n .controller('oracleScaleDownClusterStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n\n const provider = 'oracle';\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then(function (accounts) {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.gce) {\n stage.credentials = $scope.application.defaultCredentials.gce;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.gce);\n }\n\n if (stage.remainingFullSizeServerGroups === undefined) {\n stage.remainingFullSizeServerGroups = 1;\n }\n\n if (stage.allowScaleDownActive === undefined) {\n stage.allowScaleDownActive = false;\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n stage.preferLargerOverNewer = 'false';\n }\n\n this.pluralize = function (str, val) {\n return val === 1 ? str : str + 's';\n };\n\n stage.preferLargerOverNewer = stage.preferLargerOverNewer.toString();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE =\n 'spinnaker.core.pipeline.stage.oracle.shrinkClusterStage';\nexport const name = ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'shrinkCluster',\n cloudProvider: 'oracle',\n templateUrl: require('./shrinkClusterStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'shrinkToSize', fieldLabel: 'shrink to [X] Server Groups' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n });\n })\n .controller('oracleShrinkClusterStageCtrl', [\n '$scope',\n function ($scope) {\n const ctrl = this;\n\n const stage = $scope.stage;\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts('oracle').then(function (accounts) {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n stage.regions = stage.regions || [];\n\n stage.cloudProvider = 'oracle';\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (stage.shrinkToSize === undefined) {\n stage.shrinkToSize = 1;\n }\n\n if (stage.allowDeleteActive === undefined) {\n stage.allowDeleteActive = false;\n }\n\n ctrl.pluralize = function (str, val) {\n return val === 1 ? str : str + 's';\n };\n\n if (stage.retainLargerOverNewer === undefined) {\n stage.retainLargerOverNewer = 'false';\n }\n\n stage.retainLargerOverNewer = stage.retainLargerOverNewer.toString();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { FirewallLabels } from '@spinnaker/core';\n\nexport const ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER =\n 'spinnaker.oracle.securityGroup.create.controller';\nexport const name = ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER, []).controller('oracleCreateSecurityGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n function ($scope, $uibModalInstance) {\n this.cancel = () => {\n $uibModalInstance.dismiss();\n };\n $scope.firewallLabel = FirewallLabels.get('Firewall');\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nexport const ORACLE_SECURITYGROUP_SECURITYGROUP_READER = 'spinnaker.oracle.securityGroup.reader';\nexport const name = ORACLE_SECURITYGROUP_SECURITYGROUP_READER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_SECURITYGROUP_READER, []).factory('oracleSecurityGroupReader', function () {\n function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) {\n return indexedSecurityGroups[container.account][container.region][securityGroupId];\n }\n\n return {\n resolveIndexedSecurityGroup: resolveIndexedSecurityGroup,\n };\n});\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { NetworkReader } from '@spinnaker/core';\n\nexport const ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER = 'spinnaker.oracle.securityGroup.transformer';\nexport const name = ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER, []).factory('oracleSecurityGroupTransformer', function () {\n const provider = 'oracle';\n\n function normalizeSecurityGroup(securityGroup) {\n return NetworkReader.listNetworksByProvider(provider).then(_.partial(addVcnNameToSecurityGroup, securityGroup));\n }\n\n function addVcnNameToSecurityGroup(securityGroup, vcns) {\n const matches = vcns.find((vcn) => vcn.id === securityGroup.network);\n securityGroup.vpcName = matches.length ? matches[0].name : '';\n }\n\n return {\n normalizeSecurityGroup: normalizeSecurityGroup,\n };\n});\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { AccountService, NetworkReader, SECURITY_GROUP_READER, SubnetReader } from '@spinnaker/core';\nimport { OracleProviderSettings } from '../../oracle.settings';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE =\n 'spinnaker.oracle.serverGroup.configure.configuration.service';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE, [SECURITY_GROUP_READER]).factory(\n 'oracleServerGroupConfigurationService',\n [\n '$q',\n 'oracleImageReader',\n 'securityGroupReader',\n function ($q, oracleImageReader, securityGroupReader) {\n const oracle = 'oracle';\n\n const getShapes = (image) => {\n if (!image || !image.compatibleShapes) {\n return [];\n }\n return image.compatibleShapes.map((shape) => {\n return { name: shape };\n });\n };\n\n const loadAndSelectRegions = (command, backingData) => {\n if (command.account) {\n const selectedAccountDetails = backingData.credentialsKeyedByAccount[command.account];\n if (!selectedAccountDetails) {\n return;\n }\n backingData.filtered.regions = _.map(selectedAccountDetails.regions, (region) => {\n return { name: region.name };\n });\n if (selectedAccountDetails) {\n command.region = selectedAccountDetails.region;\n }\n }\n };\n\n const loadAvailabilityDomains = (command) => {\n if (command.account && command.region) {\n AccountService.getAvailabilityZonesForAccountAndRegion(oracle, command.account, command.region).then(\n (availDoms) => {\n if (availDoms) {\n command.backingData.filtered.availabilityDomains = availDoms.map((av) => {\n return { name: av };\n });\n } else {\n command.backingData.filtered.availabilityDomains = [];\n command.availabilityDomain = null;\n }\n },\n );\n }\n };\n\n const loadLoadBalancers = (command) => {\n if (command.account && command.region) {\n command.backingData.filtered.loadBalancers = command.backingData.loadBalancers.filter(function (lb) {\n return lb.region === command.region && lb.account === command.account;\n });\n }\n };\n\n function configureCommand(application, command) {\n const defaults = command || {};\n const defaultCredentials =\n defaults.account || application.defaultCredentials.oracle || OracleProviderSettings.defaults.account;\n const defaultRegion =\n defaults.region || application.defaultRegions.oracle || OracleProviderSettings.defaults.region;\n\n return $q\n .all([\n AccountService.getCredentialsKeyedByAccount(oracle),\n NetworkReader.listNetworksByProvider(oracle),\n SubnetReader.listSubnetsByProvider(oracle),\n securityGroupReader.getAllSecurityGroups(),\n loadImages(),\n AccountService.getAvailabilityZonesForAccountAndRegion(oracle, defaultCredentials, defaultRegion),\n ])\n .then(function ([credentialsKeyedByAccount, networks, subnets, securityGroups, images, availDomains]) {\n const backingData = {\n credentialsKeyedByAccount,\n networks,\n subnets,\n securityGroups,\n images,\n availDomains,\n };\n\n backingData.accounts = _.keys(backingData.credentialsKeyedByAccount);\n backingData.filtered = {};\n loadAndSelectRegions(command, backingData);\n backingData.filtered.availabilityDomains = _.map(backingData.availDomains, function (zone) {\n return { name: zone };\n });\n\n backingData.filterSubnets = function () {\n if (command.vpcId && command.availabilityDomain) {\n return _.filter(backingData.subnets, {\n vcnId: command.vpcId,\n availabilityDomain: command.availabilityDomain,\n });\n }\n return backingData.subnets;\n };\n\n backingData.loadBalancers = application.loadBalancers.data;\n\n backingData.accountOnChange = function () {\n loadAndSelectRegions(command, command.backingData);\n loadAvailabilityDomains(command);\n loadLoadBalancers(command);\n };\n\n backingData.regionOnChange = function () {\n loadAvailabilityDomains(command);\n loadLoadBalancers(command);\n };\n\n backingData.availabilityDomainOnChange = function () {\n command.subnetId = null;\n backingData.seclists = null;\n };\n\n backingData.vpcOnChange = function () {\n command.subnetId = null;\n backingData.seclists = null;\n };\n\n backingData.subnetOnChange = function () {\n const subnet = _.find(backingData.subnets, { id: command.subnetId });\n const mySecGroups = backingData.securityGroups[command.account][oracle][command.region];\n const secLists = [];\n _.forEach(subnet.securityListIds, function (sid) {\n const sgRef = _.find(mySecGroups, { id: sid });\n securityGroupReader\n .getSecurityGroupDetails(\n command.application,\n command.account,\n oracle,\n command.region,\n command.vpcId,\n sgRef.name,\n )\n .then(function (sgd) {\n secLists.push(sgd);\n backingData.seclists = secLists;\n });\n });\n };\n\n backingData.findBackendSetsByLoadBalancerId = (loadBalancerId) => {\n const lb = backingData.filtered.loadBalancers.find((lb) => lb.id === loadBalancerId);\n if (lb && lb.backendSets) {\n //reduce the backendSets object to an array. The object is keyed by the backendSet name\n const bsetArray = [];\n Object.keys(lb.backendSets).reduce((arr, bsetName) => {\n const bset = lb.backendSets[bsetName];\n bset['name'] = bsetName;\n arr.push(bset);\n return arr;\n }, bsetArray);\n return bsetArray;\n } else {\n return [];\n }\n };\n\n backingData.findLoadBalListenersByBackendSetName = (loadBalancerId, backendSetName) => {\n const lb = backingData.filtered.loadBalancers.find((lb) => lb.id === loadBalancerId);\n if (lb && lb.listeners) {\n return Object.keys(lb.listeners)\n .filter((lisName) => lb.listeners[lisName].defaultBackendSetName === backendSetName)\n .map((lisName) => lb.listeners[lisName]);\n } else {\n return [];\n }\n };\n\n backingData.loadBalancerOnChange = () => {\n if (command.loadBalancerId) {\n backingData.filtered.backendSets = backingData.findBackendSetsByLoadBalancerId(command.loadBalancerId);\n } else {\n //no backend set name should be set if no load balancer id is set\n command.backendSetName = undefined;\n backingData.backendSetOnChange();\n backingData.filtered.backendSets = [];\n }\n };\n\n backingData.backendSetOnChange = () => {\n backingData.filtered.listeners =\n command.loadBalancerId && command.backendSetName\n ? backingData.findLoadBalListenersByBackendSetName(command.loadBalancerId, command.backendSetName)\n : [];\n };\n\n backingData.filtered.images = backingData.images;\n const shapesMap = {};\n _.forEach(backingData.filtered.images, (image) => {\n shapesMap[image.id] = getShapes(image);\n });\n backingData.filtered.shapes = shapesMap;\n backingData.filtered.allShapes = _.uniqBy(_.flatten(_.values(shapesMap)), 'name');\n command.backingData = backingData;\n if (command.account) {\n loadLoadBalancers(command);\n backingData.loadBalancerOnChange();\n backingData.backendSetOnChange();\n }\n });\n }\n\n function loadImages() {\n return oracleImageReader.findImages({ provider: oracle });\n }\n\n return {\n configureCommand: configureCommand,\n };\n },\n ],\n);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport * as angular from 'angular';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\n\nimport { IMAGE_READER } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER =\n 'spinnaker.oracle.serverGroup.configure.wizard.basicSettings.controller';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER, [\n UIROUTER_ANGULARJS,\n ANGULAR_UI_BOOTSTRAP,\n IMAGE_READER,\n ])\n .controller('oracleServerGroupBasicSettingsCtrl', [\n '$scope',\n '$state',\n '$uibModalStack',\n '$controller',\n 'imageReader',\n function ($scope, $state, $uibModalStack, $controller, imageReader) {\n angular.extend(\n this,\n $controller('BasicSettingsMixin', {\n $scope: $scope,\n imageReader: imageReader,\n $uibModalStack: $uibModalStack,\n $state: $state,\n }),\n );\n },\n ]);\n","'use strict';\n\nimport * as angular from 'angular';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT =\n 'spinnaker.oracle.serverGroup.configure.wizard.capacity.selector.component';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT, [])\n .component('oracleServerGroupCapacitySelector', {\n templateUrl: require('./capacitySelector.component.html'),\n bindings: {\n command: '=',\n },\n controllerAs: 'vm',\n controller: angular.noop,\n });\n","import { module } from 'angular';\n\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE } from './serverGroupConfiguration.service';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER } from './wizard/basicSettings/basicSettings.controller';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT } from './wizard/capacity/capacitySelector.component';\n\n('use strict');\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE = 'spinnaker.oracle.serverGroup.configure';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE, [\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER,\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE,\n]);\n","'use strict';\n\nimport * as angular from 'angular';\nimport _ from 'lodash';\n\nimport { NameUtils } from '@spinnaker/core';\n\nimport { OracleProviderSettings } from '../../oracle.settings';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE =\n 'spinnaker.oracle.serverGroupCommandBuilder.service';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE, [])\n .factory('oracleServerGroupCommandBuilder', [\n '$q',\n function ($q) {\n const oracle = 'oracle';\n\n function buildNewServerGroupCommand(application, defaults) {\n defaults = defaults || {};\n\n const defaultAccount = defaults.account || OracleProviderSettings.defaults.account;\n const defaultRegion = defaults.region || OracleProviderSettings.defaults.region;\n\n const command = {\n account: defaultAccount,\n application: application.name,\n capacity: {\n desired: 1,\n },\n region: defaultRegion,\n selectedProvider: oracle,\n viewState: {\n mode: defaults.mode || 'create',\n disableStrategySelection: true,\n },\n };\n\n return $q.when(command);\n }\n\n function buildServerGroupCommandFromExisting(application, serverGroup, mode) {\n mode = mode || 'clone';\n const serverGroupName = NameUtils.parseServerGroupName(serverGroup.name);\n\n const command = {\n account: serverGroup.account,\n application: application.name,\n shape: serverGroup.launchConfig.shape,\n strategy: '',\n stack: serverGroupName.stack,\n vpcId: serverGroup.launchConfig.vpcId,\n subnetId: serverGroup.launchConfig.subnetId,\n region: serverGroup.region,\n availabilityDomain: serverGroup.launchConfig.availabilityDomain,\n sshAuthorizedKeys: serverGroup.launchConfig.sshAuthorizedKeys,\n selectedProvider: oracle,\n capacity: {\n desired: serverGroup.capacity.desired,\n },\n viewState: {\n mode: mode,\n disableStrategySelection: true,\n },\n };\n return $q.when(command);\n }\n\n function buildServerGroupCommandFromPipeline(application, originalCluster) {\n const pipelineCluster = _.cloneDeep(originalCluster);\n const commandDefaults = { account: pipelineCluster.account, region: pipelineCluster.region };\n return buildNewServerGroupCommand(application, commandDefaults).then((command) => {\n const viewState = {\n disableImageSelection: true,\n mode: 'editPipeline',\n submitButtonLabel: 'Done',\n templatingEnabled: true,\n };\n\n const viewOverrides = {\n viewState: viewState,\n };\n\n pipelineCluster.strategy = pipelineCluster.strategy || '';\n return angular.extend({}, command, pipelineCluster, viewOverrides);\n });\n }\n\n function buildNewServerGroupCommandForPipeline() {\n return $q.when({\n viewState: {\n requiresTemplateSelection: true,\n },\n });\n }\n\n return {\n buildNewServerGroupCommand: buildNewServerGroupCommand,\n buildServerGroupCommandFromExisting: buildServerGroupCommandFromExisting,\n buildNewServerGroupCommandForPipeline: buildNewServerGroupCommandForPipeline,\n buildServerGroupCommandFromPipeline: buildServerGroupCommandFromPipeline,\n };\n },\n ]);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { FirewallLabels, ModalWizard, TaskMonitor } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.configure.cloneServerGroup';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'oracleCloneServerGroupCtrl',\n [\n '$scope',\n '$uibModalInstance',\n '$q',\n 'application',\n 'serverGroupWriter',\n 'serverGroupCommand',\n 'oracleServerGroupConfigurationService',\n 'title',\n function (\n $scope,\n $uibModalInstance,\n $q,\n application,\n serverGroupWriter,\n serverGroupCommand,\n oracleServerGroupConfigurationService,\n title,\n ) {\n $scope.title = title;\n\n $scope.state = {\n loaded: false,\n requiresTemplateSelection: !!serverGroupCommand.viewState.requiresTemplateSelection,\n };\n\n $scope.command = serverGroupCommand;\n $scope.application = application;\n\n $scope.pages = {\n basicSettings: require('./basicSettings/basicSettings.html'),\n instanceType: require('./instanceType/instanceType.html'),\n capacity: require('./capacity/capacity.html'),\n loadBalancers: require('./loadBalancers/loadBalancers.html'),\n networkSettings: require('./network/networkSettings.html'),\n templateSelection: require('./templateSelection/templateSelection.html'),\n };\n\n this.templateSelectionText = {\n copied: [\n 'account, region, subnet, cluster name (stack, details)',\n 'load balancers',\n FirewallLabels.get('firewalls'),\n 'instance type',\n 'all fields on the Advanced Settings page',\n ],\n notCopied: [],\n };\n\n if (!$scope.command.viewState.disableStrategySelection) {\n this.templateSelectionText.notCopied.push(\n 'the deployment strategy (if any) used to deploy the most recent server group',\n );\n }\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Creating your server group',\n modalInstance: $uibModalInstance,\n });\n\n function configureCommand() {\n oracleServerGroupConfigurationService.configureCommand(application, serverGroupCommand).then(function () {\n $scope.state.loaded = true;\n });\n }\n\n this.isValid = function () {\n return $scope.command && $scope.form.$valid && ModalWizard.isComplete();\n };\n\n this.showSubmitButton = function () {\n return ModalWizard.allPagesVisited();\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n this.submit = function () {\n if ($scope.command.viewState.mode === 'editPipeline' || $scope.command.viewState.mode === 'createPipeline') {\n return $uibModalInstance.close($scope.command);\n }\n $scope.taskMonitor.submit(function () {\n return serverGroupWriter.cloneServerGroup($scope.command, application);\n });\n };\n\n configureCommand();\n\n this.templateSelected = () => {\n $scope.state.requiresTemplateSelection = false;\n configureCommand();\n };\n },\n ],\n);\n","'use strict';\n\nimport * as angular from 'angular';\n\nexport const ORACLE_COMMON_FOOTER_COMPONENT = 'spinnaker.oracle.footer.component';\nexport const name = ORACLE_COMMON_FOOTER_COMPONENT; // for backwards compatibility\nangular.module(ORACLE_COMMON_FOOTER_COMPONENT, []).component('oracleFooter', {\n templateUrl: require('./footer.component.html'),\n bindings: {\n action: '&',\n isValid: '&',\n cancel: '&',\n account: '=?',\n verification: '=?',\n },\n controllerAs: 'vm',\n controller: angular.noop,\n});\n","'use strict';\n\nimport * as angular from 'angular';\nimport _ from 'lodash';\n\nimport { SERVER_GROUP_WRITER } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT =\n 'spinnaker.oracle.serverGroup.details.resize.capacity.component';\nexport const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT, [SERVER_GROUP_WRITER])\n .component('oracleResizeCapacity', {\n bindings: {\n command: '=',\n application: '=',\n serverGroup: '=',\n formMethods: '=',\n },\n templateUrl: require('./resizeCapacity.component.html'),\n controller: [\n '$scope',\n 'serverGroupWriter',\n function ($scope, serverGroupWriter) {\n this.command.newSize = null;\n\n angular.extend(this.formMethods, {\n formIsValid: () => _.every([this.command.newSize !== null, $scope.resizeCapacityForm.$valid]),\n submitMethod: () => {\n return serverGroupWriter.resizeServerGroup(this.serverGroup, this.application, {\n capacity: { min: this.command.newSize, max: this.command.newSize, desired: this.command.newSize },\n serverGroupName: this.serverGroup.name,\n targetSize: this.command.newSize,\n region: this.serverGroup.region,\n interestingHealthProviderNames: this.command.interestingHealthProviderNames,\n reason: this.command.reason,\n });\n },\n });\n },\n ],\n });\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { TaskMonitor } from '@spinnaker/core';\nimport { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';\n\nimport { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT } from './resizeCapacity.component';\n\nexport const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.resize.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER, [\n ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT,\n ORACLE_COMMON_FOOTER_COMPONENT,\n]).controller('oracleResizeServerGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n 'application',\n 'serverGroup',\n function ($scope, $uibModalInstance, application, serverGroup) {\n $scope.serverGroup = serverGroup;\n $scope.application = application;\n $scope.verification = {};\n $scope.command = {};\n $scope.formMethods = {};\n\n if (application && application.attributes) {\n if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {\n $scope.command.interestingHealthProviderNames = ['Oracle'];\n }\n\n $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;\n }\n\n this.isValid = function () {\n if (!$scope.verification.verified) {\n return false;\n }\n return $scope.formMethods.formIsValid();\n };\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Resizing ' + serverGroup.name,\n modalInstance: $uibModalInstance,\n });\n\n this.resize = function () {\n this.submitting = true;\n if (!this.isValid()) {\n return;\n }\n\n $scope.taskMonitor.submit($scope.formMethods.submitMethod);\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { SERVER_GROUP_WRITER, TaskMonitor } from '@spinnaker/core';\nimport { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';\n\nexport const ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.rollback.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER, [\n SERVER_GROUP_WRITER,\n ORACLE_COMMON_FOOTER_COMPONENT,\n]).controller('oracleRollbackServerGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n 'serverGroupWriter',\n 'application',\n 'serverGroup',\n 'disabledServerGroups',\n function ($scope, $uibModalInstance, serverGroupWriter, application, serverGroup, disabledServerGroups) {\n $scope.serverGroup = serverGroup;\n $scope.disabledServerGroups = disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name));\n $scope.verification = {};\n\n $scope.command = {\n rollbackType: 'EXPLICIT',\n rollbackContext: {\n rollbackServerGroupName: serverGroup.name,\n },\n };\n\n if (application && application.attributes) {\n if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {\n $scope.command.interestingHealthProviderNames = ['Oracle'];\n }\n\n $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;\n }\n\n this.isValid = function () {\n const command = $scope.command;\n if (!$scope.verification.verified) {\n return false;\n }\n\n return command.rollbackContext.restoreServerGroupName !== undefined;\n };\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Rollback ' + serverGroup.name,\n modalInstance: $uibModalInstance,\n });\n\n this.rollback = function () {\n this.submitting = true;\n if (!this.isValid()) {\n return;\n }\n\n const submitMethod = function () {\n return serverGroupWriter.rollbackServerGroup(serverGroup, application, $scope.command);\n };\n\n $scope.taskMonitor.submit(submitMethod);\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n },\n]);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport {\n ConfirmationModalService,\n NetworkReader,\n SERVER_GROUP_WRITER,\n ServerGroupReader,\n ServerGroupWarningMessageService,\n SubnetReader,\n} from '@spinnaker/core';\n\nimport { ORACLE_IMAGE_IMAGE_READER } from '../../image/image.reader';\nimport { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER } from './resize/resizeServerGroup.controller';\nimport { ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER } from './rollback/rollbackServerGroup.controller';\n\nexport const ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER, [\n UIROUTER_ANGULARJS,\n SERVER_GROUP_WRITER,\n ORACLE_IMAGE_IMAGE_READER,\n ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER,\n ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER,\n]).controller('oracleServerGroupDetailsCtrl', [\n '$scope',\n '$state',\n '$uibModal',\n 'app',\n 'serverGroup',\n 'serverGroupWriter',\n 'oracleImageReader',\n function ($scope, $state, $uibModal, app, serverGroup, serverGroupWriter, oracleImageReader) {\n const provider = 'oracle';\n\n this.application = app;\n this.serverGroup = serverGroup;\n\n this.state = {\n loading: true,\n };\n\n /////////////////////////////////////////////////////////\n // Fetch data\n /////////////////////////////////////////////////////////\n\n const retrieveServerGroup = () => {\n return ServerGroupReader.getServerGroup(\n app.name,\n serverGroup.accountId,\n serverGroup.region,\n serverGroup.name,\n ).then((details) => {\n cancelLoader();\n details.account = serverGroup.accountId;\n this.serverGroup = details;\n retrieveNetwork();\n retrieveSubnet();\n retrieveImage();\n });\n };\n\n const retrieveNetwork = () => {\n NetworkReader.listNetworksByProvider(provider).then((networks) => {\n this.serverGroup.network = _.chain(networks)\n .filter({ account: this.serverGroup.account, id: this.serverGroup.launchConfig.vpcId })\n .head()\n .value();\n });\n };\n\n const retrieveSubnet = () => {\n SubnetReader.getSubnetByIdAndProvider(this.serverGroup.launchConfig.subnetId, provider).then((subnet) => {\n this.serverGroup.subnet = subnet;\n });\n };\n\n const retrieveImage = () => {\n oracleImageReader\n .getImage(this.serverGroup.launchConfig.imageId, this.serverGroup.region, this.serverGroup.account)\n .then((image) => {\n if (!image) {\n image = { id: this.serverGroup.launchConfig.imageId, name: this.serverGroup.launchConfig.imageId };\n }\n this.serverGroup.image = image;\n });\n };\n\n ////////////////////////////////////////////////////////////\n // Actions. Triggered by server group details dropdown menu\n ////////////////////////////////////////////////////////////\n\n this.destroyServerGroup = function destroyServerGroup() {\n const serverGroup = this.serverGroup;\n const taskMonitor = {\n application: app,\n title: 'Destroying ' + serverGroup.name,\n onTaskComplete: function () {\n if ($state.includes('**.serverGroup', stateParams)) {\n $state.go('^');\n }\n },\n };\n\n const submitMethod = function () {\n return serverGroupWriter.destroyServerGroup(serverGroup, app);\n };\n\n const stateParams = {\n name: serverGroup.name,\n account: serverGroup.account,\n region: serverGroup.region,\n };\n\n ConfirmationModalService.confirm({\n header: 'Really destroy ' + serverGroup.name + '?',\n buttonText: 'Destroy ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n submitMethod: submitMethod,\n });\n };\n\n this.resizeServerGroup = () => {\n $uibModal.open({\n templateUrl: require('./resize/resizeServerGroup.html'),\n controller: 'oracleResizeServerGroupCtrl as ctrl',\n resolve: {\n serverGroup: () => {\n return this.serverGroup;\n },\n application: () => {\n return app;\n },\n },\n });\n };\n\n this.rollbackServerGroup = () => {\n $uibModal.open({\n templateUrl: require('./rollback/rollbackServerGroup.html'),\n controller: 'oracleRollbackServerGroupCtrl as ctrl',\n resolve: {\n serverGroup: () => this.serverGroup,\n disabledServerGroups: () => {\n const sgSummary = _.find(app.serverGroups.data, {\n name: this.serverGroup.name,\n account: this.serverGroup.account,\n region: this.serverGroup.region,\n });\n const cluster = _.find(app.clusters, { name: sgSummary.cluster, account: this.serverGroup.account });\n return _.filter(cluster.serverGroups, { isDisabled: true, region: this.serverGroup.region });\n },\n application: () => app,\n },\n });\n };\n\n this.disableServerGroup = () => {\n const serverGroup = this.serverGroup;\n\n const taskMonitor = {\n application: app,\n title: 'Disabling ' + serverGroup.name,\n };\n\n const submitMethod = (params) => serverGroupWriter.disableServerGroup(serverGroup, app, params);\n\n const confirmationModalParams = {\n header: 'Really disable ' + serverGroup.name + '?',\n buttonText: 'Disable ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Oracle',\n submitMethod: submitMethod,\n askForReason: true,\n };\n\n ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Oracle'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n this.enableServerGroup = () => {\n const serverGroup = this.serverGroup;\n\n const taskMonitor = {\n application: app,\n title: 'Enabling ' + serverGroup.name,\n };\n\n const submitMethod = (params) => serverGroupWriter.enableServerGroup(serverGroup, app, params);\n\n const confirmationModalParams = {\n header: 'Really enable ' + serverGroup.name + '?',\n buttonText: 'Enable ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Oracle',\n submitMethod: submitMethod,\n askForReason: true,\n };\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Oracle'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n const cancelLoader = () => {\n this.state.loading = false;\n };\n\n retrieveServerGroup().then(() => {\n if (!$scope.$$destroyed) {\n app.serverGroups.onRefresh($scope, retrieveServerGroup);\n }\n });\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport _ from 'lodash';\n\nexport const ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER = 'spinnaker.oracle.serverGroup.transformer';\nexport const name = ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER, []).factory('oracleServerGroupTransformer', [\n '$q',\n function ($q) {\n const PROVIDER = 'oracle';\n\n function normalizeServerGroup(serverGroup) {\n return $q.when(serverGroup);\n }\n\n function convertServerGroupCommandToDeployConfiguration(base) {\n const command = _.defaults({ backingData: [], viewState: [] }, base);\n command.cloudProvider = PROVIDER;\n return command;\n }\n\n return {\n convertServerGroupCommandToDeployConfiguration,\n normalizeServerGroup,\n };\n },\n]);\n","import { module } from 'angular';\n\nimport { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';\n\nimport './helpContents/oracleHelpContents';\nimport { ORACLE_IMAGE_IMAGE_READER } from './image/image.reader';\nimport { ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER } from './instance/details/instance.details.controller';\nimport { ORACLE_LOAD_BALANCER_CREATE_CONTROLLER } from './loadBalancer/configure/createLoadBalancer.controller';\nimport { ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER } from './loadBalancer/details/loadBalancerDetail.controller';\nimport { ORACLE_LOAD_BALANCER_TRANSFORMER } from './loadBalancer/loadBalancer.transformer';\nimport { ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE } from './pipeline/stages/bake/ociBakeStage';\nimport { ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE } from './pipeline/stages/destroyAsg/destroyAsgStage';\nimport { ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE } from './pipeline/stages/disableAsg/disableAsgStage';\nimport { ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE } from './pipeline/stages/findAmi/findAmiStage';\nimport { ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE } from './pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage';\nimport { ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE } from './pipeline/stages/resizeAsg/resizeAsgStage';\nimport { ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE } from './pipeline/stages/scaleDownCluster/scaleDownClusterStage';\nimport { ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE } from './pipeline/stages/shrinkCluster/shrinkClusterStage';\nimport { ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER } from './securityGroup/configure/createSecurityGroup.controller';\nimport { ORACLE_SECURITYGROUP_SECURITYGROUP_READER } from './securityGroup/securityGroup.reader';\nimport { ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER } from './securityGroup/securityGroup.transformer';\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE } from './serverGroup/configure/serverGroup.configure.module';\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE } from './serverGroup/configure/serverGroupCommandBuilder.service';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER } from './serverGroup/configure/wizard/cloneServerGroup.controller';\nimport { ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER } from './serverGroup/details/serverGroupDetails.controller';\nimport { ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER } from './serverGroup/serverGroup.transformer';\n\nexport const ORACLE_MODULE = 'spinnaker.oracle';\nmodule(ORACLE_MODULE, [\n // Pipeline\n ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE,\n ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE,\n ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE,\n ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE,\n ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE,\n ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE,\n ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE,\n ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE,\n\n // Load Balancers\n ORACLE_LOAD_BALANCER_TRANSFORMER,\n ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER,\n ORACLE_LOAD_BALANCER_CREATE_CONTROLLER,\n\n // Server Groups\n ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE,\n ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE,\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER,\n // Images\n ORACLE_IMAGE_IMAGE_READER,\n // Instances\n ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER,\n // Firewalls\n ORACLE_SECURITYGROUP_SECURITYGROUP_READER,\n ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER,\n ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER,\n]).config(function () {\n CloudProviderRegistry.registerProvider('oracle', {\n name: 'Oracle',\n image: {\n reader: 'oracleImageReader',\n },\n loadBalancer: {\n transformer: 'oracleLoadBalancerTransformer',\n detailsTemplateUrl: require('./loadBalancer/details/loadBalancerDetail.html'),\n detailsController: 'oracleLoadBalancerDetailCtrl',\n createLoadBalancerTemplateUrl: require('./loadBalancer/configure/createLoadBalancer.html'),\n createLoadBalancerController: 'oracleCreateLoadBalancerCtrl',\n },\n serverGroup: {\n transformer: 'oracleServerGroupTransformer',\n detailsTemplateUrl: require('./serverGroup/details/serverGroupDetails.html'),\n detailsController: 'oracleServerGroupDetailsCtrl',\n commandBuilder: 'oracleServerGroupCommandBuilder',\n cloneServerGroupController: 'oracleCloneServerGroupCtrl',\n cloneServerGroupTemplateUrl: require('./serverGroup/configure/wizard/serverGroupWizard.html'),\n configurationService: 'oracleServerGroupConfigurationService',\n },\n instance: {\n detailsController: 'oracleInstanceDetailsCtrl',\n detailsTemplateUrl: require('./instance/details/instanceDetails.html'),\n },\n securityGroup: {\n reader: 'oracleSecurityGroupReader',\n transformer: 'oracleSecurityGroupTransformer',\n createSecurityGroupTemplateUrl: require('./securityGroup/configure/createSecurityGroup.html'),\n createSecurityGroupController: 'oracleCreateSecurityGroupCtrl',\n },\n });\n});\n\nDeploymentStrategyRegistry.registerProvider('oracle', []);\n"],"names":["angular","_"],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrhBO,MAAM;AACb;AACA,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;AACzB;AACA,IAAI,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;AACrC,IAAI,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;AACnB;AACA,IAAI,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;AACjD,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;AACjB,IAAI,MAAM,CAAC;AACX,MAAM,OAAO;AACb,KAAK,CAAC;AACN,IA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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/helpContents/oracleHelpContents.ts","../src/image/image.reader.js","../src/instance/details/instance.details.controller.js","../src/domain/IOracleLoadBalancer.ts","../src/oracle.settings.ts","../src/loadBalancer/loadBalancer.transformer.ts","../src/loadBalancer/configure/createLoadBalancer.controller.ts","../src/loadBalancer/details/loadBalancerDetail.controller.ts","../src/pipeline/stages/bake/bakeExecutionDetails.controller.js","../src/pipeline/stages/bake/ociBakeStage.js","../src/pipeline/stages/destroyAsg/destroyAsgStage.js","../src/pipeline/stages/disableAsg/disableAsgStage.js","../src/pipeline/stages/findAmi/findAmiStage.js","../src/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.js","../src/pipeline/stages/resizeAsg/resizeAsgStage.js","../src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.js","../src/pipeline/stages/shrinkCluster/shrinkClusterStage.js","../src/securityGroup/configure/createSecurityGroup.controller.js","../src/securityGroup/securityGroup.reader.js","../src/securityGroup/securityGroup.transformer.js","../src/serverGroup/configure/serverGroupConfiguration.service.js","../src/serverGroup/configure/wizard/basicSettings/basicSettings.controller.js","../src/serverGroup/configure/wizard/capacity/capacitySelector.component.js","../src/serverGroup/configure/serverGroup.configure.module.js","../src/serverGroup/configure/serverGroupCommandBuilder.service.js","../src/serverGroup/configure/wizard/cloneServerGroup.controller.js","../src/common/footer.component.js","../src/serverGroup/details/resize/resizeCapacity.component.js","../src/serverGroup/details/resize/resizeServerGroup.controller.js","../src/serverGroup/details/rollback/rollbackServerGroup.controller.js","../src/serverGroup/details/serverGroupDetails.controller.js","../src/serverGroup/serverGroup.transformer.js","../src/oracle.module.ts"],"sourcesContent":["import { HelpContentsRegistry } from '@spinnaker/core';\n\nconst helpContents = [\n {\n key: 'oracle.serverGroup.stack',\n value: '(Optional) <b>Stack</b> Stack name',\n },\n {\n key: 'oracle.serverGroup.detail',\n value: '(Optional) <b>Detail</b> is a naming component to help distinguish specifics of the server group.',\n },\n {\n key: 'oracle.pipeline.config.bake.baseOsOption',\n value: '<p>The base image from which the image will be created.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.image_name',\n value: '<p>The base name of the image that will be created.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.package',\n value:\n '<p>The name of the package you want installed (without any version identifiers).</p>' +\n '<p>If there are multiple packages (space separated), then they will be installed in the order they are entered.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.upgrade',\n value:\n '<p>Perform a package manager upgrade before proceeding with the package installation.</p>' +\n '<p>For example: <i>yum update</i>.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.regions',\n value:\n '<p>The region in which the new image will be created.</p>' +\n '<p>NB: <i>Currently baked images are restricted to a single region</i>.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.user',\n value: '<p>The name of Oracle <i>user</i> that will be used during the baking process.</p>',\n },\n {\n key: 'oracle.pipeline.config.bake.account_name',\n value: '<p>The name of Oracle <i>account</i> that will be used during the baking process.</p>',\n },\n {\n key: 'oracle.serverGroup.sshAuthorizedKeys',\n value: '<p>The public SSH key for the default user on the instance.</p>',\n },\n];\n\nhelpContents.forEach((entry) => HelpContentsRegistry.register(entry.key, entry.value));\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { REST } from '@spinnaker/core';\n\nexport const ORACLE_IMAGE_IMAGE_READER = 'spinnaker.oracle.image.reader';\nexport const name = ORACLE_IMAGE_IMAGE_READER; // for backwards compatibility\nmodule(ORACLE_IMAGE_IMAGE_READER, []).factory('oracleImageReader', function () {\n function findImages(params) {\n return REST('/images/find')\n .query(params)\n .get()\n .catch(function () {\n return [];\n });\n }\n\n function getImage(imageId, region, credentials) {\n return REST('/images')\n .path(credentials, region, imageId)\n .query({ provider: 'oracle' })\n .get()\n .then(\n function (results) {\n return results && results.length ? results[0] : null;\n },\n function () {\n return null;\n },\n );\n }\n\n return {\n findImages,\n getImage,\n };\n});\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { InstanceReader } from '@spinnaker/core';\n\nexport const ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER = 'spinnaker.oracle.instance.details.controller';\nexport const name = ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'oracleInstanceDetailsCtrl',\n [\n '$scope',\n '$q',\n 'app',\n 'instance',\n function ($scope, $q, app, instance) {\n $scope.application = app;\n\n const initialize = app.isStandalone\n ? retrieveInstance()\n : $q.all([app.serverGroups.ready()]).then(retrieveInstance);\n\n initialize.then(() => {\n if (!$scope.$$destroyed && !app.isStandalone) {\n app.serverGroups.onRefresh($scope, retrieveInstance);\n }\n });\n\n function retrieveInstance() {\n let instanceSummary, account, region;\n if (!$scope.application.serverGroups) {\n instanceSummary = {};\n account = instance.account;\n region = instance.region;\n } else {\n $scope.application.serverGroups.data.some((serverGroup) => {\n return serverGroup.instances.some((possibleInstance) => {\n if (possibleInstance.id === instance.instanceId || possibleInstance.name === instance.instanceId) {\n instanceSummary = possibleInstance;\n account = serverGroup.account;\n region = serverGroup.region;\n return true;\n }\n });\n });\n }\n\n $scope.instance = instanceSummary;\n InstanceReader.getInstanceDetails(account, region, instance.instanceId).then((instanceDetails) => {\n Object.assign($scope.instance, instanceDetails);\n });\n }\n },\n ],\n);\n","import type { ILoadBalancer, ILoadBalancerDeleteCommand, ILoadBalancerUpsertCommand, ISubnet } from '@spinnaker/core';\n\nexport type ListenerProtocol = 'HTTP' | 'HTTPS' | 'TCP' | 'SSL';\nexport enum LoadBalancingPolicy {\n ROUND_ROBIN = 'ROUND_ROBIN',\n IP_HASH = 'IP_HASH',\n LEAST_CONNECTIONS = 'LEAST_CONNECTIONS',\n}\n\nexport interface IOracleSubnet extends ISubnet {\n id: string;\n name: string;\n availabilityDomain: string;\n securityListIds: string[];\n vcnId: string;\n}\n\nexport interface IOracleLoadBalancer extends ILoadBalancer {\n shape: string; // required\n isPrivate: boolean; // required\n subnets: IOracleSubnet[]; // required 1 for private LB, 2 for public LB\n certificates?: { [name: string]: IOracleListenerCertificate };\n listeners?: { [name: string]: IOracleListener }; // not required to create LB, but useless without it\n hostnames?: IOracleHostname[];\n backendSets?: { [name: string]: IOracleBackEndSet }; // not required to create LB, but useless without it\n freeformTags?: { [tagName: string]: string };\n id?: string; // not required to create LB\n subnetTypeMap?: { [id: string]: 'AD' | 'Regional' };\n // TODO support path route sets\n}\n\n// This is created from loadBalancer/loadBalancer.states.ts\nexport interface ILoadBalancerDetails {\n name: string;\n accountId: string;\n region: string;\n vpcId: string;\n}\n\nexport interface IOracleListener {\n name: string;\n protocol: ListenerProtocol;\n port: number;\n defaultBackendSetName: string;\n isSsl: boolean;\n sslConfiguration?: IOracleListenerSSLConfiguration;\n hostnames?: IOracleHostname[];\n // TODO support pathRouteSets\n}\n\nexport interface IOracleListenerSSLConfiguration {\n certificateName: string;\n verifyDepth: number;\n verifyPeerCertificates: boolean;\n}\n\nexport interface IOracleHostname {\n name: string;\n hostname: string;\n}\n\nexport interface IOracleBackEndSet {\n name: string;\n policy: LoadBalancingPolicy;\n healthChecker: IOracleBackendSetHealthCheck;\n // TODO desagar sessionPersistenceConfiguration?: IOracleLoadBalancerSessionPersistenceConfiguration;\n backends: any[];\n isNew: boolean;\n}\n\nexport interface IOracleListenerCertificate {\n certificateName: string;\n publicCertificate: string;\n caCertificate: string;\n privateKey: string;\n passphrase: string;\n isNew: boolean;\n}\n\nexport interface IOracleBackendSetHealthCheck {\n urlPath: string; // required\n protocol: 'HTTP' | 'TCP';\n port: number;\n intervalMillis?: number;\n timeoutMillis?: number;\n retries?: number;\n returnCode?: number;\n responseBodyRegex?: string;\n}\n\n/**\n * IOracleLoadBalancerUpsertCommand is nearly identical to IOracleLoadBalancer -\n * Command objects are the shape of data sent to gate.\n */\nexport interface IOracleLoadBalancerUpsertCommand extends ILoadBalancerUpsertCommand {\n shape: string; // required\n isPrivate: boolean; // required\n subnetIds: string[]; // required 1 for private LB, 2 for public LB\n certificates?: { [name: string]: IOracleListenerCertificate };\n listeners?: { [name: string]: IOracleListener }; // not required to create LB, but useless without it\n hostnames?: IOracleHostname[];\n backendSets?: { [name: string]: IOracleBackEndSet }; // not required to create LB, but useless without it\n freeformTags?: { [tagName: string]: string };\n vpcId: string;\n subnetTypeMap?: { [id: string]: 'AD' | 'Regional' };\n}\n\nexport interface IOracleLoadBalancerDeleteCommand extends ILoadBalancerDeleteCommand {\n loadBalancerId: string;\n}\n","import type { IProviderSettings } from '@spinnaker/core';\nimport { SETTINGS } from '@spinnaker/core';\n\nexport interface IOracleProviderSettings extends IProviderSettings {\n defaults: {\n account?: string;\n region?: string;\n };\n}\n\nexport const OracleProviderSettings: IOracleProviderSettings = (SETTINGS.providers\n .oracle as IOracleProviderSettings) || { defaults: {} };\nif (OracleProviderSettings) {\n OracleProviderSettings.resetToOriginal = SETTINGS.resetProvider('oracle');\n}\n\nexport const OracleDefaultProviderSettings = {\n defaults: { account: 'DEFAULT', bakeryRegions: 'us-phoenix-1', region: 'us-phoenix-1' },\n};\n","import { module } from 'angular';\nimport { $q } from 'ngimport';\n\nimport type { Application } from '@spinnaker/core';\nimport type {\n IOracleBackEndSet,\n IOracleListener,\n IOracleListenerCertificate,\n IOracleListenerSSLConfiguration,\n IOracleLoadBalancer,\n IOracleLoadBalancerUpsertCommand,\n} from '../domain/IOracleLoadBalancer';\nimport { LoadBalancingPolicy } from '../domain/IOracleLoadBalancer';\nimport { OracleProviderSettings } from '../oracle.settings';\nimport { OracleDefaultProviderSettings } from '../oracle.settings';\n\nexport class OracleLoadBalancerTransformer {\n public normalizeLoadBalancer(loadBalancer: IOracleLoadBalancer): PromiseLike<IOracleLoadBalancer> {\n /*loadBalancer.serverGroups.forEach(function(serverGroup) {\n serverGroup.account = loadBalancer.account;\n serverGroup.region = loadBalancer.region;\n\n if (serverGroup.detachedInstances) {\n serverGroup.detachedInstances = serverGroup.detachedInstances.map(function(instanceId) {\n return { id: instanceId };\n });\n serverGroup.instances = serverGroup.instances.concat(serverGroup.detachedInstances);\n } else {\n serverGroup.detachedInstances = [];\n }\n });\n var activeServerGroups = _.filter(loadBalancer.serverGroups, { isDisabled: false });\n loadBalancer.provider = loadBalancer.type;\n loadBalancer.instances = _.chain(activeServerGroups)\n .map('instances')\n .flatten()\n .value();\n loadBalancer.detachedInstances = _.chain(activeServerGroups)\n .map('detachedInstances')\n .flatten()\n .value();*/\n return $q.resolve(loadBalancer);\n }\n\n public convertLoadBalancerForEditing(loadBalancer: IOracleLoadBalancer): IOracleLoadBalancerUpsertCommand {\n if (loadBalancer.listeners) {\n Object.keys(loadBalancer.listeners).forEach((key) => {\n const lis = loadBalancer.listeners[key];\n lis.isSsl = !!lis.sslConfiguration; // use !! operator to get truthiness value\n });\n }\n const toEdit: IOracleLoadBalancerUpsertCommand = {\n name: loadBalancer.name,\n cloudProvider: loadBalancer.cloudProvider,\n credentials: loadBalancer.account,\n region: loadBalancer.region,\n shape: loadBalancer.shape,\n isPrivate: loadBalancer.isPrivate,\n subnetIds: loadBalancer.subnets.map((subnet) => subnet.id),\n certificates: loadBalancer.certificates,\n listeners: loadBalancer.listeners,\n hostnames: loadBalancer.hostnames,\n backendSets: loadBalancer.backendSets,\n freeformTags: loadBalancer.freeformTags,\n loadBalancerType: loadBalancer.type,\n securityGroups: loadBalancer.securityGroups,\n vpcId: loadBalancer.vpcId,\n subnetTypeMap: loadBalancer.subnetTypeMap,\n };\n return toEdit;\n }\n\n public constructNewLoadBalancerTemplate(application: Application): IOracleLoadBalancerUpsertCommand {\n const defaultCredentials =\n application.defaultCredentials.oracle ||\n (OracleProviderSettings.defaults\n ? OracleProviderSettings.defaults.account\n : OracleDefaultProviderSettings.defaults.account);\n const defaultRegion =\n application.defaultRegions.oracle ||\n (OracleProviderSettings.defaults\n ? OracleProviderSettings.defaults.region\n : OracleDefaultProviderSettings.defaults.region);\n return {\n name: undefined,\n cloudProvider: 'oracle',\n credentials: defaultCredentials,\n region: defaultRegion,\n shape: null,\n isPrivate: false,\n subnetIds: [],\n listeners: {},\n hostnames: [],\n backendSets: {},\n freeformTags: {},\n loadBalancerType: null,\n securityGroups: [],\n vpcId: null,\n subnetTypeMap: {},\n };\n }\n\n public constructNewListenerTemplate(): IOracleListener {\n return {\n name: 'HTTP_80',\n port: 80,\n protocol: 'HTTP',\n defaultBackendSetName: undefined,\n isSsl: false,\n };\n }\n\n public constructNewBackendSetTemplate(name: string): IOracleBackEndSet {\n return {\n name: name,\n policy: LoadBalancingPolicy.ROUND_ROBIN,\n healthChecker: { protocol: 'HTTP', port: 80, urlPath: '/' },\n backends: [],\n isNew: true,\n };\n }\n\n public constructNewSSLConfiguration(): IOracleListenerSSLConfiguration {\n return {\n certificateName: '',\n verifyDepth: 0,\n verifyPeerCertificates: false,\n };\n }\n\n public constructNewCertificateTemplate(name: string): IOracleListenerCertificate {\n return {\n certificateName: name,\n publicCertificate: undefined,\n caCertificate: undefined,\n privateKey: undefined,\n passphrase: undefined,\n isNew: true,\n };\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_TRANSFORMER = 'spinnaker.oracle.loadBalancer.transformer';\nmodule(ORACLE_LOAD_BALANCER_TRANSFORMER, []).service('oracleLoadBalancerTransformer', OracleLoadBalancerTransformer);\n","import type { StateService } from '@uirouter/angularjs';\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport type { IController } from 'angular';\nimport { module } from 'angular';\nimport type { IModalServiceInstance } from 'angular-ui-bootstrap';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\nimport { cloneDeep, trimEnd } from 'lodash';\n\nimport type { Application, IAccountDetails, ILoadBalancer, INetwork, IRegion, ISubnet } from '@spinnaker/core';\nimport {\n AccountService,\n LoadBalancerWriter,\n NameUtils,\n NetworkReader,\n SubnetReader,\n TaskMonitor,\n} from '@spinnaker/core';\nimport type {\n IOracleBackEndSet,\n IOracleListener,\n IOracleListenerCertificate,\n IOracleLoadBalancer,\n IOracleSubnet,\n} from '../../domain/IOracleLoadBalancer';\nimport { LoadBalancingPolicy } from '../../domain/IOracleLoadBalancer';\n\nimport type { OracleLoadBalancerTransformer } from '../loadBalancer.transformer';\nimport { ORACLE_LOAD_BALANCER_TRANSFORMER } from '../loadBalancer.transformer';\n\nexport class OracleLoadBalancerController implements IController {\n public oracle = 'oracle';\n public shapes: string[] = ['100Mbps', '400Mbps', '8000Mbps']; // TODO desagar use listShapes to get this from clouddriver later\n public loadBalancingPolicies: string[] = Object.keys(LoadBalancingPolicy).map((k) => (LoadBalancingPolicy as any)[k]);\n public pages: { [key: string]: any } = {\n properties: require('./createLoadBalancerProperties.html'),\n listeners: require('./listeners.html'),\n backendSets: require('./backendSets.html'),\n certificates: require('./certificates.html'),\n };\n\n public state: { [key: string]: boolean } = {\n accountsLoaded: false,\n submitting: false,\n };\n\n public allVnets: INetwork[];\n public allSubnets: IOracleSubnet[];\n public filteredVnets: INetwork[];\n public filteredSubnets: ISubnet[];\n public filteredSubnetsByType: ISubnet[];\n public selectedVnet: INetwork;\n public selectedSubnets: IOracleSubnet[];\n public numSubnetsAllowed = 1;\n public listeners: IOracleListener[] = [];\n public backendSets: IOracleBackEndSet[] = [];\n public certificates: IOracleListenerCertificate[] = [];\n\n public static $inject = [\n '$scope',\n '$uibModalInstance',\n '$state',\n 'oracleLoadBalancerTransformer',\n 'application',\n 'loadBalancer',\n 'isNew',\n ];\n constructor(\n private $scope: ng.IScope,\n private $uibModalInstance: IModalServiceInstance,\n private $state: StateService,\n private oracleLoadBalancerTransformer: OracleLoadBalancerTransformer,\n private application: Application,\n private loadBalancer: IOracleLoadBalancer,\n private isNew: boolean,\n ) {\n this.initializeController();\n }\n\n public onApplicationRefresh() {\n // If the user has already closed the modal, do not navigate to the new details view\n if (this.$scope.$$destroyed) {\n return;\n }\n this.$uibModalInstance.close();\n const newStateParams = {\n name: this.loadBalancer.name,\n accountId: this.loadBalancer.account,\n region: this.loadBalancer.region,\n provider: 'oracle',\n };\n\n if (!this.$state.includes('**.loadBalancerDetails')) {\n this.$state.go('.loadBalancerDetails', newStateParams);\n } else {\n this.$state.go('^.loadBalancerDetails', newStateParams);\n }\n }\n\n public onTaskComplete() {\n this.application.loadBalancers.refresh();\n this.application.loadBalancers.onNextRefresh(this.$scope, this.onApplicationRefresh);\n }\n\n public initializeCreateMode() {\n AccountService.listAccounts(this.oracle).then((accounts: IAccountDetails[]) => {\n this.$scope.accounts = accounts; // TODO desagar does this need to be in $scope?\n this.state.accountsLoaded = true;\n this.$scope.state = this.state;\n this.accountUpdated();\n });\n this.loadVnets();\n this.loadSubnets();\n }\n\n private initControllerFromLoadBalancerCmd() {\n this.numSubnetsAllowed = this.calcNumSubnetsAllowed();\n if (this.$scope.loadBalancerCmd.listeners) {\n Object.keys(this.$scope.loadBalancerCmd.listeners).forEach((lis) => {\n this.listeners.push(this.$scope.loadBalancerCmd.listeners[lis]);\n });\n }\n if (this.$scope.loadBalancerCmd.backendSets) {\n Object.keys(this.$scope.loadBalancerCmd.backendSets).forEach((b) => {\n this.backendSets.push(this.$scope.loadBalancerCmd.backendSets[b]);\n });\n }\n if (this.$scope.loadBalancerCmd.certificates) {\n Object.keys(this.$scope.loadBalancerCmd.certificates).forEach((b) => {\n this.certificates.push(this.$scope.loadBalancerCmd.certificates[b]);\n });\n }\n }\n\n public initializeController() {\n if (this.loadBalancer) {\n this.$scope.loadBalancerCmd = this.oracleLoadBalancerTransformer.convertLoadBalancerForEditing(this.loadBalancer);\n this.initControllerFromLoadBalancerCmd();\n if (this.isNew) {\n const nameParts = NameUtils.parseLoadBalancerName(this.loadBalancer.name);\n this.$scope.loadBalancerCmd.stack = nameParts.stack;\n this.$scope.loadBalancerCmd.detail = nameParts.freeFormDetails;\n delete this.$scope.loadBalancerCmd.name;\n }\n } else {\n this.$scope.loadBalancerCmd = this.oracleLoadBalancerTransformer.constructNewLoadBalancerTemplate(\n this.application,\n );\n }\n this.$scope.prevBackendSetNames = [];\n this.$scope.prevCertNames = [];\n if (this.isNew) {\n this.updateName();\n this.updateLoadBalancerNames();\n this.initializeCreateMode();\n }\n this.$scope.taskMonitor = new TaskMonitor({\n application: this.application,\n title: (this.isNew ? 'Creating ' : 'Updating ') + 'your load balancer',\n modalInstance: this.$uibModalInstance,\n onTaskComplete: this.onTaskComplete,\n });\n }\n\n public updateLoadBalancerNames() {\n const account = this.$scope.loadBalancerCmd.credentials;\n const region = this.$scope.loadBalancerCmd.region;\n\n const accountLoadBalancerNamesByRegion: { [key: string]: string[] } = {};\n this.application\n .getDataSource('loadBalancers')\n .refresh(true)\n .then(() => {\n const loadBalancers: ILoadBalancer[] = this.application.loadBalancers.data;\n loadBalancers.forEach((loadBalancer) => {\n if (loadBalancer.account === account) {\n accountLoadBalancerNamesByRegion[loadBalancer.region] =\n accountLoadBalancerNamesByRegion[loadBalancer.region] || [];\n accountLoadBalancerNamesByRegion[loadBalancer.region].push(loadBalancer.name);\n }\n });\n\n this.$scope.existingLoadBalancerNames = accountLoadBalancerNamesByRegion[region] || [];\n });\n }\n\n public validateBeforeSubmit() {\n return this.propertiesValid() && this.listenersValid();\n }\n\n /**\n * Used to prevent form submission if listeners are invalid\n * Currently it calls the two validations applicable to listeners.\n * @returns {boolean}\n */\n public listenersValid() {\n return this.listenersUniqueProtocolPort() && this.listenersBackendSetsExist() && this.listenersCertificatesExist();\n }\n\n /**\n * Used to prevent form submission if the properties section is invalid\n * Current the only validation is for subnet count.\n */\n public propertiesValid() {\n return this.selectedSubnets && this.selectedSubnets.length === this.calcNumSubnetsAllowed();\n }\n\n public listenersUniqueProtocolPort() {\n // validate that listeners have unique protocol/port combination\n const countsMap: { [key: string]: number } = {};\n this.listeners.reduce((counts, listener) => {\n const protocolPort = listener.protocol + '_' + listener.port;\n counts[protocolPort] = counts[protocolPort] ? counts[protocolPort] + 1 : 1;\n return counts;\n }, countsMap);\n // There should be no protocol/port combo in the countsMap with a count > 1\n return (\n Object.keys(countsMap).filter((key) => {\n return countsMap[key] > 1;\n }).length === 0\n );\n }\n\n public listenersBackendSetsExist() {\n // validate that the listeners' selected backend sets must exist. This is needed because Angular\n // does not clear the selected backendSet from the drop down if the backend set is deleted.\n const listenersWithNonExistentBackendSet: IOracleListener[] = this.listeners.filter(\n (listener) => !this.backendSets.find((backendSet) => backendSet.name === listener.defaultBackendSetName),\n );\n return listenersWithNonExistentBackendSet.length === 0;\n }\n\n public listenersCertificatesExist() {\n // validate that the listeners' selected certificate names exist. This is needed because Angular\n // does not clear the selected certificate from the drop down if the certificate is deleted.\n const listenersWithNonExistentCertificate: IOracleListener[] = this.listeners.filter(\n (listener) =>\n listener.sslConfiguration &&\n !this.certificates.find((cert) => cert.certificateName === listener.sslConfiguration.certificateName),\n );\n return listenersWithNonExistentCertificate.length === 0;\n }\n\n public updateName() {\n this.$scope.loadBalancerCmd.name = this.getName();\n }\n\n public getName() {\n const lb = this.$scope.loadBalancerCmd;\n const lbName = [this.application.name, lb.stack || '', lb.detail || ''].join('-');\n return trimEnd(lbName, '-');\n }\n\n public accountUpdated() {\n this.loadRegionsForAccount();\n }\n\n public regionUpdated() {\n this.updateLoadBalancerNames();\n this.updateVnets();\n }\n\n public loadRegionsForAccount() {\n AccountService.getRegionsForAccount(this.$scope.loadBalancerCmd.credentials).then((regions: IRegion[]) => {\n this.$scope.regions = regions; // TODO desagar does this need to be in $scope?\n if (regions.length === 1) {\n this.$scope.loadBalancerCmd.region = regions[0].name;\n this.regionUpdated();\n }\n });\n }\n\n public loadVnets() {\n NetworkReader.listNetworksByProvider(this.oracle).then((vnets: INetwork[]) => {\n this.allVnets = vnets || [];\n if (this.$scope.loadBalancerCmd.region) {\n this.updateVnets();\n }\n });\n }\n\n public loadSubnets() {\n SubnetReader.listSubnetsByProvider(this.oracle).then((subnets: IOracleSubnet[]) => {\n this.allSubnets = subnets || [];\n });\n }\n\n public updateVnets() {\n const account = this.$scope.loadBalancerCmd.credentials;\n const region = this.$scope.loadBalancerCmd.region;\n this.filteredVnets = this.allVnets.filter((vnet: INetwork) => {\n return vnet.account === account && vnet.region === region;\n });\n }\n\n public updateSubnets(network: INetwork) {\n this.selectedSubnets = [];\n this.$scope.loadBalancerCmd.subnetIds = [];\n this.filteredSubnets = this.allSubnets.filter((subnet: IOracleSubnet) => {\n return subnet.vcnId === network.id;\n });\n this.filteredSubnetsByType = cloneDeep(this.filteredSubnets);\n }\n\n public selectedVnetChanged(network: INetwork) {\n this.selectedVnet = network;\n this.$scope.loadBalancerCmd.vpcId = network.id;\n this.updateSubnets(network);\n }\n\n public selectedSubnetsChanged(selectedSubnet: IOracleSubnet) {\n if (selectedSubnet.availabilityDomain) {\n this.filteredSubnetsByType = this.filteredSubnets.filter((subnet: IOracleSubnet) => {\n return !!subnet.availabilityDomain;\n });\n } else {\n this.filteredSubnetsByType = [];\n }\n }\n\n public selectedSubnetRemoved() {\n if (this.selectedSubnets.length === 0) {\n this.filteredSubnetsByType = cloneDeep(this.filteredSubnets);\n }\n if (this.selectedSubnets.length === 1 && this.selectedSubnets[0].availabilityDomain) {\n this.filteredSubnetsByType = this.filteredSubnets.filter((subnet: IOracleSubnet) => {\n return !!subnet.availabilityDomain;\n });\n }\n }\n\n public isPrivateChanged() {\n this.numSubnetsAllowed = this.calcNumSubnetsAllowed();\n }\n\n public listenerIsSslChanged(listener: IOracleListener) {\n if (listener.isSsl) {\n listener.sslConfiguration = this.oracleLoadBalancerTransformer.constructNewSSLConfiguration();\n } else {\n listener.sslConfiguration = undefined;\n }\n }\n\n public calcNumSubnetsAllowed() {\n if (this.$scope.loadBalancerCmd.isPrivate) {\n return 1;\n }\n\n if (this.selectedSubnets && this.selectedSubnets.length === 1 && !this.selectedSubnets[0].availabilityDomain) {\n return 1;\n }\n\n return 2;\n }\n\n public getSubnetLimit() {}\n\n public removeListener(idx: number) {\n this.listeners.splice(idx, 1);\n }\n\n public addListener() {\n this.listeners.push(this.oracleLoadBalancerTransformer.constructNewListenerTemplate());\n }\n\n public removeBackendSet(idx: number) {\n const backendSet = this.backendSets[idx];\n this.backendSets.splice(idx, 1);\n this.$scope.prevBackendSetNames.splice(idx, 1);\n // Also clear the defaultBackendSetName field of any listeners who are using this backendSet\n this.listeners.forEach((lis) => {\n if (lis.defaultBackendSetName === backendSet.name) {\n lis.defaultBackendSetName = undefined;\n }\n });\n }\n\n public isBackendSetRemovable(idx: number): boolean {\n const backendSet = this.backendSets[idx];\n if (backendSet && backendSet.backends && backendSet.backends.length > 0) {\n return false;\n }\n let hasListener = false;\n this.listeners.forEach((lis) => {\n if (lis.defaultBackendSetName === backendSet.name) {\n hasListener = true;\n }\n });\n return !hasListener;\n }\n\n public addBackendSet() {\n const nameSuffix: number = this.backendSets.length + 1;\n const name: string = 'backendSet' + nameSuffix;\n this.$scope.prevBackendSetNames.push(name);\n this.backendSets.push(this.oracleLoadBalancerTransformer.constructNewBackendSetTemplate(name));\n }\n\n public backendSetNameChanged(idx: number) {\n const prevName = this.$scope.prevBackendSetNames && this.$scope.prevBackendSetNames[idx];\n if (prevName && prevName !== this.backendSets[idx].name) {\n this.listeners\n .filter((lis) => lis.defaultBackendSetName === prevName)\n .forEach((lis) => {\n lis.defaultBackendSetName = this.backendSets[idx].name;\n });\n }\n }\n\n public isCertRemovable(idx: number): boolean {\n const cert = this.certificates[idx];\n let hasListener = false;\n this.listeners.forEach((lis) => {\n if (lis.isSsl && lis.sslConfiguration && lis.sslConfiguration.certificateName === cert.certificateName) {\n hasListener = true;\n }\n });\n return !hasListener;\n }\n\n public removeCert(idx: number) {\n const cert = this.certificates[idx];\n this.certificates.splice(idx, 1);\n this.$scope.prevCertNames.splice(idx, 1);\n // Also clear the certificateName field of any listeners who are using this certificate\n this.listeners.forEach((lis) => {\n if (lis.sslConfiguration && lis.sslConfiguration.certificateName === cert.certificateName) {\n lis.sslConfiguration.certificateName = undefined;\n }\n });\n }\n\n public addCert() {\n const nameSuffix: number = this.certificates.length + 1;\n const name: string = 'certificate' + nameSuffix;\n this.$scope.prevCertNames.push(name);\n this.certificates.push(this.oracleLoadBalancerTransformer.constructNewCertificateTemplate(name));\n }\n\n public certNameChanged(idx: number) {\n const prevName = this.$scope.prevCertNames && this.$scope.prevCertNames[idx];\n if (prevName && prevName !== this.certificates[idx].certificateName) {\n this.listeners\n .filter((lis) => lis.sslConfiguration && lis.sslConfiguration.certificateName === prevName)\n .forEach((lis) => {\n lis.sslConfiguration.certificateName = this.certificates[idx].certificateName;\n });\n }\n }\n\n public submit() {\n const descriptor = this.isNew ? 'Create' : 'Update';\n\n this.$scope.taskMonitor.submit(() => {\n const params = {\n cloudProvider: 'oracle',\n application: this.application.name,\n clusterName: this.$scope.loadBalancerCmd.clusterName,\n resourceGroupName: this.$scope.loadBalancerCmd.clusterName,\n loadBalancerName: this.$scope.loadBalancerCmd.name,\n loadBalancerId: null as string,\n };\n if (this.loadBalancer && this.loadBalancer.id) {\n params.loadBalancerId = this.loadBalancer.id;\n }\n\n if (this.selectedVnet) {\n this.$scope.loadBalancerCmd.vpcId = this.selectedVnet.id;\n }\n\n if (this.selectedSubnets && this.selectedSubnets.length > 0) {\n this.$scope.loadBalancerCmd.subnetIds = this.selectedSubnets.map((subnet: IOracleSubnet) => {\n return subnet.id;\n });\n\n for (const subnet of this.selectedSubnets) {\n if (!this.$scope.loadBalancerCmd.subnetTypeMap) {\n this.$scope.loadBalancerCmd.subnetTypeMap = {\n [subnet.id]: !subnet.availabilityDomain ? 'Regional' : 'AD',\n };\n } else {\n this.$scope.loadBalancerCmd.subnetTypeMap[subnet.id] = !subnet.availabilityDomain ? 'Regional' : 'AD';\n }\n }\n }\n\n if (this.backendSets) {\n this.$scope.loadBalancerCmd.backendSets = this.backendSets.reduce(\n (backendSetsMap: { [name: string]: IOracleBackEndSet }, backendSet: IOracleBackEndSet) => {\n backendSetsMap[backendSet.name] = backendSet;\n return backendSetsMap;\n },\n {},\n );\n }\n\n if (this.listeners) {\n this.$scope.loadBalancerCmd.listeners = this.listeners.reduce(\n (listenersMap: { [name: string]: IOracleListener }, listener: IOracleListener) => {\n listener.name = listener.protocol + '_' + listener.port;\n listenersMap[listener.name] = listener;\n return listenersMap;\n },\n {},\n );\n }\n\n if (this.certificates) {\n this.$scope.loadBalancerCmd.certificates = this.certificates.reduce(\n (certMap: { [name: string]: IOracleListenerCertificate }, cert: IOracleListenerCertificate) => {\n certMap[cert.certificateName] = cert;\n if (!cert.isNew) {\n // existing certificate sends only the name\n certMap[cert.certificateName].publicCertificate = null;\n }\n return certMap;\n },\n {},\n );\n }\n\n this.$scope.loadBalancerCmd.type = 'upsertLoadBalancer';\n if (!this.$scope.loadBalancerCmd.vnet && !this.$scope.loadBalancerCmd.subnetType) {\n this.$scope.loadBalancerCmd.securityGroups = null;\n }\n\n return LoadBalancerWriter.upsertLoadBalancer(this.$scope.loadBalancerCmd, this.application, descriptor, params);\n });\n }\n\n public cancel() {\n this.$uibModalInstance.dismiss();\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_CREATE_CONTROLLER = 'spinnaker.oracle.loadBalancer.create.controller';\nmodule(ORACLE_LOAD_BALANCER_CREATE_CONTROLLER, [\n ANGULAR_UI_BOOTSTRAP as any,\n UIROUTER_ANGULARJS,\n ORACLE_LOAD_BALANCER_TRANSFORMER,\n]).controller('oracleCreateLoadBalancerCtrl', OracleLoadBalancerController);\n","import type { StateService } from '@uirouter/angularjs';\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport type { IController } from 'angular';\nimport angular, { module } from 'angular';\nimport type { IModalService } from 'angular-ui-bootstrap';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\nimport { sortBy } from 'lodash';\n\nimport type { Application, ISecurityGroup, LoadBalancerReader, SecurityGroupReader } from '@spinnaker/core';\nimport { ConfirmationModalService, FirewallLabels, LoadBalancerWriter } from '@spinnaker/core';\n\nimport { OracleLoadBalancerController } from '../configure/createLoadBalancer.controller';\nimport type { ILoadBalancerDetails, IOracleLoadBalancer } from '../../domain/IOracleLoadBalancer';\n\nexport class OracleLoadBalancerDetailController implements IController {\n public static $inject = [\n '$scope',\n '$state',\n '$uibModal',\n 'loadBalancer',\n 'app',\n 'securityGroupReader',\n 'loadBalancerReader',\n '$q',\n ];\n constructor(\n private $scope: ng.IScope,\n private $state: StateService,\n private $uibModal: IModalService,\n private loadBalancer: ILoadBalancerDetails,\n private app: Application,\n private securityGroupReader: SecurityGroupReader,\n private loadBalancerReader: LoadBalancerReader,\n private $q: angular.IQService,\n ) {\n $scope.state = {\n loading: true,\n };\n $scope.firewallsLabel = FirewallLabels.get('Firewalls');\n\n const extractLoadBalancer = (): PromiseLike<any> => {\n $scope.loadBalancer = app.loadBalancers.data.filter((test: IOracleLoadBalancer) => {\n return (\n test.name === loadBalancer.name &&\n test.region === loadBalancer.region &&\n test.account === loadBalancer.accountId\n );\n })[0];\n\n if ($scope.loadBalancer) {\n const detailsLoader = this.loadBalancerReader.getLoadBalancerDetails(\n $scope.loadBalancer.cloudProvider,\n loadBalancer.accountId,\n loadBalancer.region,\n loadBalancer.name,\n );\n\n return detailsLoader.then((details) => {\n // ILoadBalancerSourceData\n $scope.state.loading = false;\n const securityGroups: ISecurityGroup[] = [];\n\n const filtered = details.filter((test: IOracleLoadBalancer) => {\n return test.name === loadBalancer.name;\n });\n\n if (filtered.length) {\n $scope.loadBalancer.elb = filtered[0];\n\n $scope.loadBalancer.account = loadBalancer.accountId;\n\n if ($scope.loadBalancer.elb.securityGroups) {\n $scope.loadBalancer.elb.securityGroups.forEach((securityGroupId: string) => {\n const match = this.securityGroupReader.getApplicationSecurityGroup(\n this.app,\n loadBalancer.accountId,\n loadBalancer.region,\n securityGroupId,\n );\n if (match) {\n securityGroups.push(match);\n }\n });\n this.$scope.securityGroups = sortBy(securityGroups, 'name');\n }\n }\n });\n }\n if (!this.$scope.loadBalancer) {\n this.$state.go('^');\n }\n\n return this.$q.when(null);\n };\n\n this.app\n .ready()\n .then(extractLoadBalancer)\n .then(() => {\n // If the user navigates away from the view before the initial extractLoadBalancer call completes,\n // do not bother subscribing to the refresh\n if (!this.$scope.$$destroyed) {\n this.app.onRefresh($scope, extractLoadBalancer);\n }\n });\n }\n\n public editLoadBalancer() {\n this.$uibModal.open({\n templateUrl: require('../configure/editLoadBalancer.html'),\n controller: OracleLoadBalancerController,\n controllerAs: 'ctrl',\n size: 'lg',\n resolve: {\n application: () => {\n return this.app;\n },\n loadBalancer: () => {\n return angular.copy(this.$scope.loadBalancer);\n },\n isNew: () => {\n return false;\n },\n },\n });\n }\n\n public deleteLoadBalancer() {\n if (this.$scope.loadBalancer.instances && this.$scope.loadBalancer.instances.length) {\n return;\n }\n\n const taskMonitor = {\n application: this.app,\n title: 'Deleting ' + this.loadBalancer.name,\n };\n\n const command = {\n cloudProvider: 'oracle',\n loadBalancerName: this.$scope.loadBalancer.name,\n credentials: this.$scope.loadBalancer.account,\n region: this.loadBalancer.region,\n application: this.app.name,\n loadBalancerId: this.$scope.loadBalancer.id,\n };\n\n const submitMethod = () => LoadBalancerWriter.deleteLoadBalancer(command, this.app);\n\n ConfirmationModalService.confirm({\n header: 'Really delete ' + this.loadBalancer.name + '?',\n buttonText: 'Delete ' + this.loadBalancer.name,\n account: this.loadBalancer.accountId,\n taskMonitorConfig: taskMonitor,\n submitMethod: submitMethod,\n });\n }\n}\n\nexport const ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER = 'spinnaker.oracle.loadBalancerDetail.controller';\nmodule(ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER, [UIROUTER_ANGULARJS, ANGULAR_UI_BOOTSTRAP as any]).controller(\n 'oracleLoadBalancerDetailCtrl',\n OracleLoadBalancerDetailController,\n);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { EXECUTION_DETAILS_SECTION_SERVICE, SETTINGS } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER =\n 'spinnaker.oracle.pipeline.stage.bake.executionDetails.controller';\nexport const name = ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER, [\n EXECUTION_DETAILS_SECTION_SERVICE,\n UIROUTER_ANGULARJS,\n]).controller('oracleBakeExecutionDetailsCtrl', [\n '$log',\n '$scope',\n '$stateParams',\n 'executionDetailsSectionService',\n '$interpolate',\n function ($log, $scope, $stateParams, executionDetailsSectionService, $interpolate) {\n $scope.configSections = ['bakeConfig', 'taskStatus'];\n\n const initialized = () => {\n $scope.detailsSection = $stateParams.details;\n $scope.provider = $scope.stage.context.cloudProviderType || 'oracle';\n $scope.roscoMode = SETTINGS.feature.roscoMode;\n $scope.bakeryDetailUrl = $interpolate(\n $scope.roscoMode && SETTINGS.roscoDetailUrl ? SETTINGS.roscoDetailUrl : SETTINGS.bakeryDetailUrl,\n );\n };\n\n const initialize = () => executionDetailsSectionService.synchronizeSection($scope.configSections, initialized);\n\n initialize();\n\n $scope.$on('$stateChangeSuccess', initialize);\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\nimport { size } from 'lodash';\n\nimport {\n AccountService,\n AuthenticationService,\n BakeExecutionLabel,\n BakeryReader,\n PipelineTemplates,\n Registry,\n} from '@spinnaker/core';\n\nimport { ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER } from './bakeExecutionDetails.controller';\n\nexport const ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE = 'spinnaker.oracle.pipeline.stage.bakeStage';\nexport const name = ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE, [ORACLE_PIPELINE_STAGES_BAKE_BAKEEXECUTIONDETAILS_CONTROLLER])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'bake',\n cloudProvider: 'oracle',\n label: 'Bake',\n description: 'Bakes an image',\n templateUrl: require('./bakeStage.html'),\n executionDetailsUrl: require('./bakeExecutionDetails.html'),\n executionLabelComponent: BakeExecutionLabel,\n supportsCustomTimeout: true,\n validators: [\n { type: 'requiredField', fieldName: 'accountName' },\n { type: 'requiredField', fieldName: 'region' },\n { type: 'requiredField', fieldName: 'baseOs' },\n { type: 'requiredField', fieldName: 'upgrade' },\n { type: 'requiredField', fieldName: 'cloudProviderType' },\n { type: 'requiredField', fieldName: 'amiName', fieldLabel: 'Image Name' },\n ],\n restartable: true,\n });\n })\n .controller('oracleBakeStageCtrl', [\n '$scope',\n '$q',\n '$uibModal',\n function ($scope, $q, $uibModal) {\n const provider = 'oracle';\n\n if (!$scope.stage.cloudProvider) {\n $scope.stage.cloudProvider = provider;\n }\n\n if (!$scope.stage) {\n $scope.stage = {};\n }\n\n $scope.stage.extendedAttributes = $scope.stage.extendedAttributes || {};\n\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n\n function initialize() {\n $scope.viewState.providerSelected = true;\n\n $q.all([BakeryReader.getBaseOsOptions(provider), AccountService.listAccounts(provider)]).then(\n ([baseOsOptions, accounts]) => {\n if (baseOsOptions.baseImages.length > 0) {\n $scope.baseOsOptions = baseOsOptions;\n if (!$scope.stage.baseOs) {\n $scope.stage.baseOs = $scope.baseOsOptions.baseImages[0].id;\n }\n }\n if (!$scope.stage.user) {\n $scope.stage.user = AuthenticationService.getAuthenticatedUser().name;\n }\n if (!$scope.stage.upgrade) {\n $scope.stage.upgrade = true;\n }\n\n $scope.accounts = accounts;\n\n if ($scope.stage.accountName) {\n AccountService.getRegionsForAccount($scope.stage.accountName).then(function (regions) {\n if (Array.isArray(regions) && regions.length != 0) {\n // there is exactly one region per account\n $scope.stage.region = regions[0].name;\n }\n });\n }\n\n $scope.viewState.loading = false;\n },\n );\n }\n\n this.getBaseOsDescription = function (baseOsOption) {\n return baseOsOption.id + (baseOsOption.shortDescription ? ' (' + baseOsOption.shortDescription + ')' : '');\n };\n\n this.accountUpdated = function () {\n AccountService.getRegionsForAccount($scope.stage.accountName).then(function (regions) {\n if (Array.isArray(regions) && regions.length != 0) {\n // there is exactly one region per account\n $scope.stage.region = regions[0].name;\n }\n });\n };\n\n this.addExtendedAttribute = function () {\n if (!$scope.stage.extendedAttributes) {\n $scope.stage.extendedAttributes = {};\n }\n $uibModal\n .open({\n templateUrl: PipelineTemplates.addExtendedAttributes,\n controller: 'bakeStageAddExtendedAttributeController',\n controllerAs: 'addExtendedAttribute',\n resolve: {\n extendedAttribute: function () {\n return {\n key: '',\n value: '',\n };\n },\n },\n })\n .result.then(function (extendedAttribute) {\n $scope.stage.extendedAttributes[extendedAttribute.key] = extendedAttribute.value;\n })\n .catch(() => {});\n };\n\n this.removeExtendedAttribute = function (key) {\n delete $scope.stage.extendedAttributes[key];\n };\n\n this.showExtendedAttributes = function () {\n return (\n $scope.viewState.roscoMode || ($scope.stage.extendedAttributes && size($scope.stage.extendedAttributes) > 0)\n );\n };\n\n $scope.$watch('stage.accountName', $scope.accountUpdated);\n\n initialize();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE = 'spinnaker.oracle.pipeline.stage.destroyAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'destroyServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./destroyAsgStage.html'),\n executionStepLabelUrl: require('./destroyAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\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 })\n .controller('oracleDestroyAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n const provider = 'oracle';\n\n $scope.targets = StageConstants.TARGET_LIST;\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n init();\n\n function init() {\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (!stage.target) {\n stage.target = $scope.targets[0].val;\n }\n }\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE = 'spinnaker.oracle.pipeline.stage.disableAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'disableServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./disableAsgStage.html'),\n executionStepLabelUrl: require('./disableAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\n message:\n 'This pipeline will attempt to disable 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 })\n .controller('oracleDisableAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n\n const provider = 'oracle';\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n $scope.targets = StageConstants.TARGET_LIST;\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (!stage.target) {\n stage.target = $scope.targets[0].val;\n }\n },\n ]);\n","'use strict';\n\nimport * as angular from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE = 'spinnaker.oracle.pipeline.stage.findAmiStage';\nexport const name = ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE; // for backwards compatibility\nangular\n .module(ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'findImage',\n cloudProvider: 'oracle',\n templateUrl: require('./findAmiStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'selectionStrategy', fieldLabel: 'Server Group Selection' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials' },\n ],\n });\n })\n .controller('oracleFindAmiStageCtrl', [\n '$scope',\n ($scope) => {\n const provider = 'oracle';\n\n const stage = $scope.stage;\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then((accounts) => {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n $scope.selectionStrategies = [\n {\n label: 'Largest',\n val: 'LARGEST',\n description: 'When multiple server groups exist, prefer the server group with the most instances',\n },\n {\n label: 'Newest',\n val: 'NEWEST',\n description: 'When multiple server groups exist, prefer the newest',\n },\n {\n label: 'Oldest',\n val: 'OLDEST',\n description: 'When multiple server groups exist, prefer the oldest',\n },\n {\n label: 'Fail',\n val: 'FAIL',\n description: 'When multiple server groups exist, fail',\n },\n ];\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n stage.selectionStrategy = stage.selectionStrategy || $scope.selectionStrategies[0].val;\n\n if (angular.isUndefined(stage.onlyEnabled)) {\n stage.onlyEnabled = true;\n }\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n $scope.$watch('stage.credentials', $scope.accountUpdated);\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { BakeryReader, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE =\n 'spinnaker.oracle.pipeline.stage.findImageFromTagsStage';\nexport const name = ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'findImageFromTags',\n cloudProvider: 'oracle',\n templateUrl: require('./findImageFromTagsStage.html'),\n executionDetailsUrl: require('./findImageFromTagsExecutionDetails.html'),\n executionConfigSections: ['findImageConfig', 'taskStatus'],\n validators: [\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'packageName' },\n ],\n });\n })\n .controller('oracleFindImageFromTagsStageCtrl', [\n '$scope',\n function ($scope) {\n $scope.stage.packageName = $scope.stage.packageName || '*';\n $scope.stage.tags = $scope.stage.tags || {};\n $scope.stage.regions = $scope.stage.regions || [];\n $scope.stage.cloudProvider = $scope.stage.cloudProvider || 'oracle';\n\n BakeryReader.getRegions('oracle').then(function (regions) {\n $scope.regions = regions;\n });\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry, StageConstants } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE = 'spinnaker.oracle.pipeline.stage.resizeAsgStage';\nexport const name = ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'resizeServerGroup',\n cloudProvider: 'oracle',\n templateUrl: require('./resizeAsgStage.html'),\n executionStepLabelUrl: require('./resizeAsgStepLabel.html'),\n validators: [\n {\n type: 'targetImpedance',\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: 'action' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n });\n })\n .controller('oracleResizeAsgStageCtrl', [\n '$scope',\n function ($scope) {\n const ctrl = this;\n\n const provider = 'oracle';\n\n const stage = $scope.stage;\n\n $scope.viewState = {\n accountsLoaded: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then(function (accounts) {\n $scope.accounts = accounts;\n $scope.viewState.accountsLoaded = true;\n });\n\n $scope.resizeTargets = StageConstants.TARGET_LIST;\n\n $scope.scaleActions = [\n { label: 'Scale Up', val: 'scale_up' },\n { label: 'Scale Down', val: 'scale_down' },\n { label: 'Scale to Cluster Size', val: 'scale_to_cluster' },\n { label: 'Scale to Exact Size', val: 'scale_exact' },\n ];\n\n $scope.resizeTypes = [\n { label: 'Percentage', val: 'pct' },\n { label: 'Incremental', val: 'incr' },\n ];\n\n stage.capacity = stage.capacity || {};\n stage.regions = stage.regions || [];\n stage.target = stage.target || $scope.resizeTargets[0].val;\n stage.action = stage.action || $scope.scaleActions[0].val;\n stage.resizeType = stage.resizeType || $scope.resizeTypes[0].val;\n\n if (!stage.action && stage.resizeType === 'exact') {\n stage.action = 'scale_exact';\n }\n\n stage.cloudProvider = provider;\n stage.cloudProviderType = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.gce) {\n stage.credentials = $scope.application.defaultCredentials.gce;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.gce);\n }\n\n ctrl.updateResizeType = function () {\n if (stage.action === 'scale_exact') {\n stage.resizeType = 'exact';\n delete stage.scalePct;\n delete stage.scaleNum;\n } else {\n stage.capacity = {};\n if (stage.resizeType === 'pct') {\n delete stage.scaleNum;\n } else {\n stage.resizeType = 'incr';\n delete stage.scalePct;\n stage.scaleNum = stage.scaleNum || 0;\n }\n }\n };\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE =\n 'spinnaker.oracle.pipeline.stage.scaleDownClusterStage';\nexport const name = ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'scaleDownCluster',\n cloudProvider: 'oracle',\n templateUrl: require('./scaleDownClusterStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n {\n type: 'requiredField',\n fieldName: 'remainingFullSizeServerGroups',\n fieldLabel: 'Keep [X] full size Server Groups',\n },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n strategy: true,\n });\n })\n .controller('oracleScaleDownClusterStageCtrl', [\n '$scope',\n function ($scope) {\n const stage = $scope.stage;\n\n const provider = 'oracle';\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts(provider).then(function (accounts) {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n stage.regions = stage.regions || [];\n stage.cloudProvider = provider;\n\n if (!stage.credentials && $scope.application.defaultCredentials.gce) {\n stage.credentials = $scope.application.defaultCredentials.gce;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.gce) {\n stage.regions.push($scope.application.defaultRegions.gce);\n }\n\n if (stage.remainingFullSizeServerGroups === undefined) {\n stage.remainingFullSizeServerGroups = 1;\n }\n\n if (stage.allowScaleDownActive === undefined) {\n stage.allowScaleDownActive = false;\n }\n\n if (stage.preferLargerOverNewer === undefined) {\n stage.preferLargerOverNewer = 'false';\n }\n\n this.pluralize = function (str, val) {\n return val === 1 ? str : str + 's';\n };\n\n stage.preferLargerOverNewer = stage.preferLargerOverNewer.toString();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { AccountService, Registry } from '@spinnaker/core';\n\nexport const ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE =\n 'spinnaker.core.pipeline.stage.oracle.shrinkClusterStage';\nexport const name = ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE; // for backwards compatibility\nmodule(ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE, [])\n .config(function () {\n Registry.pipeline.registerStage({\n provides: 'shrinkCluster',\n cloudProvider: 'oracle',\n templateUrl: require('./shrinkClusterStage.html'),\n validators: [\n { type: 'requiredField', fieldName: 'cluster' },\n { type: 'requiredField', fieldName: 'shrinkToSize', fieldLabel: 'shrink to [X] Server Groups' },\n { type: 'requiredField', fieldName: 'regions' },\n { type: 'requiredField', fieldName: 'credentials', fieldLabel: 'account' },\n ],\n });\n })\n .controller('oracleShrinkClusterStageCtrl', [\n '$scope',\n function ($scope) {\n const ctrl = this;\n\n const stage = $scope.stage;\n\n $scope.state = {\n accounts: false,\n regionsLoaded: false,\n };\n\n AccountService.listAccounts('oracle').then(function (accounts) {\n $scope.accounts = accounts;\n $scope.state.accounts = true;\n });\n\n stage.regions = stage.regions || [];\n\n stage.cloudProvider = 'oracle';\n\n if (!stage.credentials && $scope.application.defaultCredentials.oracle) {\n stage.credentials = $scope.application.defaultCredentials.oracle;\n }\n\n if (!stage.regions.length && $scope.application.defaultRegions.oracle) {\n stage.regions.push($scope.application.defaultRegions.oracle);\n }\n\n if (stage.shrinkToSize === undefined) {\n stage.shrinkToSize = 1;\n }\n\n if (stage.allowDeleteActive === undefined) {\n stage.allowDeleteActive = false;\n }\n\n ctrl.pluralize = function (str, val) {\n return val === 1 ? str : str + 's';\n };\n\n if (stage.retainLargerOverNewer === undefined) {\n stage.retainLargerOverNewer = 'false';\n }\n\n stage.retainLargerOverNewer = stage.retainLargerOverNewer.toString();\n },\n ]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { FirewallLabels } from '@spinnaker/core';\n\nexport const ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER =\n 'spinnaker.oracle.securityGroup.create.controller';\nexport const name = ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER, []).controller('oracleCreateSecurityGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n function ($scope, $uibModalInstance) {\n this.cancel = () => {\n $uibModalInstance.dismiss();\n };\n $scope.firewallLabel = FirewallLabels.get('Firewall');\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nexport const ORACLE_SECURITYGROUP_SECURITYGROUP_READER = 'spinnaker.oracle.securityGroup.reader';\nexport const name = ORACLE_SECURITYGROUP_SECURITYGROUP_READER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_SECURITYGROUP_READER, []).factory('oracleSecurityGroupReader', function () {\n function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) {\n return indexedSecurityGroups[container.account][container.region][securityGroupId];\n }\n\n return {\n resolveIndexedSecurityGroup: resolveIndexedSecurityGroup,\n };\n});\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { NetworkReader } from '@spinnaker/core';\n\nexport const ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER = 'spinnaker.oracle.securityGroup.transformer';\nexport const name = ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER; // for backwards compatibility\nmodule(ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER, []).factory('oracleSecurityGroupTransformer', function () {\n const provider = 'oracle';\n\n function normalizeSecurityGroup(securityGroup) {\n return NetworkReader.listNetworksByProvider(provider).then(_.partial(addVcnNameToSecurityGroup, securityGroup));\n }\n\n function addVcnNameToSecurityGroup(securityGroup, vcns) {\n const matches = vcns.find((vcn) => vcn.id === securityGroup.network);\n securityGroup.vpcName = matches.length ? matches[0].name : '';\n }\n\n return {\n normalizeSecurityGroup: normalizeSecurityGroup,\n };\n});\n","'use strict';\n\nimport { module } from 'angular';\nimport _ from 'lodash';\n\nimport { AccountService, NetworkReader, SECURITY_GROUP_READER, SubnetReader } from '@spinnaker/core';\nimport { OracleProviderSettings } from '../../oracle.settings';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE =\n 'spinnaker.oracle.serverGroup.configure.configuration.service';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE, [SECURITY_GROUP_READER]).factory(\n 'oracleServerGroupConfigurationService',\n [\n '$q',\n 'oracleImageReader',\n 'securityGroupReader',\n function ($q, oracleImageReader, securityGroupReader) {\n const oracle = 'oracle';\n\n const getShapes = (image) => {\n if (!image || !image.compatibleShapes) {\n return [];\n }\n return image.compatibleShapes.map((shape) => {\n return { name: shape };\n });\n };\n\n const loadAndSelectRegions = (command, backingData) => {\n if (command.account) {\n const selectedAccountDetails = backingData.credentialsKeyedByAccount[command.account];\n if (!selectedAccountDetails) {\n return;\n }\n backingData.filtered.regions = _.map(selectedAccountDetails.regions, (region) => {\n return { name: region.name };\n });\n if (selectedAccountDetails) {\n command.region = selectedAccountDetails.region;\n }\n }\n };\n\n const loadAvailabilityDomains = (command) => {\n if (command.account && command.region) {\n AccountService.getAvailabilityZonesForAccountAndRegion(oracle, command.account, command.region).then(\n (availDoms) => {\n if (availDoms) {\n command.backingData.filtered.availabilityDomains = availDoms.map((av) => {\n return { name: av };\n });\n } else {\n command.backingData.filtered.availabilityDomains = [];\n command.availabilityDomain = null;\n }\n },\n );\n }\n };\n\n const loadLoadBalancers = (command) => {\n if (command.account && command.region) {\n command.backingData.filtered.loadBalancers = command.backingData.loadBalancers.filter(function (lb) {\n return lb.region === command.region && lb.account === command.account;\n });\n }\n };\n\n function configureCommand(application, command) {\n const defaults = command || {};\n const defaultCredentials =\n defaults.account || application.defaultCredentials.oracle || OracleProviderSettings.defaults.account;\n const defaultRegion =\n defaults.region || application.defaultRegions.oracle || OracleProviderSettings.defaults.region;\n\n return $q\n .all([\n AccountService.getCredentialsKeyedByAccount(oracle),\n NetworkReader.listNetworksByProvider(oracle),\n SubnetReader.listSubnetsByProvider(oracle),\n securityGroupReader.getAllSecurityGroups(),\n loadImages(),\n AccountService.getAvailabilityZonesForAccountAndRegion(oracle, defaultCredentials, defaultRegion),\n ])\n .then(function ([credentialsKeyedByAccount, networks, subnets, securityGroups, images, availDomains]) {\n const backingData = {\n credentialsKeyedByAccount,\n networks,\n subnets,\n securityGroups,\n images,\n availDomains,\n };\n\n backingData.accounts = _.keys(backingData.credentialsKeyedByAccount);\n backingData.filtered = {};\n loadAndSelectRegions(command, backingData);\n backingData.filtered.availabilityDomains = _.map(backingData.availDomains, function (zone) {\n return { name: zone };\n });\n\n backingData.filterSubnets = function () {\n if (command.vpcId && command.availabilityDomain) {\n return _.filter(backingData.subnets, {\n vcnId: command.vpcId,\n availabilityDomain: command.availabilityDomain,\n });\n }\n return backingData.subnets;\n };\n\n backingData.loadBalancers = application.loadBalancers.data;\n\n backingData.accountOnChange = function () {\n loadAndSelectRegions(command, command.backingData);\n loadAvailabilityDomains(command);\n loadLoadBalancers(command);\n };\n\n backingData.regionOnChange = function () {\n loadAvailabilityDomains(command);\n loadLoadBalancers(command);\n };\n\n backingData.availabilityDomainOnChange = function () {\n command.subnetId = null;\n backingData.seclists = null;\n };\n\n backingData.vpcOnChange = function () {\n command.subnetId = null;\n backingData.seclists = null;\n };\n\n backingData.subnetOnChange = function () {\n const subnet = _.find(backingData.subnets, { id: command.subnetId });\n const mySecGroups = backingData.securityGroups[command.account][oracle][command.region];\n const secLists = [];\n _.forEach(subnet.securityListIds, function (sid) {\n const sgRef = _.find(mySecGroups, { id: sid });\n securityGroupReader\n .getSecurityGroupDetails(\n command.application,\n command.account,\n oracle,\n command.region,\n command.vpcId,\n sgRef.name,\n )\n .then(function (sgd) {\n secLists.push(sgd);\n backingData.seclists = secLists;\n });\n });\n };\n\n backingData.findBackendSetsByLoadBalancerId = (loadBalancerId) => {\n const lb = backingData.filtered.loadBalancers.find((lb) => lb.id === loadBalancerId);\n if (lb && lb.backendSets) {\n //reduce the backendSets object to an array. The object is keyed by the backendSet name\n const bsetArray = [];\n Object.keys(lb.backendSets).reduce((arr, bsetName) => {\n const bset = lb.backendSets[bsetName];\n bset['name'] = bsetName;\n arr.push(bset);\n return arr;\n }, bsetArray);\n return bsetArray;\n } else {\n return [];\n }\n };\n\n backingData.findLoadBalListenersByBackendSetName = (loadBalancerId, backendSetName) => {\n const lb = backingData.filtered.loadBalancers.find((lb) => lb.id === loadBalancerId);\n if (lb && lb.listeners) {\n return Object.keys(lb.listeners)\n .filter((lisName) => lb.listeners[lisName].defaultBackendSetName === backendSetName)\n .map((lisName) => lb.listeners[lisName]);\n } else {\n return [];\n }\n };\n\n backingData.loadBalancerOnChange = () => {\n if (command.loadBalancerId) {\n backingData.filtered.backendSets = backingData.findBackendSetsByLoadBalancerId(command.loadBalancerId);\n } else {\n //no backend set name should be set if no load balancer id is set\n command.backendSetName = undefined;\n backingData.backendSetOnChange();\n backingData.filtered.backendSets = [];\n }\n };\n\n backingData.backendSetOnChange = () => {\n backingData.filtered.listeners =\n command.loadBalancerId && command.backendSetName\n ? backingData.findLoadBalListenersByBackendSetName(command.loadBalancerId, command.backendSetName)\n : [];\n };\n\n backingData.filtered.images = backingData.images;\n const shapesMap = {};\n _.forEach(backingData.filtered.images, (image) => {\n shapesMap[image.id] = getShapes(image);\n });\n backingData.filtered.shapes = shapesMap;\n backingData.filtered.allShapes = _.uniqBy(_.flatten(_.values(shapesMap)), 'name');\n command.backingData = backingData;\n if (command.account) {\n loadLoadBalancers(command);\n backingData.loadBalancerOnChange();\n backingData.backendSetOnChange();\n }\n });\n }\n\n function loadImages() {\n return oracleImageReader.findImages({ provider: oracle });\n }\n\n return {\n configureCommand: configureCommand,\n };\n },\n ],\n);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport * as angular from 'angular';\nimport ANGULAR_UI_BOOTSTRAP from 'angular-ui-bootstrap';\n\nimport { IMAGE_READER } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER =\n 'spinnaker.oracle.serverGroup.configure.wizard.basicSettings.controller';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER, [\n UIROUTER_ANGULARJS,\n ANGULAR_UI_BOOTSTRAP,\n IMAGE_READER,\n ])\n .controller('oracleServerGroupBasicSettingsCtrl', [\n '$scope',\n '$state',\n '$uibModalStack',\n '$controller',\n 'imageReader',\n function ($scope, $state, $uibModalStack, $controller, imageReader) {\n angular.extend(\n this,\n $controller('BasicSettingsMixin', {\n $scope: $scope,\n imageReader: imageReader,\n $uibModalStack: $uibModalStack,\n $state: $state,\n }),\n );\n },\n ]);\n","'use strict';\n\nimport * as angular from 'angular';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT =\n 'spinnaker.oracle.serverGroup.configure.wizard.capacity.selector.component';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT, [])\n .component('oracleServerGroupCapacitySelector', {\n templateUrl: require('./capacitySelector.component.html'),\n bindings: {\n command: '=',\n },\n controllerAs: 'vm',\n controller: angular.noop,\n });\n","import { module } from 'angular';\n\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE } from './serverGroupConfiguration.service';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER } from './wizard/basicSettings/basicSettings.controller';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT } from './wizard/capacity/capacitySelector.component';\n\n('use strict');\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE = 'spinnaker.oracle.serverGroup.configure';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE, [\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_BASICSETTINGS_BASICSETTINGS_CONTROLLER,\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CAPACITY_CAPACITYSELECTOR_COMPONENT,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCONFIGURATION_SERVICE,\n]);\n","'use strict';\n\nimport * as angular from 'angular';\nimport _ from 'lodash';\n\nimport { NameUtils } from '@spinnaker/core';\n\nimport { OracleProviderSettings } from '../../oracle.settings';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE =\n 'spinnaker.oracle.serverGroupCommandBuilder.service';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE, [])\n .factory('oracleServerGroupCommandBuilder', [\n '$q',\n function ($q) {\n const oracle = 'oracle';\n\n function buildNewServerGroupCommand(application, defaults) {\n defaults = defaults || {};\n\n const defaultAccount = defaults.account || OracleProviderSettings.defaults.account;\n const defaultRegion = defaults.region || OracleProviderSettings.defaults.region;\n\n const command = {\n account: defaultAccount,\n application: application.name,\n capacity: {\n desired: 1,\n },\n region: defaultRegion,\n selectedProvider: oracle,\n viewState: {\n mode: defaults.mode || 'create',\n disableStrategySelection: true,\n },\n };\n\n return $q.when(command);\n }\n\n function buildServerGroupCommandFromExisting(application, serverGroup, mode) {\n mode = mode || 'clone';\n const serverGroupName = NameUtils.parseServerGroupName(serverGroup.name);\n\n const command = {\n account: serverGroup.account,\n application: application.name,\n shape: serverGroup.launchConfig.shape,\n strategy: '',\n stack: serverGroupName.stack,\n vpcId: serverGroup.launchConfig.vpcId,\n subnetId: serverGroup.launchConfig.subnetId,\n region: serverGroup.region,\n availabilityDomain: serverGroup.launchConfig.availabilityDomain,\n sshAuthorizedKeys: serverGroup.launchConfig.sshAuthorizedKeys,\n selectedProvider: oracle,\n capacity: {\n desired: serverGroup.capacity.desired,\n },\n viewState: {\n mode: mode,\n disableStrategySelection: true,\n },\n };\n return $q.when(command);\n }\n\n function buildServerGroupCommandFromPipeline(application, originalCluster) {\n const pipelineCluster = _.cloneDeep(originalCluster);\n const commandDefaults = { account: pipelineCluster.account, region: pipelineCluster.region };\n return buildNewServerGroupCommand(application, commandDefaults).then((command) => {\n const viewState = {\n disableImageSelection: true,\n mode: 'editPipeline',\n submitButtonLabel: 'Done',\n templatingEnabled: true,\n };\n\n const viewOverrides = {\n viewState: viewState,\n };\n\n pipelineCluster.strategy = pipelineCluster.strategy || '';\n return angular.extend({}, command, pipelineCluster, viewOverrides);\n });\n }\n\n function buildNewServerGroupCommandForPipeline() {\n return $q.when({\n viewState: {\n requiresTemplateSelection: true,\n },\n });\n }\n\n return {\n buildNewServerGroupCommand: buildNewServerGroupCommand,\n buildServerGroupCommandFromExisting: buildServerGroupCommandFromExisting,\n buildNewServerGroupCommandForPipeline: buildNewServerGroupCommandForPipeline,\n buildServerGroupCommandFromPipeline: buildServerGroupCommandFromPipeline,\n };\n },\n ]);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport { FirewallLabels, ModalWizard, TaskMonitor } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.configure.cloneServerGroup';\nexport const name = ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER, [UIROUTER_ANGULARJS]).controller(\n 'oracleCloneServerGroupCtrl',\n [\n '$scope',\n '$uibModalInstance',\n '$q',\n 'application',\n 'serverGroupWriter',\n 'serverGroupCommand',\n 'oracleServerGroupConfigurationService',\n 'title',\n function (\n $scope,\n $uibModalInstance,\n $q,\n application,\n serverGroupWriter,\n serverGroupCommand,\n oracleServerGroupConfigurationService,\n title,\n ) {\n $scope.title = title;\n\n $scope.state = {\n loaded: false,\n requiresTemplateSelection: !!serverGroupCommand.viewState.requiresTemplateSelection,\n };\n\n $scope.command = serverGroupCommand;\n $scope.application = application;\n\n $scope.pages = {\n basicSettings: require('./basicSettings/basicSettings.html'),\n instanceType: require('./instanceType/instanceType.html'),\n capacity: require('./capacity/capacity.html'),\n loadBalancers: require('./loadBalancers/loadBalancers.html'),\n networkSettings: require('./network/networkSettings.html'),\n templateSelection: require('./templateSelection/templateSelection.html'),\n };\n\n this.templateSelectionText = {\n copied: [\n 'account, region, subnet, cluster name (stack, details)',\n 'load balancers',\n FirewallLabels.get('firewalls'),\n 'instance type',\n 'all fields on the Advanced Settings page',\n ],\n notCopied: [],\n };\n\n if (!$scope.command.viewState.disableStrategySelection) {\n this.templateSelectionText.notCopied.push(\n 'the deployment strategy (if any) used to deploy the most recent server group',\n );\n }\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Creating your server group',\n modalInstance: $uibModalInstance,\n });\n\n function configureCommand() {\n oracleServerGroupConfigurationService.configureCommand(application, serverGroupCommand).then(function () {\n $scope.state.loaded = true;\n });\n }\n\n this.isValid = function () {\n return $scope.command && $scope.form.$valid && ModalWizard.isComplete();\n };\n\n this.showSubmitButton = function () {\n return ModalWizard.allPagesVisited();\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n\n this.submit = function () {\n if ($scope.command.viewState.mode === 'editPipeline' || $scope.command.viewState.mode === 'createPipeline') {\n return $uibModalInstance.close($scope.command);\n }\n $scope.taskMonitor.submit(function () {\n return serverGroupWriter.cloneServerGroup($scope.command, application);\n });\n };\n\n configureCommand();\n\n this.templateSelected = () => {\n $scope.state.requiresTemplateSelection = false;\n configureCommand();\n };\n },\n ],\n);\n","'use strict';\n\nimport * as angular from 'angular';\n\nexport const ORACLE_COMMON_FOOTER_COMPONENT = 'spinnaker.oracle.footer.component';\nexport const name = ORACLE_COMMON_FOOTER_COMPONENT; // for backwards compatibility\nangular.module(ORACLE_COMMON_FOOTER_COMPONENT, []).component('oracleFooter', {\n templateUrl: require('./footer.component.html'),\n bindings: {\n action: '&',\n isValid: '&',\n cancel: '&',\n account: '=?',\n verification: '=?',\n },\n controllerAs: 'vm',\n controller: angular.noop,\n});\n","'use strict';\n\nimport * as angular from 'angular';\nimport _ from 'lodash';\n\nimport { SERVER_GROUP_WRITER } from '@spinnaker/core';\n\nexport const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT =\n 'spinnaker.oracle.serverGroup.details.resize.capacity.component';\nexport const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT; // for backwards compatibility\nangular\n .module(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT, [SERVER_GROUP_WRITER])\n .component('oracleResizeCapacity', {\n bindings: {\n command: '=',\n application: '=',\n serverGroup: '=',\n formMethods: '=',\n },\n templateUrl: require('./resizeCapacity.component.html'),\n controller: [\n '$scope',\n 'serverGroupWriter',\n function ($scope, serverGroupWriter) {\n this.command.newSize = null;\n\n angular.extend(this.formMethods, {\n formIsValid: () => _.every([this.command.newSize !== null, $scope.resizeCapacityForm.$valid]),\n submitMethod: () => {\n return serverGroupWriter.resizeServerGroup(this.serverGroup, this.application, {\n capacity: { min: this.command.newSize, max: this.command.newSize, desired: this.command.newSize },\n serverGroupName: this.serverGroup.name,\n targetSize: this.command.newSize,\n region: this.serverGroup.region,\n interestingHealthProviderNames: this.command.interestingHealthProviderNames,\n reason: this.command.reason,\n });\n },\n });\n },\n ],\n });\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { TaskMonitor } from '@spinnaker/core';\nimport { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';\n\nimport { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT } from './resizeCapacity.component';\n\nexport const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.resize.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER, [\n ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT,\n ORACLE_COMMON_FOOTER_COMPONENT,\n]).controller('oracleResizeServerGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n 'application',\n 'serverGroup',\n function ($scope, $uibModalInstance, application, serverGroup) {\n $scope.serverGroup = serverGroup;\n $scope.application = application;\n $scope.verification = {};\n $scope.command = {};\n $scope.formMethods = {};\n\n if (application && application.attributes) {\n if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {\n $scope.command.interestingHealthProviderNames = ['Oracle'];\n }\n\n $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;\n }\n\n this.isValid = function () {\n if (!$scope.verification.verified) {\n return false;\n }\n return $scope.formMethods.formIsValid();\n };\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Resizing ' + serverGroup.name,\n modalInstance: $uibModalInstance,\n });\n\n this.resize = function () {\n this.submitting = true;\n if (!this.isValid()) {\n return;\n }\n\n $scope.taskMonitor.submit($scope.formMethods.submitMethod);\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport { SERVER_GROUP_WRITER, TaskMonitor } from '@spinnaker/core';\nimport { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';\n\nexport const ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.rollback.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER, [\n SERVER_GROUP_WRITER,\n ORACLE_COMMON_FOOTER_COMPONENT,\n]).controller('oracleRollbackServerGroupCtrl', [\n '$scope',\n '$uibModalInstance',\n 'serverGroupWriter',\n 'application',\n 'serverGroup',\n 'disabledServerGroups',\n function ($scope, $uibModalInstance, serverGroupWriter, application, serverGroup, disabledServerGroups) {\n $scope.serverGroup = serverGroup;\n $scope.disabledServerGroups = disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name));\n $scope.verification = {};\n\n $scope.command = {\n rollbackType: 'EXPLICIT',\n rollbackContext: {\n rollbackServerGroupName: serverGroup.name,\n },\n };\n\n if (application && application.attributes) {\n if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {\n $scope.command.interestingHealthProviderNames = ['Oracle'];\n }\n\n $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;\n }\n\n this.isValid = function () {\n const command = $scope.command;\n if (!$scope.verification.verified) {\n return false;\n }\n\n return command.rollbackContext.restoreServerGroupName !== undefined;\n };\n\n $scope.taskMonitor = new TaskMonitor({\n application: application,\n title: 'Rollback ' + serverGroup.name,\n modalInstance: $uibModalInstance,\n });\n\n this.rollback = function () {\n this.submitting = true;\n if (!this.isValid()) {\n return;\n }\n\n const submitMethod = function () {\n return serverGroupWriter.rollbackServerGroup(serverGroup, application, $scope.command);\n };\n\n $scope.taskMonitor.submit(submitMethod);\n };\n\n this.cancel = function () {\n $uibModalInstance.dismiss();\n };\n },\n]);\n","'use strict';\n\nimport UIROUTER_ANGULARJS from '@uirouter/angularjs';\nimport { module } from 'angular';\n\nimport {\n ConfirmationModalService,\n NetworkReader,\n SERVER_GROUP_WRITER,\n ServerGroupReader,\n ServerGroupWarningMessageService,\n SubnetReader,\n} from '@spinnaker/core';\n\nimport { ORACLE_IMAGE_IMAGE_READER } from '../../image/image.reader';\nimport { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER } from './resize/resizeServerGroup.controller';\nimport { ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER } from './rollback/rollbackServerGroup.controller';\n\nexport const ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER =\n 'spinnaker.oracle.serverGroup.details.controller';\nexport const name = ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER, [\n UIROUTER_ANGULARJS,\n SERVER_GROUP_WRITER,\n ORACLE_IMAGE_IMAGE_READER,\n ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER,\n ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER,\n]).controller('oracleServerGroupDetailsCtrl', [\n '$scope',\n '$state',\n '$uibModal',\n 'app',\n 'serverGroup',\n 'serverGroupWriter',\n 'oracleImageReader',\n function ($scope, $state, $uibModal, app, serverGroup, serverGroupWriter, oracleImageReader) {\n const provider = 'oracle';\n\n this.application = app;\n this.serverGroup = serverGroup;\n\n this.state = {\n loading: true,\n };\n\n /////////////////////////////////////////////////////////\n // Fetch data\n /////////////////////////////////////////////////////////\n\n const retrieveServerGroup = () => {\n return ServerGroupReader.getServerGroup(\n app.name,\n serverGroup.accountId,\n serverGroup.region,\n serverGroup.name,\n ).then((details) => {\n cancelLoader();\n details.account = serverGroup.accountId;\n this.serverGroup = details;\n retrieveNetwork();\n retrieveSubnet();\n retrieveImage();\n });\n };\n\n const retrieveNetwork = () => {\n NetworkReader.listNetworksByProvider(provider).then((networks) => {\n this.serverGroup.network = _.chain(networks)\n .filter({ account: this.serverGroup.account, id: this.serverGroup.launchConfig.vpcId })\n .head()\n .value();\n });\n };\n\n const retrieveSubnet = () => {\n SubnetReader.getSubnetByIdAndProvider(this.serverGroup.launchConfig.subnetId, provider).then((subnet) => {\n this.serverGroup.subnet = subnet;\n });\n };\n\n const retrieveImage = () => {\n oracleImageReader\n .getImage(this.serverGroup.launchConfig.imageId, this.serverGroup.region, this.serverGroup.account)\n .then((image) => {\n if (!image) {\n image = { id: this.serverGroup.launchConfig.imageId, name: this.serverGroup.launchConfig.imageId };\n }\n this.serverGroup.image = image;\n });\n };\n\n ////////////////////////////////////////////////////////////\n // Actions. Triggered by server group details dropdown menu\n ////////////////////////////////////////////////////////////\n\n this.destroyServerGroup = function destroyServerGroup() {\n const serverGroup = this.serverGroup;\n const taskMonitor = {\n application: app,\n title: 'Destroying ' + serverGroup.name,\n onTaskComplete: function () {\n if ($state.includes('**.serverGroup', stateParams)) {\n $state.go('^');\n }\n },\n };\n\n const submitMethod = function () {\n return serverGroupWriter.destroyServerGroup(serverGroup, app);\n };\n\n const stateParams = {\n name: serverGroup.name,\n account: serverGroup.account,\n region: serverGroup.region,\n };\n\n ConfirmationModalService.confirm({\n header: 'Really destroy ' + serverGroup.name + '?',\n buttonText: 'Destroy ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n submitMethod: submitMethod,\n });\n };\n\n this.resizeServerGroup = () => {\n $uibModal.open({\n templateUrl: require('./resize/resizeServerGroup.html'),\n controller: 'oracleResizeServerGroupCtrl as ctrl',\n resolve: {\n serverGroup: () => {\n return this.serverGroup;\n },\n application: () => {\n return app;\n },\n },\n });\n };\n\n this.rollbackServerGroup = () => {\n $uibModal.open({\n templateUrl: require('./rollback/rollbackServerGroup.html'),\n controller: 'oracleRollbackServerGroupCtrl as ctrl',\n resolve: {\n serverGroup: () => this.serverGroup,\n disabledServerGroups: () => {\n const sgSummary = _.find(app.serverGroups.data, {\n name: this.serverGroup.name,\n account: this.serverGroup.account,\n region: this.serverGroup.region,\n });\n const cluster = _.find(app.clusters, { name: sgSummary.cluster, account: this.serverGroup.account });\n return _.filter(cluster.serverGroups, { isDisabled: true, region: this.serverGroup.region });\n },\n application: () => app,\n },\n });\n };\n\n this.disableServerGroup = () => {\n const serverGroup = this.serverGroup;\n\n const taskMonitor = {\n application: app,\n title: 'Disabling ' + serverGroup.name,\n };\n\n const submitMethod = (params) => serverGroupWriter.disableServerGroup(serverGroup, app, params);\n\n const confirmationModalParams = {\n header: 'Really disable ' + serverGroup.name + '?',\n buttonText: 'Disable ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Oracle',\n submitMethod: submitMethod,\n askForReason: true,\n };\n\n ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Oracle'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n this.enableServerGroup = () => {\n const serverGroup = this.serverGroup;\n\n const taskMonitor = {\n application: app,\n title: 'Enabling ' + serverGroup.name,\n };\n\n const submitMethod = (params) => serverGroupWriter.enableServerGroup(serverGroup, app, params);\n\n const confirmationModalParams = {\n header: 'Really enable ' + serverGroup.name + '?',\n buttonText: 'Enable ' + serverGroup.name,\n account: serverGroup.account,\n taskMonitorConfig: taskMonitor,\n platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,\n platformHealthType: 'Oracle',\n submitMethod: submitMethod,\n askForReason: true,\n };\n\n if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {\n confirmationModalParams.interestingHealthProviderNames = ['Oracle'];\n }\n\n ConfirmationModalService.confirm(confirmationModalParams);\n };\n\n const cancelLoader = () => {\n this.state.loading = false;\n };\n\n retrieveServerGroup().then(() => {\n if (!$scope.$$destroyed) {\n app.serverGroups.onRefresh($scope, retrieveServerGroup);\n }\n });\n },\n]);\n","'use strict';\n\nimport { module } from 'angular';\n\nimport _ from 'lodash';\n\nexport const ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER = 'spinnaker.oracle.serverGroup.transformer';\nexport const name = ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER; // for backwards compatibility\nmodule(ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER, []).factory('oracleServerGroupTransformer', [\n '$q',\n function ($q) {\n const PROVIDER = 'oracle';\n\n function normalizeServerGroup(serverGroup) {\n return $q.when(serverGroup);\n }\n\n function convertServerGroupCommandToDeployConfiguration(base) {\n const command = _.defaults({ backingData: [], viewState: [] }, base);\n command.cloudProvider = PROVIDER;\n return command;\n }\n\n return {\n convertServerGroupCommandToDeployConfiguration,\n normalizeServerGroup,\n };\n },\n]);\n","import { module } from 'angular';\n\nimport { CloudProviderRegistry, DeploymentStrategyRegistry } from '@spinnaker/core';\n\nimport './helpContents/oracleHelpContents';\nimport { ORACLE_IMAGE_IMAGE_READER } from './image/image.reader';\nimport { ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER } from './instance/details/instance.details.controller';\nimport { ORACLE_LOAD_BALANCER_CREATE_CONTROLLER } from './loadBalancer/configure/createLoadBalancer.controller';\nimport { ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER } from './loadBalancer/details/loadBalancerDetail.controller';\nimport { ORACLE_LOAD_BALANCER_TRANSFORMER } from './loadBalancer/loadBalancer.transformer';\nimport { ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE } from './pipeline/stages/bake/ociBakeStage';\nimport { ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE } from './pipeline/stages/destroyAsg/destroyAsgStage';\nimport { ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE } from './pipeline/stages/disableAsg/disableAsgStage';\nimport { ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE } from './pipeline/stages/findAmi/findAmiStage';\nimport { ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE } from './pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage';\nimport { ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE } from './pipeline/stages/resizeAsg/resizeAsgStage';\nimport { ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE } from './pipeline/stages/scaleDownCluster/scaleDownClusterStage';\nimport { ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE } from './pipeline/stages/shrinkCluster/shrinkClusterStage';\nimport { ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER } from './securityGroup/configure/createSecurityGroup.controller';\nimport { ORACLE_SECURITYGROUP_SECURITYGROUP_READER } from './securityGroup/securityGroup.reader';\nimport { ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER } from './securityGroup/securityGroup.transformer';\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE } from './serverGroup/configure/serverGroup.configure.module';\nimport { ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE } from './serverGroup/configure/serverGroupCommandBuilder.service';\nimport { ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER } from './serverGroup/configure/wizard/cloneServerGroup.controller';\nimport { ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER } from './serverGroup/details/serverGroupDetails.controller';\nimport { ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER } from './serverGroup/serverGroup.transformer';\n\nexport const ORACLE_MODULE = 'spinnaker.oracle';\nmodule(ORACLE_MODULE, [\n // Pipeline\n ORACLE_PIPELINE_STAGES_BAKE_OCIBAKESTAGE,\n ORACLE_PIPELINE_STAGES_DESTROYASG_DESTROYASGSTAGE,\n ORACLE_PIPELINE_STAGES_DISABLEASG_DISABLEASGSTAGE,\n ORACLE_PIPELINE_STAGES_FINDAMI_FINDAMISTAGE,\n ORACLE_PIPELINE_STAGES_FINDIMAGEFROMTAGS_ORACLEFINDIMAGEFROMTAGSSTAGE,\n ORACLE_PIPELINE_STAGES_RESIZEASG_RESIZEASGSTAGE,\n ORACLE_PIPELINE_STAGES_SCALEDOWNCLUSTER_SCALEDOWNCLUSTERSTAGE,\n ORACLE_PIPELINE_STAGES_SHRINKCLUSTER_SHRINKCLUSTERSTAGE,\n\n // Load Balancers\n ORACLE_LOAD_BALANCER_TRANSFORMER,\n ORACLE_LOAD_BALANCER_DETAIL_CONTROLLER,\n ORACLE_LOAD_BALANCER_CREATE_CONTROLLER,\n\n // Server Groups\n ORACLE_SERVERGROUP_SERVERGROUP_TRANSFORMER,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUP_CONFIGURE_MODULE,\n ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER,\n ORACLE_SERVERGROUP_CONFIGURE_SERVERGROUPCOMMANDBUILDER_SERVICE,\n ORACLE_SERVERGROUP_CONFIGURE_WIZARD_CLONESERVERGROUP_CONTROLLER,\n // Images\n ORACLE_IMAGE_IMAGE_READER,\n // Instances\n ORACLE_INSTANCE_DETAILS_INSTANCE_DETAILS_CONTROLLER,\n // Firewalls\n ORACLE_SECURITYGROUP_SECURITYGROUP_READER,\n ORACLE_SECURITYGROUP_SECURITYGROUP_TRANSFORMER,\n ORACLE_SECURITYGROUP_CONFIGURE_CREATESECURITYGROUP_CONTROLLER,\n]).config(function () {\n CloudProviderRegistry.registerProvider('oracle', {\n name: 'Oracle',\n image: {\n reader: 'oracleImageReader',\n },\n loadBalancer: {\n transformer: 'oracleLoadBalancerTransformer',\n detailsTemplateUrl: require('./loadBalancer/details/loadBalancerDetail.html'),\n detailsController: 'oracleLoadBalancerDetailCtrl',\n createLoadBalancerTemplateUrl: require('./loadBalancer/configure/createLoadBalancer.html'),\n createLoadBalancerController: 'oracleCreateLoadBalancerCtrl',\n },\n serverGroup: {\n transformer: 'oracleServerGroupTransformer',\n detailsTemplateUrl: require('./serverGroup/details/serverGroupDetails.html'),\n detailsController: 'oracleServerGroupDetailsCtrl',\n commandBuilder: 'oracleServerGroupCommandBuilder',\n cloneServerGroupController: 'oracleCloneServerGroupCtrl',\n cloneServerGroupTemplateUrl: require('./serverGroup/configure/wizard/serverGroupWizard.html'),\n configurationService: 'oracleServerGroupConfigurationService',\n },\n instance: {\n detailsController: 'oracleInstanceDetailsCtrl',\n detailsTemplateUrl: require('./instance/details/instanceDetails.html'),\n },\n securityGroup: {\n reader: 'oracleSecurityGroupReader',\n transformer: 'oracleSecurityGroupTransformer',\n createSecurityGroupTemplateUrl: require('./securityGroup/configure/createSecurityGroup.html'),\n createSecurityGroupController: 'oracleCreateSecurityGroupCtrl',\n },\n });\n});\n\nDeploymentStrategyRegistry.registerProvider('oracle', []);\n"],"names":["angular","_"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spinnaker/oracle",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "2025.0
|
|
4
|
+
"version": "2025.1.0",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"publishConfig": {
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"@types/angular-ui-bootstrap": "0.13.41",
|
|
33
33
|
"@types/lodash": "4.14.64",
|
|
34
34
|
"shx": "0.3.3",
|
|
35
|
-
"typescript": "
|
|
35
|
+
"typescript": "5.0.4"
|
|
36
36
|
},
|
|
37
|
-
"gitHead": "
|
|
37
|
+
"gitHead": "ed6c0f8929f68fcb6295c4d56c4bfbdec8d21ce6"
|
|
38
38
|
}
|