├── .babelrc ├── .clog.toml ├── .dockerignore ├── .editorconfig ├── .eslintrc ├── .gitattributes ├── .github └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── .npmrc ├── .travis.yml ├── AUTHORS ├── Dockerfile ├── Dockerfile.slim ├── LICENSE.txt ├── README.adoc ├── SECURITY.md ├── angular-loader ├── index.js └── package.json ├── app ├── .buildignore ├── .htaccess ├── favicon.ico ├── fonts │ ├── icons │ │ ├── chatBubbles.svg │ │ ├── loadBalancer.svg │ │ └── spinner.svg │ └── spinnaker │ │ ├── fonts │ │ ├── icomoon.eot │ │ ├── icomoon.svg │ │ ├── icomoon.ttf │ │ └── icomoon.woff │ │ └── icons.css ├── index.deck └── scripts │ ├── app.ts │ ├── modules │ ├── amazon │ │ ├── applicationProviderFields │ │ │ └── awsFields.html │ │ ├── aws.module.js │ │ ├── aws.settings.ts │ │ ├── cache │ │ │ └── cacheConfigurer.service.js │ │ ├── common │ │ │ ├── footer.directive.html │ │ │ └── footer.directive.js │ │ ├── image │ │ │ ├── image.reader.js │ │ │ └── image.reader.spec.js │ │ ├── instance │ │ │ ├── awsInstanceType.service.js │ │ │ ├── awsInstanceType.service.spec.js │ │ │ └── details │ │ │ │ ├── instance.details.controller.js │ │ │ │ ├── instance.details.controller.spec.js │ │ │ │ └── instanceDetails.html │ │ ├── keyPairs │ │ │ └── keyPairs.read.service.js │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── advancedSettings.html │ │ │ │ ├── createLoadBalancer.controller.js │ │ │ │ ├── createLoadBalancer.controller.spec.js │ │ │ │ ├── createLoadBalancer.html │ │ │ │ ├── createLoadBalancerProperties.html │ │ │ │ ├── editLoadBalancer.html │ │ │ │ ├── healthCheck.html │ │ │ │ ├── listeners.html │ │ │ │ ├── loadBalancerAvailabilityZoneSelector.directive.html │ │ │ │ ├── loadBalancerAvailabilityZoneSelector.directive.js │ │ │ │ └── securityGroups.html │ │ │ ├── details │ │ │ │ ├── loadBalancerDetail.controller.js │ │ │ │ ├── loadBalancerDetail.controller.spec.js │ │ │ │ └── loadBalancerDetail.html │ │ │ └── loadBalancer.transformer.js │ │ ├── logo │ │ │ ├── amazon.logo.svg │ │ │ ├── aws.icon.svg │ │ │ └── aws.logo.less │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── bake │ │ │ │ ├── awsBakeStage.js │ │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ │ ├── bakeExecutionDetails.html │ │ │ │ └── bakeStage.html │ │ │ │ ├── cloneServerGroup │ │ │ │ ├── awsCloneServerGroupStage.js │ │ │ │ ├── cloneServerGroupExecutionDetails.controller.js │ │ │ │ ├── cloneServerGroupExecutionDetails.html │ │ │ │ ├── cloneServerGroupStage.html │ │ │ │ └── cloneServerGroupStepLabel.html │ │ │ │ ├── destroyAsg │ │ │ │ ├── awsDestroyAsgStage.js │ │ │ │ ├── destroyAsgStage.html │ │ │ │ └── destroyAsgStepLabel.html │ │ │ │ ├── disableAsg │ │ │ │ ├── awsDisableAsgStage.js │ │ │ │ ├── disableAsgStage.html │ │ │ │ └── disableAsgStepLabel.html │ │ │ │ ├── disableCluster │ │ │ │ ├── awsDisableClusterStage.js │ │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ │ ├── disableClusterExecutionDetails.html │ │ │ │ └── disableClusterStage.html │ │ │ │ ├── enableAsg │ │ │ │ ├── awsEnableAsgStage.js │ │ │ │ ├── enableAsgStage.html │ │ │ │ └── enableAsgStepLabel.html │ │ │ │ ├── findAmi │ │ │ │ ├── awsFindAmiStage.js │ │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ │ ├── findAmiExecutionDetails.html │ │ │ │ └── findAmiStage.html │ │ │ │ ├── findImageFromTags │ │ │ │ ├── awsFindImageFromTagsStage.js │ │ │ │ ├── findImageFromTagsExecutionDetails.controller.js │ │ │ │ ├── findImageFromTagsExecutionDetails.html │ │ │ │ └── findImageFromTagsStage.html │ │ │ │ ├── modifyScalingProcess │ │ │ │ ├── modifyScalingProcessExecutionDetails.controller.js │ │ │ │ ├── modifyScalingProcessExecutionDetails.html │ │ │ │ ├── modifyScalingProcessStage.html │ │ │ │ └── modifyScalingProcessStage.js │ │ │ │ ├── resizeAsg │ │ │ │ ├── awsResizeAsgStage.js │ │ │ │ ├── resizeAsgExecutionDetails.controller.js │ │ │ │ ├── resizeAsgExecutionDetails.html │ │ │ │ ├── resizeAsgStage.html │ │ │ │ └── resizeAsgStepLabel.html │ │ │ │ ├── scaleDownCluster │ │ │ │ ├── awsScaleDownClusterStage.js │ │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ │ └── scaleDownClusterStage.html │ │ │ │ ├── shrinkCluster │ │ │ │ ├── awsShrinkClusterStage.js │ │ │ │ └── shrinkClusterStage.html │ │ │ │ └── tagImage │ │ │ │ ├── awsTagImageStage.js │ │ │ │ ├── tagImageExecutionDetails.controller.js │ │ │ │ ├── tagImageExecutionDetails.html │ │ │ │ └── tagImageStage.html │ │ ├── search │ │ │ └── searchResultFormatter.js │ │ ├── securityGroup │ │ │ ├── clone │ │ │ │ ├── cloneSecurityGroup.controller.js │ │ │ │ └── cloneSecurityGroup.html │ │ │ ├── configure │ │ │ │ ├── CreateSecurityGroup.controller.spec.js │ │ │ │ ├── CreateSecurityGroupCtrl.js │ │ │ │ ├── EditSecurityGroupCtrl.js │ │ │ │ ├── configSecurityGroup.mixin.controller.js │ │ │ │ ├── createSecurityGroup.html │ │ │ │ ├── createSecurityGroupIngress.html │ │ │ │ ├── createSecurityGroupProperties.html │ │ │ │ ├── editSecurityGroup.html │ │ │ │ ├── ingressRuleGroupSelector.component.html │ │ │ │ ├── ingressRuleGroupSelector.component.js │ │ │ │ └── ingressRuleGroupSelector.component.less │ │ │ ├── details │ │ │ │ ├── securityGroupDetail.controller.js │ │ │ │ └── securityGroupDetail.html │ │ │ ├── securityGroup.reader.js │ │ │ └── securityGroup.transformer.js │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── serverGroup.configure.aws.module.js │ │ │ │ ├── serverGroupCommandBuilder.aws.service.spec.js │ │ │ │ ├── serverGroupCommandBuilder.service.js │ │ │ │ ├── serverGroupCommandBuilder.spec.js │ │ │ │ ├── serverGroupConfiguration.service.js │ │ │ │ ├── serverGroupConfiguration.service.spec.js │ │ │ │ └── wizard │ │ │ │ │ ├── CloneServerGroup.aws.controller.js │ │ │ │ │ ├── CloneServerGroup.aws.controller.spec.js │ │ │ │ │ ├── advancedSettings │ │ │ │ │ ├── advancedSettings.component.html │ │ │ │ │ ├── advancedSettings.component.js │ │ │ │ │ └── advancedSettings.html │ │ │ │ │ ├── capacity │ │ │ │ │ ├── capacity.html │ │ │ │ │ ├── capacitySelector.controller.spec.js │ │ │ │ │ ├── capacitySelector.directive.html │ │ │ │ │ ├── capacitySelector.directive.js │ │ │ │ │ ├── targetHealthyPercentageSelector.directive.html │ │ │ │ │ ├── targetHealthyPercentageSelector.directive.js │ │ │ │ │ └── zones.html │ │ │ │ │ ├── instanceType │ │ │ │ │ └── instanceType.html │ │ │ │ │ ├── loadBalancers │ │ │ │ │ ├── ServerGroupLoadBalancers.controller.js │ │ │ │ │ ├── loadBalancerSelector.directive.html │ │ │ │ │ ├── loadBalancerSelector.directive.js │ │ │ │ │ └── loadBalancers.html │ │ │ │ │ ├── location │ │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ │ └── basicSettings.html │ │ │ │ │ ├── securityGroups │ │ │ │ │ ├── securityGroupSelector.directive.html │ │ │ │ │ ├── securityGroupSelector.directive.js │ │ │ │ │ ├── securityGroups.html │ │ │ │ │ ├── securityGroupsRemoved.directive.html │ │ │ │ │ └── securityGroupsRemoved.directive.js │ │ │ │ │ ├── serverGroupWizard.html │ │ │ │ │ ├── templateSelection │ │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ │ ├── deployInitializerCtrl.spec.js │ │ │ │ │ └── templateSelection.html │ │ │ │ │ └── zones │ │ │ │ │ ├── availabilityZoneSelector.directive.html │ │ │ │ │ ├── availabilityZoneSelector.directive.js │ │ │ │ │ ├── azRebalanceSelector.directive.html │ │ │ │ │ └── azRebalanceSelector.directive.js │ │ │ ├── details │ │ │ │ ├── advancedSettings │ │ │ │ │ ├── editAsgAdvancedSettings.modal.controller.js │ │ │ │ │ └── editAsgAdvancedSettings.modal.html │ │ │ │ ├── resize │ │ │ │ │ ├── resizeCapacity.directive.html │ │ │ │ │ ├── resizeCapacity.directive.js │ │ │ │ │ ├── resizeServerGroup.controller.js │ │ │ │ │ ├── resizeServerGroup.controller.spec.js │ │ │ │ │ └── resizeServerGroup.html │ │ │ │ ├── rollback │ │ │ │ │ ├── rollbackServerGroup.controller.js │ │ │ │ │ └── rollbackServerGroup.html │ │ │ │ ├── scalingPolicy │ │ │ │ │ ├── addScalingPolicyButton.component.js │ │ │ │ │ ├── chart │ │ │ │ │ │ ├── LineChartHack.css │ │ │ │ │ │ ├── metricAlarmChart.component.html │ │ │ │ │ │ ├── metricAlarmChart.component.js │ │ │ │ │ │ ├── metricAlarmChart.component.less │ │ │ │ │ │ └── metricAlarmChart.component.spec.js │ │ │ │ │ ├── popover │ │ │ │ │ │ ├── scalingPolicyDetails.popover.html │ │ │ │ │ │ ├── scalingPolicyPopover.component.html │ │ │ │ │ │ └── scalingPolicyPopover.component.js │ │ │ │ │ ├── scalingPolicy.write.service.js │ │ │ │ │ ├── scalingPolicySummary.component.html │ │ │ │ │ ├── scalingPolicySummary.component.js │ │ │ │ │ ├── scalingPolicySummary.component.less │ │ │ │ │ └── upsert │ │ │ │ │ │ ├── alarm │ │ │ │ │ │ ├── alarmConfigurer.component.html │ │ │ │ │ │ ├── alarmConfigurer.component.js │ │ │ │ │ │ ├── alarmConfigurer.component.spec.js │ │ │ │ │ │ ├── dimensionsEditor.component.html │ │ │ │ │ │ ├── dimensionsEditor.component.js │ │ │ │ │ │ └── dimensionsEditor.component.less │ │ │ │ │ │ ├── simple │ │ │ │ │ │ ├── simplePolicyAction.component.html │ │ │ │ │ │ └── simplePolicyAction.component.js │ │ │ │ │ │ ├── step │ │ │ │ │ │ ├── stepPolicyAction.component.html │ │ │ │ │ │ ├── stepPolicyAction.component.js │ │ │ │ │ │ └── stepPolicyAction.component.less │ │ │ │ │ │ ├── upsertScalingPolicy.controller.js │ │ │ │ │ │ ├── upsertScalingPolicy.modal.html │ │ │ │ │ │ └── upsertScalingPolicy.modal.less │ │ │ │ ├── scalingProcesses │ │ │ │ │ ├── autoScalingProcess.service.js │ │ │ │ │ ├── autoScalingProcess.service.spec.js │ │ │ │ │ ├── modifyScalingProcesses.controller.js │ │ │ │ │ ├── modifyScalingProcesses.controller.spec.js │ │ │ │ │ └── modifyScalingProcesses.html │ │ │ │ ├── scheduledAction │ │ │ │ │ ├── editScheduledActions.modal.controller.js │ │ │ │ │ ├── editScheduledActions.modal.html │ │ │ │ │ ├── scheduledAction.directive.html │ │ │ │ │ └── scheduledAction.directive.js │ │ │ │ ├── securityGroup │ │ │ │ │ ├── editSecurityGroups.modal.controller.js │ │ │ │ │ └── editSecurityGroups.modal.html │ │ │ │ ├── serverGroup.details.module.js │ │ │ │ ├── serverGroupDetails.aws.controller.js │ │ │ │ └── serverGroupDetails.html │ │ │ ├── serverGroup.transformer.js │ │ │ └── serverGroup.transformer.spec.js │ │ ├── subnet │ │ │ ├── subnet.renderer.js │ │ │ ├── subnetSelectField.component.html │ │ │ └── subnetSelectField.component.ts │ │ ├── validation │ │ │ └── applicationName.validator.ts │ │ └── vpc │ │ │ ├── vpc.module.js │ │ │ ├── vpc.read.service.js │ │ │ ├── vpc.read.service.spec.js │ │ │ ├── vpcTag.directive.js │ │ │ └── vpcTag.directive.spec.js │ ├── appengine │ │ ├── appengine.module.ts │ │ ├── appengine.settings.ts │ │ ├── cache │ │ │ └── cacheConfigurer.service.ts │ │ ├── common │ │ │ ├── appengineHealth.ts │ │ │ ├── componentUrlDetails.component.ts │ │ │ ├── conditionalDescriptionListItem.component.ts │ │ │ ├── loadBalancerMessage.component.html │ │ │ └── loadBalancerMessage.component.ts │ │ ├── domain │ │ │ ├── IAppengineAccount.ts │ │ │ ├── IAppengineInstance.ts │ │ │ ├── IAppengineLoadBalancer.ts │ │ │ ├── IAppengineServerGroup.ts │ │ │ ├── IAppengineStageScope.ts │ │ │ ├── IAppengineTriggers.ts │ │ │ └── index.ts │ │ ├── helpContents │ │ │ └── appengineHelpContents.ts │ │ ├── instance │ │ │ └── details │ │ │ │ ├── details.controller.ts │ │ │ │ └── details.html │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ └── wizard │ │ │ │ │ ├── advancedSettings.component.ts │ │ │ │ │ ├── allocationConfigurationRow.component.ts │ │ │ │ │ ├── basicSettings.component.html │ │ │ │ │ ├── basicSettings.component.ts │ │ │ │ │ ├── stageAllocationConfigurationRow.component.html │ │ │ │ │ ├── stageAllocationConfigurationRow.component.ts │ │ │ │ │ ├── wizard.controller.ts │ │ │ │ │ ├── wizard.html │ │ │ │ │ └── wizard.less │ │ │ ├── details │ │ │ │ ├── details.controller.ts │ │ │ │ └── details.html │ │ │ ├── loadBalancer.module.ts │ │ │ └── transformer.ts │ │ ├── logo │ │ │ ├── appengine.icon.svg │ │ │ ├── appengine.logo.less │ │ │ └── appengine.logo.svg │ │ ├── pipeline │ │ │ ├── pipeline.module.ts │ │ │ └── stages │ │ │ │ ├── appengineStage.controller.ts │ │ │ │ ├── destroyAsg │ │ │ │ ├── appengineDestroyAsgStage.ts │ │ │ │ ├── destroyAsgStage.html │ │ │ │ └── destroyAsgStepLabel.html │ │ │ │ ├── disableAsg │ │ │ │ ├── appengineDisableAsgStage.ts │ │ │ │ ├── disableAsgStage.html │ │ │ │ └── disableAsgStepLabel.html │ │ │ │ ├── editLoadBalancer │ │ │ │ ├── appengineEditLoadBalancerExecutionDetails.controller.ts │ │ │ │ ├── appengineEditLoadBalancerStage.ts │ │ │ │ ├── editLoadBalancerExecutionDetails.html │ │ │ │ ├── editLoadBalancerStage.html │ │ │ │ ├── loadBalancerChoice.modal.controller.ts │ │ │ │ └── loadBalancerChoice.modal.html │ │ │ │ ├── enableAsg │ │ │ │ ├── appengineEnableAsgStage.ts │ │ │ │ ├── enableAsgStage.html │ │ │ │ └── enableAsgStepLabel.html │ │ │ │ ├── shrinkCluster │ │ │ │ ├── appengineShrinkClusterStage.ts │ │ │ │ └── shrinkClusterStage.html │ │ │ │ ├── startServerGroup │ │ │ │ ├── appengineStartServerGroupExecutionDetails.controller.ts │ │ │ │ ├── appengineStartServerGroupStage.ts │ │ │ │ ├── startServerGroupExecutionDetails.html │ │ │ │ ├── startServerGroupStage.html │ │ │ │ └── startServerGroupStepLabel.html │ │ │ │ └── stopServerGroup │ │ │ │ ├── appengineStopServerGroupExecutionDetails.controller.ts │ │ │ │ ├── appengineStopServerGroupStage.ts │ │ │ │ ├── stopServerGroupExecutionDetails.html │ │ │ │ ├── stopServerGroupStage.html │ │ │ │ └── stopServerGroupStepLabel.html │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── serverGroupCommandBuilder.service.ts │ │ │ │ └── wizard │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── basicSettings.controller.ts │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── cloneServerGroup.controller.ts │ │ │ │ │ ├── configFiles.component.ts │ │ │ │ │ ├── dynamicBranchLabel.component.ts │ │ │ │ │ ├── serverGroupWizard.html │ │ │ │ │ └── serverGroupWizard.less │ │ │ ├── details │ │ │ │ ├── details.controller.ts │ │ │ │ └── details.html │ │ │ ├── transformer.ts │ │ │ └── writer │ │ │ │ └── serverGroup.write.service.ts │ │ └── validation │ │ │ └── applicationName.validator.ts │ ├── azure │ │ ├── azure.module.js │ │ ├── azure.settings.ts │ │ ├── cache │ │ │ └── cacheConfigurer.service.js │ │ ├── image │ │ │ ├── image.reader.js │ │ │ └── image.reader.spec.js │ │ ├── instance │ │ │ ├── azureInstanceType.service.js │ │ │ ├── azureInstanceType.service.spec.js │ │ │ └── details │ │ │ │ ├── instance.details.controller.js │ │ │ │ ├── instance.details.controller.spec.js │ │ │ │ └── instanceDetails.html │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── createLoadBalancer.controller.js │ │ │ │ ├── createLoadBalancer.controller.spec.js │ │ │ │ ├── createLoadBalancer.html │ │ │ │ ├── createLoadBalancerProperties.html │ │ │ │ ├── editLoadBalancer.html │ │ │ │ ├── healthCheck.html │ │ │ │ └── listeners.html │ │ │ ├── details │ │ │ │ ├── loadBalancerDetail.controller.js │ │ │ │ ├── loadBalancerDetail.controller.spec.js │ │ │ │ └── loadBalancerDetail.html │ │ │ └── loadBalancer.transformer.js │ │ ├── logo_azure.png │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── bake │ │ │ │ ├── azureBakeStage.js │ │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ │ ├── bakeExecutionDetails.html │ │ │ │ └── bakeStage.html │ │ │ │ ├── destroyAsg │ │ │ │ ├── azureDestroyAsgStage.js │ │ │ │ ├── destroyAsgStage.html │ │ │ │ └── destroyAsgStepLabel.html │ │ │ │ ├── disableAsg │ │ │ │ ├── azureDisableAsgStage.js │ │ │ │ ├── disableAsgStage.html │ │ │ │ └── disableAsgStepLabel.html │ │ │ │ └── enableAsg │ │ │ │ ├── azureEnableAsgStage.js │ │ │ │ ├── enableAsgStage.html │ │ │ │ └── enableAsgStepLabel.html │ │ ├── securityGroup │ │ │ ├── clone │ │ │ │ ├── cloneSecurityGroup.controller.js │ │ │ │ └── cloneSecurityGroup.html │ │ │ ├── configure │ │ │ │ ├── CreateSecurityGroup.controller.spec.js │ │ │ │ ├── CreateSecurityGroupCtrl.js │ │ │ │ ├── EditSecurityGroupCtrl.js │ │ │ │ ├── configSecurityGroup.mixin.controller.js │ │ │ │ ├── createSecurityGroup.html │ │ │ │ ├── createSecurityGroupIngress.html │ │ │ │ ├── createSecurityGroupProperties.html │ │ │ │ └── editSecurityGroup.html │ │ │ ├── details │ │ │ │ ├── securityGroupDetail.controller.js │ │ │ │ └── securityGroupDetail.html │ │ │ ├── securityGroup.reader.js │ │ │ ├── securityGroup.transformer.js │ │ │ └── securityGroup.write.service.js │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── serverGroup.configure.azure.module.js │ │ │ │ ├── serverGroupAdvancedSettingsSelector.directive.html │ │ │ │ ├── serverGroupAdvancedSettingsSelector.directive.js │ │ │ │ ├── serverGroupCommandBuilder.service.js │ │ │ │ ├── serverGroupConfiguration.service.js │ │ │ │ ├── serverGroupConfiguration.service.spec.js │ │ │ │ └── wizard │ │ │ │ │ ├── CloneServerGroup.azure.controller.js │ │ │ │ │ ├── ServerGroupInstanceArchetype.controller.js │ │ │ │ │ ├── ServerGroupInstanceType.controller.js │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── advancedSettings │ │ │ │ │ ├── ServerGroupAdvancedSettings.controller.js │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── advancedSettingsSelector.directive.html │ │ │ │ │ └── advancedSettingsSelector.directive.js │ │ │ │ │ ├── basicSettings │ │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── image.regional.filter.js │ │ │ │ │ └── image.regional.filter.spec.js │ │ │ │ │ ├── capacity │ │ │ │ │ ├── capacity.html │ │ │ │ │ ├── capacitySelector.directive.html │ │ │ │ │ └── capacitySelector.directive.js │ │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ │ ├── deployInitializerCtrl.spec.js │ │ │ │ │ ├── instanceArchetype.html │ │ │ │ │ ├── instanceType.html │ │ │ │ │ ├── loadBalancers │ │ │ │ │ ├── ServerGroupLoadBalancers.controller.js │ │ │ │ │ ├── loadBalancers.html │ │ │ │ │ ├── serverGroupLoadBalancersSelector.directive.html │ │ │ │ │ └── serverGroupLoadBalancersSelector.directive.js │ │ │ │ │ ├── networkSettings │ │ │ │ │ ├── ServerGroupNetworkSettings.controller.js │ │ │ │ │ ├── ServerGroupNetworkSettingsSelector.directive.html │ │ │ │ │ ├── ServerGroupNetworkSettingsSelector.directive.js │ │ │ │ │ └── networkSettings.html │ │ │ │ │ ├── securityGroup │ │ │ │ │ ├── ServerGroupSecurityGroups.controller.js │ │ │ │ │ ├── securityGroups.html │ │ │ │ │ ├── serverGroupSecurityGroupsSelector.directive.html │ │ │ │ │ └── serverGroupSecurityGroupsSelector.directive.js │ │ │ │ │ ├── serverGroupWizard.html │ │ │ │ │ └── templateSelection.html │ │ │ ├── details │ │ │ │ ├── serverGroup.details.module.js │ │ │ │ ├── serverGroupDetails.azure.controller.js │ │ │ │ └── serverGroupDetails.html │ │ │ ├── serverGroup.transformer.js │ │ │ └── serverGroup.transformer.spec.js │ │ └── subnet │ │ │ ├── subnetSelectField.directive.html │ │ │ └── subnetSelectField.directive.js │ ├── cloudfoundry │ │ ├── cache │ │ │ └── cacheConfigurer.service.js │ │ ├── cf.module.js │ │ ├── cf.settings.ts │ │ ├── common │ │ │ ├── footer.directive.html │ │ │ └── footer.directive.js │ │ ├── image │ │ │ └── image.reader.js │ │ ├── instance │ │ │ ├── cfInstanceTypeService.js │ │ │ ├── cfInstanceTypeService.spec.js │ │ │ └── details │ │ │ │ ├── instance.details.controller.js │ │ │ │ ├── instance.details.controller.spec.js │ │ │ │ └── instanceDetails.html │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── CreateLoadBalancerCtrl.js │ │ │ │ ├── CreateLoadBalancerCtrl.spec.js │ │ │ │ ├── createLoadBalancer.html │ │ │ │ └── createLoadBalancerProperties.html │ │ │ ├── details │ │ │ │ ├── LoadBalancerDetailsCtrl.js │ │ │ │ ├── LoadBalancerDetailsCtrl.spec.js │ │ │ │ └── loadBalancerDetails.html │ │ │ └── loadBalancer.transformer.js │ │ ├── logo │ │ │ ├── cf.logo.less │ │ │ ├── cf.logo.svg │ │ │ └── logo_cf.png │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── cloneServerGroup │ │ │ │ ├── cfCloneServerGroupStage.js │ │ │ │ ├── cloneServerGroupExecutionDetails.controller.js │ │ │ │ ├── cloneServerGroupExecutionDetails.html │ │ │ │ ├── cloneServerGroupStage.html │ │ │ │ └── cloneServerGroupStepLabel.html │ │ │ │ ├── destroyAsg │ │ │ │ ├── cfDestroyAsgStage.js │ │ │ │ ├── destroyAsgStage.html │ │ │ │ └── destroyAsgStepLabel.html │ │ │ │ ├── disableAsg │ │ │ │ ├── cfDisableAsgStage.js │ │ │ │ ├── disableAsgStage.html │ │ │ │ └── disableAsgStepLabel.html │ │ │ │ ├── disableCluster │ │ │ │ ├── cfDisableClusterStage.js │ │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ │ ├── disableClusterExecutionDetails.html │ │ │ │ └── disableClusterStage.html │ │ │ │ ├── enableAsg │ │ │ │ ├── cfEnableAsgStage.js │ │ │ │ ├── enableAsgStage.html │ │ │ │ └── enableAsgStepLabel.html │ │ │ │ ├── findAmi │ │ │ │ ├── cfFindAmiStage.js │ │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ │ ├── findAmiExecutionDetails.html │ │ │ │ └── findAmiStage.html │ │ │ │ ├── resizeAsg │ │ │ │ ├── cfResizeAsgStage.js │ │ │ │ ├── resizeAsgExecutionDetails.controller.js │ │ │ │ ├── resizeAsgExecutionDetails.html │ │ │ │ ├── resizeAsgStage.html │ │ │ │ └── resizeAsgStepLabel.html │ │ │ │ ├── scaleDownCluster │ │ │ │ ├── cfScaleDownClusterStage.js │ │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ │ └── scaleDownClusterStage.html │ │ │ │ └── shrinkCluster │ │ │ │ ├── cfShrinkClusterStage.js │ │ │ │ └── shrinkClusterStage.html │ │ ├── securityGroup │ │ │ ├── details │ │ │ │ ├── SecurityGroupDetailsCtrl.js │ │ │ │ └── securityGroupDetails.html │ │ │ ├── securityGroup.reader.js │ │ │ └── securityGroup.transformer.js │ │ └── serverGroup │ │ │ ├── configure │ │ │ ├── ServerGroupCommandBuilder.js │ │ │ ├── serverGroup.configure.cf.module.js │ │ │ ├── serverGroupAdvancedDirective.html │ │ │ ├── serverGroupAdvancedSelector.directive.js │ │ │ ├── serverGroupArtifactSettingsDirective.html │ │ │ ├── serverGroupArtifactSettingsSelector.directive.js │ │ │ ├── serverGroupBasicSettingsDirective.html │ │ │ ├── serverGroupBasicSettingsSelector.directive.js │ │ │ ├── serverGroupConfiguration.service.js │ │ │ ├── serverGroupEnvsDirective.html │ │ │ ├── serverGroupEnvsSelector.directive.js │ │ │ ├── serverGroupLoadBalancersDirective.html │ │ │ ├── serverGroupLoadBalancersSelector.directive.js │ │ │ ├── serverGroupServicesDirective.html │ │ │ ├── serverGroupServicesSelector.directive.js │ │ │ └── wizard │ │ │ │ ├── CloneServerGroupCtrl.js │ │ │ │ ├── ServerGroupAdvanced.controller.js │ │ │ │ ├── ServerGroupArtifactSettings.controller.js │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ ├── ServerGroupEnvs.controller.js │ │ │ │ ├── ServerGroupLoadBalancers.controller.js │ │ │ │ ├── ServerGroupServices.controller.js │ │ │ │ ├── advanced.html │ │ │ │ ├── artifactSettings.html │ │ │ │ ├── basicSettings.html │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ ├── envs.html │ │ │ │ ├── loadBalancers.html │ │ │ │ ├── serverGroupWizard.html │ │ │ │ ├── services.html │ │ │ │ └── templateSelection.html │ │ │ ├── details │ │ │ ├── resize │ │ │ │ ├── resizeServerGroup.controller.js │ │ │ │ ├── resizeServerGroup.controller.spec.js │ │ │ │ └── resizeServerGroup.html │ │ │ ├── rollback │ │ │ │ ├── rollbackServerGroup.controller.js │ │ │ │ └── rollbackServerGroup.html │ │ │ ├── serverGroupDetails.cf.controller.js │ │ │ ├── serverGroupDetails.cf.controller.spec.js │ │ │ └── serverGroupDetails.html │ │ │ └── serverGroup.transformer.js │ ├── core │ │ ├── account │ │ │ ├── AccountLabelColor.tsx │ │ │ ├── account.module.js │ │ │ ├── account.service.spec.ts │ │ │ ├── account.service.ts │ │ │ ├── accountLabelColor.component.ts │ │ │ ├── accountSelectField.directive.html │ │ │ ├── accountSelectField.directive.js │ │ │ ├── accountSelectField.directive.spec.js │ │ │ ├── accountTag.directive.js │ │ │ ├── collapsibleAccountTag.directive.html │ │ │ ├── collapsibleAccountTag.directive.js │ │ │ └── providerToggles.directive.js │ │ ├── analytics │ │ │ └── analytics.service.js │ │ ├── api │ │ │ ├── api.service.spec.ts │ │ │ └── api.service.ts │ │ ├── application │ │ │ ├── application.controller.js │ │ │ ├── application.controller.spec.js │ │ │ ├── application.html │ │ │ ├── application.less │ │ │ ├── application.model.spec.ts │ │ │ ├── application.model.ts │ │ │ ├── application.module.js │ │ │ ├── application.state.provider.ts │ │ │ ├── applicationModel.builder.ts │ │ │ ├── applicationRefresh.tooltip.html │ │ │ ├── applications.controller.js │ │ │ ├── applications.controller.spec.js │ │ │ ├── applications.html │ │ │ ├── applications.state.provider.ts │ │ │ ├── config │ │ │ │ ├── appConfig.dataSource.js │ │ │ │ ├── appConfig.states.ts │ │ │ │ ├── applicationAttributes.directive.html │ │ │ │ ├── applicationAttributes.directive.js │ │ │ │ ├── applicationAttributes.directive.spec.js │ │ │ │ ├── applicationCacheManagement.directive.html │ │ │ │ ├── applicationCacheManagement.directive.js │ │ │ │ ├── applicationConfig.controller.js │ │ │ │ ├── applicationConfig.view.html │ │ │ │ ├── applicationNotifications.directive.html │ │ │ │ ├── applicationNotifications.directive.js │ │ │ │ ├── applicationSnapshotSection.component.html │ │ │ │ ├── applicationSnapshotSection.component.js │ │ │ │ ├── dataSources │ │ │ │ │ ├── applicationDataSourceEditor.component.html │ │ │ │ │ ├── applicationDataSourceEditor.component.less │ │ │ │ │ ├── applicationDataSourceEditor.component.spec.ts │ │ │ │ │ └── applicationDataSourceEditor.component.ts │ │ │ │ ├── deleteApplicationSection.directive.html │ │ │ │ ├── deleteApplicationSection.directive.js │ │ │ │ ├── footer │ │ │ │ │ ├── configSectionFooter.component.html │ │ │ │ │ ├── configSectionFooter.component.less │ │ │ │ │ ├── configSectionFooter.component.spec.ts │ │ │ │ │ └── configSectionFooter.component.ts │ │ │ │ ├── links │ │ │ │ │ ├── applicationLinks.component.html │ │ │ │ │ ├── applicationLinks.component.js │ │ │ │ │ ├── applicationLinks.component.less │ │ │ │ │ ├── editLinks.modal.controller.js │ │ │ │ │ └── editLinks.modal.html │ │ │ │ └── trafficGuard │ │ │ │ │ ├── trafficGuardConfig.component.html │ │ │ │ │ ├── trafficGuardConfig.component.ts │ │ │ │ │ └── trafficGuardConfig.help.ts │ │ │ ├── inferredApplicationWarning.service.js │ │ │ ├── inferredApplicationWarning.service.spec.js │ │ │ ├── listExtractor │ │ │ │ ├── listExtractor.service.spec.ts │ │ │ │ └── listExtractor.service.ts │ │ │ ├── modal │ │ │ │ ├── applicationProviderFields.component.html │ │ │ │ ├── applicationProviderFields.component.js │ │ │ │ ├── applicationProviderFields.component.spec.js │ │ │ │ ├── createApplication.modal.controller.js │ │ │ │ ├── createApplication.modal.controller.spec.js │ │ │ │ ├── editApplication.controller.modal.js │ │ │ │ ├── editApplication.html │ │ │ │ ├── groupMembershipConfigurer.component.html │ │ │ │ ├── groupMembershipConfigurer.component.js │ │ │ │ ├── newapplication.html │ │ │ │ ├── pageApplicationOwner.html │ │ │ │ ├── pageApplicationOwner.modal.controller.js │ │ │ │ ├── platformHealthOverride.directive.js │ │ │ │ ├── platformHealthOverrideCheckbox.directive.html │ │ │ │ └── validation │ │ │ │ │ ├── applicationName.validator.spec.ts │ │ │ │ │ ├── applicationName.validator.ts │ │ │ │ │ ├── applicationNameValidationMessages.component.ts │ │ │ │ │ ├── applicationNameValidationMessages.directive.html │ │ │ │ │ ├── exampleApplicationName.validator.ts │ │ │ │ │ ├── validateApplicationName.directive.spec.ts │ │ │ │ │ └── validateApplicationName.directive.ts │ │ │ ├── nav │ │ │ │ ├── applicationNav.component.js │ │ │ │ ├── applicationNav.component.less │ │ │ │ └── secondaryNav.component.ts │ │ │ ├── newapplication.less │ │ │ └── service │ │ │ │ ├── application.read.service.spec.ts │ │ │ │ ├── application.read.service.ts │ │ │ │ ├── application.write.service.spec.ts │ │ │ │ ├── application.write.service.ts │ │ │ │ ├── applicationDataSource.registry.ts │ │ │ │ └── applicationDataSource.ts │ │ ├── authentication │ │ │ ├── authentication.initializer.service.ts │ │ │ ├── authentication.interceptor.service.ts │ │ │ ├── authentication.interceptor.spec.ts │ │ │ ├── authentication.module.ts │ │ │ ├── authentication.provider.spec.ts │ │ │ ├── authentication.service.spec.ts │ │ │ ├── authentication.service.ts │ │ │ ├── loggedOut.modal.controller.js │ │ │ ├── loggedOut.modal.html │ │ │ ├── loggedOut.modal.less │ │ │ ├── redirect.service.ts │ │ │ └── userMenu │ │ │ │ ├── userMenu.directive.html │ │ │ │ ├── userMenu.directive.js │ │ │ │ ├── userMenu.directive.spec.js │ │ │ │ ├── userMenu.less │ │ │ │ └── userMenu.module.js │ │ ├── bootstrap │ │ │ ├── applicationBootstrap.directive.html │ │ │ ├── applicationBootstrap.directive.js │ │ │ └── spinnakerHeader.html │ │ ├── cache │ │ │ ├── abstractBaseCache.service.ts │ │ │ ├── cacheInitializer.service.spec.ts │ │ │ ├── cacheInitializer.service.ts │ │ │ ├── caches.module.js │ │ │ ├── collapsibleSectionStateCache.js │ │ │ ├── deckCache.service.ts │ │ │ ├── infrastructureCacheConfig.ts │ │ │ ├── infrastructureCaches.service.spec.ts │ │ │ ├── infrastructureCaches.service.ts │ │ │ └── viewStateCache.service.ts │ │ ├── cancelModal │ │ │ ├── cancel.html │ │ │ ├── cancel.less │ │ │ ├── cancelModal.controller.ts │ │ │ └── cancelModal.service.ts │ │ ├── chaosMonkey │ │ │ ├── chaosMonkey.help.ts │ │ │ ├── chaosMonkeyConfig.component.html │ │ │ ├── chaosMonkeyConfig.component.less │ │ │ ├── chaosMonkeyConfig.component.ts │ │ │ ├── chaosMonkeyExceptions.component.html │ │ │ ├── chaosMonkeyExceptions.component.less │ │ │ ├── chaosMonkeyExceptions.component.spec.ts │ │ │ ├── chaosMonkeyExceptions.component.ts │ │ │ └── chaosMonkeyNewApplicationConfig.component.ts │ │ ├── ci │ │ │ └── igor.service.ts │ │ ├── cloudProvider │ │ │ ├── cloudProvider.registry.spec.ts │ │ │ ├── cloudProvider.registry.ts │ │ │ ├── cloudProviderLabel.directive.js │ │ │ ├── cloudProviderLogo.component.ts │ │ │ ├── cloudProviderLogo.less │ │ │ ├── providerSelection │ │ │ │ ├── providerSelection.html │ │ │ │ ├── providerSelection.modal.less │ │ │ │ ├── providerSelection.service.js │ │ │ │ ├── providerSelection.service.spec.js │ │ │ │ ├── providerSelector.directive.js │ │ │ │ └── providerSelector.html │ │ │ └── serviceDelegate.service.js │ │ ├── cluster │ │ │ ├── all.html │ │ │ ├── allClusters.controller.js │ │ │ ├── allClusters.controller.spec.js │ │ │ ├── allClustersGroupings.component.html │ │ │ ├── allClustersGroupings.component.ts │ │ │ ├── cluster.module.js │ │ │ ├── cluster.service.spec.ts │ │ │ ├── cluster.service.ts │ │ │ ├── clusterPod.component.ts │ │ │ ├── clusterPod.html │ │ │ ├── filter │ │ │ │ ├── clusterDependentFilterHelper.service.js │ │ │ │ ├── clusterFilter.component.html │ │ │ │ ├── clusterFilter.component.ts │ │ │ │ ├── clusterFilter.model.js │ │ │ │ ├── clusterFilter.service.spec.ts │ │ │ │ ├── clusterFilter.service.ts │ │ │ │ ├── collapsibleFilterSection.directive.js │ │ │ │ ├── collapsibleFilterSection.html │ │ │ │ ├── instanceList.filter.js │ │ │ │ ├── instanceList.filter.spec.js │ │ │ │ ├── multiselect.model.js │ │ │ │ └── multiselect.model.spec.js │ │ │ ├── onDemand │ │ │ │ ├── onDemandClusterPicker.component.less │ │ │ │ ├── onDemandClusterPicker.component.ts │ │ │ │ └── onDemandOptionTemplate.html │ │ │ ├── rollups.less │ │ │ ├── serverGroup.sequence.filter.ts │ │ │ └── task.matcher.ts │ │ ├── config │ │ │ ├── settings.ts │ │ │ └── versionCheck.service.ts │ │ ├── confirmationModal │ │ │ ├── confirm.html │ │ │ ├── confirmationModal.controller.js │ │ │ ├── confirmationModal.controller.spec.js │ │ │ └── confirmationModal.service.ts │ │ ├── core.module.js │ │ ├── delivery │ │ │ ├── create │ │ │ │ ├── create.module.js │ │ │ │ ├── createPipelineButton.controller.js │ │ │ │ ├── createPipelineButton.directive.js │ │ │ │ ├── createPipelineButton.html │ │ │ │ ├── createPipelineModal.controller.js │ │ │ │ ├── createPipelineModal.controller.spec.js │ │ │ │ └── createPipelineModal.html │ │ │ ├── delivery.dataSource.js │ │ │ ├── delivery.dataSource.spec.ts │ │ │ ├── delivery.module.js │ │ │ ├── delivery.states.ts │ │ │ ├── details │ │ │ │ ├── ExecutionDetails.tsx │ │ │ │ ├── defaultExecutionDetails.html │ │ │ │ ├── executionDetails.component.ts │ │ │ │ ├── executionDetails.controller.js │ │ │ │ ├── executionDetails.controller.spec.js │ │ │ │ ├── executionDetails.html │ │ │ │ ├── executionDetails.less │ │ │ │ ├── executionDetailsSection.service.spec.ts │ │ │ │ ├── executionDetailsSection.service.ts │ │ │ │ ├── executionDetailsSectionNav.directive.js │ │ │ │ ├── executionDetailsSectionNav.html │ │ │ │ ├── singleExecutionDetails.controller.js │ │ │ │ └── singleExecutionDetails.html │ │ │ ├── executionBuild │ │ │ │ ├── ExecutionBuildNumber.less │ │ │ │ ├── ExecutionBuildNumber.tsx │ │ │ │ ├── buildDisplayName.filter.ts │ │ │ │ ├── executionBuildNumber.component.ts │ │ │ │ └── executionBuildNumber.directive.html │ │ │ ├── executionGroup │ │ │ │ ├── execution │ │ │ │ │ ├── Execution.tsx │ │ │ │ │ ├── ExecutionMarker.tsx │ │ │ │ │ ├── OrchestratedItemRunningTime.ts │ │ │ │ │ ├── execution.component.ts │ │ │ │ │ ├── execution.less │ │ │ │ │ └── executionMarker.less │ │ │ │ ├── executionGroup.component.html │ │ │ │ ├── executionGroup.component.ts │ │ │ │ ├── executionGroup.less │ │ │ │ ├── executionGroups.component.html │ │ │ │ ├── executionGroups.component.ts │ │ │ │ └── executionGroups.less │ │ │ ├── executions │ │ │ │ ├── executions.controller.js │ │ │ │ ├── executions.controller.spec.js │ │ │ │ ├── executions.directive.js │ │ │ │ ├── executions.html │ │ │ │ └── executions.less │ │ │ ├── filter │ │ │ │ ├── executionFilter.controller.js │ │ │ │ ├── executionFilter.less │ │ │ │ ├── executionFilter.model.ts │ │ │ │ ├── executionFilter.service.spec.ts │ │ │ │ ├── executionFilter.service.ts │ │ │ │ ├── executionFilters.directive.js │ │ │ │ └── filterNav.html │ │ │ ├── manualExecution │ │ │ │ ├── inlinePropertyScope.filter.js │ │ │ │ ├── inlinePropertyScope.filter.spec.js │ │ │ │ ├── manualPipelineExecution.controller.js │ │ │ │ ├── manualPipelineExecution.controller.spec.js │ │ │ │ ├── manualPipelineExecution.html │ │ │ │ ├── manualPipelineExecution.less │ │ │ │ └── notifications.tooltip.html │ │ │ ├── service │ │ │ │ ├── execution.service.spec.js │ │ │ │ ├── execution.service.ts │ │ │ │ ├── executions.transformer.service.js │ │ │ │ └── executions.transformer.service.spec.js │ │ │ ├── stageFailureMessage │ │ │ │ └── stageFailureMessage.component.ts │ │ │ ├── status │ │ │ │ ├── ExecutionStatus.tsx │ │ │ │ ├── executionStatus.component.spec.ts │ │ │ │ ├── executionStatus.component.ts │ │ │ │ ├── executionStatus.html │ │ │ │ ├── executionStatus.less │ │ │ │ └── executionUser.filter.ts │ │ │ └── triggers │ │ │ │ ├── NextRunTag.tsx │ │ │ │ ├── TriggersTag.tsx │ │ │ │ ├── nextRunTag.component.ts │ │ │ │ ├── triggersTag.component.ts │ │ │ │ └── triggersTag.directive.js │ │ ├── deploymentStrategy │ │ │ ├── deploymentStrategy.module.js │ │ │ ├── deploymentStrategyConfig.provider.js │ │ │ ├── deploymentStrategySelector.controller.js │ │ │ ├── deploymentStrategySelector.controller.spec.js │ │ │ ├── deploymentStrategySelector.directive.html │ │ │ ├── deploymentStrategySelector.directive.js │ │ │ ├── services │ │ │ │ └── deploymentStrategy.service.js │ │ │ └── strategies │ │ │ │ ├── custom │ │ │ │ ├── additionalFields.html │ │ │ │ ├── custom.strategy.module.js │ │ │ │ ├── customStrategySelector.controller.js │ │ │ │ ├── customStrategySelector.directive.html │ │ │ │ └── customStrategySelector.directive.js │ │ │ │ ├── highlander │ │ │ │ └── highlander.strategy.module.js │ │ │ │ ├── none │ │ │ │ └── none.strategy.module.js │ │ │ │ ├── redblack │ │ │ │ ├── additionalFields.html │ │ │ │ └── redblack.strategy.module.js │ │ │ │ └── rollingPush │ │ │ │ ├── additionalFields.html │ │ │ │ └── rollingPush.strategy.module.js │ │ ├── diffs │ │ │ ├── changes.html │ │ │ ├── commitHistory.component.ts │ │ │ ├── index.ts │ │ │ ├── jarDiff.component.ts │ │ │ └── viewChangesLink.component.ts │ │ ├── domain │ │ │ ├── IBuild.ts │ │ │ ├── ICluster.ts │ │ │ ├── ICredentials.ts │ │ │ ├── IEntityTags.ts │ │ │ ├── IExecution.ts │ │ │ ├── IExecutionStage.ts │ │ │ ├── IExecutionTrigger.ts │ │ │ ├── IJobConfig.ts │ │ │ ├── IOrchestratedItem.ts │ │ │ ├── IPipeline.ts │ │ │ ├── IProject.ts │ │ │ ├── IRegionalCluster.ts │ │ │ ├── ISecurityGroup.ts │ │ │ ├── IStage.ts │ │ │ ├── IStageStep.ts │ │ │ ├── IStrategy.ts │ │ │ ├── ITrigger.ts │ │ │ ├── IVpc.ts │ │ │ ├── buildInfo.ts │ │ │ ├── deckRootScope.ts │ │ │ ├── health.ts │ │ │ ├── index.ts │ │ │ ├── instance.ts │ │ │ ├── instanceCounts.ts │ │ │ ├── loadBalancer.ts │ │ │ ├── serverGroup.ts │ │ │ ├── stageContext.ts │ │ │ └── taskStep.ts │ │ ├── entityTag │ │ │ ├── addEntityTagLinks.component.ts │ │ │ ├── clusterTargetBuilder.service.ts │ │ │ ├── dataSourceAlerts.component.ts │ │ │ ├── dataSourceAlerts.popover.html │ │ │ ├── entityRef.builder.ts │ │ │ ├── entitySource.component.ts │ │ │ ├── entitySource.popover.html │ │ │ ├── entityTagDetails.component.less │ │ │ ├── entityTagEditor.controller.ts │ │ │ ├── entityTagEditor.modal.html │ │ │ ├── entityTagEditor.modal.less │ │ │ ├── entityTags.help.ts │ │ │ ├── entityTags.read.service.spec.ts │ │ │ ├── entityTags.read.service.ts │ │ │ ├── entityTags.write.service.ts │ │ │ ├── entityUiTags.component.less │ │ │ ├── entityUiTags.component.ts │ │ │ ├── entityUiTags.popover.html │ │ │ └── entityUiTags.popover.less │ │ ├── filter │ │ │ ├── percent.filter.js │ │ │ └── replace.filter.ts │ │ ├── filterModel │ │ │ ├── dependentFilter │ │ │ │ ├── dependentFilter.service.js │ │ │ │ └── dependentFilter.service.spec.js │ │ │ ├── filter.model.service.js │ │ │ ├── filter.model.service.spec.js │ │ │ ├── filter.tags.directive.js │ │ │ └── filter.tags.html │ │ ├── forms │ │ │ ├── autofocus │ │ │ │ └── autofocus.directive.js │ │ │ ├── buttonBusyIndicator │ │ │ │ ├── ButtonBusyIndicator.tsx │ │ │ │ ├── buttonBusyIndicator.component.less │ │ │ │ └── buttonBusyIndicator.component.ts │ │ │ ├── checklist │ │ │ │ ├── checklist.directive.html │ │ │ │ ├── checklist.directive.js │ │ │ │ └── checklist.directive.spec.js │ │ │ ├── checkmap │ │ │ │ ├── checkmap.directive.html │ │ │ │ ├── checkmap.directive.js │ │ │ │ └── checkmap.directive.spec.js │ │ │ ├── forms.module.js │ │ │ ├── ignoreEmptyDelete.directive.js │ │ │ ├── mapEditor │ │ │ │ ├── mapEditor.component.html │ │ │ │ ├── mapEditor.component.js │ │ │ │ └── mapEditor.component.spec.js │ │ │ ├── numberList │ │ │ │ ├── numberList.component.less │ │ │ │ ├── numberList.component.spec.ts │ │ │ │ └── numberList.component.ts │ │ │ └── uiSelect.decorator.js │ │ ├── healthCounts │ │ │ ├── healthCounts.directive.js │ │ │ ├── healthCounts.directive.spec.js │ │ │ ├── healthCounts.html │ │ │ ├── healthCounts.less │ │ │ └── healthLegend.html │ │ ├── help │ │ │ ├── helpContents.js │ │ │ ├── helpContents.registry.spec.ts │ │ │ ├── helpContents.registry.ts │ │ │ ├── helpField.component.spec.ts │ │ │ ├── helpField.component.ts │ │ │ └── helpField.popover.html │ │ ├── history │ │ │ ├── recentHistory.service.spec.ts │ │ │ └── recentHistory.service.ts │ │ ├── hotkeys │ │ │ └── hotkeys.module.js │ │ ├── image │ │ │ └── image.reader.ts │ │ ├── insight │ │ │ ├── insight.less │ │ │ ├── insight.module.ts │ │ │ ├── insightFilter.component.html │ │ │ ├── insightFilter.component.ts │ │ │ ├── insightFilterState.model.ts │ │ │ ├── insightLayout.component.html │ │ │ ├── insightLayout.component.ts │ │ │ ├── insightmenu.directive.html │ │ │ └── insightmenu.directive.js │ │ ├── instance │ │ │ ├── details │ │ │ │ ├── console │ │ │ │ │ ├── consoleOutput.modal.controller.js │ │ │ │ │ ├── consoleOutput.modal.html │ │ │ │ │ └── consoleOutputLink.directive.js │ │ │ │ ├── instanceLinks.component.html │ │ │ │ ├── instanceLinks.component.js │ │ │ │ ├── instanceLinks.component.less │ │ │ │ ├── multipleInstanceServerGroup.directive.html │ │ │ │ ├── multipleInstanceServerGroup.directive.js │ │ │ │ ├── multipleInstanceServerGroup.directive.less │ │ │ │ ├── multipleInstances.controller.js │ │ │ │ ├── multipleInstances.controller.spec.js │ │ │ │ └── multipleInstances.view.html │ │ │ ├── instance.module.js │ │ │ ├── instance.read.service.ts │ │ │ ├── instance.states.ts │ │ │ ├── instance.write.service.spec.ts │ │ │ ├── instance.write.service.ts │ │ │ ├── instanceList.directive.html │ │ │ ├── instanceList.directive.js │ │ │ ├── instanceListBody.directive.js │ │ │ ├── instanceSelection.less │ │ │ ├── instanceType.service.ts │ │ │ ├── instanceTypeService.spec.ts │ │ │ ├── instances.directive.js │ │ │ └── loadBalancer │ │ │ │ ├── health.html │ │ │ │ └── instanceLoadBalancerHealth.directive.js │ │ ├── loadBalancer │ │ │ ├── AllLoadBalancersCtrl.js │ │ │ ├── AllLoadBalancersCtrl.spec.js │ │ │ ├── all.html │ │ │ ├── filter │ │ │ │ ├── loadBalancer.filter.component.html │ │ │ │ ├── loadBalancer.filter.component.ts │ │ │ │ ├── loadBalancer.filter.model.js │ │ │ │ ├── loadBalancer.filter.service.js │ │ │ │ ├── loadBalancer.filter.service.spec.js │ │ │ │ └── loadBalancerDependentFilterHelper.service.js │ │ │ ├── groupings.html │ │ │ ├── loadBalancer.dataSource.js │ │ │ ├── loadBalancer.directive.js │ │ │ ├── loadBalancer.module.js │ │ │ ├── loadBalancer.read.service.ts │ │ │ ├── loadBalancer.states.ts │ │ │ ├── loadBalancer.transformer.js │ │ │ ├── loadBalancer.write.service.ts │ │ │ ├── loadBalancer │ │ │ │ ├── loadBalancer.html │ │ │ │ ├── loadBalancer.pod.directive.js │ │ │ │ ├── loadBalancerPod.directive.less │ │ │ │ ├── loadBalancerPod.html │ │ │ │ ├── loadBalancerServerGroup.html │ │ │ │ └── loadBalancersTag.html │ │ │ ├── loadBalancerServerGroup.directive.js │ │ │ ├── loadBalancersTag.component.spec.ts │ │ │ └── loadBalancersTag.component.ts │ │ ├── modal │ │ │ ├── buttons │ │ │ │ ├── SubmitButton.tsx │ │ │ │ ├── modalClose.component.ts │ │ │ │ └── submitButton.component.ts │ │ │ ├── closeable │ │ │ │ ├── closeable.modal.controller.js │ │ │ │ └── closeable.modal.controller.spec.js │ │ │ ├── modal.module.js │ │ │ ├── modalOverlay.directive.js │ │ │ ├── modalPage.directive.js │ │ │ ├── modals.less │ │ │ └── wizard │ │ │ │ ├── modalWizard.less │ │ │ │ ├── v2modalWizard.component.html │ │ │ │ ├── v2modalWizard.component.ts │ │ │ │ ├── v2modalWizard.service.ts │ │ │ │ ├── v2wizardPage.component.html │ │ │ │ ├── v2wizardPage.component.ts │ │ │ │ ├── wizardSubFormValidation.service.js │ │ │ │ └── wizardSubFormValidation.service.spec.js │ │ ├── naming │ │ │ ├── naming.service.spec.ts │ │ │ └── naming.service.ts │ │ ├── navigation │ │ │ ├── navigation.less │ │ │ ├── state.provider.ts │ │ │ ├── stateHelper.provider.ts │ │ │ ├── stateactive.directive.js │ │ │ ├── urlBuilder.service.ts │ │ │ └── urlParser.service.js │ │ ├── network │ │ │ └── network.read.service.ts │ │ ├── notification │ │ │ ├── modal │ │ │ │ ├── editNotification.controller.modal.js │ │ │ │ └── editNotification.html │ │ │ ├── notification.details.filter.js │ │ │ ├── notification.service.js │ │ │ ├── notificationList.directive.html │ │ │ ├── notificationList.directive.js │ │ │ ├── notificationType.service.js │ │ │ ├── notificationTypeConfig.provider.js │ │ │ ├── notifications.module.js │ │ │ ├── selector │ │ │ │ ├── notificationSelector.directive.js │ │ │ │ └── notificationSelector.html │ │ │ └── types │ │ │ │ ├── email │ │ │ │ ├── additionalFields.html │ │ │ │ └── email.notification.type.module.js │ │ │ │ ├── hipchat │ │ │ │ ├── additionalFields.html │ │ │ │ └── hipchat.notification.type.module.js │ │ │ │ ├── slack │ │ │ │ ├── additionalFields.html │ │ │ │ └── slack.notification.type.module.js │ │ │ │ └── sms │ │ │ │ ├── additionalFields.html │ │ │ │ └── sms.notification.type.module.js │ │ ├── orchestratedItem │ │ │ ├── orchestratedItem.transformer.spec.ts │ │ │ ├── orchestratedItem.transformer.ts │ │ │ ├── timeBoundaries.service.js │ │ │ └── timeBoundaries.service.spec.js │ │ ├── overrideRegistry │ │ │ └── override.registry.ts │ │ ├── pageTitle │ │ │ ├── pageTitle.service.js │ │ │ └── pageTitle.service.spec.js │ │ ├── pipeline │ │ │ ├── config │ │ │ │ ├── actions │ │ │ │ │ ├── actions.module.js │ │ │ │ │ ├── delete │ │ │ │ │ │ ├── delete.module.js │ │ │ │ │ │ ├── deletePipelineModal.controller.spec.js │ │ │ │ │ │ └── deletePipelineModal.html │ │ │ │ │ ├── disable │ │ │ │ │ │ ├── disable.module.js │ │ │ │ │ │ └── disablePipelineModal.html │ │ │ │ │ ├── enable │ │ │ │ │ │ ├── enable.module.js │ │ │ │ │ │ └── enablePipelineModal.html │ │ │ │ │ ├── history │ │ │ │ │ │ ├── diffSummary.component.js │ │ │ │ │ │ ├── diffView.component.js │ │ │ │ │ │ ├── showHistory.controller.js │ │ │ │ │ │ ├── showHistory.less │ │ │ │ │ │ └── showHistory.modal.html │ │ │ │ │ ├── json │ │ │ │ │ │ ├── editPipelineJsonModal.controller.spec.ts │ │ │ │ │ │ ├── editPipelineJsonModal.controller.ts │ │ │ │ │ │ └── editPipelineJsonModal.html │ │ │ │ │ ├── lock │ │ │ │ │ │ ├── lock.module.js │ │ │ │ │ │ └── lockPipelineModal.html │ │ │ │ │ ├── pipelineConfigActions.html │ │ │ │ │ ├── rename │ │ │ │ │ │ ├── rename.module.js │ │ │ │ │ │ ├── renamePipelineModal.controller.spec.js │ │ │ │ │ │ └── renamePipelineModal.html │ │ │ │ │ └── unlock │ │ │ │ │ │ ├── unlock.module.js │ │ │ │ │ │ └── unlockPipelineModal.html │ │ │ │ ├── copyStage │ │ │ │ │ ├── copyStage.modal.controller.ts │ │ │ │ │ ├── copyStage.modal.html │ │ │ │ │ ├── copyStage.modal.less │ │ │ │ │ └── copyStageCard.component.ts │ │ │ │ ├── createNew.directive.js │ │ │ │ ├── createNew.html │ │ │ │ ├── graph │ │ │ │ │ ├── PipelineGraph.tsx │ │ │ │ │ ├── pipeline.graph.component.ts │ │ │ │ │ ├── pipelineGraph.component.html │ │ │ │ │ ├── pipelineGraph.less │ │ │ │ │ ├── pipelineGraph.service.ts │ │ │ │ │ └── warnings.popover.html │ │ │ │ ├── health │ │ │ │ │ ├── stagePlatformHealthOverride.directive.js │ │ │ │ │ └── stagePlatformHealthOverrideCheckbox.directive.html │ │ │ │ ├── parameters │ │ │ │ │ ├── parameter.html │ │ │ │ │ ├── parameter.js │ │ │ │ │ ├── parameters.directive.js │ │ │ │ │ ├── parameters.html │ │ │ │ │ └── pipeline.module.js │ │ │ │ ├── pipelineConfig.controller.js │ │ │ │ ├── pipelineConfig.controller.spec.js │ │ │ │ ├── pipelineConfig.html │ │ │ │ ├── pipelineConfig.less │ │ │ │ ├── pipelineConfig.module.js │ │ │ │ ├── pipelineConfigProvider.spec.ts │ │ │ │ ├── pipelineConfigProvider.ts │ │ │ │ ├── pipelineConfigView.html │ │ │ │ ├── pipelineConfigView.js │ │ │ │ ├── pipelineConfigurer.html │ │ │ │ ├── pipelineConfigurer.js │ │ │ │ ├── preconditions │ │ │ │ │ ├── modal │ │ │ │ │ │ ├── editPrecondition.controller.modal.js │ │ │ │ │ │ └── editPrecondition.html │ │ │ │ │ ├── precondition.details.filter.js │ │ │ │ │ ├── preconditionList.directive.html │ │ │ │ │ ├── preconditionList.directive.js │ │ │ │ │ ├── preconditionType.service.js │ │ │ │ │ ├── preconditionTypeConfig.provider.js │ │ │ │ │ ├── preconditions.module.js │ │ │ │ │ ├── selector │ │ │ │ │ │ ├── preconditionSelector.directive.js │ │ │ │ │ │ └── preconditionSelector.html │ │ │ │ │ └── types │ │ │ │ │ │ ├── clusterSize │ │ │ │ │ │ ├── additionalFields.html │ │ │ │ │ │ └── clusterSize.precondition.type.module.js │ │ │ │ │ │ └── expression │ │ │ │ │ │ ├── additionalFields.html │ │ │ │ │ │ └── expression.precondition.type.module.js │ │ │ │ ├── services │ │ │ │ │ ├── pipelineConfig.service.ts │ │ │ │ │ └── piplineConfig.service.spec.ts │ │ │ │ ├── stages │ │ │ │ │ ├── applySourceServerGroupCapacity │ │ │ │ │ │ ├── applySourceServerGroupCapacityDetails.controller.js │ │ │ │ │ │ ├── applySourceServerGroupCapacityDetails.html │ │ │ │ │ │ └── applySourceServerGroupCapacityStage.module.js │ │ │ │ │ ├── bake │ │ │ │ │ │ ├── BakeExecutionLabel.tsx │ │ │ │ │ │ ├── bakeStage.js │ │ │ │ │ │ ├── bakeStage.module.js │ │ │ │ │ │ ├── bakeStage.transformer.js │ │ │ │ │ │ ├── bakeStage.transformer.spec.js │ │ │ │ │ │ ├── bakery.service.ts │ │ │ │ │ │ └── modal │ │ │ │ │ │ │ ├── addExtendedAttribute.controller.modal.js │ │ │ │ │ │ │ └── addExtendedAttribute.html │ │ │ │ │ ├── baseProviderStage │ │ │ │ │ │ ├── baseProviderStage.html │ │ │ │ │ │ └── baseProviderStage.js │ │ │ │ │ ├── checkPreconditions │ │ │ │ │ │ ├── checkPreconditionsExecutionDetails.controller.js │ │ │ │ │ │ ├── checkPreconditionsExecutionDetails.html │ │ │ │ │ │ ├── checkPreconditionsStage.html │ │ │ │ │ │ ├── checkPreconditionsStage.js │ │ │ │ │ │ └── checkPreconditionsStage.module.js │ │ │ │ │ ├── cloneServerGroup │ │ │ │ │ │ ├── cloneServerGroupStage.js │ │ │ │ │ │ └── cloneServerGroupStage.module.js │ │ │ │ │ ├── core │ │ │ │ │ │ ├── ExecutionBarLabel.tsx │ │ │ │ │ │ ├── baseExecutionDetails.controller.ts │ │ │ │ │ │ ├── executionStepDetails.html │ │ │ │ │ │ ├── executionSteps.directive.js │ │ │ │ │ │ ├── executionSummary.html │ │ │ │ │ │ ├── stage.core.module.js │ │ │ │ │ │ ├── stageConfigField │ │ │ │ │ │ │ ├── stageConfigField.directive.html │ │ │ │ │ │ │ ├── stageConfigField.directive.js │ │ │ │ │ │ │ ├── stageConfigField.directive.less │ │ │ │ │ │ │ └── stageConfigField.directive.spec.js │ │ │ │ │ │ └── stepLabel.html │ │ │ │ │ ├── createLoadBalancer │ │ │ │ │ │ ├── createLoadBalancerExecutionDetails.controller.js │ │ │ │ │ │ ├── createLoadBalancerExecutionDetails.html │ │ │ │ │ │ ├── createLoadBalancerStage.html │ │ │ │ │ │ ├── createLoadBalancerStage.js │ │ │ │ │ │ └── createLoadBalancerStage.module.js │ │ │ │ │ ├── deploy │ │ │ │ │ │ ├── clusterName.filter.ts │ │ │ │ │ │ ├── deployExecutionDetails.controller.js │ │ │ │ │ │ ├── deployExecutionDetails.controller.spec.js │ │ │ │ │ │ ├── deployExecutionDetails.html │ │ │ │ │ │ ├── deployStage.html │ │ │ │ │ │ ├── deployStage.js │ │ │ │ │ │ ├── deployStage.module.js │ │ │ │ │ │ └── deployStage.transformer.js │ │ │ │ │ ├── destroyAsg │ │ │ │ │ │ ├── destroyAsgStage.js │ │ │ │ │ │ ├── destroyAsgStage.module.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── destroyAsgExecutionDetails.controller.ts │ │ │ │ │ │ │ └── destroyAsgExecutionDetails.template.html │ │ │ │ │ ├── disableAsg │ │ │ │ │ │ ├── disableAsgStage.js │ │ │ │ │ │ ├── disableAsgStage.module.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── disableAsgExecutionDetails.controller.ts │ │ │ │ │ │ │ └── disableAsgExecutionDetails.template.html │ │ │ │ │ ├── disableCluster │ │ │ │ │ │ ├── disableClusterStage.js │ │ │ │ │ │ └── disableClusterStage.module.js │ │ │ │ │ ├── enableAsg │ │ │ │ │ │ ├── enableAsgStage.js │ │ │ │ │ │ ├── enableAsgStage.module.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── enableAsgExecutionDetails.controller.ts │ │ │ │ │ │ │ └── enableAsgExecutionDetails.template.html │ │ │ │ │ ├── executionWindows │ │ │ │ │ │ ├── ExecutionWindowDayPickerComponent.spec.js │ │ │ │ │ │ ├── atlasGraph.component.ts │ │ │ │ │ │ ├── daysOfWeek.ts │ │ │ │ │ │ ├── executionWindowDayPicker.component.html │ │ │ │ │ │ ├── executionWindowDayPicker.component.ts │ │ │ │ │ │ ├── executionWindows.controller.js │ │ │ │ │ │ ├── executionWindows.directive.js │ │ │ │ │ │ ├── executionWindows.html │ │ │ │ │ │ ├── executionWindows.less │ │ │ │ │ │ ├── executionWindows.transformer.js │ │ │ │ │ │ ├── executionWindowsDetails.controller.js │ │ │ │ │ │ ├── executionWindowsDetails.html │ │ │ │ │ │ ├── executionWindowsStage.js │ │ │ │ │ │ └── executionWindowsStage.module.js │ │ │ │ │ ├── findAmi │ │ │ │ │ │ ├── findAmiStage.js │ │ │ │ │ │ └── findAmiStage.module.js │ │ │ │ │ ├── findImageFromTags │ │ │ │ │ │ ├── findImageFromTagsStage.js │ │ │ │ │ │ └── findImageFromTagsStage.module.js │ │ │ │ │ ├── jenkins │ │ │ │ │ │ ├── JenkinsExecutionLabel.tsx │ │ │ │ │ │ ├── jenkinsExecutionDetails.controller.js │ │ │ │ │ │ ├── jenkinsExecutionDetails.controller.spec.js │ │ │ │ │ │ ├── jenkinsExecutionDetails.html │ │ │ │ │ │ ├── jenkinsStage.controller.spec.js │ │ │ │ │ │ ├── jenkinsStage.html │ │ │ │ │ │ ├── jenkinsStage.js │ │ │ │ │ │ └── jenkinsStage.module.js │ │ │ │ │ ├── manualJudgment │ │ │ │ │ │ ├── manualJudgment.service.js │ │ │ │ │ │ ├── manualJudgment.service.spec.js │ │ │ │ │ │ ├── manualJudgmentExecutionDetails.controller.js │ │ │ │ │ │ ├── manualJudgmentExecutionDetails.controller.spec.js │ │ │ │ │ │ ├── manualJudgmentExecutionDetails.html │ │ │ │ │ │ ├── manualJudgmentExecutionDetails.less │ │ │ │ │ │ ├── manualJudgmentStage.html │ │ │ │ │ │ ├── manualJudgmentStage.js │ │ │ │ │ │ └── manualJudgmentStage.module.js │ │ │ │ │ ├── optionalStage │ │ │ │ │ │ ├── optionalStage.directive.html │ │ │ │ │ │ └── optionalStage.directive.js │ │ │ │ │ ├── overrideFailure │ │ │ │ │ │ ├── overrideFailure.component.html │ │ │ │ │ │ └── overrideFailure.component.js │ │ │ │ │ ├── overrideTimeout │ │ │ │ │ │ ├── overrideTimeout.directive.html │ │ │ │ │ │ ├── overrideTimeout.directive.js │ │ │ │ │ │ └── overrideTimeout.directive.spec.js │ │ │ │ │ ├── pipeline │ │ │ │ │ │ ├── pipelineExecutionDetails.controller.js │ │ │ │ │ │ ├── pipelineExecutionDetails.html │ │ │ │ │ │ ├── pipelineStage.html │ │ │ │ │ │ ├── pipelineStage.js │ │ │ │ │ │ └── pipelineStage.module.js │ │ │ │ │ ├── resizeAsg │ │ │ │ │ │ ├── resizeAsgStage.js │ │ │ │ │ │ └── resizeAsgStage.module.js │ │ │ │ │ ├── runJob │ │ │ │ │ │ ├── runJobStage.js │ │ │ │ │ │ └── runJobStage.module.js │ │ │ │ │ ├── scaleDownCluster │ │ │ │ │ │ ├── scaleDownClusterStage.js │ │ │ │ │ │ └── scaleDownClusterStage.module.js │ │ │ │ │ ├── script │ │ │ │ │ │ ├── scriptExecutionDetails.controller.js │ │ │ │ │ │ ├── scriptExecutionDetails.html │ │ │ │ │ │ ├── scriptStage.html │ │ │ │ │ │ ├── scriptStage.js │ │ │ │ │ │ └── scriptStage.module.js │ │ │ │ │ ├── shrinkCluster │ │ │ │ │ │ ├── shrinkClusterStage.js │ │ │ │ │ │ ├── shrinkClusterStage.module.js │ │ │ │ │ │ └── templates │ │ │ │ │ │ │ ├── shrinkClusterExecutionDetails.controller.ts │ │ │ │ │ │ │ └── shrinkClusterExecutionDetails.template.html │ │ │ │ │ ├── stage.html │ │ │ │ │ ├── stage.module.js │ │ │ │ │ ├── stageConstants.ts │ │ │ │ │ ├── tagImage │ │ │ │ │ │ ├── tagImageStage.js │ │ │ │ │ │ └── tagImageStage.module.js │ │ │ │ │ ├── travis │ │ │ │ │ │ ├── TravisExecutionLabel.tsx │ │ │ │ │ │ ├── travisExecutionDetails.controller.spec.ts │ │ │ │ │ │ ├── travisExecutionDetails.controller.ts │ │ │ │ │ │ ├── travisExecutionDetails.html │ │ │ │ │ │ ├── travisStage.controller.spec.ts │ │ │ │ │ │ ├── travisStage.html │ │ │ │ │ │ ├── travisStage.module.ts │ │ │ │ │ │ └── travisStage.ts │ │ │ │ │ ├── unmatchedStageTypeStage │ │ │ │ │ │ ├── unmatchedStageTypeStage.controller.spec.ts │ │ │ │ │ │ ├── unmatchedStageTypeStage.controller.ts │ │ │ │ │ │ ├── unmatchedStageTypeStage.html │ │ │ │ │ │ └── unmatchedStageTypeStage.ts │ │ │ │ │ ├── wait │ │ │ │ │ │ ├── waitExecutionDetails.controller.js │ │ │ │ │ │ ├── waitExecutionDetails.html │ │ │ │ │ │ ├── waitStage.html │ │ │ │ │ │ ├── waitStage.js │ │ │ │ │ │ └── waitStage.module.js │ │ │ │ │ ├── waitForParentTasks │ │ │ │ │ │ ├── waitForParentTasks.js │ │ │ │ │ │ ├── waitForParentTasks.transformer.js │ │ │ │ │ │ └── waitForParentTasksExecutionDetails.html │ │ │ │ │ └── webhook │ │ │ │ │ │ ├── webhookExecutionDetails.controller.ts │ │ │ │ │ │ ├── webhookExecutionDetails.html │ │ │ │ │ │ ├── webhookStage.html │ │ │ │ │ │ ├── webhookStage.module.ts │ │ │ │ │ │ └── webhookStage.ts │ │ │ │ ├── targetSelect.directive.js │ │ │ │ ├── targetSelect.html │ │ │ │ ├── triggers │ │ │ │ │ ├── cron │ │ │ │ │ │ ├── cron.validator.directive.js │ │ │ │ │ │ ├── cron.validator.directive.spec.js │ │ │ │ │ │ ├── cron.validator.service.js │ │ │ │ │ │ ├── cronPicker.html │ │ │ │ │ │ ├── cronTrigger.html │ │ │ │ │ │ ├── cronTrigger.less │ │ │ │ │ │ └── cronTrigger.module.js │ │ │ │ │ ├── docker │ │ │ │ │ │ ├── dockerTrigger.html │ │ │ │ │ │ ├── dockerTrigger.module.js │ │ │ │ │ │ ├── dockerTriggerOptions.directive.html │ │ │ │ │ │ ├── dockerTriggerOptions.directive.js │ │ │ │ │ │ └── selectorTemplate.html │ │ │ │ │ ├── git │ │ │ │ │ │ ├── git.trigger.ts │ │ │ │ │ │ └── gitTrigger.html │ │ │ │ │ ├── jenkins │ │ │ │ │ │ ├── jenkinsTrigger.controller.spec.js │ │ │ │ │ │ ├── jenkinsTrigger.html │ │ │ │ │ │ ├── jenkinsTrigger.module.js │ │ │ │ │ │ ├── jenkinsTriggerExecutionHandler.spec.js │ │ │ │ │ │ ├── jenkinsTriggerOptions.directive.html │ │ │ │ │ │ ├── jenkinsTriggerOptions.directive.js │ │ │ │ │ │ ├── jenkinsTriggerOptions.directive.spec.js │ │ │ │ │ │ └── selectorTemplate.html │ │ │ │ │ ├── pipeline │ │ │ │ │ │ ├── pipelineTrigger.html │ │ │ │ │ │ ├── pipelineTrigger.module.js │ │ │ │ │ │ ├── pipelineTriggerExecutionHandler.spec.js │ │ │ │ │ │ ├── pipelineTriggerOptions.directive.html │ │ │ │ │ │ ├── pipelineTriggerOptions.directive.js │ │ │ │ │ │ ├── pipelineTriggerOptions.directive.spec.js │ │ │ │ │ │ └── selectorTemplate.html │ │ │ │ │ ├── runAsUserSelector.component.ts │ │ │ │ │ ├── travis │ │ │ │ │ │ ├── selectorTemplate.html │ │ │ │ │ │ ├── travisTrigger.controller.spec.ts │ │ │ │ │ │ ├── travisTrigger.html │ │ │ │ │ │ ├── travisTrigger.module.ts │ │ │ │ │ │ ├── travisTriggerExecutionHandler.spec.ts │ │ │ │ │ │ ├── travisTriggerOptions.component.html │ │ │ │ │ │ ├── travisTriggerOptions.component.spec.ts │ │ │ │ │ │ └── travisTriggerOptions.component.ts │ │ │ │ │ ├── trigger.directive.js │ │ │ │ │ ├── trigger.html │ │ │ │ │ ├── trigger.module.js │ │ │ │ │ ├── triggers.directive.js │ │ │ │ │ └── triggers.html │ │ │ │ ├── validation │ │ │ │ │ ├── pipelineConfig.validator.spec.ts │ │ │ │ │ ├── pipelineConfig.validator.ts │ │ │ │ │ ├── requiredField.validator.ts │ │ │ │ │ ├── serviceAccountAccess.validator.ts │ │ │ │ │ ├── stageBeforeType.validator.ts │ │ │ │ │ ├── stageOrTriggerBeforeType.validator.ts │ │ │ │ │ └── targetImpedance.validator.ts │ │ │ │ └── warnings.popover.html │ │ │ ├── pipelines.less │ │ │ └── pipelines.module.js │ │ ├── presentation │ │ │ ├── LabelTemplate.tsx │ │ │ ├── Popover.tsx │ │ │ ├── Tooltip.tsx │ │ │ ├── anyFieldFilter │ │ │ │ └── anyField.filter.ts │ │ │ ├── autoScroll │ │ │ │ ├── autoScroll.directive.spec.js │ │ │ │ └── autoScroll.directive.ts │ │ │ ├── collapsibleSection │ │ │ │ ├── collapsibleSection.directive.html │ │ │ │ └── collapsibleSection.directive.js │ │ │ ├── details.less │ │ │ ├── gist │ │ │ │ └── gist.directive.js │ │ │ ├── isVisible │ │ │ │ └── isVisible.directive.js │ │ │ ├── labelTemplate.component.ts │ │ │ ├── less │ │ │ │ └── imports │ │ │ │ │ ├── animations.less │ │ │ │ │ ├── colors.less │ │ │ │ │ ├── commonImports.less │ │ │ │ │ └── mixins.less │ │ │ ├── main.less │ │ │ ├── navPopover.less │ │ │ ├── navigation │ │ │ │ ├── pageNavigation.less │ │ │ │ ├── pageNavigationState.ts │ │ │ │ ├── pageNavigator.component.spec.ts │ │ │ │ ├── pageNavigator.component.ts │ │ │ │ └── pageSection.component.ts │ │ │ ├── presentation.module.js │ │ │ ├── refresher │ │ │ │ ├── componentRefresher.directive.html │ │ │ │ ├── componentRefresher.directive.js │ │ │ │ └── componentRefresher.directive.less │ │ │ ├── robotToHumanFilter │ │ │ │ └── robotToHuman.filter.js │ │ │ ├── sortToggle │ │ │ │ ├── sorttoggle.directive.html │ │ │ │ └── sorttoggle.directive.js │ │ │ └── standalone.view.html │ │ ├── projects │ │ │ ├── configure │ │ │ │ ├── configureProject.modal.controller.js │ │ │ │ ├── configureProject.modal.html │ │ │ │ ├── projectApplications.modal.html │ │ │ │ ├── projectClusters.modal.html │ │ │ │ ├── projectConfig.modal.html │ │ │ │ └── projectPipelines.modal.html │ │ │ ├── dashboard │ │ │ │ ├── cluster │ │ │ │ │ ├── inconsistentBuilds.tooltip.html │ │ │ │ │ ├── projectCluster.controller.spec.js │ │ │ │ │ ├── projectCluster.directive.html │ │ │ │ │ ├── projectCluster.directive.js │ │ │ │ │ ├── projectCluster.directive.spec.js │ │ │ │ │ ├── projectCluster.less │ │ │ │ │ └── projectClusterRefresh.tooltip.html │ │ │ │ ├── clusterRefresh.tooltip.html │ │ │ │ ├── dashboard.controller.js │ │ │ │ ├── dashboard.controller.spec.js │ │ │ │ ├── dashboard.html │ │ │ │ ├── dashboard.less │ │ │ │ ├── executionRefresh.tooltip.html │ │ │ │ ├── pipeline │ │ │ │ │ ├── ProjectPipeline.tsx │ │ │ │ │ ├── projectPipeline.component.ts │ │ │ │ │ └── projectPipeline.less │ │ │ │ └── regionFilter │ │ │ │ │ ├── regionFilter.component.html │ │ │ │ │ ├── regionFilter.component.js │ │ │ │ │ ├── regionFilter.component.less │ │ │ │ │ └── regionFilter.service.js │ │ │ ├── project.controller.js │ │ │ ├── project.html │ │ │ ├── project.less │ │ │ ├── projects.controller.js │ │ │ ├── projects.controller.spec.js │ │ │ ├── projects.html │ │ │ ├── projects.module.js │ │ │ ├── projects.states.ts │ │ │ └── service │ │ │ │ ├── project.read.service.js │ │ │ │ └── project.write.service.js │ │ ├── region │ │ │ ├── regionSelectField.directive.html │ │ │ ├── regionSelectField.directive.js │ │ │ └── regionSelectField.directive.spec.js │ │ ├── retry │ │ │ ├── retry.service.spec.ts │ │ │ └── retry.service.ts │ │ ├── scheduler │ │ │ ├── scheduler.factory.spec.ts │ │ │ └── scheduler.factory.ts │ │ ├── search │ │ │ ├── global │ │ │ │ ├── globalSearch.controller.js │ │ │ │ ├── globalSearch.directive.html │ │ │ │ ├── globalSearch.directive.js │ │ │ │ ├── globalSearch.less │ │ │ │ ├── globalSearch.module.js │ │ │ │ └── globalSearch.spec.js │ │ │ ├── infrastructure │ │ │ │ ├── infrastructure.controller.js │ │ │ │ ├── infrastructure.html │ │ │ │ ├── infrastructure.less │ │ │ │ ├── infrastructure.states.ts │ │ │ │ ├── infrastructureSearch.service.js │ │ │ │ ├── project │ │ │ │ │ ├── infrastructureProject.directive.html │ │ │ │ │ ├── infrastructureProject.directive.js │ │ │ │ │ └── infrastructureProject.directive.less │ │ │ │ └── search.infrastructure.module.js │ │ │ ├── search.module.js │ │ │ ├── search.service.ts │ │ │ ├── searchRank.filter.js │ │ │ └── searchResult │ │ │ │ ├── searchResult.directive.html │ │ │ │ └── searchResult.directive.js │ │ ├── securityGroup │ │ │ ├── AllSecurityGroupsCtrl.js │ │ │ ├── AllSecurityGroupsCtrl.spec.js │ │ │ ├── all.html │ │ │ ├── filter │ │ │ │ ├── securityGroup.filter.component.html │ │ │ │ ├── securityGroup.filter.component.ts │ │ │ │ ├── securityGroup.filter.model.js │ │ │ │ ├── securityGroup.filter.service.js │ │ │ │ ├── securityGroup.filter.service.spec.js │ │ │ │ └── securityGroupDependentFilterHelper.service.js │ │ │ ├── groupings.html │ │ │ ├── securityGroup.dataSource.js │ │ │ ├── securityGroup.directive.js │ │ │ ├── securityGroup.html │ │ │ ├── securityGroup.module.js │ │ │ ├── securityGroup.pod.directive.js │ │ │ ├── securityGroup.states.ts │ │ │ ├── securityGroupPod.directive.less │ │ │ ├── securityGroupPod.html │ │ │ ├── securityGroupReader.service.spec.ts │ │ │ ├── securityGroupReader.service.ts │ │ │ ├── securityGroupTransformer.service.ts │ │ │ └── securityGroupWriter.service.ts │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ └── common │ │ │ │ │ ├── basicSettingsMixin.controller.js │ │ │ │ │ ├── basicSettingsMixin.controller.spec.js │ │ │ │ │ ├── costFactor.html │ │ │ │ │ ├── costFactor.js │ │ │ │ │ ├── dirtyInstanceTypeNotification.component.html │ │ │ │ │ ├── dirtyInstanceTypeNotification.component.js │ │ │ │ │ ├── instanceArchetypeDirective.html │ │ │ │ │ ├── instanceArchetypeSelector.js │ │ │ │ │ ├── instanceArchtypeSelector.spec.js │ │ │ │ │ ├── instanceTypeDirective.html │ │ │ │ │ ├── instanceTypeSelector.directive.less │ │ │ │ │ ├── instanceTypeSelector.js │ │ │ │ │ ├── serverGroup.configure.common.module.js │ │ │ │ │ ├── serverGroupCommandBuilder.service.ts │ │ │ │ │ ├── serverGroupCommandRegistry.provider.ts │ │ │ │ │ ├── serverGroupConfiguration.service.js │ │ │ │ │ ├── v2InstanceTypeSelector.directive.js │ │ │ │ │ ├── v2instanceArchetype.directive.html │ │ │ │ │ └── v2instanceArchetypeSelector.directive.js │ │ │ ├── details │ │ │ │ ├── multipleServerGroup.component.html │ │ │ │ ├── multipleServerGroup.component.js │ │ │ │ ├── multipleServerGroup.component.less │ │ │ │ ├── multipleServerGroups.controller.js │ │ │ │ ├── multipleServerGroups.controller.spec.js │ │ │ │ ├── multipleServerGroups.view.html │ │ │ │ ├── runningTasks.component.ts │ │ │ │ ├── scalingActivities │ │ │ │ │ ├── scalingActivities.controller.spec.ts │ │ │ │ │ ├── scalingActivities.controller.ts │ │ │ │ │ ├── scalingActivities.html │ │ │ │ │ └── viewScalingActivitiesLink.component.ts │ │ │ │ ├── serverGroupWarningMessage.service.spec.ts │ │ │ │ ├── serverGroupWarningMessage.service.ts │ │ │ │ └── userData.html │ │ │ ├── metrics │ │ │ │ └── cloudMetrics.read.service.ts │ │ │ ├── pod │ │ │ │ ├── runningTasksTag.directive.js │ │ │ │ └── runningTasksTag.html │ │ │ ├── serverGroup.component.html │ │ │ ├── serverGroup.component.ts │ │ │ ├── serverGroup.dataSource.js │ │ │ ├── serverGroup.module.js │ │ │ ├── serverGroup.states.ts │ │ │ ├── serverGroup.transformer.js │ │ │ ├── serverGroupReader.service.ts │ │ │ ├── serverGroupWriter.service.spec.ts │ │ │ └── serverGroupWriter.service.ts │ │ ├── serviceAccount │ │ │ └── serviceAccount.service.ts │ │ ├── snapshot │ │ │ ├── diff │ │ │ │ ├── snapshotDiff.modal.controller.js │ │ │ │ ├── snapshotDiff.modal.controller.spec.js │ │ │ │ ├── snapshotDiff.modal.html │ │ │ │ ├── snapshotDiff.modal.less │ │ │ │ └── viewSnapshotDiffButton.component.js │ │ │ ├── snapshot.read.service.js │ │ │ ├── snapshot.read.service.spec.js │ │ │ └── snapshot.write.service.js │ │ ├── state.service.ts │ │ ├── subnet │ │ │ ├── subnet.read.service.spec.ts │ │ │ ├── subnet.read.service.ts │ │ │ ├── subnetTag.component.html │ │ │ └── subnetTag.component.js │ │ ├── task │ │ │ ├── displayableTasks.filter.ts │ │ │ ├── modal │ │ │ │ ├── reason.directive.html │ │ │ │ └── reason.directive.js │ │ │ ├── monitor │ │ │ │ ├── multiTaskMonitor.component.js │ │ │ │ ├── multiTaskMonitor.component.less │ │ │ │ ├── taskMonitor.builder.spec.ts │ │ │ │ ├── taskMonitor.builder.ts │ │ │ │ ├── taskMonitor.directive.js │ │ │ │ ├── taskMonitor.directive.less │ │ │ │ ├── taskMonitor.html │ │ │ │ ├── taskMonitor.module.js │ │ │ │ ├── taskMonitorError.component.js │ │ │ │ ├── taskMonitorService.js │ │ │ │ └── taskMonitorStatus.component.js │ │ │ ├── platformHealthOverrideMessage.component.ts │ │ │ ├── platformHealthOverrideMessage.html │ │ │ ├── statusGlyph.directive.js │ │ │ ├── statusGlyph.html │ │ │ ├── task.dataSource.js │ │ │ ├── task.dataSource.spec.ts │ │ │ ├── task.module.js │ │ │ ├── task.read.service.spec.js │ │ │ ├── task.read.service.ts │ │ │ ├── task.states.ts │ │ │ ├── task.write.service.js │ │ │ ├── task.write.service.spec.js │ │ │ ├── taskExecutor.ts │ │ │ ├── taskProgressBar.directive.html │ │ │ ├── taskProgressBar.directive.js │ │ │ ├── tasks.controller.js │ │ │ ├── tasks.controller.spec.js │ │ │ ├── tasks.fixture.js │ │ │ ├── tasks.html │ │ │ ├── tasks.less │ │ │ └── verification │ │ │ │ ├── userVerification.directive.html │ │ │ │ ├── userVerification.directive.js │ │ │ │ ├── userVerification.directive.less │ │ │ │ └── userVerification.directive.spec.js │ │ ├── utils │ │ │ ├── appendTransform.js │ │ │ ├── clipboard │ │ │ │ ├── CopyToClipboard.tsx │ │ │ │ ├── copyToClipboard.component.less │ │ │ │ └── copyToClipboard.component.ts │ │ │ ├── infiniteScroll.directive.js │ │ │ ├── jQuery.js │ │ │ ├── json │ │ │ │ ├── json.utility.service.spec.ts │ │ │ │ └── json.utility.service.ts │ │ │ ├── later │ │ │ │ ├── later.d.ts │ │ │ │ └── later.js │ │ │ ├── moment.js │ │ │ ├── renderIfFeature.component.ts │ │ │ ├── scrollTo │ │ │ │ └── scrollTo.service.ts │ │ │ ├── selectOnDblClick.directive.js │ │ │ ├── stickyHeader │ │ │ │ ├── stickyHeader.component.ts │ │ │ │ └── stickyHeader.less │ │ │ ├── timeFormatters.spec.ts │ │ │ ├── timeFormatters.ts │ │ │ ├── timePicker.service.js │ │ │ ├── tsDecorators │ │ │ │ └── directiveFactoryDecorator.ts │ │ │ ├── utils.module.js │ │ │ ├── uuid.service.spec.ts │ │ │ ├── uuid.service.ts │ │ │ └── waypoints │ │ │ │ ├── waypoint.directive.js │ │ │ │ ├── waypoint.service.js │ │ │ │ └── waypointContainer.directive.js │ │ ├── validation │ │ │ ├── triggerValidation.directive.js │ │ │ ├── validateUnique.directive.js │ │ │ ├── validateUnique.directive.spec.js │ │ │ ├── validation.module.js │ │ │ ├── validationError.directive.js │ │ │ └── validationError.html │ │ ├── whatsNew │ │ │ ├── whatsNew.directive.html │ │ │ ├── whatsNew.directive.js │ │ │ ├── whatsNew.directive.modal.html │ │ │ ├── whatsNew.directive.spec.js │ │ │ ├── whatsNew.less │ │ │ ├── whatsNew.read.service.spec.ts │ │ │ └── whatsNew.read.service.ts │ │ └── widgets │ │ │ ├── CustomDropdown.tsx │ │ │ ├── accountNamespaceClusterSelector.component.html │ │ │ ├── accountNamespaceClusterSelector.component.js │ │ │ ├── accountRegionClusterSelector.component.html │ │ │ ├── accountRegionClusterSelector.component.js │ │ │ ├── actionIcons │ │ │ ├── actionIcons.component.html │ │ │ └── actionIcons.component.js │ │ │ ├── cluster │ │ │ └── clusterMatches.component.ts │ │ │ ├── index.ts │ │ │ ├── notifier │ │ │ ├── notifier.component.html │ │ │ ├── notifier.component.js │ │ │ ├── notifier.component.less │ │ │ ├── notifier.service.js │ │ │ └── userNotification.component.js │ │ │ ├── scopeClusterSelector.directive.html │ │ │ ├── scopeClusterSelector.directive.js │ │ │ └── spelText │ │ │ ├── jsonListBuilder.js │ │ │ ├── jsonListBuilder.spec.js │ │ │ ├── numberInput.component.js │ │ │ ├── spel.less │ │ │ ├── spelAutocomplete.service.js │ │ │ ├── spelSelect.component.js │ │ │ └── spelText.decorator.js │ ├── docker │ │ ├── docker.module.js │ │ ├── image │ │ │ ├── docker.image.reader.service.ts │ │ │ ├── dockerImageAndTagSelector.component.html │ │ │ ├── dockerImageAndTagSelector.component.spec.ts │ │ │ └── dockerImageAndTagSelector.component.ts │ │ └── pipeline │ │ │ └── stages │ │ │ └── bake │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ ├── bakeExecutionDetails.html │ │ │ ├── bakeStage.html │ │ │ └── dockerBakeStage.js │ ├── google │ │ ├── address │ │ │ └── address.reader.ts │ │ ├── autoscalingPolicy │ │ │ ├── autoscalingPolicy.write.service.js │ │ │ └── components │ │ │ │ ├── basicSettings │ │ │ │ ├── basicSettings.component.html │ │ │ │ └── basicSettings.component.js │ │ │ │ └── metricSettings │ │ │ │ ├── metricSettings.component.html │ │ │ │ └── metricSettings.component.js │ │ ├── backendService │ │ │ └── backendService.reader.js │ │ ├── cache │ │ │ ├── cacheConfigurer.service.js │ │ │ ├── cacheRefresh.component.html │ │ │ ├── cacheRefresh.component.ts │ │ │ └── cacheRefreshTooltip.html │ │ ├── certificate │ │ │ └── certificate.reader.ts │ │ ├── common │ │ │ ├── footer.directive.html │ │ │ └── footer.directive.js │ │ ├── domain │ │ │ ├── autoHealingPolicy.ts │ │ │ ├── backendService.ts │ │ │ ├── healthCheck.ts │ │ │ ├── index.ts │ │ │ ├── loadBalancer.ts │ │ │ ├── network.ts │ │ │ ├── serverGroup.ts │ │ │ └── subnet.ts │ │ ├── gce.module.js │ │ ├── gce.settings.ts │ │ ├── gceNetworkSelectField.directive.js │ │ ├── gceRegionSelectField.directive.js │ │ ├── healthCheck │ │ │ └── healthCheck.read.service.ts │ │ ├── image │ │ │ └── image.reader.js │ │ ├── instance │ │ │ ├── custom │ │ │ │ ├── customInstance.filter.js │ │ │ │ └── customInstanceBuilder.gce.service.js │ │ │ ├── details │ │ │ │ ├── instance.details.controller.js │ │ │ │ ├── instance.details.controller.spec.js │ │ │ │ └── instanceDetails.html │ │ │ ├── gceInstanceType.service.js │ │ │ ├── gceInstanceType.service.spec.js │ │ │ └── gceMultiInstanceTask.transformer.js │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── choice │ │ │ │ │ ├── gceLoadBalancerChoice.modal.html │ │ │ │ │ ├── gceLoadBalancerChoice.modal.ts │ │ │ │ │ └── loadBalancerTypeToWizardMap.constant.ts │ │ │ │ ├── common │ │ │ │ │ ├── addressSelector.component.ts │ │ │ │ │ ├── commonAdvancedSettingsPage.html │ │ │ │ │ ├── commonCreateLoadBalancer.html │ │ │ │ │ ├── commonEditLoadBalancer.html │ │ │ │ │ ├── commonHealthCheckPage.html │ │ │ │ │ ├── commonLoadBalancer.controller.ts │ │ │ │ │ ├── commonLoadBalancerCommandBuilder.service.ts │ │ │ │ │ ├── healthCheck.component.html │ │ │ │ │ ├── healthCheck.component.ts │ │ │ │ │ └── sessionAffinityNameMaps.ts │ │ │ │ ├── http │ │ │ │ │ ├── backendService │ │ │ │ │ │ ├── backendService.component.html │ │ │ │ │ │ ├── backendService.component.js │ │ │ │ │ │ └── backendServices.html │ │ │ │ │ ├── basicSettings │ │ │ │ │ │ ├── basicSettings.component.html │ │ │ │ │ │ ├── basicSettings.component.js │ │ │ │ │ │ └── basicSettings.html │ │ │ │ │ ├── commandBuilder.service.js │ │ │ │ │ ├── createHttpLoadBalancer.controller.js │ │ │ │ │ ├── createHttpLoadBalancer.html │ │ │ │ │ ├── defaultService │ │ │ │ │ │ └── defaultService.html │ │ │ │ │ ├── editHttpLoadBalancer.html │ │ │ │ │ ├── healthCheck │ │ │ │ │ │ ├── healthCheck.component.html │ │ │ │ │ │ ├── healthCheck.component.js │ │ │ │ │ │ └── healthChecks.html │ │ │ │ │ ├── hostRule │ │ │ │ │ │ ├── hostRule.component.html │ │ │ │ │ │ ├── hostRule.component.js │ │ │ │ │ │ └── hostRules.html │ │ │ │ │ ├── httpLoadBalancer.write.service.js │ │ │ │ │ ├── httpLoadBalancerWizard.component.less │ │ │ │ │ ├── listeners │ │ │ │ │ │ ├── listener.component.html │ │ │ │ │ │ ├── listener.component.js │ │ │ │ │ │ └── listeners.html │ │ │ │ │ ├── pathRule │ │ │ │ │ │ ├── pathRule.component.html │ │ │ │ │ │ └── pathRule.component.js │ │ │ │ │ ├── templates.ts │ │ │ │ │ └── transformer.service.js │ │ │ │ ├── internal │ │ │ │ │ ├── createLoadBalancerProperties.html │ │ │ │ │ ├── gceCreateInternalLoadBalancer.controller.ts │ │ │ │ │ └── listener.html │ │ │ │ ├── network │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── createLoadBalancer.controller.js │ │ │ │ │ ├── createLoadBalancer.controller.spec.js │ │ │ │ │ ├── createLoadBalancer.html │ │ │ │ │ ├── createLoadBalancerProperties.html │ │ │ │ │ ├── editLoadBalancer.html │ │ │ │ │ ├── healthCheck.html │ │ │ │ │ └── listeners.html │ │ │ │ └── ssl │ │ │ │ │ ├── createLoadBalancerProperties.html │ │ │ │ │ ├── gceCreateSslLoadBalancer.controller.ts │ │ │ │ │ └── listener.html │ │ │ ├── details │ │ │ │ ├── backendService │ │ │ │ │ ├── backendService.component.ts │ │ │ │ │ └── sessionAffinity.filter.ts │ │ │ │ ├── deleteModal │ │ │ │ │ ├── deleteModal.controller.ts │ │ │ │ │ └── deleteModal.html │ │ │ │ ├── healthCheck │ │ │ │ │ ├── healthCheck.component.html │ │ │ │ │ └── healthCheck.component.js │ │ │ │ ├── hostAndPathRules │ │ │ │ │ ├── hostAndPathRules.controller.js │ │ │ │ │ ├── hostAndPathRules.modal.html │ │ │ │ │ ├── hostAndPathRules.service.js │ │ │ │ │ └── hostAndPathRulesButton.component.js │ │ │ │ ├── loadBalancerDetail.controller.js │ │ │ │ ├── loadBalancerDetail.controller.spec.js │ │ │ │ ├── loadBalancerDetails.html │ │ │ │ └── loadBalancerType │ │ │ │ │ └── loadBalancerType.component.js │ │ │ ├── httpLoadBalancerUtils.service.ts │ │ │ ├── loadBalancer.setTransformer.ts │ │ │ └── loadBalancer.transformer.js │ │ ├── logo │ │ │ ├── gce.logo.less │ │ │ ├── gce.logo.png │ │ │ └── gce.logo.svg │ │ ├── networkSelectField.directive.html │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── bake │ │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ │ ├── bakeExecutionDetails.html │ │ │ │ ├── bakeStage.html │ │ │ │ └── gceBakeStage.js │ │ │ │ ├── cloneServerGroup │ │ │ │ ├── cloneServerGroupExecutionDetails.controller.js │ │ │ │ ├── cloneServerGroupExecutionDetails.html │ │ │ │ ├── cloneServerGroupStage.html │ │ │ │ ├── cloneServerGroupStepLabel.html │ │ │ │ └── gceCloneServerGroupStage.js │ │ │ │ ├── destroyAsg │ │ │ │ ├── destroyAsgStage.html │ │ │ │ ├── destroyAsgStepLabel.html │ │ │ │ └── gceDestroyAsgStage.js │ │ │ │ ├── disableAsg │ │ │ │ ├── disableAsgStage.html │ │ │ │ ├── disableAsgStepLabel.html │ │ │ │ └── gceDisableAsgStage.js │ │ │ │ ├── disableCluster │ │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ │ ├── disableClusterExecutionDetails.html │ │ │ │ ├── disableClusterStage.html │ │ │ │ └── gceDisableClusterStage.js │ │ │ │ ├── enableAsg │ │ │ │ ├── enableAsgStage.html │ │ │ │ ├── enableAsgStepLabel.html │ │ │ │ └── gceEnableAsgStage.js │ │ │ │ ├── findAmi │ │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ │ ├── findAmiExecutionDetails.html │ │ │ │ ├── findAmiStage.html │ │ │ │ └── gceFindAmiStage.js │ │ │ │ ├── findImageFromTags │ │ │ │ ├── findImageFromTagsExecutionDetails.controller.js │ │ │ │ ├── findImageFromTagsExecutionDetails.html │ │ │ │ ├── findImageFromTagsStage.html │ │ │ │ └── gceFindImageFromTagsStage.js │ │ │ │ ├── resizeAsg │ │ │ │ ├── gceResizeAsgStage.js │ │ │ │ ├── resizeAsgExecutionDetails.controller.js │ │ │ │ ├── resizeAsgExecutionDetails.html │ │ │ │ ├── resizeAsgStage.html │ │ │ │ └── resizeAsgStepLabel.html │ │ │ │ ├── scaleDownCluster │ │ │ │ ├── gceScaleDownClusterStage.js │ │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ │ └── scaleDownClusterStage.html │ │ │ │ ├── shrinkCluster │ │ │ │ ├── gceShrinkClusterStage.js │ │ │ │ └── shrinkClusterStage.html │ │ │ │ └── tagImage │ │ │ │ ├── gceTagImageStage.js │ │ │ │ ├── tagImageExecutionDetails.controller.js │ │ │ │ ├── tagImageExecutionDetails.html │ │ │ │ └── tagImageStage.html │ │ ├── regionSelectField.directive.html │ │ ├── securityGroup │ │ │ ├── clone │ │ │ │ ├── cloneSecurityGroup.controller.js │ │ │ │ └── cloneSecurityGroup.html │ │ │ ├── configure │ │ │ │ ├── ConfigSecurityGroupMixin.controller.js │ │ │ │ ├── createSecurityGroup.controller.js │ │ │ │ ├── createSecurityGroup.html │ │ │ │ ├── createSecurityGroupIngress.html │ │ │ │ ├── createSecurityGroupProperties.html │ │ │ │ ├── createSecurityGroupSourceFilters.html │ │ │ │ ├── createSecurityGroupTargets.html │ │ │ │ ├── editSecurityGroup.controller.js │ │ │ │ ├── editSecurityGroup.html │ │ │ │ └── securityGroup.configure.less │ │ │ ├── details │ │ │ │ ├── securityGroupDetail.controller.js │ │ │ │ └── securityGroupDetail.html │ │ │ ├── securityGroup.reader.js │ │ │ ├── securityGroup.transformer.js │ │ │ ├── securityGroupHelpText.service.spec.ts │ │ │ └── securityGroupHelpText.service.ts │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── serverGroup.configure.gce.module.js │ │ │ │ ├── serverGroupCommandBuilder.service.js │ │ │ │ ├── serverGroupConfiguration.service.js │ │ │ │ └── wizard │ │ │ │ │ ├── advancedSettings │ │ │ │ │ ├── advancedSettings.directive.html │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── advancedSettingsSelector.directive.js │ │ │ │ │ └── advancedSettingsSelector.directive.spec.js │ │ │ │ │ ├── autoHealingPolicy │ │ │ │ │ ├── autoHealingPolicy.html │ │ │ │ │ ├── autoHealingPolicySelector.component.html │ │ │ │ │ └── autoHealingPolicySelector.component.ts │ │ │ │ │ ├── capacity │ │ │ │ │ ├── advancedCapacitySelector.component.html │ │ │ │ │ ├── advancedCapacitySelector.component.js │ │ │ │ │ ├── capacity.html │ │ │ │ │ ├── simpleCapacitySelector.component.html │ │ │ │ │ ├── simpleCapacitySelector.component.js │ │ │ │ │ ├── simpleCapacitySelector.component.spec.js │ │ │ │ │ └── zones.html │ │ │ │ │ ├── cloneServerGroup.gce.controller.js │ │ │ │ │ ├── customInstance │ │ │ │ │ └── customInstanceBuilder.html │ │ │ │ │ ├── hiddenMetadataKeys.value.js │ │ │ │ │ ├── instanceType │ │ │ │ │ └── instanceType.html │ │ │ │ │ ├── loadBalancers │ │ │ │ │ ├── elSevenOptions │ │ │ │ │ │ ├── backendServiceSelector.component.html │ │ │ │ │ │ ├── backendServiceSelector.component.js │ │ │ │ │ │ └── elSevenOptionsGenerator.component.js │ │ │ │ │ ├── loadBalancerSelector.directive.html │ │ │ │ │ ├── loadBalancerSelector.directive.js │ │ │ │ │ ├── loadBalancerSelector.directive.spec.js │ │ │ │ │ └── loadBalancers.html │ │ │ │ │ ├── loadBalancingPolicy │ │ │ │ │ ├── loadBalancingPolicySelector.component.html │ │ │ │ │ ├── loadBalancingPolicySelector.component.less │ │ │ │ │ └── loadBalancingPolicySelector.component.ts │ │ │ │ │ ├── location │ │ │ │ │ ├── basicSettings.controller.js │ │ │ │ │ └── basicSettings.html │ │ │ │ │ ├── securityGroups │ │ │ │ │ ├── securityGroupSelector.directive.html │ │ │ │ │ ├── securityGroupSelector.directive.js │ │ │ │ │ ├── securityGroups.html │ │ │ │ │ ├── securityGroupsRemoved.directive.html │ │ │ │ │ ├── securityGroupsRemoved.directive.js │ │ │ │ │ ├── tagManager.service.js │ │ │ │ │ ├── tagSelector.component.html │ │ │ │ │ ├── tagSelector.component.js │ │ │ │ │ └── tagSelectorGenerator.component.js │ │ │ │ │ ├── serverGroupWizard.html │ │ │ │ │ ├── templateSelection │ │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ │ └── templateSelection.html │ │ │ │ │ └── zones │ │ │ │ │ ├── regionalSelector.directive.html │ │ │ │ │ ├── regionalSelector.directive.js │ │ │ │ │ ├── zoneSelector.directive.html │ │ │ │ │ └── zoneSelector.directive.js │ │ │ ├── details │ │ │ │ ├── autoHealingPolicy │ │ │ │ │ ├── addAutoHealingPolicyButton.component.ts │ │ │ │ │ ├── autoHealingPolicy.component.ts │ │ │ │ │ └── modal │ │ │ │ │ │ ├── upsertAutoHealingPolicy.modal.controller.ts │ │ │ │ │ │ ├── upsertAutoHealingPolicy.modal.html │ │ │ │ │ │ └── upsertAutoHealingPolicy.modal.less │ │ │ │ ├── autoscalingPolicy │ │ │ │ │ ├── addAutoscalingPolicyButton.component.js │ │ │ │ │ ├── autoscalingPolicy.directive.html │ │ │ │ │ ├── autoscalingPolicy.directive.js │ │ │ │ │ └── modal │ │ │ │ │ │ ├── upsertAutoscalingPolicy.modal.controller.js │ │ │ │ │ │ ├── upsertAutoscalingPolicy.modal.html │ │ │ │ │ │ └── upsertAutoscalingPolicy.modal.less │ │ │ │ ├── resize │ │ │ │ │ ├── resizeAutoscalingPolicy.component.html │ │ │ │ │ ├── resizeAutoscalingPolicy.component.js │ │ │ │ │ ├── resizeCapacity.component.html │ │ │ │ │ ├── resizeCapacity.component.js │ │ │ │ │ ├── resizeServerGroup.controller.js │ │ │ │ │ ├── resizeServerGroup.controller.spec.js │ │ │ │ │ └── resizeServerGroup.html │ │ │ │ ├── rollback │ │ │ │ │ ├── rollbackServerGroup.controller.js │ │ │ │ │ └── rollbackServerGroup.html │ │ │ │ ├── serverGroup.details.gce.module.js │ │ │ │ ├── serverGroupDetails.gce.controller.js │ │ │ │ ├── serverGroupDetails.gce.controller.spec.js │ │ │ │ └── serverGroupDetails.html │ │ │ ├── serverGroup.transformer.js │ │ │ └── serverGroup.transformer.spec.js │ │ ├── subnet │ │ │ ├── subnet.renderer.js │ │ │ ├── subnetSelectField.directive.html │ │ │ └── subnetSelectField.directive.js │ │ └── validation │ │ │ └── applicationName.validator.js │ ├── kubernetes │ │ ├── annotation │ │ │ ├── annotationConfigurer.component.html │ │ │ ├── annotationConfigurer.component.less │ │ │ └── annotationConfigurer.component.ts │ │ ├── autoscaler │ │ │ └── autoscaler.write.service.js │ │ ├── cache │ │ │ └── configurer.service.js │ │ ├── cluster │ │ │ ├── cluster.kubernetes.module.js │ │ │ └── configure │ │ │ │ └── CommandBuilder.js │ │ ├── common │ │ │ └── keyValueDetails.component.ts │ │ ├── container │ │ │ ├── arguments.component.html │ │ │ ├── arguments.component.js │ │ │ ├── commands.component.html │ │ │ ├── commands.component.js │ │ │ ├── configurer.directive.html │ │ │ ├── configurer.directive.js │ │ │ ├── environmentVariables.component.html │ │ │ ├── environmentVariables.component.js │ │ │ ├── lifecycleHook.component.html │ │ │ ├── lifecycleHook.component.ts │ │ │ ├── probe.directive.html │ │ │ ├── probe.directive.js │ │ │ ├── securityContext │ │ │ │ ├── capabilitiesSelector.component.html │ │ │ │ ├── capabilitiesSelector.component.ts │ │ │ │ ├── seLinuxOptionsSelector.component.html │ │ │ │ ├── seLinuxOptionsSelector.component.ts │ │ │ │ ├── securityContextSelector.component.html │ │ │ │ ├── securityContextSelector.component.less │ │ │ │ └── securityContextSelector.component.ts │ │ │ ├── volumes.component.html │ │ │ └── volumes.component.js │ │ ├── event │ │ │ ├── event.directive.html │ │ │ └── event.directive.js │ │ ├── image │ │ │ └── image.reader.js │ │ ├── instance │ │ │ └── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.html │ │ │ │ └── details.kubernetes.module.js │ │ ├── kubernetes.module.js │ │ ├── kubernetes.settings.ts │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── configure.kubernetes.module.js │ │ │ │ └── wizard │ │ │ │ │ ├── advancedSettings.controller.js │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── createWizard.html │ │ │ │ │ ├── editWizard.html │ │ │ │ │ ├── ports.controller.js │ │ │ │ │ ├── ports.html │ │ │ │ │ └── upsert.controller.js │ │ │ ├── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.html │ │ │ │ └── details.kubernetes.module.js │ │ │ └── transformer.js │ │ ├── logo │ │ │ ├── kubernetes.icon.svg │ │ │ ├── kubernetes.logo.less │ │ │ └── kubernetes.logo.png │ │ ├── namespace │ │ │ ├── multiSelectField.component.html │ │ │ ├── multiSelectField.component.js │ │ │ ├── multiSelectField.directive.html │ │ │ ├── selectField.directive.html │ │ │ └── selectField.directive.js │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── destroyAsg │ │ │ │ ├── destroyAsgExecutionDetails.html │ │ │ │ ├── destroyAsgStage.html │ │ │ │ ├── destroyAsgStepLabel.html │ │ │ │ └── kubernetesDestroyAsgStage.js │ │ │ │ ├── disableAsg │ │ │ │ ├── disableAsgExecutionDetails.html │ │ │ │ ├── disableAsgStage.html │ │ │ │ ├── disableAsgStepLabel.html │ │ │ │ └── kubernetesDisableAsgStage.js │ │ │ │ ├── disableCluster │ │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ │ ├── disableClusterExecutionDetails.html │ │ │ │ ├── disableClusterStage.html │ │ │ │ └── kubernetesDisableClusterStage.js │ │ │ │ ├── enableAsg │ │ │ │ ├── enableAsgExecutionDetails.controller.js │ │ │ │ ├── enableAsgExecutionDetails.html │ │ │ │ ├── enableAsgStage.html │ │ │ │ ├── enableAsgStepLabel.html │ │ │ │ └── kubernetesEnableAsgStage.js │ │ │ │ ├── findAmi │ │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ │ ├── findAmiExecutionDetails.html │ │ │ │ ├── findAmiStage.html │ │ │ │ └── kubernetesFindAmiStage.js │ │ │ │ ├── resizeAsg │ │ │ │ ├── resizeExecutionDetails.controller.js │ │ │ │ ├── resizeExecutionDetails.html │ │ │ │ ├── resizeStage.html │ │ │ │ ├── resizeStage.js │ │ │ │ ├── resizeStage.less │ │ │ │ └── resizeStepLabel.html │ │ │ │ ├── runJob │ │ │ │ ├── runJobExecutionDetails.controller.js │ │ │ │ ├── runJobExecutionDetails.html │ │ │ │ ├── runJobStage.html │ │ │ │ └── runJobStage.js │ │ │ │ ├── scaleDownCluster │ │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ │ ├── scaleDownClusterStage.html │ │ │ │ └── scaleDownClusterStage.js │ │ │ │ └── shrinkCluster │ │ │ │ ├── shrinkClusterExecutionDetails.controller.js │ │ │ │ ├── shrinkClusterExecutionDetails.html │ │ │ │ ├── shrinkClusterStage.html │ │ │ │ └── shrinkClusterStage.js │ │ ├── proxy │ │ │ └── ui.service.js │ │ ├── search │ │ │ └── resultFormatter.js │ │ ├── securityGroup │ │ │ ├── configure │ │ │ │ ├── configure.kubernetes.module.js │ │ │ │ └── wizard │ │ │ │ │ ├── backend.controller.js │ │ │ │ │ ├── backend.html │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── createWizard.html │ │ │ │ │ ├── editWizard.html │ │ │ │ │ ├── rules.controller.js │ │ │ │ │ ├── rules.html │ │ │ │ │ └── upsert.controller.js │ │ │ ├── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.html │ │ │ │ └── details.kubernetes.module.js │ │ │ ├── reader.js │ │ │ └── transformer.js │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── CommandBuilder.js │ │ │ │ ├── configuration.service.js │ │ │ │ ├── configure.kubernetes.module.js │ │ │ │ └── wizard │ │ │ │ │ ├── BasicSettings.controller.js │ │ │ │ │ ├── Clone.controller.js │ │ │ │ │ ├── advancedSettings.html │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── deployment.controller.js │ │ │ │ │ ├── deployment.html │ │ │ │ │ ├── loadBalancers.controller.js │ │ │ │ │ ├── loadBalancers.html │ │ │ │ │ ├── replicas.html │ │ │ │ │ ├── templateSelection.controller.js │ │ │ │ │ ├── templateSelection.html │ │ │ │ │ ├── volumes.controller.js │ │ │ │ │ ├── volumes.html │ │ │ │ │ └── wizard.html │ │ │ ├── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.html │ │ │ │ ├── details.kubernetes.module.js │ │ │ │ ├── lifecycleHookDetails.component.ts │ │ │ │ ├── resize │ │ │ │ │ ├── resize.controller.js │ │ │ │ │ └── resize.html │ │ │ │ └── rollback │ │ │ │ │ ├── rollback.controller.js │ │ │ │ │ └── rollback.html │ │ │ ├── paramsMixin.js │ │ │ └── transformer.js │ │ └── validation │ │ │ └── applicationName.validator.js │ ├── netflix │ │ ├── application │ │ │ ├── applicationAttributes.directive.html │ │ │ ├── applicationConfig.html │ │ │ ├── createApplication.modal.html │ │ │ ├── editApplication.modal.html │ │ │ ├── index.ts │ │ │ ├── netflixCreateApplicationModal.controller.ts │ │ │ └── netflixEditApplicationModal.controller.ts │ │ ├── availability │ │ │ ├── availability.directive.html │ │ │ ├── availability.directive.ts │ │ │ ├── availability.donut.component.ts │ │ │ ├── availability.donut.html │ │ │ ├── availability.less │ │ │ ├── availability.read.service.ts │ │ │ ├── availability.trend.component.ts │ │ │ ├── availability.trend.html │ │ │ └── availability.trend.popover.html │ │ ├── blesk │ │ │ ├── blesk.less │ │ │ └── blesk.module.ts │ │ ├── canary │ │ │ ├── canary.less │ │ │ ├── canary.read.service.js │ │ │ ├── canaryAnalysisNameSelector.directive.html │ │ │ ├── canaryAnalysisNameSelector.directive.js │ │ │ ├── canaryConfigSelector.directive.html │ │ │ ├── canaryConfigSelector.directive.js │ │ │ └── index.js │ │ ├── ci │ │ │ ├── ci.controller.js │ │ │ ├── ci.controller.spec.js │ │ │ ├── ci.dataSource.js │ │ │ ├── ci.dataSource.spec.ts │ │ │ ├── ci.filter.model.ts │ │ │ ├── ci.html │ │ │ ├── ci.less │ │ │ ├── ci.module.js │ │ │ ├── ci.states.ts │ │ │ ├── detail │ │ │ │ ├── detail.controller.js │ │ │ │ ├── detailTab │ │ │ │ │ ├── detailTab.controller.js │ │ │ │ │ └── detailTabView.html │ │ │ │ └── detailView.html │ │ │ ├── services │ │ │ │ ├── build.read.service.js │ │ │ │ └── scm.read.service.ts │ │ │ └── trigger │ │ │ │ ├── ci.trigger.handler.component.html │ │ │ │ ├── ci.trigger.handler.component.ts │ │ │ │ ├── manualExecution.handler.ts │ │ │ │ └── selectorTemplate.html │ │ ├── exception │ │ │ └── exceptionHandler.ts │ │ ├── fastProperties │ │ │ ├── dataNav │ │ │ │ ├── fastProperties.controller.js │ │ │ │ ├── fastPropertyFilter.directive.ts │ │ │ │ ├── fastPropertyFilterSearch.less │ │ │ │ ├── fastPropertyRollouts.controller.js │ │ │ │ ├── fastPropertyRollouts.html │ │ │ │ ├── fpRollout.less │ │ │ │ └── main.html │ │ │ ├── domain │ │ │ │ ├── acaTaskStage.ts │ │ │ │ ├── acaTaskStageConfigDetails.model.ts │ │ │ │ ├── canary.domain.ts │ │ │ │ ├── canaryDeployment.interface.ts │ │ │ │ ├── impactCounts.interface.ts │ │ │ │ ├── manualJudgementStage.ts │ │ │ │ ├── platformProperty.model.ts │ │ │ │ ├── property.domain.ts │ │ │ │ ├── propertyCommand.model.spec.ts │ │ │ │ ├── propertyCommand.model.ts │ │ │ │ ├── propertyCommandType.enum.ts │ │ │ │ ├── propertyPipeline.domain.ts │ │ │ │ ├── propertyPipelineStage.ts │ │ │ │ ├── propertyStrategy.domain.ts │ │ │ │ ├── scope.domain.spec.ts │ │ │ │ └── scope.domain.ts │ │ │ ├── fastProperties.less │ │ │ ├── fastProperties.module.js │ │ │ ├── fastProperties.states.ts │ │ │ ├── fastProperty.dataSource.js │ │ │ ├── fastProperty.read.service.ts │ │ │ ├── fastProperty.strategy.provider.js │ │ │ ├── fastProperty.write.service.js │ │ │ ├── fastProperty.write.service.spec.js │ │ │ ├── mainApplicationProperties.html │ │ │ ├── scope │ │ │ │ ├── categoryButtonList.component.html │ │ │ │ ├── categoryButtonList.component.ts │ │ │ │ ├── fastPropertyScopeSearch.component.html │ │ │ │ ├── fastPropertyScopeSearch.component.ts │ │ │ │ ├── fastPropertyScopeSearchCategory.service.spec.ts │ │ │ │ ├── fastPropertyScopeSearchCategory.service.ts │ │ │ │ └── fastPropetyScopeSearch.less │ │ │ ├── view │ │ │ │ ├── fastProperties.controller.js │ │ │ │ ├── fastPropertyDetails.controller.ts │ │ │ │ ├── fastPropertyDetails.html │ │ │ │ ├── fastPropertyFilterSearch.component.html │ │ │ │ ├── fastPropertyFilterSearch.component.ts │ │ │ │ ├── fastPropertyPodTable.component.ts │ │ │ │ ├── fastPropertyPodTable.html │ │ │ │ ├── fastPropertyPods.component.ts │ │ │ │ ├── fastPropertyPods.html │ │ │ │ ├── fastPropertyTable.directive.js │ │ │ │ └── properties.html │ │ │ └── wizard │ │ │ │ ├── cloneFastPropertyToNewScopeWizard.controller.ts │ │ │ │ ├── cloneFastPropertyToNewScopeWizard.html │ │ │ │ ├── createFastPropertyWizard.controller.ts │ │ │ │ ├── createFastPropertyWizard.html │ │ │ │ ├── deleteFastPropertyWizard.controller.ts │ │ │ │ ├── deleteFastPropertyWizard.html │ │ │ │ ├── monitor │ │ │ │ ├── propertyMonitor.component.ts │ │ │ │ ├── propertyMonitor.html │ │ │ │ ├── propertyMonitorService.ts │ │ │ │ └── propertyStatus.component.ts │ │ │ │ ├── propertyDetails │ │ │ │ ├── fastPropertyConstraintsSelector.directive.html │ │ │ │ ├── fastPropertyConstraintsSelector.directive.js │ │ │ │ ├── propertyDetails.component.html │ │ │ │ ├── propertyDetails.component.spec.ts │ │ │ │ └── propertyDetails.component.ts │ │ │ │ ├── propertyPipelineBuilder.service.ts │ │ │ │ ├── propertyReview │ │ │ │ ├── propertyReview.component.html │ │ │ │ └── propertyReview.component.ts │ │ │ │ ├── propertyScope │ │ │ │ ├── propertyScope.component.html │ │ │ │ ├── propertyScope.component.ts │ │ │ │ ├── propertyScopeReadOnly.component.html │ │ │ │ ├── propertyScopeReadOnly.component.ts │ │ │ │ ├── propertyScopeUpdatable.component.html │ │ │ │ └── propertyScopeUpdatable.component.ts │ │ │ │ ├── propertyStrategy │ │ │ │ ├── acaStrategyForm.html │ │ │ │ ├── forcePushStrategyForm.html │ │ │ │ ├── manualStrategyForm.html │ │ │ │ ├── propertyStrategy.component.html │ │ │ │ ├── propertyStrategy.component.less │ │ │ │ └── propertyStrategy.component.ts │ │ │ │ ├── updateFastPropertyWizard.controller.ts │ │ │ │ └── updateFastPropertyWizard.html │ │ ├── feedback │ │ │ ├── Feedback.tsx │ │ │ ├── FeedbackModal.tsx │ │ │ ├── feedback.component.ts │ │ │ ├── feedback.less │ │ │ └── feedback.modal.html │ │ ├── help │ │ │ └── netflixHelpContents.registry.ts │ │ ├── instance │ │ │ ├── aws │ │ │ │ ├── instanceDetails.html │ │ │ │ └── netflixAwsInstanceDetails.controller.js │ │ │ └── titus │ │ │ │ ├── instanceDetails.html │ │ │ │ └── netflixTitusInstanceDetails.controller.js │ │ ├── migrator │ │ │ ├── migratedLoadBalancers.component.js │ │ │ ├── migratedSecurityGroups.component.js │ │ │ ├── migrationLoadBalancers.component.js │ │ │ ├── migrationWarnings.component.js │ │ │ ├── migrator.less │ │ │ ├── migrator.modal.submitting.html │ │ │ ├── migrator.service.js │ │ │ ├── migrator.service.spec.js │ │ │ ├── pipeline │ │ │ │ ├── pipeline.migrator.directive.html │ │ │ │ ├── pipeline.migrator.directive.js │ │ │ │ └── pipeline.migrator.modal.html │ │ │ └── serverGroup │ │ │ │ ├── serverGroup.migrator.directive.html │ │ │ │ ├── serverGroup.migrator.directive.js │ │ │ │ └── serverGroup.migrator.modal.html │ │ ├── netflix.module.ts │ │ ├── netflix.settings.ts │ │ ├── pagerDuty │ │ │ ├── pagerDuty.read.service.spec.ts │ │ │ ├── pagerDuty.read.service.ts │ │ │ ├── pagerDutySelectField.component.ts │ │ │ ├── pagerDutyTag.component.spec.ts │ │ │ └── pagerDutyTag.component.ts │ │ ├── pipeline │ │ │ ├── config │ │ │ │ └── properties │ │ │ │ │ └── index.js │ │ │ └── stage │ │ │ │ ├── acaTask │ │ │ │ ├── acaTaskExecutionDetails.controller.js │ │ │ │ ├── acaTaskExecutionDetails.html │ │ │ │ ├── acaTaskExecutionSummary.html │ │ │ │ ├── acaTaskStage.html │ │ │ │ ├── acaTaskStage.js │ │ │ │ ├── acaTaskStage.module.js │ │ │ │ └── acaTaskStage.transformer.js │ │ │ │ ├── canary │ │ │ │ ├── CanaryExecutionLabel.tsx │ │ │ │ ├── CanaryScore.tsx │ │ │ │ ├── actions │ │ │ │ │ ├── endCanary.controller.js │ │ │ │ │ ├── endCanary.modal.html │ │ │ │ │ ├── generateScore.controller.js │ │ │ │ │ └── generateScore.modal.html │ │ │ │ ├── canary.less │ │ │ │ ├── canaryDeployment │ │ │ │ │ ├── canaryDeployment.module.js │ │ │ │ │ ├── canaryDeploymentExecutionDetails.controller.js │ │ │ │ │ ├── canaryDeploymentExecutionDetails.html │ │ │ │ │ ├── canaryDeploymentHistory.service.js │ │ │ │ │ └── canaryDeploymentStage.js │ │ │ │ ├── canaryExecutionDetails.controller.js │ │ │ │ ├── canaryExecutionDetails.html │ │ │ │ ├── canaryExecutionSummary.controller.js │ │ │ │ ├── canaryExecutionSummary.html │ │ │ │ ├── canaryScore.component.less │ │ │ │ ├── canaryScore.component.ts │ │ │ │ ├── canaryScores.component.ts │ │ │ │ ├── canaryStage.html │ │ │ │ ├── canaryStage.js │ │ │ │ ├── canaryStage.module.js │ │ │ │ ├── canaryStage.transformer.js │ │ │ │ └── canaryStatus.directive.js │ │ │ │ ├── chap │ │ │ │ ├── chap.service.ts │ │ │ │ ├── chapExecutionDetails.controller.js │ │ │ │ ├── chapExecutionDetails.html │ │ │ │ ├── chapStage.controller.js │ │ │ │ ├── chapStage.html │ │ │ │ └── chapStage.js │ │ │ │ ├── isolatedTestingTarget │ │ │ │ ├── editVip.modal.controller.ts │ │ │ │ ├── editVip.modal.html │ │ │ │ ├── isolatedTestingTargetStage.html │ │ │ │ ├── isolatedTestingTargetStage.module.ts │ │ │ │ └── isolatedTestingTargetStage.ts │ │ │ │ ├── properties │ │ │ │ ├── create │ │ │ │ │ ├── PropertyExecutionLabel.tsx │ │ │ │ │ ├── persistedPropertyList.component.html │ │ │ │ │ ├── persistedPropertyList.component.js │ │ │ │ │ ├── property.component.html │ │ │ │ │ ├── property.component.js │ │ │ │ │ ├── propertyExecutionDetails.controller.js │ │ │ │ │ ├── propertyExecutionDetails.html │ │ │ │ │ ├── propertyExecutionSummary.html │ │ │ │ │ ├── propertyStage.html │ │ │ │ │ └── propertyStage.js │ │ │ │ ├── index.js │ │ │ │ └── propertyStage.less │ │ │ │ └── quickPatchAsg │ │ │ │ ├── bulkQuickPatchStage │ │ │ │ ├── bulkQuickPatchStage.js │ │ │ │ ├── bulkQuickPatchStage.module.js │ │ │ │ ├── bulkQuickPatchStageExecutionDetails.controller.js │ │ │ │ └── bulkQuickPatchStageExecutionDetails.html │ │ │ │ ├── quickPatchAsgExecutionDetails.controller.js │ │ │ │ ├── quickPatchAsgExecutionDetails.html │ │ │ │ ├── quickPatchAsgStage.html │ │ │ │ ├── quickPatchAsgStage.js │ │ │ │ └── quickPatchAsgStage.module.js │ │ ├── report │ │ │ ├── reservationReport.component.html │ │ │ ├── reservationReport.component.less │ │ │ ├── reservationReport.component.spec.ts │ │ │ ├── reservationReport.component.ts │ │ │ ├── reservationReport.read.service.spec.ts │ │ │ └── reservationReport.read.service.ts │ │ ├── serverGroup │ │ │ ├── awsServerGroupDetails.html │ │ │ ├── networking │ │ │ │ ├── details │ │ │ │ │ ├── associateElasticIp.html │ │ │ │ │ └── disassociateElasticIp.html │ │ │ │ ├── elasticIp.controller.js │ │ │ │ ├── elasticIp.read.service.js │ │ │ │ ├── elasticIp.write.service.js │ │ │ │ ├── ip.sort.filter.js │ │ │ │ ├── ipSorter.filter.spec.js │ │ │ │ ├── networking.controller.js │ │ │ │ ├── networking.directive.html │ │ │ │ ├── networking.directive.js │ │ │ │ └── networking.module.js │ │ │ ├── resize │ │ │ │ └── awsResizeServerGroup.html │ │ │ └── wizard │ │ │ │ ├── advancedSettings │ │ │ │ └── advancedSettings.html │ │ │ │ ├── capacity │ │ │ │ └── awsServerGroupCapacity.html │ │ │ │ ├── securityGroups │ │ │ │ └── awsServerGroupSecurityGroups.html │ │ │ │ └── serverGroupCommandConfigurer.service.js │ │ ├── tableau │ │ │ ├── application │ │ │ │ ├── appTableau.controller.ts │ │ │ │ └── appTableau.html │ │ │ ├── summary │ │ │ │ ├── summaryTableau.controller.ts │ │ │ │ └── summaryTableau.html │ │ │ ├── tableau.dataSource.ts │ │ │ ├── tableau.less │ │ │ └── tableau.states.ts │ │ └── templateOverride │ │ │ ├── pipelineConfigActions.html │ │ │ ├── spinnakerHeader.html │ │ │ └── templateOverrides.module.ts │ ├── openstack │ │ ├── cache │ │ │ └── cacheConfigurer.service.js │ │ ├── common │ │ │ ├── cacheBackedMultiSelect.template.html │ │ │ ├── cacheBackedMultiSelectField.directive.js │ │ │ ├── cacheBackedSelectField.template.html │ │ │ ├── cacheRefresh.tooltip.html │ │ │ ├── footer.directive.html │ │ │ ├── footer.directive.js │ │ │ ├── isolateForm.directive.js │ │ │ ├── refresh.tooltip.html │ │ │ ├── selectField.component.html │ │ │ ├── selectField.component.js │ │ │ └── validateType.directive.js │ │ ├── image │ │ │ └── image.reader.js │ │ ├── instance │ │ │ ├── details │ │ │ │ ├── instance.details.controller.js │ │ │ │ └── instanceDetails.html │ │ │ ├── openstackInstanceType.service.js │ │ │ └── osInstanceTypeSelectField.directive.js │ │ ├── loadBalancer │ │ │ ├── configure │ │ │ │ ├── configure.openstack.module.js │ │ │ │ └── wizard │ │ │ │ │ ├── createWizard.html │ │ │ │ │ ├── editWizard.html │ │ │ │ │ ├── healthCheck.html │ │ │ │ │ ├── interface.html │ │ │ │ │ ├── listeners.html │ │ │ │ │ ├── location.html │ │ │ │ │ ├── upsert.controller.js │ │ │ │ │ └── upsert.controller.spec.js │ │ │ ├── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.html │ │ │ │ └── details.openstack.module.js │ │ │ ├── loadBalancer.less │ │ │ ├── loadBalancerSelectField.directive.js │ │ │ └── transformer.js │ │ ├── logo │ │ │ ├── openstack.logo.less │ │ │ ├── openstack.logo.png │ │ │ └── openstack.logo.svg │ │ ├── network │ │ │ └── networkSelectField.directive.js │ │ ├── openstack.module.js │ │ ├── openstack.settings.ts │ │ ├── pipeline │ │ │ └── stages │ │ │ │ ├── bake │ │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ │ ├── bakeExecutionDetails.html │ │ │ │ ├── bakeStage.html │ │ │ │ └── openstackBakeStage.js │ │ │ │ ├── cloneServerGroup │ │ │ │ ├── cloneServerGroupExecutionDetails.controller.js │ │ │ │ ├── cloneServerGroupExecutionDetails.html │ │ │ │ ├── cloneServerGroupStage.html │ │ │ │ ├── cloneServerGroupStepLabel.html │ │ │ │ └── openstackCloneServerGroupStage.js │ │ │ │ ├── destroyAsg │ │ │ │ ├── destroyAsgStage.html │ │ │ │ ├── destroyAsgStepLabel.html │ │ │ │ └── openstackDestroyAsgStage.js │ │ │ │ ├── disableAsg │ │ │ │ ├── disableAsgStage.html │ │ │ │ ├── disableAsgStepLabel.html │ │ │ │ └── openstackDisableAsgStage.js │ │ │ │ ├── disableCluster │ │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ │ ├── disableClusterExecutionDetails.html │ │ │ │ ├── disableClusterStage.html │ │ │ │ └── openstackDisableClusterStage.js │ │ │ │ ├── enableAsg │ │ │ │ ├── enableAsgStage.html │ │ │ │ ├── enableAsgStepLabel.html │ │ │ │ └── openstackEnableAsgStage.js │ │ │ │ ├── findAmi │ │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ │ ├── findAmiExecutionDetails.html │ │ │ │ ├── findAmiStage.html │ │ │ │ └── openstackFindAmiStage.js │ │ │ │ ├── resizeAsg │ │ │ │ ├── openstackResizeAsgStage.js │ │ │ │ ├── resizeAsgExecutionDetails.controller.js │ │ │ │ ├── resizeAsgExecutionDetails.html │ │ │ │ ├── resizeAsgStage.html │ │ │ │ └── resizeAsgStepLabel.html │ │ │ │ ├── scaleDownCluster │ │ │ │ ├── openstackScaleDownClusterStage.js │ │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ │ └── scaleDownClusterStage.html │ │ │ │ └── shrinkCluster │ │ │ │ ├── openstackShrinkClusterStage.js │ │ │ │ └── shrinkClusterStage.html │ │ ├── region │ │ │ ├── regionSelectField.directive.html │ │ │ └── regionSelectField.directive.js │ │ ├── search │ │ │ └── resultFormatter.js │ │ ├── securityGroup │ │ │ ├── configure │ │ │ │ ├── configure.openstack.module.js │ │ │ │ └── wizard │ │ │ │ │ ├── basicSettings.html │ │ │ │ │ ├── createWizard.html │ │ │ │ │ ├── editWizard.html │ │ │ │ │ ├── rules.controller.js │ │ │ │ │ ├── rules.html │ │ │ │ │ ├── upsert.controller.js │ │ │ │ │ └── upsert.controller.spec.js │ │ │ ├── details │ │ │ │ ├── details.controller.js │ │ │ │ ├── details.controller.spec.js │ │ │ │ └── details.html │ │ │ ├── securityGroup.reader.js │ │ │ └── transformer.js │ │ ├── serverGroup │ │ │ ├── configure │ │ │ │ ├── ServerGroupCommandBuilder.js │ │ │ │ ├── serverGroup.configure.openstack.module.js │ │ │ │ ├── serverGroupConfiguration.service.js │ │ │ │ └── wizard │ │ │ │ │ ├── Clone.controller.js │ │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ │ ├── access │ │ │ │ │ ├── AccessSettings.controller.js │ │ │ │ │ └── accessSettings.html │ │ │ │ │ ├── advanced │ │ │ │ │ ├── advancedSettings.component.html │ │ │ │ │ ├── advancedSettings.component.js │ │ │ │ │ └── advancedSettings.html │ │ │ │ │ ├── clusterSettings.html │ │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ │ ├── instance │ │ │ │ │ ├── ServerGroupInstanceSettings.controller.js │ │ │ │ │ └── instanceSettings.html │ │ │ │ │ ├── location │ │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ │ └── basicSettings.html │ │ │ │ │ ├── serverGroupWizard.html │ │ │ │ │ ├── templateSelection.controller.js │ │ │ │ │ └── templateSelection.html │ │ │ ├── details │ │ │ │ ├── resize │ │ │ │ │ ├── resizeServerGroup.controller.js │ │ │ │ │ ├── resizeServerGroup.controller.spec.js │ │ │ │ │ └── resizeServerGroup.html │ │ │ │ ├── rollback │ │ │ │ │ ├── rollbackServerGroup.controller.js │ │ │ │ │ └── rollbackServerGroup.html │ │ │ │ ├── serverGroup.details.module.js │ │ │ │ ├── serverGroupDetails.html │ │ │ │ └── serverGroupDetails.openstack.controller.js │ │ │ └── serverGroup.transformer.js │ │ ├── subnet │ │ │ ├── subnet.renderer.js │ │ │ └── subnetSelectField.directive.js │ │ └── validation │ │ │ └── applicationName.validator.js │ └── titus │ │ ├── domain │ │ ├── ITitusCredentials.ts │ │ └── index.ts │ │ ├── instance │ │ └── details │ │ │ ├── instance.details.controller.js │ │ │ └── instanceDetails.html │ │ ├── logo │ │ ├── titus.logo.less │ │ ├── titus.logo.png │ │ └── titus.logo.svg │ │ ├── migration │ │ ├── titusMigrationConfig.component.html │ │ ├── titusMigrationConfig.component.less │ │ ├── titusMigrationConfig.component.ts │ │ ├── titusMigrationConfigurer.component.html │ │ └── titusMigrationConfigurer.component.ts │ │ ├── pipeline │ │ └── stages │ │ │ ├── bake │ │ │ ├── bakeExecutionDetails.controller.js │ │ │ ├── bakeExecutionDetails.html │ │ │ ├── bakeStage.html │ │ │ └── titusBakeStage.js │ │ │ ├── cloneServerGroup │ │ │ ├── cloneServerGroupExecutionDetails.controller.js │ │ │ ├── cloneServerGroupExecutionDetails.html │ │ │ ├── cloneServerGroupStage.html │ │ │ ├── cloneServerGroupStepLabel.html │ │ │ └── titusCloneServerGroupStage.js │ │ │ ├── destroyAsg │ │ │ ├── destroyAsgStage.html │ │ │ ├── destroyAsgStepLabel.html │ │ │ └── titusDestroyAsgStage.js │ │ │ ├── disableAsg │ │ │ ├── disableAsgStage.html │ │ │ ├── disableAsgStepLabel.html │ │ │ └── titusDisableAsgStage.js │ │ │ ├── disableCluster │ │ │ ├── disableClusterExecutionDetails.controller.js │ │ │ ├── disableClusterExecutionDetails.html │ │ │ ├── disableClusterStage.html │ │ │ └── titusDisableClusterStage.js │ │ │ ├── enableAsg │ │ │ ├── enableAsgStage.html │ │ │ ├── enableAsgStepLabel.html │ │ │ └── titusEnableAsgStage.js │ │ │ ├── findAmi │ │ │ ├── findAmiExecutionDetails.controller.js │ │ │ ├── findAmiExecutionDetails.html │ │ │ ├── findAmiStage.html │ │ │ └── titusFindAmiStage.js │ │ │ ├── resizeAsg │ │ │ ├── resizeAsgExecutionDetails.controller.js │ │ │ ├── resizeAsgExecutionDetails.html │ │ │ ├── resizeAsgStage.html │ │ │ ├── resizeAsgStepLabel.html │ │ │ └── titusResizeAsgStage.js │ │ │ ├── runJob │ │ │ ├── runJobExecutionDetails.controller.js │ │ │ ├── runJobExecutionDetails.html │ │ │ ├── runJobStage.html │ │ │ └── titusRunJobStage.js │ │ │ ├── scaleDownCluster │ │ │ ├── scaleDownClusterExecutionDetails.controller.js │ │ │ ├── scaleDownClusterExecutionDetails.html │ │ │ ├── scaleDownClusterStage.html │ │ │ └── titusScaleDownClusterStage.js │ │ │ └── shrinkCluster │ │ │ ├── shrinkClusterStage.html │ │ │ └── titusShrinkClusterStage.js │ │ ├── securityGroup │ │ ├── securityGroup.read.service.js │ │ └── securityGroupPicker.component.ts │ │ ├── serverGroup │ │ ├── configure │ │ │ ├── ServerGroupCommandBuilder.js │ │ │ ├── serverGroup.configure.titus.module.js │ │ │ ├── serverGroupAdvancedSettingsDirective.html │ │ │ ├── serverGroupAdvancedSettingsSelector.directive.js │ │ │ ├── serverGroupAdvancedSettingsSelector.directive.spec.js │ │ │ ├── serverGroupBasicSettingsDirective.html │ │ │ ├── serverGroupBasicSettingsSelector.directive.js │ │ │ ├── serverGroupCapacityDirective.html │ │ │ ├── serverGroupCapacitySelector.directive.js │ │ │ ├── serverGroupCapacitySelector.directive.spec.js │ │ │ ├── serverGroupCommandBuilder.spec.js │ │ │ ├── serverGroupConfiguration.service.js │ │ │ └── wizard │ │ │ │ ├── CloneServerGroup.titus.controller.js │ │ │ │ ├── ServerGroupBasicSettings.controller.js │ │ │ │ ├── ServerGroupCapacity.controller.js │ │ │ │ ├── ServerGroupParameters.controller.js │ │ │ │ ├── ServerGroupResources.controller.js │ │ │ │ ├── basicSettings.html │ │ │ │ ├── capacity.html │ │ │ │ ├── constraints.ts │ │ │ │ ├── deployInitializer.controller.js │ │ │ │ ├── parameters.html │ │ │ │ ├── resources.html │ │ │ │ ├── securityGroups.html │ │ │ │ ├── serverGroupWizard.html │ │ │ │ └── templateSelection.html │ │ ├── details │ │ │ ├── resize │ │ │ │ ├── resizeServerGroup.controller.js │ │ │ │ ├── resizeServerGroup.controller.spec.js │ │ │ │ └── resizeServerGroup.html │ │ │ ├── serverGroupDetails.html │ │ │ ├── serverGroupDetails.titus.controller.js │ │ │ └── serverGroupDetails.titus.controller.spec.js │ │ └── serverGroup.transformer.js │ │ ├── titus.module.js │ │ ├── titus.settings.ts │ │ └── validation │ │ └── applicationName.validator.ts │ └── react.module.ts ├── build.gradle ├── cloudbuild.yaml ├── docker ├── passphrase.gen ├── ports.conf.gen ├── run-apache2.sh ├── setup-apache2.sh ├── spinnaker.conf.gen └── spinnaker.conf.ssl ├── gradle ├── buildViaTravis.sh ├── installViaTravis.sh ├── prepCaches.sh └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── halconfig └── settings.js ├── jsconfig.json ├── karma-shim.js ├── karma.conf.js ├── package.json ├── protractor.conf.js ├── scripts └── removeName.js ├── settings.gradle ├── settings.js ├── start.sh ├── test ├── fixture │ ├── AccountServiceFixtures.js │ ├── SecurityGroupServiceFixtures.js │ └── application.js ├── google │ ├── README.md │ ├── config.json │ ├── e2e │ │ ├── pages │ │ │ ├── cluster.page.js │ │ │ ├── loadBalancer.page.js │ │ │ ├── loadBalancerTypeChoice.page.js │ │ │ ├── loadBalancerWizard.page.js │ │ │ └── serverGroupWizard.page.js │ │ └── tests │ │ │ ├── cloneServerGroup.e2e.js │ │ │ ├── createNetworkLoadBalancer.e2e.js │ │ │ └── createServerGroup.e2e.js │ ├── google_int.sh │ ├── package.json │ ├── protractor.conf.js │ └── tasks │ │ ├── createApp │ │ ├── index.js │ │ ├── job.js │ │ └── task.js │ │ ├── createServerGroup │ │ ├── index.js │ │ ├── job.js │ │ └── task.js │ │ ├── deleteApp │ │ ├── index.js │ │ ├── job.js │ │ └── task.js │ │ ├── index.js │ │ ├── monitorTask.js │ │ ├── orchestrator.js │ │ ├── restoreSnapshot │ │ ├── index.js │ │ ├── job.js │ │ └── task.js │ │ ├── runTask.js │ │ ├── takeSnapshot │ │ ├── index.js │ │ ├── job.js │ │ └── task.js │ │ └── utils │ │ ├── getImages.js │ │ └── getSnapshots.js ├── helpers │ ├── custom-matchers.d.ts │ └── customMatchers.ts ├── mock │ └── mockApplicationData.js ├── pages │ ├── applications.page.js │ └── newApplication.modal.js └── test_index.js ├── tsconfig.json ├── tslint.json ├── version.json ├── webpack.common.js ├── webpack.config.js └── yarn.lock /.babelrc: -------------------------------------------------------------------------------- 1 | { 2 | "presets": ["es2015"] 3 | } 4 | -------------------------------------------------------------------------------- /.clog.toml: -------------------------------------------------------------------------------- 1 | [clog] 2 | 3 | [sections] 4 | "Configuration Changes" = ["config", "conf"] 5 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | trim_trailing_whitespace = true 8 | indent_style = space 9 | indent_size = 2 10 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # OS Generated Files # 2 | *.swp 3 | .DS_Store 4 | ehthumbs.db 5 | Icon? 6 | Thumbs.db 7 | 8 | # IDE Files 9 | *.ipr 10 | *.iws 11 | *.iml 12 | .idea/ 13 | 14 | # Node Files # 15 | npm-debug.log 16 | node_modules/ 17 | test/google/node_modules/ 18 | 19 | # Build Files 20 | .awcache/ 21 | .gradle/ 22 | .happypack/ 23 | build/ 24 | dist/ 25 | transpiled/ 26 | 27 | # Test & Coverage 28 | coverage/ 29 | test-results.xml 30 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | registry = https://registry.npmjs.org/ 2 | always-auth = false 3 | -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # Names should be added to this file with this pattern: 2 | # 3 | # For individuals: 4 | # Name 5 | # 6 | # For organizations: 7 | # Organization 8 | 9 | Netflix, Inc <*@netflix.com> 10 | Google, Inc <*@google.com> 11 | Pivotal, Inc <*@pivotal.io> 12 | Microsoft, Inc <*@microsoft.com> 13 | Veritas Technologies LLC <*@veritas.com> 14 | Target, Inc <*@target.com> 15 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM java:8 2 | 3 | COPY . deck/ 4 | 5 | WORKDIR deck 6 | 7 | RUN docker/setup-apache2.sh && \ 8 | GRADLE_USER_HOME=cache ./gradlew build -PskipTests && \ 9 | mkdir -p /opt/deck/html/ && \ 10 | cp build/webpack/* /opt/deck/html/ && \ 11 | cd .. && \ 12 | rm -rf deck 13 | 14 | COPY docker /opt/deck/docker 15 | 16 | WORKDIR /opt/deck 17 | 18 | CMD /opt/deck/docker/run-apache2.sh 19 | -------------------------------------------------------------------------------- /Dockerfile.slim: -------------------------------------------------------------------------------- 1 | FROM debian:stable-slim 2 | 3 | COPY build/webpack /opt/deck/html/ 4 | 5 | COPY docker /opt/deck/docker 6 | 7 | WORKDIR /opt/deck 8 | 9 | RUN docker/setup-apache2.sh 10 | 11 | CMD docker/run-apache2.sh 12 | -------------------------------------------------------------------------------- /angular-loader/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "angular-loader", 3 | "version": "1.0.0", 4 | "description": "Webpack loader for angular modules", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "dependencies": { 12 | "escodegen": "^1.6.1", 13 | "esprima": "^2.4.0", 14 | "esprima-walk": "^0.1.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/.buildignore: -------------------------------------------------------------------------------- 1 | *.coffee -------------------------------------------------------------------------------- /app/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/favicon.ico -------------------------------------------------------------------------------- /app/fonts/spinnaker/fonts/icomoon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/fonts/spinnaker/fonts/icomoon.eot -------------------------------------------------------------------------------- /app/fonts/spinnaker/fonts/icomoon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/fonts/spinnaker/fonts/icomoon.ttf -------------------------------------------------------------------------------- /app/fonts/spinnaker/fonts/icomoon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/fonts/spinnaker/fonts/icomoon.woff -------------------------------------------------------------------------------- /app/scripts/modules/amazon/applicationProviderFields/awsFields.html: -------------------------------------------------------------------------------- 1 |
2 |
AWS Settings
3 |
4 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/common/footer.directive.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/logo/aws.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-aws { 3 | background: url('aws.icon.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Clone Server Group: 3 | {{step.context.source.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/resizeAsg/resizeAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/pipeline/stages/tagImage/tagImageStage.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/securityGroup/configure/ingressRuleGroupSelector.component.less: -------------------------------------------------------------------------------- 1 | ingress-rule-group-selector { 2 | .col-md-3 { 3 | padding-right: 0; 4 | font-weight: 600; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/securityGroup/securityGroup.reader.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.aws.securityGroup.reader', [ 6 | ]) 7 | .factory('awsSecurityGroupReader', function () { 8 | 9 | function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) { 10 | return indexedSecurityGroups[container.account][container.region][securityGroupId]; 11 | } 12 | 13 | return { 14 | resolveIndexedSecurityGroup: resolveIndexedSecurityGroup, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/advancedSettings/advancedSettings.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/capacity/capacity.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | 5 |
6 |
7 |
8 |
9 | 10 |
11 |
12 |
13 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/capacity/targetHealthyPercentageSelector.directive.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | Consider deployment successful when 4 | 10 | percent of instances are healthy. 11 |
12 |
13 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/capacity/zones.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 |
-------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/loadBalancers/loadBalancers.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
-------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/securityGroups/securityGroups.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 6 | 7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/configure/wizard/zones/azRebalanceSelector.directive.html: -------------------------------------------------------------------------------- 1 |
2 |
AZ Rebalance
3 |
4 | 9 |
10 |
11 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/scalingPolicy/popover/scalingPolicyDetails.popover.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/scalingPolicy/scalingPolicySummary.component.less: -------------------------------------------------------------------------------- 1 | scaling-policy-summary { 2 | .alarm-name { 3 | word-break: break-all; 4 | } 5 | .actions { 6 | font-size: 85%; 7 | margin: 0 0 15px 0; 8 | border-bottom: 1px solid #cccccc; 9 | 10 | .btn-left { 11 | padding-left: 0; 12 | border-left-width: 0; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/scalingPolicy/upsert/alarm/dimensionsEditor.component.less: -------------------------------------------------------------------------------- 1 | dimensions-editor { 2 | h5 { 3 | margin-bottom: 0; 4 | } 5 | display: block; 6 | padding-left: 5px; 7 | 8 | .dimensions-row { 9 | margin-top: 5px; 10 | margin-left: -20px; 11 | } 12 | 13 | .add-new { 14 | margin-left: 0; 15 | padding: 4px; 16 | width: 100%; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/scalingPolicy/upsert/step/stepPolicyAction.component.less: -------------------------------------------------------------------------------- 1 | .step-policy-row { 2 | padding: 5px 0; 3 | border-bottom: 1px solid #dedede; 4 | } -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/scheduledAction/scheduledAction.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.aws.instance.details.scheduledAction.directive', [ 6 | ]) 7 | .directive('scheduledAction', function() { 8 | return { 9 | restrict: 'E', 10 | scope: { 11 | action: '=' 12 | }, 13 | templateUrl: require('./scheduledAction.directive.html'), 14 | }; 15 | }); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/serverGroup/details/serverGroup.details.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.serverGroup.details.aws', [ 6 | require('./serverGroupDetails.aws.controller.js'), 7 | require('./scalingProcesses/autoScalingProcess.service.js'), 8 | require('./scalingProcesses/modifyScalingProcesses.controller.js'), 9 | require('./scheduledAction/editScheduledActions.modal.controller.js'), 10 | require('./advancedSettings/editAsgAdvancedSettings.modal.controller.js'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/subnet/subnet.renderer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.aws.subnet.renderer', [ 6 | ]) 7 | .factory('awsSubnetRenderer', function () { 8 | 9 | function render(serverGroup) { 10 | return serverGroup.subnetType; 11 | } 12 | 13 | return { 14 | render: render, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/amazon/vpc/vpc.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.vpc', [ 7 | require('./vpc.read.service.js') 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/appengine.settings.ts: -------------------------------------------------------------------------------- 1 | import { IProviderSettings, SETTINGS } from 'core/config/settings'; 2 | 3 | export interface IAppengineProviderSettings extends IProviderSettings { 4 | defaults: { 5 | account?: string; 6 | editLoadBalancerStageEnabled?: boolean; 7 | }; 8 | } 9 | 10 | export const AppengineProviderSettings: IAppengineProviderSettings = SETTINGS.providers.appengine || { defaults: {} }; 11 | if (AppengineProviderSettings) { 12 | AppengineProviderSettings.resetToOriginal = SETTINGS.resetToOriginal; 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/common/appengineHealth.ts: -------------------------------------------------------------------------------- 1 | export class AppengineHealth { 2 | public static PLATFORM = 'App Engine Service'; 3 | } 4 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/domain/IAppengineAccount.ts: -------------------------------------------------------------------------------- 1 | import {IAccountDetails} from 'core/account/account.service'; 2 | 3 | export interface IAppengineAccount extends IAccountDetails { 4 | region: string; 5 | supportedGitCredentialTypes: GitCredentialType[]; 6 | } 7 | 8 | export type GitCredentialType = 'NONE' | 'HTTPS_USERNAME_PASSWORD' | 'HTTPS_GITHUB_OAUTH_TOKEN' | 'SSH'; 9 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/domain/IAppengineServerGroup.ts: -------------------------------------------------------------------------------- 1 | import {ServerGroup} from 'core/domain/index'; 2 | 3 | export interface IAppengineServerGroup extends ServerGroup { 4 | disabled: boolean; 5 | env: 'FLEXIBLE' | 'STANDARD'; 6 | scalingPolicy: IAppengineScalingPolicy; 7 | servingStatus: 'SERVING' | 'STOPPED'; 8 | allowsGradualTrafficMigration: boolean; 9 | } 10 | 11 | export interface IAppengineScalingPolicy { 12 | type: 'AUTOMATIC' | 'MANUAL' | 'BASIC'; 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/domain/IAppengineTriggers.ts: -------------------------------------------------------------------------------- 1 | export interface IAppengineGitTrigger { 2 | source: string; 3 | project: string; 4 | slug: string; 5 | branch: string; 6 | } 7 | 8 | export interface IAppengineJenkinsTrigger { 9 | master: string; 10 | job: string; 11 | matchBranchOnRegex?: string; 12 | } 13 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/domain/index.ts: -------------------------------------------------------------------------------- 1 | export * from './IAppengineAccount'; 2 | export * from './IAppengineInstance'; 3 | export * from './IAppengineLoadBalancer'; 4 | export * from './IAppengineServerGroup'; 5 | export * from './IAppengineStageScope'; 6 | export * from './IAppengineTriggers'; 7 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/loadBalancer/configure/wizard/wizard.less: -------------------------------------------------------------------------------- 1 | appengine-load-balancer-basic-settings { 2 | a.btn.btn-link { 3 | padding: 0; 4 | } 5 | 6 | .form-group { 7 | margin-top: .4rem; 8 | } 9 | } 10 | 11 | appengine-load-balancer-advanced-settings { 12 | .checkbox { 13 | input[type="checkbox"] { 14 | margin: 0 0 .1rem 0; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/logo/appengine.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-appengine { 3 | background: url('appengine.icon.svg') no-repeat 100% 100%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/pipeline/stages/startServerGroup/startServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Start Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/pipeline/stages/stopServerGroup/stopServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Stop Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/appengine/serverGroup/configure/wizard/serverGroupWizard.less: -------------------------------------------------------------------------------- 1 | .appengine-server-group-wizard { 2 | input[type="checkbox"] { 3 | margin-top: .75rem; 4 | } 5 | 6 | help-field.help-field-absolute { 7 | span { 8 | position: absolute; 9 | top: 7px; 10 | right: 2px; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/azure.settings.ts: -------------------------------------------------------------------------------- 1 | import { IProviderSettings, SETTINGS } from 'core/config/settings'; 2 | 3 | export interface IAzureProviderSettings extends IProviderSettings { 4 | defaults: { 5 | account?: string; 6 | region?: string; 7 | }; 8 | } 9 | 10 | export const AzureProviderSettings: IAzureProviderSettings = SETTINGS.providers.azure || { defaults: {} }; 11 | if (AzureProviderSettings) { 12 | AzureProviderSettings.resetToOriginal = SETTINGS.resetToOriginal; 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/logo_azure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/azure/logo_azure.png -------------------------------------------------------------------------------- /app/scripts/modules/azure/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 7 | 8 |
9 | 10 | 11 | 12 |
13 | 14 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/securityGroup/clone/cloneSecurityGroup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/securityGroup/configure/editSecurityGroup.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/securityGroup/securityGroup.transformer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.azure.securityGroup.transformer', [ 6 | ]) 7 | .factory('azureSecurityGroupTransformer', function () { 8 | 9 | function normalizeSecurityGroup() { 10 | } 11 | 12 | return { 13 | normalizeSecurityGroup: normalizeSecurityGroup, 14 | }; 15 | }); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/ServerGroupInstanceType.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.azure.serverGroup.configure.instanceType.controller', []) 6 | .controller('azureInstanceTypeCtrl', function($scope, modalWizardService) { 7 | 8 | modalWizardService.getWizard().markComplete('instance-type'); 9 | modalWizardService.getWizard().markClean('instance-type'); 10 | 11 | }); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/advancedSettings/advancedSettings.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
-------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/basicSettings/image.regional.filter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import _ from 'lodash'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.azure.serverGroup.configure.basicSettings.image.filter', []) 8 | .filter('regional', function () { 9 | return function (input, selectedRegion) { 10 | return _.filter(input, function (image) { 11 | return image.region === selectedRegion || image.region === null; 12 | }); 13 | }; 14 | }); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/capacity/capacity.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/loadBalancers/loadBalancers.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/networkSettings/ServerGroupNetworkSettingsSelector.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.azure.serverGroup.configure.networkSettings.directive', []) 6 | .directive('azureServerGroupNetworkSettingsSelector', function() { 7 | return { 8 | restrict: 'E', 9 | scope: { 10 | command: '=', 11 | }, 12 | templateUrl: require('./ServerGroupNetworkSettingsSelector.directive.html'), 13 | }; 14 | }); 15 | 16 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/networkSettings/networkSettings.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/configure/wizard/securityGroup/securityGroups.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 | -------------------------------------------------------------------------------- /app/scripts/modules/azure/serverGroup/details/serverGroup.details.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.azure.serverGroup.details.azure', [ 6 | require('./serverGroupDetails.azure.controller.js'), 7 | ]); 8 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/cf.settings.ts: -------------------------------------------------------------------------------- 1 | import { IProviderSettings, SETTINGS } from 'core/config/settings'; 2 | 3 | export interface ICloudFoundryProviderSettings extends IProviderSettings { 4 | defaults: { 5 | account?: string; 6 | region?: string; 7 | }; 8 | } 9 | 10 | export const CloudFoundryProviderSettings: ICloudFoundryProviderSettings = SETTINGS.providers.cf || { defaults: {} }; 11 | if (CloudFoundryProviderSettings) { 12 | CloudFoundryProviderSettings.resetToOriginal = SETTINGS.resetToOriginal; 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/common/footer.directive.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/loadBalancer/configure/createLoadBalancer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/logo/cf.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-cf { 3 | background: url('cf.logo.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/logo/logo_cf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/cloudfoundry/logo/logo_cf.png -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Clone Server Group: 3 | {{step.context.source.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/pipeline/stages/resizeAsg/resizeAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/securityGroup/securityGroup.reader.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.cf.securityGroup.reader', [ 6 | ]) 7 | .factory('cfSecurityGroupReader', function () { 8 | 9 | function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) { 10 | return indexedSecurityGroups[container.account][container.region][securityGroupId]; 11 | } 12 | 13 | return { 14 | resolveIndexedSecurityGroup: resolveIndexedSecurityGroup, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/securityGroup/securityGroup.transformer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.cf.securityGroup.transformer', [ 6 | ]) 7 | .factory('cfSecurityGroupTransformer', function ($q) { 8 | 9 | function normalizeSecurityGroup(securityGroup) { 10 | return $q.when(securityGroup); // no-op 11 | } 12 | 13 | return { 14 | normalizeSecurityGroup: normalizeSecurityGroup, 15 | }; 16 | 17 | }); 18 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/serverGroupLoadBalancersDirective.html: -------------------------------------------------------------------------------- 1 | 2 |
3 |
4 | Load Balancers 5 |
6 |
7 | 11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/advanced.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/artifactSettings.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/basicSettings.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/envs.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/loadBalancers.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/cloudfoundry/serverGroup/configure/wizard/services.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/account/AccountLabelColor.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import { angular2react } from 'angular2react'; 3 | 4 | import { AccountLabelColorComponent } from './accountLabelColor.component'; 5 | 6 | interface IAccountLabelColorProps { 7 | account: string; 8 | } 9 | 10 | export let AccountLabelColor: React.ComponentClass = undefined; 11 | export const AccountLabelColorInject = ($injector: any) => { 12 | AccountLabelColor = angular2react('accountLabelColor', new AccountLabelColorComponent(), $injector); 13 | }; 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/account/account.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {ACCOUNT_LABEL_COLOR_COMPONENT} from './accountLabelColor.component'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.core.account', [ 8 | require('./accountTag.directive.js'), 9 | require('./providerToggles.directive.js'), 10 | ACCOUNT_LABEL_COLOR_COMPONENT, 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/account/collapsibleAccountTag.directive.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/scripts/modules/core/analytics/analytics.service.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {SETTINGS} from 'core/config/settings'; 4 | 5 | const angular = require('angular'); 6 | 7 | module.exports = angular 8 | .module('spinnaker.core.analytics', [ 9 | require('angulartics'), 10 | require('angulartics-google-analytics'), 11 | ]) 12 | .run(function ($window) { 13 | if (SETTINGS.analytics.ga) { 14 | $window.ga('create', SETTINGS.analytics.ga, 'auto'); 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/application/applicationRefresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

Application is refreshing.

2 |

(click to refresh)

3 |

Last refresh: {{vm.state.lastRefresh | timestamp }}
({{vm.state.lastRefresh | relativeTime }})

4 |

Note: Due to caching, data may be delayed up to 2 minutes

-------------------------------------------------------------------------------- /app/scripts/modules/core/application/config/applicationNotifications.directive.html: -------------------------------------------------------------------------------- 1 |

You can edit notification settings for this application

2 | 3 | -------------------------------------------------------------------------------- /app/scripts/modules/core/application/config/dataSources/applicationDataSourceEditor.component.less: -------------------------------------------------------------------------------- 1 | application-data-source-editor { 2 | div.checkbox { 3 | margin-left: 20px; 4 | label { 5 | font-weight: 600; 6 | } 7 | } 8 | p { 9 | margin-left: 20px; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/application/config/footer/configSectionFooter.component.less: -------------------------------------------------------------------------------- 1 | chaos-monkey-config-footer { 2 | .footer { 3 | padding: 10px 0 0 0; 4 | border-top: 1px solid #d9d9d9; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/application/modal/applicationProviderFields.component.html: -------------------------------------------------------------------------------- 1 | 4 | 5 | -------------------------------------------------------------------------------- /app/scripts/modules/core/application/modal/platformHealthOverrideCheckbox.directive.html: -------------------------------------------------------------------------------- 1 |
2 | 8 | 9 |
10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/authentication/loggedOut.modal.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const angular = require('angular'); 4 | 5 | require('./loggedOut.modal.less'); 6 | 7 | module.exports = angular 8 | .module('spinnaker.core.authentication.loggedOut.modal.controller', []) 9 | .controller('LoggedOutModalCtrl', function ($window) { 10 | this.login = () => { 11 | $window.location.reload(); 12 | return true; 13 | }; 14 | }); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/authentication/loggedOut.modal.less: -------------------------------------------------------------------------------- 1 | .modal-logged-out { 2 | text-align: center; 3 | padding: 30px 60px; 4 | 5 | h3 { 6 | margin: 30px 0; 7 | } 8 | 9 | p { 10 | margin-bottom: 30px; 11 | } 12 | 13 | .glyphicon-hourglass { 14 | display: block; 15 | top: -83px; 16 | left: 2px; 17 | height: 0; 18 | font-size: 62px; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /app/scripts/modules/core/authentication/redirect.service.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | 3 | export class RedirectService { 4 | 5 | static get $inject(): string[] { 6 | return ['$window']; 7 | } 8 | 9 | constructor(private $window: ng.IWindowService) {} 10 | 11 | public redirect(url: string): void { 12 | this.$window.location.href = url; 13 | } 14 | } 15 | 16 | export const REDIRECT_SERVICE = 'spinnaker.redirect.service'; 17 | module(REDIRECT_SERVICE, []) 18 | .service('redirectService', RedirectService); 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/authentication/userMenu/userMenu.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {AUTHENTICATION_SERVICE} from '../authentication.service'; 4 | 5 | require('../../../../../fonts/spinnaker/icons.css'); 6 | require('./userMenu.less'); 7 | 8 | let angular = require('angular'); 9 | 10 | module.exports = angular.module('spinnaker.core.authentication.userMenu', [ 11 | AUTHENTICATION_SERVICE, 12 | require('./userMenu.directive.js') 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/bootstrap/applicationBootstrap.directive.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |

4 |
5 | 8 | 9 |
10 |
11 |
12 |
13 | 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cache/caches.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.core.cache', [ 7 | require('./collapsibleSectionStateCache.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cancelModal/cancel.less: -------------------------------------------------------------------------------- 1 | div.cancel-modal input { 2 | margin-top: 10px; 3 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/chaosMonkey/chaosMonkeyExceptions.component.less: -------------------------------------------------------------------------------- 1 | chaos-monkey-exceptions { 2 | th { 3 | font-weight: 600; 4 | } 5 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/cloudProvider/cloudProviderLogo.less: -------------------------------------------------------------------------------- 1 | @import "../presentation/less/imports/commonImports.less"; 2 | 3 | cloud-provider-logo { 4 | display: inline-block; 5 | margin-right: 3px; 6 | .icon { 7 | display: inline-block; 8 | vertical-align: sub; 9 | -webkit-filter: invert(53%) sepia(100%) hue-rotate(50deg); 10 | filter: invert(53%) sepia(100%) hue-rotate(50deg); 11 | } 12 | } 13 | 14 | .disabled { 15 | cloud-provider-logo { 16 | .icon { 17 | -webkit-filter: opacity(64%); 18 | filter: opacity(64%); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cluster/allClustersGroupings.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | 3 | export const ALL_CLUSTERS_GROUPINGS_COMPONENT = 'spinnaker.core.cluster.allClustersGroupings.component'; 4 | 5 | module(ALL_CLUSTERS_GROUPINGS_COMPONENT, []) 6 | .component('allClustersGroupings', { 7 | templateUrl: require('./allClustersGroupings.component.html'), 8 | bindings: { 9 | groups: '<', 10 | app: '<', 11 | sortFilters: '<', 12 | initialized: '<', 13 | } 14 | }); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cluster/filter/collapsibleFilterSection.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cluster/onDemand/onDemandClusterPicker.component.less: -------------------------------------------------------------------------------- 1 | on-demand-cluster-picker { 2 | display: block; 3 | margin-bottom: 20px; 4 | .dropdown-menu { 5 | max-height: 50vh; 6 | overflow-y: auto; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/cluster/onDemand/onDemandOptionTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/create/create.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.config.actions.create', [ 6 | require('./createPipelineButton.controller.js'), 7 | require('./createPipelineButton.directive.js'), 8 | require('./createPipelineModal.controller.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/create/createPipelineButton.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/details/defaultExecutionDetails.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 |
6 | 7 | 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/details/executionDetails.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
4 |
5 |
6 |
7 | 8 | {{stage.name || stage.type | robotToHuman }} 9 |
10 |
11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/details/executionDetailsSectionNav.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.executionDetails.section.nav.directive', [ 6 | ]) 7 | .directive('executionDetailsSectionNav', function() { 8 | return { 9 | restrict: 'E', 10 | templateUrl: require('./executionDetailsSectionNav.html'), 11 | scope: { 12 | sections: '=', 13 | } 14 | }; 15 | }); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/details/executionDetailsSectionNav.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/executionBuild/ExecutionBuildNumber.less: -------------------------------------------------------------------------------- 1 | a.execution-build-number { 2 | display: block; 3 | } 4 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/executionBuild/executionBuildNumber.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { ExecutionBuildNumber } from './ExecutionBuildNumber'; 5 | 6 | export const EXECUTION_BUILD_NUMBER_COMPONENT = 'spinnaker.core.delivery.execution.build.number.component'; 7 | module(EXECUTION_BUILD_NUMBER_COMPONENT, []) 8 | .component('executionBuildNumber', react2angular(ExecutionBuildNumber, ['execution'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/executionGroup/execution/execution.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { Execution } from './Execution'; 5 | 6 | export const EXECUTION_COMPONENT = 'spinnaker.core.delivery.group.executionGroup.execution.component'; 7 | module(EXECUTION_COMPONENT, []) 8 | .component('execution', react2angular(Execution, ['application', 'execution', 'standalone'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/executionGroup/executionGroups.less: -------------------------------------------------------------------------------- 1 | execution-groups { 2 | display: flex; 3 | flex: 1 1 auto; 4 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/filter/executionFilter.less: -------------------------------------------------------------------------------- 1 | execution-filters { 2 | width: 100%; 3 | display: flex; 4 | .sortable { 5 | .glyphicon-resize-vertical { 6 | display: inline-block; 7 | margin-left: -14px; 8 | opacity: 0.7; 9 | font-size: 80%; 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/manualExecution/manualPipelineExecution.less: -------------------------------------------------------------------------------- 1 | .manual-execution-parameters-description { 2 | margin-top: 20px; 3 | } 4 | .notifications-list { 5 | font-size: 90%; 6 | padding-top: 7px; 7 | text-align: left; 8 | ul { 9 | list-style-type: none; 10 | padding-left: 20px; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/manualExecution/notifications.tooltip.html: -------------------------------------------------------------------------------- 1 |
2 |
    3 |
  • 4 | {{notification.address}} when: 5 |
      6 |
    • {{when|notificationWhen}}
    • 7 |
    8 |
  • 9 |
10 |
11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/triggers/nextRunTag.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { NextRunTag } from './NextRunTag'; 5 | 6 | export const NEXT_RUN_TAG_COMPONENT = 'spinnaker.core.delivery.triggers.nextRun'; 7 | module(NEXT_RUN_TAG_COMPONENT, []) 8 | .component('nextRunTag', react2angular(NextRunTag, ['pipeline'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/delivery/triggers/triggersTag.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { TriggersTag } from './TriggersTag'; 5 | 6 | export const TRIGGERS_TAG_COMPONENT = 'spinnaker.core.delivery.triggers.triggersTag'; 7 | module(TRIGGERS_TAG_COMPONENT, []) 8 | .component('triggersTag', react2angular(TriggersTag, ['pipeline'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/deploymentStrategy/deploymentStrategy.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.deploymentStrategy', [ 6 | require('../utils/utils.module.js'), 7 | require('./deploymentStrategySelector.directive.js'), 8 | require('./deploymentStrategyConfig.provider.js'), 9 | require('./deploymentStrategySelector.controller.js'), 10 | require('./services/deploymentStrategy.service.js') 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/deploymentStrategy/strategies/custom/additionalFields.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/deploymentStrategy/strategies/highlander/highlander.strategy.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.deploymentStrategy.highlander', []) 6 | .config(function(deploymentStrategyConfigProvider) { 7 | deploymentStrategyConfigProvider.registerStrategy({ 8 | label: 'Highlander', 9 | description: 'Destroys all previous server groups in the cluster as soon as new server group passes health checks', 10 | key: 'highlander', 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/deploymentStrategy/strategies/none/none.strategy.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.deploymentStrategy.none', []) 6 | .config(function(deploymentStrategyConfigProvider) { 7 | deploymentStrategyConfigProvider.registerStrategy({ 8 | label: 'None', 9 | description: 'Creates the next server group with no impact on existing server groups', 10 | key: '', 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/diffs/index.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | 3 | import {VIEW_CHANGES_LINK} from './viewChangesLink.component'; 4 | 5 | export const CORE_DIFF_MODULE = 'spinnaker.diff.module'; 6 | module(CORE_DIFF_MODULE, [VIEW_CHANGES_LINK]); 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IBuild.ts: -------------------------------------------------------------------------------- 1 | export interface IArtifact { 2 | displayPath: string; 3 | fileName: string; 4 | relativePath: string; 5 | } 6 | 7 | export interface IBuild { 8 | building: boolean; 9 | duration: number; 10 | name: string; 11 | number: number; 12 | result: string; 13 | timestamp: Date; 14 | url: string; 15 | artifacts: IArtifact[]; 16 | } 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/ICluster.ts: -------------------------------------------------------------------------------- 1 | import {ServerGroup} from './serverGroup'; 2 | import {InstanceCounts} from './instanceCounts'; 3 | 4 | export interface IClusterSummary { 5 | account: string; 6 | name: string; 7 | } 8 | 9 | export interface ICluster extends IClusterSummary { 10 | cloudProvider: string; 11 | category: string; 12 | serverGroups: ServerGroup[]; 13 | instanceCounts?: InstanceCounts; 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/ICredentials.ts: -------------------------------------------------------------------------------- 1 | export interface ICredentials { 2 | name: string; 3 | environment: string; 4 | accountType: string; 5 | cloudProvider: string; 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IExecutionTrigger.ts: -------------------------------------------------------------------------------- 1 | import {IExecution} from './IExecution'; 2 | 3 | export interface IExecutionTrigger { 4 | user: string; 5 | type: string; 6 | parentExecution?: IExecution; 7 | parentPipelineApplication?: string; 8 | parentPipelineId?: string; 9 | parentPipelineName?: string; 10 | parameters?: { [key: string]: string; }; 11 | } 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IJobConfig.ts: -------------------------------------------------------------------------------- 1 | export interface ParameterDefinitionList { 2 | defaultValue: string; 3 | description?: string; 4 | name: string; 5 | } 6 | 7 | export interface IJobConfig { 8 | buildable: boolean; 9 | concurrentBuild: boolean; 10 | description: string; 11 | displayName: string; 12 | name: string; 13 | parameterDefinitionList: ParameterDefinitionList[]; 14 | url: string; 15 | } 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IProject.ts: -------------------------------------------------------------------------------- 1 | export interface IProjectCluster { 2 | account: string; 3 | stack: string; 4 | detail: string; 5 | applications: string[]; 6 | } 7 | 8 | export interface IProjectPipeline { 9 | application: string; 10 | pipelineConfigId: string; 11 | } 12 | 13 | export interface IProjectConfig { 14 | applications: string[]; 15 | clusters: IProjectCluster[]; 16 | } 17 | 18 | export interface IProject { 19 | id: string; 20 | name: string; 21 | email: string; 22 | config: IProjectConfig; 23 | notFound: boolean; 24 | } 25 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IRegionalCluster.ts: -------------------------------------------------------------------------------- 1 | import {ICluster} from './ICluster'; 2 | 3 | export interface IRegionalCluster extends ICluster { 4 | region: string; 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IStage.ts: -------------------------------------------------------------------------------- 1 | export interface IStage { 2 | name: string; 3 | type: string; 4 | refId: string | number; // unfortunately, we kept this loose early on, so it's either a string or a number 5 | requisiteStageRefIds: (string | number)[]; 6 | [k: string]: any; 7 | isNew?: boolean; 8 | } 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IStageStep.ts: -------------------------------------------------------------------------------- 1 | export interface IStageStep { 2 | startTime: number; 3 | endTime: number; 4 | status: string; 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IStrategy.ts: -------------------------------------------------------------------------------- 1 | import {IPipeline} from './IPipeline'; 2 | 3 | export interface IStrategy extends IPipeline { 4 | strategy: boolean; 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/IVpc.ts: -------------------------------------------------------------------------------- 1 | export interface IVpc { 2 | account: string; 3 | id: string; 4 | name: string; 5 | region: string; 6 | cloudProvider: string; 7 | } 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/buildInfo.ts: -------------------------------------------------------------------------------- 1 | export interface BuildInfo { 2 | fullDisplayName: string; 3 | number: number; 4 | } 5 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/deckRootScope.ts: -------------------------------------------------------------------------------- 1 | import {IStateService} from 'angular-ui-router'; 2 | 3 | export interface IDeckRootScope extends ng.IRootScopeService { 4 | $state: IStateService; 5 | authenticating: boolean; 6 | feature: any; 7 | pageTitle: string; 8 | routing: boolean; 9 | } 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/health.ts: -------------------------------------------------------------------------------- 1 | import { ILoadBalancer } from './loadBalancer'; 2 | 3 | export class Health { 4 | public type: string; 5 | public state: string; 6 | public loadBalancers: ILoadBalancer[]; 7 | } 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/instance.ts: -------------------------------------------------------------------------------- 1 | import { Health } from './health'; 2 | 3 | export class Instance { 4 | public id: string; 5 | public availabilityZone?: string; 6 | public account?: string; 7 | public region?: string; 8 | public cloudProvider?: string; 9 | public provider?: string; 10 | public vpcId?: string; 11 | public healthState?: string; 12 | public health: Health[]; 13 | public launchTime: number; 14 | public loadBalancers?: string[]; 15 | public serverGroup?: string; 16 | public zone: string; 17 | public hasHealthStatus?: boolean; 18 | } 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/instanceCounts.ts: -------------------------------------------------------------------------------- 1 | export interface InstanceCounts { 2 | [k: string]: any; // Index Signature 3 | 4 | up: number; 5 | down: number; 6 | succeeded: number; 7 | failed: number; 8 | unknown: number; 9 | outOfService: number; 10 | } 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/loadBalancer.ts: -------------------------------------------------------------------------------- 1 | import { InstanceCounts } from './instanceCounts'; 2 | import { Instance } from './instance'; 3 | 4 | export interface ILoadBalancer { 5 | account?: string; 6 | cloudProvider?: string; 7 | name?: string; 8 | detail?: string; 9 | healthState?: string; 10 | instances?: Instance[]; 11 | instanceCounts?: InstanceCounts; 12 | loadBalancerType?: string; 13 | provider?: string; 14 | region?: string; 15 | securityGroups?: string[]; 16 | serverGroups?: any[]; 17 | stack?: string; 18 | type?: string; 19 | vpcId?: string; 20 | } 21 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/stageContext.ts: -------------------------------------------------------------------------------- 1 | export interface StageContext { 2 | freeFormDetails: string; 3 | stack: string; 4 | application: string; 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/domain/taskStep.ts: -------------------------------------------------------------------------------- 1 | import {ITimedItem} from './IOrchestratedItem'; 2 | 3 | export interface TaskStep extends ITimedItem { 4 | name: string; 5 | status: string; 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/entityTag/entityTagDetails.component.less: -------------------------------------------------------------------------------- 1 | @import "../presentation/less/imports/commonImports.less"; 2 | 3 | entity-tag-details { 4 | .tag { 5 | padding: 5px; 6 | margin-bottom: 10px; 7 | } 8 | .fa { 9 | margin-right: 5px; 10 | margin-top: 4px; 11 | } 12 | .actions { 13 | .btn-link:last-child { 14 | padding-right: 0; 15 | } 16 | } 17 | .tag-contents { 18 | display: flex; 19 | flex-direction: row; 20 | .fa { 21 | flex: 0 0 auto; 22 | } 23 | [marked] { 24 | flex: 1 1 auto; 25 | } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /app/scripts/modules/core/entityTag/entityTagEditor.modal.less: -------------------------------------------------------------------------------- 1 | @import "../presentation/less/imports/commonImports.less"; 2 | 3 | .entity-tag-editor-modal { 4 | .preview { 5 | background-color: lighten(@light_blue_background, 10%); 6 | [marked] { 7 | padding-top: 5px; 8 | } 9 | } 10 | label { 11 | [marked] { 12 | p { 13 | margin-bottom: 0; 14 | } 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/scripts/modules/core/entityTag/entityUiTags.popover.less: -------------------------------------------------------------------------------- 1 | @import "~core/presentation/less/imports/commonImports.less"; 2 | 3 | .entity-tags-popover { 4 | padding: 10px; 5 | .entity-tag-message { 6 | min-width: 150px; 7 | &:not(:first-child) { 8 | padding-top: 10px; 9 | margin-top: 5px; 10 | border-top: 1px solid @mid_light_grey; 11 | 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/filter/percent.filter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.core.filter.percent', []) 6 | .filter('decimalToPercent', function () { 7 | return function (decimal) { 8 | return `${Math.round(decimal * 100)}%`; 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/filterModel/filter.tags.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.core.filterModel.filterTags.directive', [ 7 | ]) 8 | .directive('filterTags', function () { 9 | return { 10 | restrict: 'E', 11 | templateUrl: require('./filter.tags.html'), 12 | scope: { 13 | tags: '=', 14 | tagCleared: '&', 15 | clearFilters: '&', 16 | }, 17 | }; 18 | }); 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/forms/buttonBusyIndicator/buttonBusyIndicator.component.less: -------------------------------------------------------------------------------- 1 | button-busy-indicator { 2 | display: inline-block; 3 | position: relative; 4 | width: 16px; 5 | height: 15px 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/forms/checkmap/checkmap.directive.html: -------------------------------------------------------------------------------- 1 |
    2 |
  • 3 |
      4 |
    • {{key}}
    • 5 |
    • 6 | 10 |
    • 11 |
    12 |
  • 13 |
14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/help/helpField.popover.html: -------------------------------------------------------------------------------- 1 |
4 | -------------------------------------------------------------------------------- /app/scripts/modules/core/insight/insight.less: -------------------------------------------------------------------------------- 1 | insight-layout { 2 | display: flex; 3 | 4 | insight-filter, cluster-filter, load-balancer-filter, security-group-filter, .insight-filter-content { 5 | display: flex; 6 | width: 100%; 7 | overflow-x: hidden; 8 | 9 | .content { 10 | overflow-y: auto; 11 | } 12 | } 13 | 14 | insight-filter, .insight-filter-content { 15 | flex-direction: column; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/scripts/modules/core/insight/insight.module.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | 3 | export const INSIGHT_NGMODULE = module('spinnaker.core.insight', [ 4 | require('angular-ui-router'), 5 | require('core/cache/collapsibleSectionStateCache'), 6 | ]); 7 | 8 | import './insight.less'; 9 | 10 | import './insightFilter.component'; 11 | import './insightLayout.component'; 12 | 13 | import './insightmenu.directive'; 14 | 15 | import './insightFilterState.model'; 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/insight/insightLayout.component.html: -------------------------------------------------------------------------------- 1 |
3 | 4 | 5 |
6 |
7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/insight/insightLayout.component.ts: -------------------------------------------------------------------------------- 1 | import {InsightFilterStateModel} from './insightFilterState.model'; 2 | import {INSIGHT_NGMODULE} from './insight.module'; 3 | 4 | class InsightLayoutCtrl { 5 | static get $inject() { return ['InsightFilterStateModel']; } 6 | constructor(public InsightFilterStateModel: InsightFilterStateModel) { 7 | } 8 | } 9 | 10 | INSIGHT_NGMODULE.component('insightLayout', { 11 | templateUrl: require('./insightLayout.component.html'), 12 | controller: InsightLayoutCtrl, 13 | bindings: { 14 | app: '<', 15 | } 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/instance/details/instanceLinks.component.html: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/instance/details/instanceLinks.component.less: -------------------------------------------------------------------------------- 1 | instance-links { 2 | .collapsible-section:first-child { 3 | border-top-width: 0 !important; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/instance/details/multipleInstanceServerGroup.directive.less: -------------------------------------------------------------------------------- 1 | multiple-instance-server-group { 2 | display: block; 3 | margin-bottom: 20px; 4 | h5 { 5 | font-size: 110%; 6 | margin-bottom: 5px; 7 | padding-bottom: 0; 8 | } 9 | .server-group-name { 10 | font-weight: 600; 11 | } 12 | .server-group-details { 13 | margin-left: 24px; 14 | margin-bottom: 5px; 15 | } 16 | .multiple-instance-list { 17 | margin-left: 24px; 18 | ul { 19 | font-size: 80%; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/instance/instance.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {INSTANCE_STATES} from './instance.states'; 6 | 7 | require('./instanceSelection.less'); 8 | 9 | module.exports = angular 10 | .module('spinnaker.core.instance', [ 11 | require('./details/console/consoleOutputLink.directive.js'), 12 | require('./loadBalancer/instanceLoadBalancerHealth.directive.js'), 13 | require('./details/multipleInstances.controller.js'), 14 | INSTANCE_STATES 15 | ]); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/instance/loadBalancer/health.html: -------------------------------------------------------------------------------- 1 |
2 | 4 | 6 | {{name}} 7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/loadBalancer/loadBalancer/loadBalancer.pod.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | require('./loadBalancerPod.directive.less'); 6 | 7 | module.exports = angular.module('spinnaker.core.loadBalancer.pod', []) 8 | .directive('loadBalancerPod', function() { 9 | return { 10 | restrict: 'E', 11 | scope: { 12 | grouping: '=', 13 | application: '=', 14 | parentHeading: '=', 15 | }, 16 | templateUrl: require('./loadBalancerPod.html'), 17 | }; 18 | }); 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/modal/closeable/closeable.modal.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.modal.closable.controller', []) 6 | .controller('CloseableModalCtrl', function($scope, $uibModalInstance) { 7 | $scope.close = $uibModalInstance.dismiss; 8 | } 9 | ); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/modal/wizard/v2wizardPage.component.html: -------------------------------------------------------------------------------- 1 | 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/notifications.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.notifications', [ 6 | require('./notificationTypeConfig.provider.js'), 7 | require('./selector/notificationSelector.directive.js'), 8 | require('./notificationList.directive.js'), 9 | require('./notificationType.service.js'), 10 | require('./modal/editNotification.controller.modal.js'), 11 | require('./notification.service.js'), 12 | require('./notification.details.filter.js') 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/selector/notificationSelector.html: -------------------------------------------------------------------------------- 1 |
2 |
Notify via
3 |
4 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/types/email/email.notification.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.notification.types.email', []) 6 | .config(function(notificationTypeConfigProvider) { 7 | notificationTypeConfigProvider.registerNotificationType({ 8 | label: 'Email', 9 | key: 'email', 10 | addressTemplateUrl: require('./additionalFields.html'), 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/types/hipchat/hipchat.notification.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.notification.types.hipchat', []) 6 | .config(function(notificationTypeConfigProvider) { 7 | notificationTypeConfigProvider.registerNotificationType({ 8 | label: 'HipChat', 9 | key: 'hipchat', 10 | addressTemplateUrl: require('./additionalFields.html') 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/types/slack/slack.notification.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.notification.types.slack', []) 6 | .config(function(notificationTypeConfigProvider) { 7 | notificationTypeConfigProvider.registerNotificationType({ 8 | label: 'Slack', 9 | key: 'slack', 10 | addressTemplateUrl: require('./additionalFields.html') 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/notification/types/sms/sms.notification.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.notification.types.sms', []) 6 | .config(function(notificationTypeConfigProvider) { 7 | notificationTypeConfigProvider.registerNotificationType({ 8 | label: 'SMS', 9 | key: 'sms', 10 | addressTemplateUrl: require('./additionalFields.html'), 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/copyStage/copyStage.modal.less: -------------------------------------------------------------------------------- 1 | .bordered-choices { 2 | .ui-select-choices-row-inner { 3 | border-bottom: 1px solid #ddd; 4 | } 5 | } 6 | 7 | copy-stage-card { 8 | p { 9 | margin: 0; 10 | } 11 | } 12 | 13 | .copy-stage-modal { 14 | .no-stages-message { 15 | padding: .5rem 2rem; 16 | } 17 | 18 | .well { 19 | margin-bottom: 0; 20 | padding: 10px; 21 | 22 | p { 23 | margin: 0; 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/createNew.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.pipeline.createNew.directive', [ 7 | ]) 8 | .directive('createNew', function() { 9 | return { 10 | restrict: 'E', 11 | scope: { 12 | application: '=' 13 | }, 14 | templateUrl: require('./createNew.html'), 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/graph/warnings.popover.html: -------------------------------------------------------------------------------- 1 |
2 |

3 | The following errors may affect the ability to run this pipeline: 4 |

5 |
    6 |
  • 7 |
8 |
9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/health/stagePlatformHealthOverrideCheckbox.directive.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/parameters/pipeline.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.parameters', [ 6 | require('./parameter.js'), 7 | require('./parameters.directive.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/pipelineConfigView.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 6 | 7 | 11 | 12 |
13 |
14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/preconditions/precondition.details.filter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.config.preconditions.details.filter', []) 6 | .filter('preconditionType', function() { 7 | return function(input) { 8 | return input.charAt(0).toUpperCase() + input.slice(1); 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/preconditions/preconditions.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.config.preconditions', [ 6 | require('./preconditionTypeConfig.provider.js'), 7 | require('./selector/preconditionSelector.directive.js'), 8 | require('./preconditionList.directive.js'), 9 | require('./preconditionType.service.js'), 10 | require('./modal/editPrecondition.controller.modal.js'), 11 | require('./precondition.details.filter.js') 12 | ]); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/preconditions/selector/preconditionSelector.html: -------------------------------------------------------------------------------- 1 |
2 |
Check
3 |
4 | 9 |
10 |
11 |
12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/preconditions/types/clusterSize/clusterSize.precondition.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.config.preconditions.types.clusterSize', []) 6 | .config(function(preconditionTypeConfigProvider) { 7 | preconditionTypeConfigProvider.registerPreconditionType({ 8 | label: 'Cluster Size', 9 | key: 'clusterSize', 10 | contextTemplateUrl: require('./additionalFields.html'), 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/preconditions/types/expression/expression.precondition.type.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.config.preconditions.types.expression', []) 6 | .config(function (preconditionTypeConfigProvider) { 7 | preconditionTypeConfigProvider.registerPreconditionType({ 8 | label: 'Expression', 9 | key: 'expression', 10 | contextTemplateUrl: require('./additionalFields.html'), 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/bake/bakeStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.bake', [ 6 | require('./bakeStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/baseProviderStage/baseProviderStage.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 6 | 7 |
8 |
9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.html: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/checkPreconditions/checkPreconditionsStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.pipelines.stage.checkPreconditions', [ 6 | require('../stage.module.js'), 7 | require('../core/stage.core.module.js'), 8 | require('./checkPreconditionsExecutionDetails.controller.js'), 9 | require('./checkPreconditionsStage.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/cloneServerGroup/cloneServerGroupStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.cloneServerGroup', [ 6 | require('./cloneServerGroupStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/deploymentStrategy/deploymentStrategy.module.js'), 10 | require('core/account/account.module.js'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/core/ExecutionBarLabel.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | import {IExecutionStageSummary} from 'core/domain/index'; 3 | 4 | export class ExecutionBarLabel extends React.Component<{ stage: IExecutionStageSummary }, any> { 5 | public render() { 6 | return ( 7 | { this.props.stage.name ? this.props.stage.name : this.props.stage.type } 8 | ); 9 | } 10 | } 11 | 12 | 13 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/core/stage.core.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | import {DISPLAYABLE_TASKS_FILTER} from 'core/task/displayableTasks.filter'; 3 | 4 | let angular = require('angular'); 5 | 6 | module.exports = angular.module('spinnaker.core.pipeline.stage.core', [ 7 | require('./executionSteps.directive.js'), 8 | DISPLAYABLE_TASKS_FILTER 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/core/stageConfigField/stageConfigField.directive.html: -------------------------------------------------------------------------------- 1 |
2 | 6 |
7 | 8 |
9 |
10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/core/stageConfigField/stageConfigField.directive.less: -------------------------------------------------------------------------------- 1 | stage-config-field { 2 | display: block; 3 | label { 4 | font-weight: 600; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/core/stepLabel.html: -------------------------------------------------------------------------------- 1 | {{ step.name | robotToHuman }} 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/createLoadBalancer/createLoadBalancerStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.createLoadBalancer', [ 6 | require('./createLoadBalancerStage.js'), 7 | require('./createLoadBalancerExecutionDetails.controller.js'), 8 | require('../stage.module.js'), 9 | require('../core/stage.core.module.js'), 10 | require('core/account/account.module.js'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/destroyAsg/destroyAsgStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {DESTROY_ASG_EXECUTION_DETAILS_CTRL} from './templates/destroyAsgExecutionDetails.controller'; 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.destroyAsg', [ 8 | require('./destroyAsgStage.js'), 9 | DESTROY_ASG_EXECUTION_DETAILS_CTRL, 10 | require('../stage.module.js'), 11 | require('../core/stage.core.module.js'), 12 | require('core/account/account.module.js'), 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/disableAsg/disableAsgStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {DISABLE_ASG_EXECUTION_DETAILS_CTRL} from './templates/disableAsgExecutionDetails.controller'; 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.disableAsg', [ 8 | require('./disableAsgStage.js'), 9 | require('../stage.module.js'), 10 | require('../core/stage.core.module.js'), 11 | require('core/account/account.module.js'), 12 | DISABLE_ASG_EXECUTION_DETAILS_CTRL, 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/disableCluster/disableClusterStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.disableCluster', [ 6 | require('./disableClusterStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/enableAsg/enableAsgStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {ENABLE_ASG_EXECUTION_DETAILS_CTRL} from './templates/enableAsgExecutionDetails.controller'; 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.enableAsg', [ 8 | require('./enableAsgStage.js'), 9 | require('../stage.module.js'), 10 | require('../core/stage.core.module.js'), 11 | require('core/account/account.module.js'), 12 | ENABLE_ASG_EXECUTION_DETAILS_CTRL, 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/executionWindows/executionWindowsStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | require('./executionWindows.less'); 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.executionWindows', [ 8 | require('./executionWindowsStage.js'), 9 | require('./executionWindows.transformer.js'), 10 | require('./executionWindows.directive.js'), 11 | require('./executionWindowsDetails.controller'), 12 | require('../stage.module.js'), 13 | require('../core/stage.core.module.js'), 14 | ]); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/findAmi/findAmiStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.findAmi', [ 6 | require('./findAmiStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/findImageFromTags/findImageFromTagsStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.findImageFromTags', [ 6 | require('../stage.module.js'), 7 | require('../core/stage.core.module.js'), 8 | require('./findImageFromTagsStage.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/jenkins/jenkinsStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | import {IGOR_SERVICE} from 'core/ci/igor.service'; 5 | import {TIME_FORMATTERS} from 'core/utils/timeFormatters'; 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.jenkins', [ 8 | require('./jenkinsStage.js'), 9 | require('../stage.module.js'), 10 | require('../core/stage.core.module.js'), 11 | TIME_FORMATTERS, 12 | IGOR_SERVICE, 13 | require('./jenkinsExecutionDetails.controller.js'), 14 | ]); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/manualJudgment/manualJudgmentExecutionDetails.less: -------------------------------------------------------------------------------- 1 | .execution-marker { 2 | &.execution-marker-running { 3 | &.stage-type-manualjudgment { 4 | background-color: #F0AD4E; 5 | fill: #F0AD4E; 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/manualJudgment/manualJudgmentStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | require('./manualJudgmentExecutionDetails.less'); 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.manualJudgment', [ 8 | require('../stage.module.js'), 9 | require('../core/stage.core.module.js'), 10 | require('./manualJudgmentExecutionDetails.controller.js'), 11 | require('./manualJudgmentStage.js'), 12 | require('../../../../notification/modal/editNotification.controller.modal.js'), 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/pipeline/pipelineStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {TIME_FORMATTERS} from 'core/utils/timeFormatters'; 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.pipeline', [ 8 | require('./pipelineStage.js'), 9 | require('../stage.module.js'), 10 | require('../core/stage.core.module.js'), 11 | TIME_FORMATTERS, 12 | require('./pipelineExecutionDetails.controller.js'), 13 | require('core/widgets/spelText/spelSelect.component'), 14 | ]); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/resizeAsg/resizeAsgStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.resizeAsg', [ 6 | require('./resizeAsgStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/runJob/runJobStage.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {PIPELINE_CONFIG_PROVIDER} from 'core/pipeline/config/pipelineConfigProvider'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.runJobStage', [ 8 | PIPELINE_CONFIG_PROVIDER 9 | ]) 10 | .config(function(pipelineConfigProvider) { 11 | pipelineConfigProvider.registerStage({ 12 | useBaseProvider: true, 13 | key: 'runJob', 14 | label: 'Run Job', 15 | description: 'Runs a container' 16 | }); 17 | }); 18 | 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/runJob/runJobStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.runJob', [ 6 | require('./runJobStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/scaleDownCluster/scaleDownClusterStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.scaleDownCluster', [ 6 | require('./scaleDownClusterStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/script/scriptStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.script', [ 6 | require('./scriptStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('./scriptExecutionDetails.controller.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/shrinkCluster/shrinkClusterStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {SHRINK_CLUSTER_EXECUTION_DETAILS_CTRL} from './templates/shrinkClusterExecutionDetails.controller'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.core.pipeline.stage.shrinkCluster', [ 8 | require('./shrinkClusterStage.js'), 9 | require('../stage.module.js'), 10 | require('../core/stage.core.module.js'), 11 | require('core/account/account.module.js'), 12 | SHRINK_CLUSTER_EXECUTION_DETAILS_CTRL, 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/tagImage/tagImageStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.tagImage', [ 6 | require('../stage.module.js'), 7 | require('../core/stage.core.module.js'), 8 | require('./tagImageStage.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/wait/waitStage.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 |
6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/stages/wait/waitStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.pipeline.stage.wait', [ 6 | require('./waitStage.js'), 7 | require('../stage.module.js'), 8 | require('../core/stage.core.module.js'), 9 | require('./waitExecutionDetails.controller.js'), 10 | require('core/widgets/spelText/numberInput.component') 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/targetSelect.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.pipeline.targetSelect.directive', [ 7 | ]) 8 | .directive('targetSelect', function() { 9 | return { 10 | restrict: 'E', 11 | scope: { 12 | options: '=', 13 | model: '=' 14 | }, 15 | templateUrl: require('./targetSelect.html'), 16 | }; 17 | }); 18 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/targetSelect.html: -------------------------------------------------------------------------------- 1 | 2 | {{$select.selected.label}} 3 | 4 | 5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/triggers/cron/cronTrigger.less: -------------------------------------------------------------------------------- 1 | trigger { 2 | .cron-gen-main { 3 | .row { 4 | margin-bottom: 10px; 5 | } 6 | input[type="radio"] { 7 | margin-right: 4px; 8 | } 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/triggers/docker/selectorTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/triggers/jenkins/selectorTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/triggers/pipeline/selectorTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/pipeline/config/triggers/travis/selectorTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/LabelTemplate.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import {IStage} from 'core/domain/IStage'; 4 | 5 | interface ILabelTemplateProps { 6 | stage: IStage; 7 | } 8 | 9 | export class LabelTemplate extends React.Component { 10 | public render() { 11 | const LabelTemplate = this.props.stage.labelTemplate; 12 | return (
); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/labelTemplate.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { LabelTemplate } from './LabelTemplate'; 5 | 6 | export const LABEL_TEMPLATE_COMPONENT = 'spinnaker.core.presentation.labelTemplate'; 7 | module(LABEL_TEMPLATE_COMPONENT, []) 8 | .component('labelTemplate', react2angular(LabelTemplate, ['stage'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/less/imports/commonImports.less: -------------------------------------------------------------------------------- 1 | @import "./colors.less"; 2 | @import "./animations.less"; 3 | @import "./mixins.less"; 4 | @import "~bootstrap/less/mixins.less"; 5 | @import "~bootstrap/less/variables.less"; -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/refresher/componentRefresher.directive.html: -------------------------------------------------------------------------------- 1 | 5 | 7 | 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/refresher/componentRefresher.directive.less: -------------------------------------------------------------------------------- 1 | @import "../less/imports/commonImports.less"; 2 | 3 | component-refresher { 4 | .glyphicon-refresh { 5 | &.refresh-disabled { 6 | opacity: 0.5; 7 | } 8 | &.refresh-young { 9 | color: @healthy_green_icon; 10 | } 11 | &.refresh-old { 12 | color: #CEB717; 13 | } 14 | &.refresh-ancient { 15 | color: @unhealthy_red; 16 | } 17 | } 18 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/sortToggle/sorttoggle.directive.html: -------------------------------------------------------------------------------- 1 | 4 | {{ label }} 5 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/presentation/standalone.view.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/cluster/inconsistentBuilds.tooltip.html: -------------------------------------------------------------------------------- 1 | 2 | Build #{{build.buildNumber}}: deployed {{build.deployed | relativeTime }} 3 | -------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/cluster/projectClusterRefresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

Cluster data is refreshing

2 |

(click to refresh)

3 |

Last refresh: {{vm.state.lastRefresh | timestamp }}
({{vm.state.lastRefresh | relativeTime }})

4 |

Note: Due to caching, data may be delayed up to 2 minutes

-------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/clusterRefresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

Cluster data is refreshing.

2 |

(click to refresh)

3 |

Last refresh:
{{vm.state.lastRefresh | timestamp }}
({{vm.state.lastRefresh | relativeTime }})

-------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/executionRefresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

Pipeline data is refreshing.

2 |

(click to refresh)

3 |

Last refresh:
{{vm.state.lastRefresh | timestamp }}
({{vm.state.lastRefresh | relativeTime }})

-------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/pipeline/projectPipeline.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { ProjectPipeline } from './ProjectPipeline'; 5 | 6 | export const PROJECT_PIPELINE_COMPONENT = 'spinnaker.core.projects.dashboard.pipelines.projectPipeline.component'; 7 | module(PROJECT_PIPELINE_COMPONENT, []) 8 | .component('projectPipeline', react2angular(ProjectPipeline, ['execution'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/projects/dashboard/regionFilter/regionFilter.component.less: -------------------------------------------------------------------------------- 1 | region-filter { 2 | .region-filter-button { 3 | margin-right: 5px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/projects/projects.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {PROJECTS_STATES_CONFIG} from './projects.states'; 6 | 7 | module.exports = angular 8 | .module('spinnaker.projects', [ 9 | PROJECTS_STATES_CONFIG, 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/core/search/global/globalSearch.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | require('../../../../../fonts/spinnaker/icons.css'); 4 | require('./globalSearch.less'); 5 | 6 | let angular = require('angular'); 7 | 8 | module.exports = angular.module('spinnaker.core.search.global', [ 9 | require('../../utils/jQuery.js'), 10 | require('./globalSearch.directive.js'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/search/infrastructure/search.infrastructure.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | require('./infrastructure.less'); 6 | 7 | module.exports = angular.module('spinnaker.search.infrastructure', [ 8 | require('./infrastructure.controller.js') 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/search/search.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {SEARCH_SERVICE} from './search.service'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.core.search', [ 8 | require('./infrastructure/search.infrastructure.module.js'), 9 | require('./global/globalSearch.module.js'), 10 | SEARCH_SERVICE, 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/search/searchResult/searchResult.directive.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | {{ item.displayName }} 5 | -------------------------------------------------------------------------------- /app/scripts/modules/core/search/searchResult/searchResult.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.core.search.searchResult.directive', [ 7 | require('../../account/accountTag.directive.js') 8 | ]) 9 | .directive('searchResult', function () { 10 | return { 11 | restrict: 'E', 12 | templateUrl: require('./searchResult.directive.html'), 13 | scope: { 14 | item: '=' 15 | }, 16 | }; 17 | }); 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /app/scripts/modules/core/securityGroup/securityGroup.pod.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | require('./securityGroupPod.directive.less'); 6 | 7 | module.exports = angular.module('spinnaker.core.securityGroup.pod.directive', []) 8 | .directive('securityGroupPod', function() { 9 | return { 10 | restrict: 'E', 11 | scope: { 12 | grouping: '=', 13 | application: '=', 14 | parentHeading: '=', 15 | }, 16 | templateUrl: require('./securityGroupPod.html'), 17 | }; 18 | }); 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/configure/common/costFactor.html: -------------------------------------------------------------------------------- 1 | 2 | {{used}}{{unused}} 3 | 4 | 5 | {{min.used}}{{min.unused}} 6 | – 7 | {{max.used}}{{max.unused}} 8 | 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/configure/common/dirtyInstanceTypeNotification.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.core.serverGroup.dirtyInstanceTypeNotification.component', []) 6 | .component('dirtyInstanceTypeNotification', { 7 | bindings: { 8 | command: '=' 9 | }, 10 | templateUrl: require('./dirtyInstanceTypeNotification.component.html') 11 | }); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/configure/common/instanceTypeSelector.directive.less: -------------------------------------------------------------------------------- 1 | @import '../../../presentation/less/imports/commonImports.less'; 2 | 3 | instance-type-selector { 4 | tr { 5 | &.unavailable { 6 | opacity: 0.5; 7 | } 8 | } 9 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/configure/common/serverGroup.configure.common.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.serverGroup.configure.common', [ 6 | require('./serverGroupConfiguration.service.js') 7 | ]); 8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/details/multipleServerGroup.component.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 | {{$ctrl.serverGroup.name}} 5 |
6 |
7 |
8 | 9 | {{$ctrl.serverGroup.region}} 10 | 11 |
12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/details/multipleServerGroup.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const angular = require('angular'); 4 | 5 | require('./multipleServerGroup.component.less'); 6 | 7 | module.exports = angular 8 | .module('spinnaker.core.serverGroup.details.multipleServerGroup.component', []) 9 | .component('multipleServerGroup', { 10 | bindings: { 11 | serverGroup: '=', 12 | }, 13 | templateUrl: require('./multipleServerGroup.component.html'), 14 | }); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/details/multipleServerGroup.component.less: -------------------------------------------------------------------------------- 1 | @import "../../presentation/less/imports/commonImports.less"; 2 | 3 | multiple-server-group { 4 | display: block; 5 | padding: 0 0 15px 0; 6 | margin: 0 15px; 7 | .server-group-name { 8 | font-weight: 600; 9 | } 10 | .server-group-details { 11 | padding-left: 26px; 12 | } 13 | border-top: 1px solid @mid_light_grey; 14 | 15 | &:last-child { 16 | border-bottom: 1px solid @mid_light_grey; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/details/userData.html: -------------------------------------------------------------------------------- 1 |
2 | 3 | 6 |
7 | 10 | 13 |
14 |
15 | -------------------------------------------------------------------------------- /app/scripts/modules/core/serverGroup/serverGroup.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | import {SERVER_GROUP_STATES} from './serverGroup.states'; 6 | 7 | module.exports = angular 8 | .module('spinnaker.core.serverGroup', [ 9 | require('./serverGroup.transformer.js'), 10 | require('./configure/common/serverGroup.configure.common.module.js'), 11 | require('./pod/runningTasksTag.directive.js'), 12 | require('./details/multipleServerGroups.controller.js'), 13 | require('./serverGroup.dataSource'), 14 | SERVER_GROUP_STATES, 15 | ]); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/snapshot/diff/snapshotDiff.modal.less: -------------------------------------------------------------------------------- 1 | .snapshot-history { 2 | [for="compare-account"] { 3 | margin-left: 5px; 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/core/state.service.ts: -------------------------------------------------------------------------------- 1 | import {IStateParamsService, IStateService} from 'angular-ui-router'; 2 | 3 | export let stateService: IStateService = undefined; 4 | export let stateParamsService: IStateParamsService = undefined; 5 | export const StateServiceInject = ($injector: any) => { 6 | stateService = $injector.get('$state'); 7 | stateParamsService = $injector.get('$stateParams'); 8 | }; 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/subnet/subnetTag.component.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/core/subnet/subnetTag.component.html -------------------------------------------------------------------------------- /app/scripts/modules/core/task/modal/reason.directive.html: -------------------------------------------------------------------------------- 1 |
2 |
Reason
3 |
4 | 6 |
7 |
8 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/modal/reason.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.task.reason.directive', []) 6 | .directive('taskReason', function () { 7 | return { 8 | restrict: 'E', 9 | bindToController: { 10 | command: '=', 11 | }, 12 | scope: {}, 13 | controller: angular.noop, 14 | controllerAs: 'vm', 15 | templateUrl: require('./reason.directive.html') 16 | }; 17 | }); 18 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/monitor/multiTaskMonitor.component.less: -------------------------------------------------------------------------------- 1 | multi-task-monitor { 2 | .overlay-modal-status { 3 | font-size: 90%; 4 | } 5 | ul.task-progress { 6 | padding-left: 0; 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/monitor/taskMonitor.directive.less: -------------------------------------------------------------------------------- 1 | @import "../../presentation/less/imports/commonImports.less"; 2 | 3 | task-monitor { 4 | display: block; 5 | } 6 | .not-started { 7 | color: @mid_lighter_grey; 8 | } 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/monitor/taskMonitor.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.tasks.monitor', [ 7 | require('./taskMonitor.directive'), 8 | require('./multiTaskMonitor.component'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/statusGlyph.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.task.statusGlyph.directive', []) 6 | .directive('statusGlyph', function() { 7 | return { 8 | restrict: 'E', 9 | replace: true, 10 | scope: { 11 | item: '=', 12 | }, 13 | templateUrl: require('./statusGlyph.html'), 14 | }; 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/statusGlyph.html: -------------------------------------------------------------------------------- 1 | 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/taskProgressBar.directive.html: -------------------------------------------------------------------------------- 1 |
2 |
9 | 10 |
11 |
12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/task/verification/userVerification.directive.less: -------------------------------------------------------------------------------- 1 | @import "../../presentation/less/imports/commonImports.less"; 2 | 3 | user-verification { 4 | text-align: right; 5 | font-size: 90%; 6 | display: block; 7 | margin-top: 0; 8 | margin-bottom: 10px; 9 | .verification-text { 10 | font-weight: 600; 11 | color: @unhealthy_red; 12 | } 13 | .form-group { 14 | .input-sm { 15 | height: 25px; 16 | padding: 5px; 17 | width: 110px; 18 | text-align: center; 19 | margin-left: 5px; 20 | } 21 | } 22 | } -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/appendTransform.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.utils.appendTransform', []) 6 | .factory('appendTransform', function($http) { 7 | function append(defaults, transform) { 8 | defaults = angular.isArray(defaults) ? defaults : [defaults]; 9 | return defaults.concat(transform); 10 | } 11 | 12 | return function(transform) { 13 | return append($http.defaults.transformResponse, transform); 14 | }; 15 | 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/clipboard/copyToClipboard.component.less: -------------------------------------------------------------------------------- 1 | copy-to-clipboard { 2 | .clipboard-btn { 3 | border-width: 0; 4 | background-color: transparent; 5 | color: #777; 6 | display: inline-block; 7 | } 8 | .clipboard-btn:hover { 9 | background-color: transparent; 10 | } 11 | &.copy-to-clipboard-sm { 12 | .clipboard-btn { 13 | margin-bottom: 3px; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/jQuery.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | let $ = require('jquery'); 5 | 6 | module.exports = angular 7 | .module('spinnaker.core.utils.jQuery', []) 8 | .constant('$', $); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/later/later.d.ts: -------------------------------------------------------------------------------- 1 | export const later: any; 2 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/moment.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let moment = require('moment-timezone'); 4 | let angular = require('angular'); 5 | 6 | module.exports = angular.module('spinnaker.core.utils.moment', []) 7 | .factory('momentService', function() { 8 | return moment; 9 | }); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/stickyHeader/stickyHeader.less: -------------------------------------------------------------------------------- 1 | [sticky-headers] { 2 | .heading-sticky { 3 | position: fixed; 4 | z-index: 2; 5 | margin: 0; 6 | .sticky-only { 7 | display: inline; 8 | } 9 | } 10 | .not-sticky { 11 | top: unset; 12 | z-index: 3; 13 | } 14 | } 15 | 16 | .sticky-only { 17 | display: none; 18 | } 19 | -------------------------------------------------------------------------------- /app/scripts/modules/core/utils/waypoints/waypoint.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.utils.waypoints.container.directive', [ 6 | require('./waypoint.service.js'), 7 | 8 | ]) 9 | .directive('waypoint', function () { 10 | return { 11 | restrict: 'A', 12 | link: { 13 | post: function (scope, elem) { 14 | scope.$on('$destroy', function() { 15 | elem.removeData(); 16 | }); 17 | } 18 | } 19 | }; 20 | }); 21 | -------------------------------------------------------------------------------- /app/scripts/modules/core/validation/validation.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.validation', [ 6 | require('./validateUnique.directive.js'), 7 | require('./triggerValidation.directive.js'), 8 | require('./validationError.directive.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/core/validation/validationError.directive.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.validation.error.directive', []) 6 | .directive('validationError', function () { 7 | return { 8 | restrict: 'E', 9 | templateUrl: require('./validationError.html'), 10 | scope: { 11 | message: '@' 12 | } 13 | }; 14 | } 15 | ); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/validation/validationError.html: -------------------------------------------------------------------------------- 1 |
2 | {{message}} 3 |
4 | -------------------------------------------------------------------------------- /app/scripts/modules/core/whatsNew/whatsNew.directive.html: -------------------------------------------------------------------------------- 1 |
  • 2 | 3 | 4 | 5 | 6 |
  • 7 | -------------------------------------------------------------------------------- /app/scripts/modules/core/whatsNew/whatsNew.directive.modal.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 |
    4 | 5 | 8 | 11 | 14 | 15 |
    16 |
    17 | 18 | -------------------------------------------------------------------------------- /app/scripts/modules/core/whatsNew/whatsNew.less: -------------------------------------------------------------------------------- 1 | @import "../presentation/less/imports/commonImports.less"; 2 | 3 | .navbar-inverse .navbar-nav > li.whats-new > a { 4 | &.unread { 5 | color: @unhealthy_orange; 6 | @media (min-width: 768px) and (max-width: 992px) { 7 | line-height: 20px; 8 | } 9 | font-weight: 400; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/scripts/modules/core/widgets/actionIcons/actionIcons.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.core.actionIcons.component', []) 6 | .component('actionIcons', { 7 | bindings: { 8 | edit: '&', 9 | editInfo: '@', 10 | destroy: '&', 11 | destroyInfo: '@' 12 | }, 13 | templateUrl: require('./actionIcons.component.html'), 14 | controller: angular.noop 15 | }); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/core/widgets/index.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | 3 | export const CORE_WIDGETS_MODULE = 'spinnaker.core.widgets'; 4 | module(CORE_WIDGETS_MODULE, [ 5 | require('./accountNamespaceClusterSelector.component'), 6 | require('./accountRegionClusterSelector.component'), 7 | require('./scopeClusterSelector.directive'), 8 | require('./notifier/notifier.component.js'), 9 | require('./spelText/spelText.decorator'), 10 | require('./spelText/numberInput.component'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/docker/docker.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | // load all templates into the $templateCache 6 | let templates = require.context('./', true, /\.html$/); 7 | templates.keys().forEach(function(key) { 8 | templates(key); 9 | }); 10 | 11 | module.exports = angular.module('spinnaker.deck.docker', [ 12 | require('./pipeline/stages/bake/dockerBakeStage.js') 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/google/autoscalingPolicy/components/basicSettings/basicSettings.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.gce.autoscalingPolicy.basicSettings.component', []) 6 | .component('gceAutoscalingPolicyBasicSettings', { 7 | bindings: { 8 | policy: '=' 9 | }, 10 | templateUrl: require('./basicSettings.component.html') 11 | }); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/cache/cacheRefreshTooltip.html: -------------------------------------------------------------------------------- 1 |

    {{$ctrl.capitalizedKey}} data is refreshing

    2 |

    (click to refresh)

    3 |

    Last refresh: {{$ctrl.getRefreshTime() | timestamp }}

    4 | -------------------------------------------------------------------------------- /app/scripts/modules/google/common/footer.directive.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/autoHealingPolicy.ts: -------------------------------------------------------------------------------- 1 | export interface IGceAutoHealingPolicy { 2 | healthCheck?: string; 3 | initialDelaySec?: number; 4 | maxUnavailable?: IMaxUnavailable; 5 | } 6 | 7 | interface IMaxUnavailable { 8 | fixed?: number; 9 | percent?: number; 10 | } 11 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/backendService.ts: -------------------------------------------------------------------------------- 1 | import {IGceHealthCheck} from './healthCheck'; 2 | 3 | export interface IGceBackendService { 4 | name: string; 5 | backends: any[]; 6 | healthCheck: IGceHealthCheck; 7 | sessionAffinity: string; 8 | }; 9 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/healthCheck.ts: -------------------------------------------------------------------------------- 1 | export interface IGceHealthCheck { 2 | account: string; 3 | name: string; 4 | requestPath: string; 5 | port: number; 6 | healthCheckType: string; 7 | checkIntervalSec: number; 8 | timeoutSec: number; 9 | unhealthyThreshold: number; 10 | healthyThreshold: number; 11 | } 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/index.ts: -------------------------------------------------------------------------------- 1 | export * from './autoHealingPolicy'; 2 | export * from './backendService'; 3 | export * from './healthCheck'; 4 | export * from './loadBalancer'; 5 | export * from './network'; 6 | export * from './serverGroup' 7 | export * from './subnet'; 8 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/network.ts: -------------------------------------------------------------------------------- 1 | export interface IGceNetwork { 2 | account: string; 3 | autoCreateSubnets: boolean; 4 | cloudProvider: string; 5 | id: string; 6 | name: string; 7 | region: string; 8 | selfLink: string; 9 | subnets: string[]; 10 | } 11 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/serverGroup.ts: -------------------------------------------------------------------------------- 1 | import {IGceAutoHealingPolicy} from './autoHealingPolicy'; 2 | import {ServerGroup} from 'core/domain/serverGroup'; 3 | 4 | // TODO(dpeach): fill in the remaining GCE specific properties. 5 | export interface IGceServerGroup extends ServerGroup { 6 | autoHealingPolicy?: IGceAutoHealingPolicy; 7 | } 8 | -------------------------------------------------------------------------------- /app/scripts/modules/google/domain/subnet.ts: -------------------------------------------------------------------------------- 1 | export interface IGceSubnet { 2 | account: string; 3 | cidrBlock: string; 4 | gatewayAddress: string; 5 | id: string; 6 | name: string; 7 | network: string; 8 | purpose: string; 9 | region: string; 10 | selfLink: string; 11 | type: string; 12 | } 13 | -------------------------------------------------------------------------------- /app/scripts/modules/google/gce.settings.ts: -------------------------------------------------------------------------------- 1 | import { IProviderSettings, SETTINGS } from 'core/config/settings'; 2 | 3 | export interface IGCEProviderSettings extends IProviderSettings { 4 | defaults: { 5 | account?: string; 6 | region?: string; 7 | zone?: string; 8 | }; 9 | } 10 | 11 | export const GCEProviderSettings: IGCEProviderSettings = SETTINGS.providers.gce || { defaults: {} }; 12 | if (GCEProviderSettings) { 13 | GCEProviderSettings.resetToOriginal = SETTINGS.resetToOriginal; 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/google/loadBalancer/configure/common/sessionAffinityNameMaps.ts: -------------------------------------------------------------------------------- 1 | import * as _ from 'lodash'; 2 | 3 | interface StringMap { 4 | [key: string]: string; 5 | } 6 | 7 | export const sessionAffinityViewToModelMap: StringMap = { 8 | 'None': 'NONE', 9 | 'Client IP': 'CLIENT_IP', 10 | 'Generated Cookie': 'GENERATED_COOKIE', 11 | 'Client IP and protocol': 'CLIENT_IP_PROTO', 12 | 'Client IP, port and protocol': 'CLIENT_IP_PORT_PROTO', 13 | }; 14 | 15 | export const sessionAffinityModelToViewMap = _.invert(sessionAffinityViewToModelMap); 16 | -------------------------------------------------------------------------------- /app/scripts/modules/google/loadBalancer/configure/http/basicSettings/basicSettings.html: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | -------------------------------------------------------------------------------- /app/scripts/modules/google/loadBalancer/configure/http/httpLoadBalancerWizard.component.less: -------------------------------------------------------------------------------- 1 | .gce-http-lb { 2 | input[type="checkbox"] { 3 | margin: 10px 0 0 5px; 4 | position: absolute; 5 | } 6 | 7 | help-field.help-field-absolute { 8 | span { 9 | position: absolute; 10 | top: 7px; 11 | right: 2px; 12 | } 13 | } 14 | 15 | .ui-select-multiple[tagging] { 16 | width: 220px; 17 | } 18 | 19 | gce-host-rule { 20 | hr.host-rule { 21 | border-top: 1px solid #a5a5a5; 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /app/scripts/modules/google/loadBalancer/configure/http/pathRule/pathRule.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.gce.httpLoadBalancer.pathRule.component', []) 6 | .component('gcePathRule', { 7 | bindings: { 8 | pathRule: '=', 9 | command: '=', 10 | index: '=', 11 | deletePathRule: '&' 12 | }, 13 | templateUrl: require('./pathRule.component.html') 14 | }); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/google/loadBalancer/details/healthCheck/healthCheck.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.gce.loadBalancer.details.healthCheck.component', []) 6 | .component('gceHealthCheck', { 7 | bindings: { 8 | healthCheck: '=' 9 | }, 10 | templateUrl: require('./healthCheck.component.html') 11 | }); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/logo/gce.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-gce { 3 | background: url('gce.logo.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/google/logo/gce.logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/google/logo/gce.logo.png -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Clone Server Group: 3 | {{step.context.source.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 7 | 8 | 9 |
    10 | 11 | 12 | 13 |
    14 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/findImageFromTags/findImageFromTagsStage.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 5 | 6 | 7 | 8 | 9 |
    10 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/resizeAsg/resizeAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/pipeline/stages/tagImage/tagImageStage.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 9 | 10 | 11 | 12 | 13 | 14 |
    15 | -------------------------------------------------------------------------------- /app/scripts/modules/google/securityGroup/configure/securityGroup.configure.less: -------------------------------------------------------------------------------- 1 | .gce-security-group-wizard { 2 | .sm-label-left { 3 | border-bottom: 2px solid #ddd; 4 | } 5 | 6 | .table { 7 | border-top: 2px solid white; 8 | 9 | .fixed-width { 10 | width: 100%; 11 | } 12 | 13 | .table-label { 14 | padding: .8rem 0 0 1rem; 15 | } 16 | 17 | .table-remove-button { 18 | padding: 0 0 1rem 1rem; 19 | margin-right: 65%; 20 | } 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /app/scripts/modules/google/securityGroup/securityGroup.reader.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.gce.securityGroup.reader', [ 6 | ]) 7 | .factory('gceSecurityGroupReader', function () { 8 | 9 | function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) { 10 | return indexedSecurityGroups[container.account].global[securityGroupId]; 11 | } 12 | 13 | return { 14 | resolveIndexedSecurityGroup: resolveIndexedSecurityGroup, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/google/securityGroup/securityGroup.transformer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.gce.securityGroup.transformer', [ 6 | ]) 7 | .factory('gceSecurityGroupTransformer', function ($q) { 8 | 9 | function normalizeSecurityGroup(securityGroup) { 10 | return $q.when(securityGroup); // no-op 11 | } 12 | 13 | return { 14 | normalizeSecurityGroup: normalizeSecurityGroup, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/capacity/advancedCapacitySelector.component.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.gce.serverGroup.configure.advancedCapacitySelector.component', []) 6 | .component('gceServerGroupAdvancedCapacitySelector', { 7 | bindings: { 8 | command: '=' 9 | }, 10 | templateUrl: require('./advancedCapacitySelector.component.html') 11 | }); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/capacity/zones.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 | 5 |
    6 |
    7 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/hiddenMetadataKeys.value.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.deck.gce.serverGroup.hiddenMetadataKeys.value',[]) 6 | .value('gceServerGroupHiddenMetadataKeys', [ 7 | 'load-balancer-names', 8 | 'global-load-balancer-names', 9 | 'backend-service-names', 10 | 'load-balancing-policy' 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/loadBalancers/loadBalancers.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 |
    5 |
    6 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/loadBalancingPolicy/loadBalancingPolicySelector.component.less: -------------------------------------------------------------------------------- 1 | gce-load-balancing-policy-selector { 2 | .collapsible-subsection { 3 | .collapsible-subheading { 4 | padding-left: 4%; 5 | } 6 | 7 | .ng-invalid { 8 | border: 1px solid #a94442; 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/securityGroups/securityGroups.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 | 4 |
    5 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/configure/wizard/zones/regionalSelector.directive.html: -------------------------------------------------------------------------------- 1 |
    2 |
    Regional
    3 |
    4 | 7 |
    8 |
    9 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/details/autoHealingPolicy/modal/upsertAutoHealingPolicy.modal.less: -------------------------------------------------------------------------------- 1 | .gce-auto-healing-policy-modal { 2 | .form-group { 3 | width: 100%; 4 | margin-top: 10px; 5 | } 6 | 7 | .input-group { 8 | width: 100%; 9 | .input-group-addon { 10 | width: 20%; 11 | } 12 | } 13 | 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/google/serverGroup/details/autoscalingPolicy/modal/upsertAutoscalingPolicy.modal.less: -------------------------------------------------------------------------------- 1 | .gce-scaling-policy-modal { 2 | .error-message { 3 | margin-top: 4px; 4 | } 5 | 6 | input.form-control { 7 | margin-bottom: 2px; 8 | width: 100%; 9 | } 10 | 11 | .collapsible-subsection { 12 | .content-body { 13 | padding-left: 0; 14 | } 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/annotation/annotationConfigurer.component.less: -------------------------------------------------------------------------------- 1 | kubernetes-annotation-configurer { 2 | .sm-label-left { 3 | border-bottom: 1px solid #ddd; 4 | } 5 | 6 | .table { 7 | border-top: 2px solid white; 8 | 9 | .table-label { 10 | padding: .8rem 0 0 1rem; 11 | } 12 | 13 | .table-remove-button { 14 | padding: 0 0 1rem 1rem; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/cluster/cluster.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.cluster.kubernetes', [ 6 | require('./configure/CommandBuilder.js'), 7 | ]); 8 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/container/securityContext/seLinuxOptionsSelector.component.html: -------------------------------------------------------------------------------- 1 |
    2 | SELinux Options 3 |
    4 |
    5 |
    6 | {{::field.label}} 7 | 8 |
    9 |
    10 | 13 |
    14 |
    15 | 16 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/instance/details/details.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.instance.details.kubernetes', [ 6 | require('core/account/account.module.js'), 7 | require('./details.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/loadBalancer/configure/configure.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.loadBalancer.configure.kubernetes', [ 6 | require('core/account/account.module.js'), 7 | require('./wizard/upsert.controller.js'), 8 | require('./wizard/ports.controller.js'), 9 | require('./wizard/advancedSettings.controller.js'), 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/loadBalancer/details/details.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.loadBalancer.details.kubernetes', [ 6 | require('core/account/account.module.js'), 7 | require('./details.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/logo/kubernetes.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-kubernetes { 3 | background: url('kubernetes.icon.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/logo/kubernetes.logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/kubernetes/logo/kubernetes.logo.png -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 7 | 8 | 9 |
    10 | 11 | 12 | 13 |
    14 | 15 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.namespace}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/disableAsg/disableAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 8 | 9 | 10 |
    11 | 12 | 13 | 14 |
    15 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.namespace}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/enableAsg/enableAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 4 | 8 | 9 | 10 |
    11 | 12 | 13 | 14 |
    15 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.namespace}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/resizeAsg/resizeStage.less: -------------------------------------------------------------------------------- 1 | .kubernetes-resize-stage { 2 | .nested-label { 3 | margin-left: 0; 4 | margin-top: 7px; 5 | padding: 0; 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/pipeline/stages/resizeAsg/resizeStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.namespace}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/securityGroup/configure/configure.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.securityGroup.configure.kubernetes', [ 6 | require('./wizard/backend.controller.js'), 7 | require('./wizard/rules.controller.js'), 8 | require('./wizard/upsert.controller.js'), 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/securityGroup/configure/wizard/backend.controller.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.securityGroup.configure.kubernetes.backend', [ ]) 6 | .controller('kubernetesSecurityGroupBackendController', function() { 7 | this.maxPort = 65535; 8 | }); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/securityGroup/details/details.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.securityGroup.details.kubernetes', [ 6 | require('core/account/account.module.js'), 7 | require('./details.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/securityGroup/reader.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.kubernetes.securityGroup.reader', [ 6 | ]) 7 | .factory('kubernetesSecurityGroupReader', function () { 8 | 9 | function resolveIndexedSecurityGroup(indexedSecurityGroups, container, securityGroupId) { 10 | return indexedSecurityGroups[container.account][container.region][securityGroupId]; 11 | } 12 | 13 | return { 14 | resolveIndexedSecurityGroup: resolveIndexedSecurityGroup, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/kubernetes/serverGroup/details/details.kubernetes.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | import {KUBERNETES_LIFECYCLE_HOOK_DETAILS} from './lifecycleHookDetails.component'; 4 | 5 | let angular = require('angular'); 6 | 7 | module.exports = angular.module('spinnaker.serverGroup.details.kubernetes', [ 8 | require('core/account/account.module.js'), 9 | require('./details.controller.js'), 10 | require('./resize/resize.controller.js'), 11 | require('./rollback/rollback.controller.js'), 12 | KUBERNETES_LIFECYCLE_HOOK_DETAILS, 13 | ]); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/application/index.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | import {NETFLIX_CREATE_APPLICATION_MODAL_CONTROLLER} from './netflixCreateApplicationModal.controller'; 3 | import {NETFLIX_EDIT_APPLICATION_MODAL_CONTROLLER} from './netflixEditApplicationModal.controller'; 4 | 5 | export const NETFLIX_APPLICATION_MODULE = 'spinnaker.netflix.application.module'; 6 | module(NETFLIX_APPLICATION_MODULE, [ 7 | NETFLIX_CREATE_APPLICATION_MODAL_CONTROLLER, NETFLIX_EDIT_APPLICATION_MODAL_CONTROLLER 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/blesk/blesk.less: -------------------------------------------------------------------------------- 1 | @import "~core/presentation/less/imports/colors.less"; 2 | 3 | .blesk-wrapper { 4 | background-color: @pod_header_blue; 5 | flex: 0 0; 6 | #blesk { 7 | flex: 0 0 auto; 8 | padding: 0; 9 | .bleskOuter { 10 | z-index: 10; 11 | border-radius: 0; 12 | margin-bottom: -10px; 13 | } 14 | .blesk-ui-info { 15 | background-color: @lightest_grey; 16 | border-color: @spinnaker-link-color; 17 | color: @spinnaker-link-color; 18 | } 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/canary/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.core.canary', [ 7 | require('./canaryAnalysisNameSelector.directive.js'), 8 | require('./canaryConfigSelector.directive') 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/ci/ci.filter.model.ts: -------------------------------------------------------------------------------- 1 | import {module} from 'angular'; 2 | 3 | export class CiFilterModel { 4 | public searchFilter: string; 5 | } 6 | 7 | export const CI_FILTER_MODEL = 'spinnaker.netflix.ci.filter.model'; 8 | 9 | module(CI_FILTER_MODEL, []) 10 | .service('CiFilterModel', CiFilterModel); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/ci/trigger/selectorTemplate.html: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/dataNav/fastPropertyRollouts.html: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 |
    5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/dataNav/fpRollout.less: -------------------------------------------------------------------------------- 1 | .fp-rollout { 2 | display: flex; 3 | flex: 1 1 auto; 4 | 5 | .execution-groups-header { 6 | h3, .pull-right { 7 | display: none; 8 | } 9 | } 10 | .execution-group-heading { 11 | .execution-group-actions { 12 | display: none; 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/domain/canaryDeployment.interface.ts: -------------------------------------------------------------------------------- 1 | export interface ICanaryDeployment { 2 | region: string; 3 | accountName: string; 4 | baseline: string; 5 | canary: string; 6 | type: string; 7 | } 8 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/domain/impactCounts.interface.ts: -------------------------------------------------------------------------------- 1 | export interface IImpactCounts { 2 | down?: number; 3 | up: number; 4 | failed?: number; 5 | outOfService?: number; 6 | starting?: number; 7 | succeeded?: number; 8 | total?: number; 9 | unknown?: number; 10 | } 11 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/domain/propertyCommandType.enum.ts: -------------------------------------------------------------------------------- 1 | export enum PropertyCommandType { 2 | CREATE, 3 | UPDATE, 4 | DELETE 5 | } 6 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/mainApplicationProperties.html: -------------------------------------------------------------------------------- 1 |
    2 | 3 |
    4 |
    5 | 6 | 7 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/view/fastPropertyPodTable.html: -------------------------------------------------------------------------------- 1 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/wizard/propertyReview/propertyReview.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | 3 | class FastPropertyDetailsComponent implements ng.IComponentOptions { 4 | public templateUrl: string = require('./propertyReview.component.html'); 5 | public bindings: any = { 6 | command: '=' 7 | }; 8 | } 9 | 10 | export const FAST_PROPERTY_REVIEW_COMPONENT = 'spinnaker.netflix.fastProperties.review.component'; 11 | 12 | module(FAST_PROPERTY_REVIEW_COMPONENT, [ 13 | ]) 14 | .component('fastPropertyReview', new FastPropertyDetailsComponent()); 15 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/wizard/propertyStrategy/forcePushStrategyForm.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/netflix/fastProperties/wizard/propertyStrategy/forcePushStrategyForm.html -------------------------------------------------------------------------------- /app/scripts/modules/netflix/fastProperties/wizard/propertyStrategy/manualStrategyForm.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/netflix/fastProperties/wizard/propertyStrategy/manualStrategyForm.html -------------------------------------------------------------------------------- /app/scripts/modules/netflix/feedback/feedback.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { Feedback } from './Feedback'; 5 | 6 | export const FEEDBACK_COMPONENT = 'spinnaker.netflix.feedback'; 7 | module(FEEDBACK_COMPONENT, []) 8 | .component('feedback', react2angular(Feedback)); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/migrator/pipeline/pipeline.migrator.directive.html: -------------------------------------------------------------------------------- 1 | 2 | {{migrated ? 'View migrated pipeline' : 'Migrate to VPC0'}} 3 | 4 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/migrator/serverGroup/serverGroup.migrator.directive.html: -------------------------------------------------------------------------------- 1 | Migrate to VPC0 2 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/config/properties/index.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.netflix.pipeline.config.properties', [ 7 | require('./../../stage/properties/create/persistedPropertyList.component.js'), 8 | require('./../../stage/properties/create/property.component.js') 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/canary/canaryDeployment/canaryDeployment.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.netflix.pipeline.stage.canary.canaryDeployment', [ 6 | require('./canaryDeploymentStage.js'), 7 | require('./canaryDeploymentExecutionDetails.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/canary/canaryDeployment/canaryDeploymentStage.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.netflix.pipeline.stage.canary.canaryDeploymentStage', []) 6 | .config(function(pipelineConfigProvider) { 7 | pipelineConfigProvider.registerStage({ 8 | synthetic: true, 9 | key: 'canaryDeployment', 10 | executionDetailsUrl: require('./canaryDeploymentExecutionDetails.html'), 11 | }); 12 | }); 13 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/canary/canaryScore.component.ts: -------------------------------------------------------------------------------- 1 | import { module } from 'angular'; 2 | import { react2angular } from 'react2angular'; 3 | 4 | import { CanaryScore } from './CanaryScore'; 5 | 6 | export const CANARY_SCORE_COMPONENT = 'spinnaker.netflix.pipeline.stages.canary.score.component'; 7 | module(CANARY_SCORE_COMPONENT, []) 8 | .component('canaryScore', react2angular(CanaryScore, ['score', 'health', 'result', 'inverse'])); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/properties/create/PropertyExecutionLabel.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react'; 2 | 3 | import {IExecutionStageSummary} from 'core/domain/index'; 4 | 5 | export class PropertyExecutionLabel extends React.Component<{ stage: IExecutionStageSummary }, any> { 6 | public render() { 7 | return ( 8 | 9 | {this.props.stage.name} {this.props.stage.masterStage.context.propertyAction} 10 | 11 | ); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/properties/propertyStage.less: -------------------------------------------------------------------------------- 1 | h4.section { 2 | border-top: 1px solid #d9d9d9; 3 | padding: 10px 0; 4 | } 5 | 6 | p.align-text { 7 | margin-left: 9px; 8 | } 9 | 10 | p.nudge { 11 | margin-left: 9px; 12 | } 13 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/quickPatchAsg/bulkQuickPatchStage/bulkQuickPatchStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.netflix.pipeline.stage.quickPatchAsg.bulkQuickPatch', [ 6 | require('./bulkQuickPatchStage.js'), 7 | require('core/pipeline/config/stages/stage.module.js'), 8 | require('core/pipeline/config/stages/core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | require('./bulkQuickPatchStageExecutionDetails.controller.js'), 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/pipeline/stage/quickPatchAsg/quickPatchAsgStage.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.netflix.pipeline.stage.quickPatchAsg', [ 6 | require('./quickPatchAsgStage.js'), 7 | require('core/pipeline/config/stages/stage.module.js'), 8 | require('core/pipeline/config/stages/core/stage.core.module.js'), 9 | require('core/account/account.module.js'), 10 | require('./quickPatchAsgExecutionDetails.controller.js') 11 | ]); 12 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/report/reservationReport.component.less: -------------------------------------------------------------------------------- 1 | @import "../../core/presentation/less/imports/commonImports.less"; 2 | reservation-report { 3 | display: block; 4 | margin-bottom: 20px; 5 | .reservation-report { 6 | border: 1px solid @light_grey; 7 | background-color: @lightest_grey; 8 | padding: 10px; 9 | .table { 10 | margin-bottom: 0; 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/serverGroup/networking/networking.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.netflix.serverGroup.details.networking', [ 7 | require('./networking.directive.js'), 8 | require('./elasticIp.read.service.js'), 9 | require('./elasticIp.write.service.js') 10 | ]); 11 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/tableau/application/appTableau.html: -------------------------------------------------------------------------------- 1 |
    2 | 4 |

    5 | There was an error loading the analytics dashboard. Please try again later. 6 |

    7 |
    8 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/tableau/summary/summaryTableau.html: -------------------------------------------------------------------------------- 1 |
    2 | 5 |

    6 | There was an error loading the analytics dashboard. Please try again later. 7 |

    8 |
    9 | -------------------------------------------------------------------------------- /app/scripts/modules/netflix/tableau/tableau.less: -------------------------------------------------------------------------------- 1 | @import "../../core/presentation/less/imports/commonImports.less"; 2 | 3 | .tableau-dashboard { 4 | width: 100%; 5 | text-align: center; 6 | padding-top: 0 !important; 7 | iframe { 8 | width: 1020px; // 1000px for the contents, 20px to make scrolling easier 9 | height: 100%; 10 | border: 1px solid @mid_light_grey; 11 | margin: 0 auto; 12 | border-top: 0; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/common/cacheBackedSelectField.template.html: -------------------------------------------------------------------------------- 1 | 8 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/common/cacheRefresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

    {{refreshToolTipLabel}} list is refreshing.

    2 |

    Click to refresh {{refreshToolTipLabel}} list.

    3 |

    Last Updated:
    {{cache.lastRefresh | timestamp }}
    ({{cache.lastRefresh | relativeTime }})

    4 |

    Note: Due to caching, data may be delayed up to 2 minutes

    5 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/common/footer.directive.html: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/common/refresh.tooltip.html: -------------------------------------------------------------------------------- 1 |

    {{$ctrl.label}} list is refreshing.

    2 |

    Click to refresh {{$ctrl.label}} list.

    3 |

    Last Updated:
    {{$ctrl.lastRefresh | timestamp }}
    ({{$ctrl.lastRefresh | relativeTime }})

    4 |

    Note: Due to caching, data may be delayed up to 2 minutes

    5 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/loadBalancer/configure/configure.openstack.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.loadBalancer.configure.openstack', [ 6 | require('core/account/account.module.js'), 7 | require('./wizard/upsert.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/loadBalancer/details/details.openstack.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.loadBalancer.details.openstack', [ 6 | require('core/account/account.module.js'), 7 | require('./details.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/logo/openstack.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-openstack { 3 | background: url('openstack.logo.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/logo/openstack.logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/openstack/logo/openstack.logo.png -------------------------------------------------------------------------------- /app/scripts/modules/openstack/openstack.settings.ts: -------------------------------------------------------------------------------- 1 | import { IProviderSettings, SETTINGS } from 'core/config/settings'; 2 | 3 | export interface IOpenStackProviderSettings extends IProviderSettings { 4 | defaults: { 5 | account?: string; 6 | region?: string; 7 | }; 8 | } 9 | 10 | export const OpenStackProviderSettings: IOpenStackProviderSettings = SETTINGS.providers.openstack || { defaults: {} }; 11 | if (OpenStackProviderSettings) { 12 | OpenStackProviderSettings.resetToOriginal = SETTINGS.resetToOriginal; 13 | } 14 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Clone Server Group: 3 | {{step.context.source.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 7 | 8 | 9 | 10 | 11 |
    12 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/pipeline/stages/resizeAsg/resizeAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/region/regionSelectField.directive.html: -------------------------------------------------------------------------------- 1 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/search/resultFormatter.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular 6 | .module('spinnaker.openstack.search.resultFormatter', []) 7 | .factory('openstackSearchResultFormatter', function($q) { 8 | return { 9 | securityGroups: function(entry) { 10 | return $q.when((entry.name || entry.securityGroup) + ' (' + entry.region + ')'); 11 | }, 12 | }; 13 | }); 14 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/securityGroup/configure/configure.openstack.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.securityGroup.configure.openstack', [ 6 | require('./wizard/rules.controller.js'), 7 | require('./wizard/upsert.controller.js'), 8 | ]); 9 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/serverGroup/configure/wizard/advanced/advancedSettings.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |
    4 | 5 |
    6 |
    7 |
    8 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/serverGroup/details/serverGroup.details.module.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.openstack.serverGroup.details', [ 6 | require('./serverGroupDetails.openstack.controller.js'), 7 | require('./resize/resizeServerGroup.controller.js'), 8 | require('./rollback/rollbackServerGroup.controller.js') 9 | ]); 10 | -------------------------------------------------------------------------------- /app/scripts/modules/openstack/subnet/subnet.renderer.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | let angular = require('angular'); 4 | 5 | module.exports = angular.module('spinnaker.openstack.subnet.renderer', [ 6 | ]) 7 | .factory('openstackSubnetRenderer', function () { 8 | 9 | function render(serverGroup) { 10 | return serverGroup.subnetType; 11 | } 12 | 13 | return { 14 | render: render, 15 | }; 16 | }); 17 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/domain/ITitusCredentials.ts: -------------------------------------------------------------------------------- 1 | import {ICredentials} from 'core/domain/ICredentials'; 2 | 3 | export interface ITitusCredentials extends ICredentials { 4 | awsAccount: string; 5 | awsVpc: string; 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/domain/index.ts: -------------------------------------------------------------------------------- 1 | export * from './ITitusCredentials'; 2 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/instance/details/instanceDetails.html: -------------------------------------------------------------------------------- 1 | should not be used. use instanceDetails in Netflix mode. 2 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/logo/titus.logo.less: -------------------------------------------------------------------------------- 1 | cloud-provider-logo { 2 | .icon-titus { 3 | background: url('titus.logo.svg') no-repeat 50% 50%; 4 | background-size: cover; 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/logo/titus.logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/microsoft/deck/3a60dbb61186b6601328f1882096966b2a3cf1f0/app/scripts/modules/titus/logo/titus.logo.png -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Clone Server Group: 3 | {{step.context.source.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/destroyAsg/destroyAsgStage.html: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | 7 | 8 |
    9 | 10 | 11 | 12 |
    13 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/destroyAsg/destroyAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Destroy Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/disableAsg/disableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Disable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/enableAsg/enableAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Enable Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/pipeline/stages/resizeAsg/resizeAsgStepLabel.html: -------------------------------------------------------------------------------- 1 | 2 | Resize Server Group: 3 | {{step.context.serverGroupName}} 4 | ({{step.context.region}}) 5 | 6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/serverGroup/configure/wizard/basicSettings.html: -------------------------------------------------------------------------------- 1 |
    2 | 5 |
    6 | -------------------------------------------------------------------------------- /app/scripts/modules/titus/serverGroup/configure/wizard/capacity.html: -------------------------------------------------------------------------------- 1 |
    2 |