@spinnaker/oracle 0.0.0-main-2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/CHANGELOG.md +868 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/common/footer.component.d.ts +2 -0
  4. package/dist/domain/IOracleLoadBalancer.d.ts +114 -0
  5. package/dist/helpContents/oracleHelpContents.d.ts +1 -0
  6. package/dist/image/image.reader.d.ts +2 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.js +3634 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/instance/details/instance.details.controller.d.ts +2 -0
  11. package/dist/loadBalancer/configure/createLoadBalancer.controller.d.ts +87 -0
  12. package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +21 -0
  13. package/dist/loadBalancer/loadBalancer.transformer.d.ts +12 -0
  14. package/dist/oracle.module.d.ts +2 -0
  15. package/dist/oracle.settings.d.ts +15 -0
  16. package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +2 -0
  17. package/dist/pipeline/stages/bake/ociBakeStage.d.ts +2 -0
  18. package/dist/pipeline/stages/destroyAsg/destroyAsgStage.d.ts +2 -0
  19. package/dist/pipeline/stages/disableAsg/disableAsgStage.d.ts +2 -0
  20. package/dist/pipeline/stages/findAmi/findAmiStage.d.ts +2 -0
  21. package/dist/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.d.ts +2 -0
  22. package/dist/pipeline/stages/resizeAsg/resizeAsgStage.d.ts +2 -0
  23. package/dist/pipeline/stages/scaleDownCluster/scaleDownClusterStage.d.ts +2 -0
  24. package/dist/pipeline/stages/shrinkCluster/shrinkClusterStage.d.ts +2 -0
  25. package/dist/securityGroup/configure/createSecurityGroup.controller.d.ts +2 -0
  26. package/dist/securityGroup/securityGroup.reader.d.ts +2 -0
  27. package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
  28. package/dist/serverGroup/configure/serverGroup.configure.module.d.ts +2 -0
  29. package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
  30. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +2 -0
  31. package/dist/serverGroup/configure/wizard/basicSettings/basicSettings.controller.d.ts +2 -0
  32. package/dist/serverGroup/configure/wizard/capacity/capacitySelector.component.d.ts +2 -0
  33. package/dist/serverGroup/configure/wizard/cloneServerGroup.controller.d.ts +2 -0
  34. package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +2 -0
  35. package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +2 -0
  36. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +2 -0
  37. package/dist/serverGroup/details/serverGroupDetails.controller.d.ts +2 -0
  38. package/dist/serverGroup/serverGroup.transformer.d.ts +2 -0
  39. package/package.json +38 -0
  40. package/src/common/footer.component.html +7 -0
  41. package/src/common/footer.component.js +18 -0
  42. package/src/common/ocid/ocid.component.js +15 -0
  43. package/src/common/ocid/ocid.template.html +10 -0
  44. package/src/common/ocid/truncateOcid.filter.js +14 -0
  45. package/src/domain/IOracleLoadBalancer.ts +110 -0
  46. package/src/helpContents/oracleHelpContents.ts +52 -0
  47. package/src/image/image.reader.js +38 -0
  48. package/src/index.ts +1 -0
  49. package/src/instance/details/instance.details.controller.js +56 -0
  50. package/src/instance/details/instanceDetails.html +31 -0
  51. package/src/loadBalancer/configure/backendSets.html +67 -0
  52. package/src/loadBalancer/configure/certificates.html +63 -0
  53. package/src/loadBalancer/configure/createLoadBalancer.controller.spec.ts +201 -0
  54. package/src/loadBalancer/configure/createLoadBalancer.controller.ts +540 -0
  55. package/src/loadBalancer/configure/createLoadBalancer.html +25 -0
  56. package/src/loadBalancer/configure/createLoadBalancerProperties.html +167 -0
  57. package/src/loadBalancer/configure/editLoadBalancer.html +26 -0
  58. package/src/loadBalancer/configure/listeners.html +88 -0
  59. package/src/loadBalancer/details/loadBalancerDetail.controller.spec.ts +62 -0
  60. package/src/loadBalancer/details/loadBalancerDetail.controller.ts +163 -0
  61. package/src/loadBalancer/details/loadBalancerDetail.html +100 -0
  62. package/src/loadBalancer/loadBalancer.transformer.ts +144 -0
  63. package/src/oracle.module.ts +94 -0
  64. package/src/oracle.settings.ts +19 -0
  65. package/src/pipeline/disableAsg/disableAsgStage.html +11 -0
  66. package/src/pipeline/disableAsg/disableAsgStage.js +62 -0
  67. package/src/pipeline/disableAsg/disableAsgStepLabel.html +1 -0
  68. package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +38 -0
  69. package/src/pipeline/stages/bake/bakeExecutionDetails.html +52 -0
  70. package/src/pipeline/stages/bake/bakeStage.html +109 -0
  71. package/src/pipeline/stages/bake/ociBakeStage.js +147 -0
  72. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
  73. package/src/pipeline/stages/destroyAsg/destroyAsgStage.js +64 -0
  74. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
  75. package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
  76. package/src/pipeline/stages/disableAsg/disableAsgStage.js +63 -0
  77. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
  78. package/src/pipeline/stages/findAmi/findAmiStage.html +20 -0
  79. package/src/pipeline/stages/findAmi/findAmiStage.js +82 -0
  80. package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +44 -0
  81. package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +11 -0
  82. package/src/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.js +36 -0
  83. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +89 -0
  84. package/src/pipeline/stages/resizeAsg/resizeAsgStage.js +101 -0
  85. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +1 -0
  86. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +35 -0
  87. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.js +75 -0
  88. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +34 -0
  89. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.js +71 -0
  90. package/src/securityGroup/configure/createSecurityGroup.controller.js +19 -0
  91. package/src/securityGroup/configure/createSecurityGroup.html +19 -0
  92. package/src/securityGroup/securityGroup.reader.js +15 -0
  93. package/src/securityGroup/securityGroup.transformer.js +25 -0
  94. package/src/serverGroup/configure/serverGroup.configure.module.js +15 -0
  95. package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +105 -0
  96. package/src/serverGroup/configure/serverGroupConfiguration.service.js +229 -0
  97. package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +13 -0
  98. package/src/serverGroup/configure/wizard/basicSettings/basicSettings.controller.js +35 -0
  99. package/src/serverGroup/configure/wizard/basicSettings/basicSettings.html +134 -0
  100. package/src/serverGroup/configure/wizard/capacity/capacity.html +7 -0
  101. package/src/serverGroup/configure/wizard/capacity/capacitySelector.component.html +13 -0
  102. package/src/serverGroup/configure/wizard/capacity/capacitySelector.component.js +17 -0
  103. package/src/serverGroup/configure/wizard/cloneServerGroup.controller.js +109 -0
  104. package/src/serverGroup/configure/wizard/instanceType/instanceType.html +29 -0
  105. package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +44 -0
  106. package/src/serverGroup/configure/wizard/network/networkSettings.html +15 -0
  107. package/src/serverGroup/configure/wizard/serverGroupWizard.html +40 -0
  108. package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +9 -0
  109. package/src/serverGroup/details/resize/resizeCapacity.component.html +36 -0
  110. package/src/serverGroup/details/resize/resizeCapacity.component.js +42 -0
  111. package/src/serverGroup/details/resize/resizeServerGroup.controller.js +62 -0
  112. package/src/serverGroup/details/resize/resizeServerGroup.html +33 -0
  113. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +73 -0
  114. package/src/serverGroup/details/rollback/rollbackServerGroup.html +41 -0
  115. package/src/serverGroup/details/serverGroupDetails.controller.js +230 -0
  116. package/src/serverGroup/details/serverGroupDetails.html +94 -0
  117. package/src/serverGroup/serverGroup.transformer.js +29 -0
@@ -0,0 +1,40 @@
1
+ <form name="form" class="form-horizontal" novalidate>
2
+ <div ng-if="state.requiresTemplateSelection">
3
+ <ng-include src="pages.templateSelection"></ng-include>
4
+ </div>
5
+ <div ng-if="!state.loaded" style="height: 200px" class="horizontal center middle">
6
+ <loading-spinner size="'small'"></loading-spinner>
7
+ </div>
8
+ <div ng-if="!state.requiresTemplateSelection">
9
+ <v2-modal-wizard ng-show="state.loaded" heading="{{title}}" task-monitor="taskMonitor" dismiss="$dismiss()">
10
+ <v2-wizard-page key="location" label="Basic Settings" mark-complete-on-view="false">
11
+ <ng-include src="pages.basicSettings"></ng-include>
12
+ </v2-wizard-page>
13
+ <v2-wizard-page key="instance-type" label="Instance Type" mark-complete-on-view="false">
14
+ <ng-include src="pages.instanceType"></ng-include>
15
+ </v2-wizard-page>
16
+ <v2-wizard-page key="capacity" label="Capacity" done="true">
17
+ <ng-include src="pages.capacity"></ng-include>
18
+ </v2-wizard-page>
19
+ <v2-wizard-page key="loadBalancers" label="Load Balancers" done="true">
20
+ <ng-include src="pages.loadBalancers"></ng-include>
21
+ </v2-wizard-page>
22
+ <v2-wizard-page key="network" label="Network Settings" done="true">
23
+ <ng-include src="pages.networkSettings"></ng-include>
24
+ </v2-wizard-page>
25
+ </v2-modal-wizard>
26
+ <div class="modal-footer" ng-if="state.loaded">
27
+ <button ng-disabled="taskMonitor.submitting" class="btn btn-default btn-cancel" ng-click="ctrl.cancel()">
28
+ Cancel
29
+ </button>
30
+ <submit-button
31
+ ng-if="ctrl.showSubmitButton()"
32
+ is-disabled="!ctrl.isValid() || taskMonitor.submitting"
33
+ label="command.viewState.submitButtonLabel"
34
+ submitting="taskMonitor.submitting"
35
+ on-click="ctrl.submit()"
36
+ is-new="true"
37
+ ></submit-button>
38
+ </div>
39
+ </div>
40
+ </form>
@@ -0,0 +1,9 @@
1
+ <deploy-initializer
2
+ cloud-provider="oracle"
3
+ command="command"
4
+ application="application"
5
+ parent-state="state"
6
+ dismiss="ctrl.cancel()"
7
+ template-selection-text="ctrl.templateSelectionText"
8
+ on-template-selected="ctrl.templateSelected()"
9
+ ></deploy-initializer>
@@ -0,0 +1,36 @@
1
+ <ng-form name="resizeCapacityForm">
2
+ <div>
3
+ <div class="form-group">
4
+ <div class="col-md-12">
5
+ <p>Sets desired instance count for this server group.</p>
6
+ </div>
7
+ </div>
8
+ <div class="form-group form-inline">
9
+ <div class="col-md-3 sm-label-right">Current size</div>
10
+ <div class="col-md-6">
11
+ <input
12
+ type="number"
13
+ class="form-control input-sm"
14
+ ng-model="$ctrl.serverGroup.capacity.desired"
15
+ style="width: 60px"
16
+ readonly
17
+ />
18
+ instance<span ng-if="$ctrl.currentSize.desired > 1">s</span>
19
+ </div>
20
+ </div>
21
+ <div class="form-group form-inline">
22
+ <div class="col-md-3 sm-label-right">Resize to</div>
23
+ <div class="col-md-6">
24
+ <input
25
+ type="number"
26
+ class="form-control input-sm highlight-pristine"
27
+ ng-model="$ctrl.command.newSize"
28
+ min="0"
29
+ required
30
+ style="width: 60px"
31
+ />
32
+ instance<span ng-if="$ctrl.currentSize.desired > 1">s</span>
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </ng-form>
@@ -0,0 +1,42 @@
1
+ 'use strict';
2
+
3
+ import * as angular from 'angular';
4
+ import _ from 'lodash';
5
+
6
+ import { SERVER_GROUP_WRITER } from '@spinnaker/core';
7
+
8
+ export const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT =
9
+ 'spinnaker.oracle.serverGroup.details.resize.capacity.component';
10
+ export const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT; // for backwards compatibility
11
+ angular
12
+ .module(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT, [SERVER_GROUP_WRITER])
13
+ .component('oracleResizeCapacity', {
14
+ bindings: {
15
+ command: '=',
16
+ application: '=',
17
+ serverGroup: '=',
18
+ formMethods: '=',
19
+ },
20
+ templateUrl: require('./resizeCapacity.component.html'),
21
+ controller: [
22
+ '$scope',
23
+ 'serverGroupWriter',
24
+ function ($scope, serverGroupWriter) {
25
+ this.command.newSize = null;
26
+
27
+ angular.extend(this.formMethods, {
28
+ formIsValid: () => _.every([this.command.newSize !== null, $scope.resizeCapacityForm.$valid]),
29
+ submitMethod: () => {
30
+ return serverGroupWriter.resizeServerGroup(this.serverGroup, this.application, {
31
+ capacity: { min: this.command.newSize, max: this.command.newSize, desired: this.command.newSize },
32
+ serverGroupName: this.serverGroup.name,
33
+ targetSize: this.command.newSize,
34
+ region: this.serverGroup.region,
35
+ interestingHealthProviderNames: this.command.interestingHealthProviderNames,
36
+ reason: this.command.reason,
37
+ });
38
+ },
39
+ });
40
+ },
41
+ ],
42
+ });
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { TaskMonitor } from '@spinnaker/core';
6
+ import { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';
7
+
8
+ import { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT } from './resizeCapacity.component';
9
+
10
+ export const ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER =
11
+ 'spinnaker.oracle.serverGroup.details.resize.controller';
12
+ export const name = ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER; // for backwards compatibility
13
+ module(ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER, [
14
+ ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZECAPACITY_COMPONENT,
15
+ ORACLE_COMMON_FOOTER_COMPONENT,
16
+ ]).controller('oracleResizeServerGroupCtrl', [
17
+ '$scope',
18
+ '$uibModalInstance',
19
+ 'application',
20
+ 'serverGroup',
21
+ function ($scope, $uibModalInstance, application, serverGroup) {
22
+ $scope.serverGroup = serverGroup;
23
+ $scope.application = application;
24
+ $scope.verification = {};
25
+ $scope.command = {};
26
+ $scope.formMethods = {};
27
+
28
+ if (application && application.attributes) {
29
+ if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {
30
+ $scope.command.interestingHealthProviderNames = ['Oracle'];
31
+ }
32
+
33
+ $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;
34
+ }
35
+
36
+ this.isValid = function () {
37
+ if (!$scope.verification.verified) {
38
+ return false;
39
+ }
40
+ return $scope.formMethods.formIsValid();
41
+ };
42
+
43
+ $scope.taskMonitor = new TaskMonitor({
44
+ application: application,
45
+ title: 'Resizing ' + serverGroup.name,
46
+ modalInstance: $uibModalInstance,
47
+ });
48
+
49
+ this.resize = function () {
50
+ this.submitting = true;
51
+ if (!this.isValid()) {
52
+ return;
53
+ }
54
+
55
+ $scope.taskMonitor.submit($scope.formMethods.submitMethod);
56
+ };
57
+
58
+ this.cancel = function () {
59
+ $uibModalInstance.dismiss();
60
+ };
61
+ },
62
+ ]);
@@ -0,0 +1,33 @@
1
+ <div modal-page class="confirmation-modal">
2
+ <task-monitor monitor="taskMonitor"></task-monitor>
3
+ <form role="form" ng-if="!ctrl.submitting">
4
+ <modal-close dismiss="$dismiss()"></modal-close>
5
+ <div class="modal-header">
6
+ <h4 class="modal-title">Resize {{serverGroup.name}}</h4>
7
+ </div>
8
+ <div class="modal-body confirmation-modal">
9
+ <div class="form-horizontal">
10
+ <oracle-resize-capacity
11
+ server-group="serverGroup"
12
+ form-methods="formMethods"
13
+ application="application"
14
+ command="command"
15
+ ></oracle-resize-capacity>
16
+ </div>
17
+ <div class="row" ng-if="command.platformHealthOnlyShowOverride">
18
+ <div class="col-sm-10 col-sm-offset-1">
19
+ <platform-health-override command="command" platform-health-type="'Oracle'" show-help-details="true">
20
+ </platform-health-override>
21
+ </div>
22
+ </div>
23
+ <task-reason command="command"></task-reason>
24
+ </div>
25
+ <oracle-footer
26
+ action="ctrl.resize()"
27
+ cancel="ctrl.cancel()"
28
+ is-valid="ctrl.isValid()"
29
+ account="serverGroup.account"
30
+ verification="verification"
31
+ ></oracle-footer>
32
+ </form>
33
+ </div>
@@ -0,0 +1,73 @@
1
+ 'use strict';
2
+
3
+ import { module } from 'angular';
4
+
5
+ import { SERVER_GROUP_WRITER, TaskMonitor } from '@spinnaker/core';
6
+ import { ORACLE_COMMON_FOOTER_COMPONENT } from '../../../common/footer.component';
7
+
8
+ export const ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER =
9
+ 'spinnaker.oracle.serverGroup.details.rollback.controller';
10
+ export const name = ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER; // for backwards compatibility
11
+ module(ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER, [
12
+ SERVER_GROUP_WRITER,
13
+ ORACLE_COMMON_FOOTER_COMPONENT,
14
+ ]).controller('oracleRollbackServerGroupCtrl', [
15
+ '$scope',
16
+ '$uibModalInstance',
17
+ 'serverGroupWriter',
18
+ 'application',
19
+ 'serverGroup',
20
+ 'disabledServerGroups',
21
+ function ($scope, $uibModalInstance, serverGroupWriter, application, serverGroup, disabledServerGroups) {
22
+ $scope.serverGroup = serverGroup;
23
+ $scope.disabledServerGroups = disabledServerGroups.sort((a, b) => b.name.localeCompare(a.name));
24
+ $scope.verification = {};
25
+
26
+ $scope.command = {
27
+ rollbackType: 'EXPLICIT',
28
+ rollbackContext: {
29
+ rollbackServerGroupName: serverGroup.name,
30
+ },
31
+ };
32
+
33
+ if (application && application.attributes) {
34
+ if (application.attributes.platformHealthOnlyShowOverride && application.attributes.platformHealthOnly) {
35
+ $scope.command.interestingHealthProviderNames = ['Oracle'];
36
+ }
37
+
38
+ $scope.command.platformHealthOnlyShowOverride = application.attributes.platformHealthOnlyShowOverride;
39
+ }
40
+
41
+ this.isValid = function () {
42
+ const command = $scope.command;
43
+ if (!$scope.verification.verified) {
44
+ return false;
45
+ }
46
+
47
+ return command.rollbackContext.restoreServerGroupName !== undefined;
48
+ };
49
+
50
+ $scope.taskMonitor = new TaskMonitor({
51
+ application: application,
52
+ title: 'Rollback ' + serverGroup.name,
53
+ modalInstance: $uibModalInstance,
54
+ });
55
+
56
+ this.rollback = function () {
57
+ this.submitting = true;
58
+ if (!this.isValid()) {
59
+ return;
60
+ }
61
+
62
+ const submitMethod = function () {
63
+ return serverGroupWriter.rollbackServerGroup(serverGroup, application, $scope.command);
64
+ };
65
+
66
+ $scope.taskMonitor.submit(submitMethod);
67
+ };
68
+
69
+ this.cancel = function () {
70
+ $uibModalInstance.dismiss();
71
+ };
72
+ },
73
+ ]);
@@ -0,0 +1,41 @@
1
+ <div modal-page class="confirmation-modal">
2
+ <task-monitor monitor="taskMonitor"></task-monitor>
3
+ <form role="form" ng-if="!ctrl.submitting">
4
+ <modal-close dismiss="$dismiss()"></modal-close>
5
+ <div class="modal-header">
6
+ <h4 class="modal-title">Rollback {{serverGroup.name}}</h4>
7
+ </div>
8
+ <div class="modal-body confirmation-modal">
9
+ <div class="row">
10
+ <div class="col-sm-3 sm-label-right">Restore to</div>
11
+ <div class="col-sm-6">
12
+ <ui-select ng-model="command.rollbackContext.restoreServerGroupName" class="form-control input-sm">
13
+ <ui-select-match placeholder="Select...">{{$select.selected.name}}</ui-select-match>
14
+ <ui-select-choices repeat="serverGroup.name as serverGroup in disabledServerGroups">
15
+ <span ng-bind-html="serverGroup.name"></span>
16
+ </ui-select-choices>
17
+ </ui-select>
18
+ </div>
19
+ </div>
20
+ <div class="row" ng-if="command.platformHealthOnlyShowOverride">
21
+ <div class="col-sm-10 col-sm-offset-1">
22
+ <platform-health-override
23
+ command="command"
24
+ platform-health-type="'Oracle'"
25
+ show-help-details="true"
26
+ field-columns="12"
27
+ >
28
+ </platform-health-override>
29
+ </div>
30
+ </div>
31
+ <task-reason command="command"></task-reason>
32
+ </div>
33
+ <gce-footer
34
+ action="ctrl.rollback()"
35
+ cancel="ctrl.cancel()"
36
+ is-valid="ctrl.isValid()"
37
+ account="serverGroup.account"
38
+ verification="verification"
39
+ ></gce-footer>
40
+ </form>
41
+ </div>
@@ -0,0 +1,230 @@
1
+ 'use strict';
2
+
3
+ import UIROUTER_ANGULARJS from '@uirouter/angularjs';
4
+ import { module } from 'angular';
5
+
6
+ import {
7
+ ConfirmationModalService,
8
+ NetworkReader,
9
+ SERVER_GROUP_WRITER,
10
+ ServerGroupReader,
11
+ ServerGroupWarningMessageService,
12
+ SubnetReader,
13
+ } from '@spinnaker/core';
14
+
15
+ import { ORACLE_IMAGE_IMAGE_READER } from '../../image/image.reader';
16
+ import { ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER } from './resize/resizeServerGroup.controller';
17
+ import { ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER } from './rollback/rollbackServerGroup.controller';
18
+
19
+ export const ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER =
20
+ 'spinnaker.oracle.serverGroup.details.controller';
21
+ export const name = ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER; // for backwards compatibility
22
+ module(ORACLE_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_CONTROLLER, [
23
+ UIROUTER_ANGULARJS,
24
+ SERVER_GROUP_WRITER,
25
+ ORACLE_IMAGE_IMAGE_READER,
26
+ ORACLE_SERVERGROUP_DETAILS_RESIZE_RESIZESERVERGROUP_CONTROLLER,
27
+ ORACLE_SERVERGROUP_DETAILS_ROLLBACK_ROLLBACKSERVERGROUP_CONTROLLER,
28
+ ]).controller('oracleServerGroupDetailsCtrl', [
29
+ '$scope',
30
+ '$state',
31
+ '$uibModal',
32
+ 'app',
33
+ 'serverGroup',
34
+ 'serverGroupWriter',
35
+ 'oracleImageReader',
36
+ function ($scope, $state, $uibModal, app, serverGroup, serverGroupWriter, oracleImageReader) {
37
+ const provider = 'oracle';
38
+
39
+ this.application = app;
40
+ this.serverGroup = serverGroup;
41
+
42
+ this.state = {
43
+ loading: true,
44
+ };
45
+
46
+ /////////////////////////////////////////////////////////
47
+ // Fetch data
48
+ /////////////////////////////////////////////////////////
49
+
50
+ const retrieveServerGroup = () => {
51
+ return ServerGroupReader.getServerGroup(
52
+ app.name,
53
+ serverGroup.accountId,
54
+ serverGroup.region,
55
+ serverGroup.name,
56
+ ).then((details) => {
57
+ cancelLoader();
58
+ details.account = serverGroup.accountId;
59
+ this.serverGroup = details;
60
+ retrieveNetwork();
61
+ retrieveSubnet();
62
+ retrieveImage();
63
+ });
64
+ };
65
+
66
+ const retrieveNetwork = () => {
67
+ NetworkReader.listNetworksByProvider(provider).then((networks) => {
68
+ this.serverGroup.network = _.chain(networks)
69
+ .filter({ account: this.serverGroup.account, id: this.serverGroup.launchConfig.vpcId })
70
+ .head()
71
+ .value();
72
+ });
73
+ };
74
+
75
+ const retrieveSubnet = () => {
76
+ SubnetReader.getSubnetByIdAndProvider(this.serverGroup.launchConfig.subnetId, provider).then((subnet) => {
77
+ this.serverGroup.subnet = subnet;
78
+ });
79
+ };
80
+
81
+ const retrieveImage = () => {
82
+ oracleImageReader
83
+ .getImage(this.serverGroup.launchConfig.imageId, this.serverGroup.region, this.serverGroup.account)
84
+ .then((image) => {
85
+ if (!image) {
86
+ image = { id: this.serverGroup.launchConfig.imageId, name: this.serverGroup.launchConfig.imageId };
87
+ }
88
+ this.serverGroup.image = image;
89
+ });
90
+ };
91
+
92
+ ////////////////////////////////////////////////////////////
93
+ // Actions. Triggered by server group details dropdown menu
94
+ ////////////////////////////////////////////////////////////
95
+
96
+ this.destroyServerGroup = function destroyServerGroup() {
97
+ const serverGroup = this.serverGroup;
98
+ const taskMonitor = {
99
+ application: app,
100
+ title: 'Destroying ' + serverGroup.name,
101
+ onTaskComplete: function () {
102
+ if ($state.includes('**.serverGroup', stateParams)) {
103
+ $state.go('^');
104
+ }
105
+ },
106
+ };
107
+
108
+ const submitMethod = function () {
109
+ return serverGroupWriter.destroyServerGroup(serverGroup, app);
110
+ };
111
+
112
+ const stateParams = {
113
+ name: serverGroup.name,
114
+ account: serverGroup.account,
115
+ region: serverGroup.region,
116
+ };
117
+
118
+ ConfirmationModalService.confirm({
119
+ header: 'Really destroy ' + serverGroup.name + '?',
120
+ buttonText: 'Destroy ' + serverGroup.name,
121
+ account: serverGroup.account,
122
+ taskMonitorConfig: taskMonitor,
123
+ submitMethod: submitMethod,
124
+ });
125
+ };
126
+
127
+ this.resizeServerGroup = () => {
128
+ $uibModal.open({
129
+ templateUrl: require('./resize/resizeServerGroup.html'),
130
+ controller: 'oracleResizeServerGroupCtrl as ctrl',
131
+ resolve: {
132
+ serverGroup: () => {
133
+ return this.serverGroup;
134
+ },
135
+ application: () => {
136
+ return app;
137
+ },
138
+ },
139
+ });
140
+ };
141
+
142
+ this.rollbackServerGroup = () => {
143
+ $uibModal.open({
144
+ templateUrl: require('./rollback/rollbackServerGroup.html'),
145
+ controller: 'oracleRollbackServerGroupCtrl as ctrl',
146
+ resolve: {
147
+ serverGroup: () => this.serverGroup,
148
+ disabledServerGroups: () => {
149
+ const sgSummary = _.find(app.serverGroups.data, {
150
+ name: this.serverGroup.name,
151
+ account: this.serverGroup.account,
152
+ region: this.serverGroup.region,
153
+ });
154
+ const cluster = _.find(app.clusters, { name: sgSummary.cluster, account: this.serverGroup.account });
155
+ return _.filter(cluster.serverGroups, { isDisabled: true, region: this.serverGroup.region });
156
+ },
157
+ application: () => app,
158
+ },
159
+ });
160
+ };
161
+
162
+ this.disableServerGroup = () => {
163
+ const serverGroup = this.serverGroup;
164
+
165
+ const taskMonitor = {
166
+ application: app,
167
+ title: 'Disabling ' + serverGroup.name,
168
+ };
169
+
170
+ const submitMethod = (params) => serverGroupWriter.disableServerGroup(serverGroup, app, params);
171
+
172
+ const confirmationModalParams = {
173
+ header: 'Really disable ' + serverGroup.name + '?',
174
+ buttonText: 'Disable ' + serverGroup.name,
175
+ account: serverGroup.account,
176
+ taskMonitorConfig: taskMonitor,
177
+ platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,
178
+ platformHealthType: 'Oracle',
179
+ submitMethod: submitMethod,
180
+ askForReason: true,
181
+ };
182
+
183
+ ServerGroupWarningMessageService.addDisableWarningMessage(app, serverGroup, confirmationModalParams);
184
+
185
+ if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {
186
+ confirmationModalParams.interestingHealthProviderNames = ['Oracle'];
187
+ }
188
+
189
+ ConfirmationModalService.confirm(confirmationModalParams);
190
+ };
191
+
192
+ this.enableServerGroup = () => {
193
+ const serverGroup = this.serverGroup;
194
+
195
+ const taskMonitor = {
196
+ application: app,
197
+ title: 'Enabling ' + serverGroup.name,
198
+ };
199
+
200
+ const submitMethod = (params) => serverGroupWriter.enableServerGroup(serverGroup, app, params);
201
+
202
+ const confirmationModalParams = {
203
+ header: 'Really enable ' + serverGroup.name + '?',
204
+ buttonText: 'Enable ' + serverGroup.name,
205
+ account: serverGroup.account,
206
+ taskMonitorConfig: taskMonitor,
207
+ platformHealthOnlyShowOverride: app.attributes.platformHealthOnlyShowOverride,
208
+ platformHealthType: 'Oracle',
209
+ submitMethod: submitMethod,
210
+ askForReason: true,
211
+ };
212
+
213
+ if (app.attributes.platformHealthOnlyShowOverride && app.attributes.platformHealthOnly) {
214
+ confirmationModalParams.interestingHealthProviderNames = ['Oracle'];
215
+ }
216
+
217
+ ConfirmationModalService.confirm(confirmationModalParams);
218
+ };
219
+
220
+ const cancelLoader = () => {
221
+ this.state.loading = false;
222
+ };
223
+
224
+ retrieveServerGroup().then(() => {
225
+ if (!$scope.$$destroyed) {
226
+ app.serverGroups.onRefresh($scope, retrieveServerGroup);
227
+ }
228
+ });
229
+ },
230
+ ]);
@@ -0,0 +1,94 @@
1
+ <div class="details-panel" ng-class="{ disabled: ctrl.serverGroup.isDisabled }">
2
+ <div class="header" ng-if="ctrl.state.loading">
3
+ <div class="close-button">
4
+ <a class="btn btn-link" ui-sref="^">
5
+ <span class="glyphicon glyphicon-remove"></span>
6
+ </a>
7
+ </div>
8
+ <div class="horizontal center spinner-container">
9
+ <loading-spinner size="'small'"></loading-spinner>
10
+ </div>
11
+ </div>
12
+ <div class="header" ng-if="!ctrl.state.loading">
13
+ <div class="close-button">
14
+ <a class="btn btn-link" ui-sref="^">
15
+ <span class="glyphicon glyphicon-remove"></span>
16
+ </a>
17
+ </div>
18
+ <div class="header-text horizontal middle">
19
+ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>{{ctrl.serverGroup.name}}</h3>
20
+ </div>
21
+ <div>
22
+ <div class="actions" ng-class="{ insights: ctrl.serverGroup.insightActions.length > 0 }">
23
+ <div class="dropdown" uib-dropdown dropdown-append-to-body>
24
+ <button type="button" class="btn btn-sm btn-primary dropdown-toggle" uib-dropdown-toggle>
25
+ Server Group Actions <span class="caret"></span>
26
+ </button>
27
+ <ul class="dropdown-menu" uib-dropdown-menu role="menu">
28
+ <li><a href ng-if="!ctrl.serverGroup.disabled" ng-click="ctrl.disableServerGroup()">Disable</a></li>
29
+ <li><a href ng-if="ctrl.serverGroup.disabled" ng-click="ctrl.enableServerGroup()">Enable</a></li>
30
+ <li><a href ng-click="ctrl.destroyServerGroup()">Destroy</a></li>
31
+ <li><a href ng-click="ctrl.resizeServerGroup()">Resize</a></li>
32
+ <li><a href ng-click="ctrl.rollbackServerGroup()">Rollback</a></li>
33
+ </ul>
34
+ </div>
35
+ <div class="dropdown" ng-if="ctrl.serverGroup.insightActions.length > 0" uib-dropdown dropdown-append-to-body>
36
+ <button type="button" class="btn btn-sm btn-default dropdown-toggle" uib-dropdown-toggle>
37
+ Insight <span class="caret"></span>
38
+ </button>
39
+ <ul class="dropdown-menu" uib-dropdown-menu role="menu">
40
+ <li ng-repeat="action in ctrl.serverGroup.insightActions">
41
+ <a target="_blank" href="{{action.url}}">{{action.label}}</a>
42
+ </li>
43
+ </ul>
44
+ </div>
45
+ <div class="clearfix"></div>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ <div class="content" ng-if="!ctrl.state.loading">
50
+ <h4 class="text-center" ng-if="ctrl.serverGroup.isDisabled">[SERVER GROUP IS DISABLED]</h4>
51
+ <server-group-running-tasks-details server-group="ctrl.serverGroup"></server-group-running-tasks-details>
52
+ <collapsible-section heading="Server Group Information" expanded="true">
53
+ <dl class="dl-horizontal dl-narrow">
54
+ <dt>Created</dt>
55
+ <dd>{{ctrl.serverGroup.createdTime | timestamp}}</dd>
56
+ <dt>In</dt>
57
+ <dd>
58
+ <account-tag account="ctrl.serverGroup.account" pad="right"></account-tag>
59
+ {{ctrl.serverGroup.region}}
60
+ </dd>
61
+ <dt>VCN</dt>
62
+ <dd>{{ctrl.serverGroup.network.name}}</dd>
63
+ <dt>Subnet</dt>
64
+ <dd>{{ctrl.serverGroup.subnet.name}}</dd>
65
+ <dt>Avail Domain</dt>
66
+ <dd>{{ctrl.serverGroup.zone}}</dd>
67
+ </dl>
68
+ </collapsible-section>
69
+ <collapsible-section heading="Size" expanded="true">
70
+ <dl class="dl-horizontal dl-narrow">
71
+ <dt>Desired</dt>
72
+ <dd>{{ctrl.serverGroup.capacity.desired}}</dd>
73
+ <dt>Current</dt>
74
+ <dd>{{ctrl.serverGroup.instances.length}}</dd>
75
+ </dl>
76
+ </collapsible-section>
77
+ <collapsible-section heading="Launch Configuration">
78
+ <dl class="dl-horizontal dl-narrow">
79
+ <dt>Name</dt>
80
+ <dd>{{ctrl.serverGroup.name}}</dd>
81
+ <dt>Image</dt>
82
+ <dd>{{ctrl.serverGroup.image.name}}</dd>
83
+ <dt>Instance Type</dt>
84
+ <dd>{{ctrl.serverGroup.launchConfig.shape}}</dd>
85
+ <dt>VCN</dt>
86
+ <dd>{{ctrl.serverGroup.network.name}}</dd>
87
+ <dt>Subnet</dt>
88
+ <dd>{{ctrl.serverGroup.subnet.name}}</dd>
89
+ <dt>SSH Key</dt>
90
+ <dd>{{ctrl.serverGroup.launchConfig.sshAuthorizedKeys}}</dd>
91
+ </dl>
92
+ </collapsible-section>
93
+ </div>
94
+ </div>