@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.
- package/CHANGELOG.md +868 -0
- package/LICENSE.txt +203 -0
- package/dist/common/footer.component.d.ts +2 -0
- package/dist/domain/IOracleLoadBalancer.d.ts +114 -0
- package/dist/helpContents/oracleHelpContents.d.ts +1 -0
- package/dist/image/image.reader.d.ts +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3634 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/details/instance.details.controller.d.ts +2 -0
- package/dist/loadBalancer/configure/createLoadBalancer.controller.d.ts +87 -0
- package/dist/loadBalancer/details/loadBalancerDetail.controller.d.ts +21 -0
- package/dist/loadBalancer/loadBalancer.transformer.d.ts +12 -0
- package/dist/oracle.module.d.ts +2 -0
- package/dist/oracle.settings.d.ts +15 -0
- package/dist/pipeline/stages/bake/bakeExecutionDetails.controller.d.ts +2 -0
- package/dist/pipeline/stages/bake/ociBakeStage.d.ts +2 -0
- package/dist/pipeline/stages/destroyAsg/destroyAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/disableAsg/disableAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/findAmi/findAmiStage.d.ts +2 -0
- package/dist/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.d.ts +2 -0
- package/dist/pipeline/stages/resizeAsg/resizeAsgStage.d.ts +2 -0
- package/dist/pipeline/stages/scaleDownCluster/scaleDownClusterStage.d.ts +2 -0
- package/dist/pipeline/stages/shrinkCluster/shrinkClusterStage.d.ts +2 -0
- package/dist/securityGroup/configure/createSecurityGroup.controller.d.ts +2 -0
- package/dist/securityGroup/securityGroup.reader.d.ts +2 -0
- package/dist/securityGroup/securityGroup.transformer.d.ts +2 -0
- package/dist/serverGroup/configure/serverGroup.configure.module.d.ts +2 -0
- package/dist/serverGroup/configure/serverGroupCommandBuilder.service.d.ts +2 -0
- package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/basicSettings/basicSettings.controller.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/capacity/capacitySelector.component.d.ts +2 -0
- package/dist/serverGroup/configure/wizard/cloneServerGroup.controller.d.ts +2 -0
- package/dist/serverGroup/details/resize/resizeCapacity.component.d.ts +2 -0
- package/dist/serverGroup/details/resize/resizeServerGroup.controller.d.ts +2 -0
- package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +2 -0
- package/dist/serverGroup/details/serverGroupDetails.controller.d.ts +2 -0
- package/dist/serverGroup/serverGroup.transformer.d.ts +2 -0
- package/package.json +38 -0
- package/src/common/footer.component.html +7 -0
- package/src/common/footer.component.js +18 -0
- package/src/common/ocid/ocid.component.js +15 -0
- package/src/common/ocid/ocid.template.html +10 -0
- package/src/common/ocid/truncateOcid.filter.js +14 -0
- package/src/domain/IOracleLoadBalancer.ts +110 -0
- package/src/helpContents/oracleHelpContents.ts +52 -0
- package/src/image/image.reader.js +38 -0
- package/src/index.ts +1 -0
- package/src/instance/details/instance.details.controller.js +56 -0
- package/src/instance/details/instanceDetails.html +31 -0
- package/src/loadBalancer/configure/backendSets.html +67 -0
- package/src/loadBalancer/configure/certificates.html +63 -0
- package/src/loadBalancer/configure/createLoadBalancer.controller.spec.ts +201 -0
- package/src/loadBalancer/configure/createLoadBalancer.controller.ts +540 -0
- package/src/loadBalancer/configure/createLoadBalancer.html +25 -0
- package/src/loadBalancer/configure/createLoadBalancerProperties.html +167 -0
- package/src/loadBalancer/configure/editLoadBalancer.html +26 -0
- package/src/loadBalancer/configure/listeners.html +88 -0
- package/src/loadBalancer/details/loadBalancerDetail.controller.spec.ts +62 -0
- package/src/loadBalancer/details/loadBalancerDetail.controller.ts +163 -0
- package/src/loadBalancer/details/loadBalancerDetail.html +100 -0
- package/src/loadBalancer/loadBalancer.transformer.ts +144 -0
- package/src/oracle.module.ts +94 -0
- package/src/oracle.settings.ts +19 -0
- package/src/pipeline/disableAsg/disableAsgStage.html +11 -0
- package/src/pipeline/disableAsg/disableAsgStage.js +62 -0
- package/src/pipeline/disableAsg/disableAsgStepLabel.html +1 -0
- package/src/pipeline/stages/bake/bakeExecutionDetails.controller.js +38 -0
- package/src/pipeline/stages/bake/bakeExecutionDetails.html +52 -0
- package/src/pipeline/stages/bake/bakeStage.html +109 -0
- package/src/pipeline/stages/bake/ociBakeStage.js +147 -0
- package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
- package/src/pipeline/stages/destroyAsg/destroyAsgStage.js +64 -0
- package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
- package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
- package/src/pipeline/stages/disableAsg/disableAsgStage.js +63 -0
- package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
- package/src/pipeline/stages/findAmi/findAmiStage.html +20 -0
- package/src/pipeline/stages/findAmi/findAmiStage.js +82 -0
- package/src/pipeline/stages/findImageFromTags/findImageFromTagsExecutionDetails.html +44 -0
- package/src/pipeline/stages/findImageFromTags/findImageFromTagsStage.html +11 -0
- package/src/pipeline/stages/findImageFromTags/oracleFindImageFromTagsStage.js +36 -0
- package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +89 -0
- package/src/pipeline/stages/resizeAsg/resizeAsgStage.js +101 -0
- package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +1 -0
- package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +35 -0
- package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.js +75 -0
- package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +34 -0
- package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.js +71 -0
- package/src/securityGroup/configure/createSecurityGroup.controller.js +19 -0
- package/src/securityGroup/configure/createSecurityGroup.html +19 -0
- package/src/securityGroup/securityGroup.reader.js +15 -0
- package/src/securityGroup/securityGroup.transformer.js +25 -0
- package/src/serverGroup/configure/serverGroup.configure.module.js +15 -0
- package/src/serverGroup/configure/serverGroupCommandBuilder.service.js +105 -0
- package/src/serverGroup/configure/serverGroupConfiguration.service.js +229 -0
- package/src/serverGroup/configure/wizard/advancedSettings/advancedSettings.html +13 -0
- package/src/serverGroup/configure/wizard/basicSettings/basicSettings.controller.js +35 -0
- package/src/serverGroup/configure/wizard/basicSettings/basicSettings.html +134 -0
- package/src/serverGroup/configure/wizard/capacity/capacity.html +7 -0
- package/src/serverGroup/configure/wizard/capacity/capacitySelector.component.html +13 -0
- package/src/serverGroup/configure/wizard/capacity/capacitySelector.component.js +17 -0
- package/src/serverGroup/configure/wizard/cloneServerGroup.controller.js +109 -0
- package/src/serverGroup/configure/wizard/instanceType/instanceType.html +29 -0
- package/src/serverGroup/configure/wizard/loadBalancers/loadBalancers.html +44 -0
- package/src/serverGroup/configure/wizard/network/networkSettings.html +15 -0
- package/src/serverGroup/configure/wizard/serverGroupWizard.html +40 -0
- package/src/serverGroup/configure/wizard/templateSelection/templateSelection.html +9 -0
- package/src/serverGroup/details/resize/resizeCapacity.component.html +36 -0
- package/src/serverGroup/details/resize/resizeCapacity.component.js +42 -0
- package/src/serverGroup/details/resize/resizeServerGroup.controller.js +62 -0
- package/src/serverGroup/details/resize/resizeServerGroup.html +33 -0
- package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +73 -0
- package/src/serverGroup/details/rollback/rollbackServerGroup.html +41 -0
- package/src/serverGroup/details/serverGroupDetails.controller.js +230 -0
- package/src/serverGroup/details/serverGroupDetails.html +94 -0
- 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>
|