@spinnaker/titus 0.5.13 → 0.5.17
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 +32 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/serverGroup/details/scalingPolicy/targetTracking/TitusTargetTrackingChart.d.ts +1 -3
- package/package.json +7 -7
- package/src/instance/details/titusInstanceDetailsUtils.spec.ts +2 -2
- package/src/serverGroup/details/scalingPolicy/scalingPolicy.module.ts +1 -10
- package/src/serverGroup/details/scalingPolicy/targetTracking/TitusTargetTrackingChart.tsx +2 -18
- package/src/serverGroup/details/serverGroupDetails.html +2 -2
- package/dist/serverGroup/details/scalingPolicy/alarmBasedSummary.component.d.ts +0 -2
- package/dist/serverGroup/details/scalingPolicy/scalingPolicySummary.component.d.ts +0 -1
- package/dist/serverGroup/details/scalingPolicy/targetTracking/targetTracking.module.d.ts +0 -1
- package/dist/serverGroup/details/scalingPolicy/targetTracking/targetTrackingChart.component.d.ts +0 -1
- package/dist/serverGroup/details/scalingPolicy/targetTracking/targetTrackingSummary.component.d.ts +0 -7
- package/src/serverGroup/details/scalingPolicy/alarmBasedSummary.component.html +0 -30
- package/src/serverGroup/details/scalingPolicy/alarmBasedSummary.component.js +0 -81
- package/src/serverGroup/details/scalingPolicy/alarmBasedSummary.template.html +0 -5
- package/src/serverGroup/details/scalingPolicy/popover/scalingPolicyDetails.popover.html +0 -1
- package/src/serverGroup/details/scalingPolicy/scalingPolicySummary.component.less +0 -15
- package/src/serverGroup/details/scalingPolicy/scalingPolicySummary.component.ts +0 -33
- package/src/serverGroup/details/scalingPolicy/targetTracking/targetTracking.module.ts +0 -7
- package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingChart.component.ts +0 -16
- package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingPopover.html +0 -4
- package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingSummary.component.ts +0 -124
- package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingSummary.html +0 -5
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
-
import type { Subject } from 'rxjs';
|
|
3
2
|
import type { IAmazonServerGroup, ITargetTrackingConfiguration } from '@spinnaker/amazon';
|
|
4
3
|
export interface ITitusTargetTrackingChartProps {
|
|
5
|
-
alarmUpdated?: Subject<void>;
|
|
6
4
|
config: ITargetTrackingConfiguration;
|
|
7
5
|
serverGroup: IAmazonServerGroup;
|
|
8
6
|
unit?: string;
|
|
9
7
|
updateUnit?: (unit: string) => void;
|
|
10
8
|
}
|
|
11
|
-
export declare const TitusTargetTrackingChart: ({
|
|
9
|
+
export declare const TitusTargetTrackingChart: ({ config, serverGroup, unit, updateUnit }: ITitusTargetTrackingChartProps) => JSX.Element;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spinnaker/titus",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.17",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"typings": "dist/index.d.ts",
|
|
7
7
|
"scripts": {
|
|
@@ -13,9 +13,9 @@
|
|
|
13
13
|
"lib": "npm run build"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@spinnaker/amazon": "^0.
|
|
17
|
-
"@spinnaker/core": "^0.
|
|
18
|
-
"@spinnaker/docker": "^0.0.
|
|
16
|
+
"@spinnaker/amazon": "^0.12.2",
|
|
17
|
+
"@spinnaker/core": "^0.16.0",
|
|
18
|
+
"@spinnaker/docker": "^0.0.122",
|
|
19
19
|
"@spinnaker/mocks": "1.0.7",
|
|
20
20
|
"@uirouter/angularjs": "1.0.26",
|
|
21
21
|
"@uirouter/react": "1.0.7",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"rxjs": "6.6.7"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
|
-
"@spinnaker/eslint-plugin": "^3.0.
|
|
37
|
-
"@spinnaker/scripts": "^0.2.
|
|
36
|
+
"@spinnaker/eslint-plugin": "^3.0.1",
|
|
37
|
+
"@spinnaker/scripts": "^0.2.4",
|
|
38
38
|
"@types/angular": "1.6.26",
|
|
39
39
|
"@types/angular-ui-bootstrap": "0.13.41",
|
|
40
40
|
"@types/lodash": "4.14.64",
|
|
@@ -44,5 +44,5 @@
|
|
|
44
44
|
"shx": "0.3.3",
|
|
45
45
|
"typescript": "4.3.5"
|
|
46
46
|
},
|
|
47
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "59026ea6af7b81ffb8e8c59e18f43396906ddafb"
|
|
48
48
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type {
|
|
2
2
|
IAmazonApplicationLoadBalancer,
|
|
3
3
|
IAmazonHealth,
|
|
4
4
|
IAmazonTargetGroupHealth,
|
|
5
5
|
ITargetGroup,
|
|
6
6
|
} from '@spinnaker/amazon';
|
|
7
|
-
import { Application } from '@spinnaker/core';
|
|
7
|
+
import type { Application } from '@spinnaker/core';
|
|
8
8
|
import { mockHealth, mockInstance, mockLoadBalancer, mockLoadBalancerHealth } from '@spinnaker/mocks';
|
|
9
9
|
import {
|
|
10
10
|
applyTargetGroupInfoToHealthMetric,
|
|
@@ -1,16 +1,7 @@
|
|
|
1
1
|
import { module } from 'angular';
|
|
2
2
|
|
|
3
|
-
import { TITUS_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT } from './alarmBasedSummary.component';
|
|
4
3
|
import { TITUS_CREATE_SCALING_POLICY_BUTTON } from './createScalingPolicyButton.component';
|
|
5
|
-
import { SCALING_POLICY_SUMMARY } from './scalingPolicySummary.component';
|
|
6
|
-
import { TARGET_TRACKING_MODULE } from './targetTracking/targetTracking.module';
|
|
7
4
|
import { TITUS_SERVERGROUP_CUSTOM_SCALING_COMPONENT } from './titusCustomScalingPolicy.component';
|
|
8
5
|
|
|
9
6
|
export const SCALING_POLICY_MODULE = 'spinnaker.titus.scalingPolicy.module';
|
|
10
|
-
module(SCALING_POLICY_MODULE, [
|
|
11
|
-
SCALING_POLICY_SUMMARY,
|
|
12
|
-
TITUS_CREATE_SCALING_POLICY_BUTTON,
|
|
13
|
-
TARGET_TRACKING_MODULE,
|
|
14
|
-
TITUS_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT,
|
|
15
|
-
TITUS_SERVERGROUP_CUSTOM_SCALING_COMPONENT,
|
|
16
|
-
]);
|
|
7
|
+
module(SCALING_POLICY_MODULE, [TITUS_CREATE_SCALING_POLICY_BUTTON, TITUS_SERVERGROUP_CUSTOM_SCALING_COMPONENT]);
|
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
import type { Subject } from 'rxjs';
|
|
3
2
|
|
|
4
3
|
import type { IAmazonServerGroup, IScalingPolicyAlarm, ITargetTrackingConfiguration } from '@spinnaker/amazon';
|
|
5
4
|
import { MetricAlarmChart } from '@spinnaker/amazon';
|
|
6
5
|
import type { ICloudMetricStatistics } from '@spinnaker/core';
|
|
7
6
|
|
|
8
7
|
export interface ITitusTargetTrackingChartProps {
|
|
9
|
-
alarmUpdated?: Subject<void>;
|
|
10
8
|
config: ITargetTrackingConfiguration;
|
|
11
9
|
serverGroup: IAmazonServerGroup;
|
|
12
10
|
unit?: string;
|
|
13
11
|
updateUnit?: (unit: string) => void;
|
|
14
12
|
}
|
|
15
13
|
|
|
16
|
-
export const TitusTargetTrackingChart = ({
|
|
17
|
-
alarmUpdated,
|
|
18
|
-
config,
|
|
19
|
-
serverGroup,
|
|
20
|
-
unit,
|
|
21
|
-
updateUnit,
|
|
22
|
-
}: ITitusTargetTrackingChartProps) => {
|
|
14
|
+
export const TitusTargetTrackingChart = ({ config, serverGroup, unit, updateUnit }: ITitusTargetTrackingChartProps) => {
|
|
23
15
|
const [alarm, setAlarm] = React.useState<IScalingPolicyAlarm>({
|
|
24
16
|
alarmName: null,
|
|
25
17
|
alarmArn: null,
|
|
@@ -59,15 +51,7 @@ export const TitusTargetTrackingChart = ({
|
|
|
59
51
|
if (unit) {
|
|
60
52
|
updateUnit(stats.unit);
|
|
61
53
|
}
|
|
62
|
-
alarmUpdated?.next();
|
|
63
54
|
};
|
|
64
55
|
|
|
65
|
-
return
|
|
66
|
-
<MetricAlarmChart
|
|
67
|
-
alarm={alarm}
|
|
68
|
-
alarmUpdated={alarmUpdated}
|
|
69
|
-
onChartLoaded={onChartLoaded}
|
|
70
|
-
serverGroup={serverGroup}
|
|
71
|
-
/>
|
|
72
|
-
);
|
|
56
|
+
return <MetricAlarmChart alarm={alarm} onChartLoaded={onChartLoaded} serverGroup={serverGroup} />;
|
|
73
57
|
};
|
|
@@ -134,12 +134,12 @@
|
|
|
134
134
|
</collapsible-section>
|
|
135
135
|
|
|
136
136
|
<collapsible-section heading="Scaling Policies">
|
|
137
|
-
<
|
|
137
|
+
<scaling-policy-summary
|
|
138
138
|
ng-repeat="policy in serverGroup.scalingPolicies"
|
|
139
139
|
policy="policy"
|
|
140
140
|
server-group="serverGroup"
|
|
141
141
|
application="ctrl.application"
|
|
142
|
-
></
|
|
142
|
+
></scaling-policy-summary>
|
|
143
143
|
<titus-create-scaling-policy-button
|
|
144
144
|
server-group="serverGroup"
|
|
145
145
|
application="ctrl.application"
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const SCALING_POLICY_SUMMARY = "spinnaker.titus.scalingPolicy.details.summary.component";
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const TARGET_TRACKING_MODULE = "spinnaker.titus.scalingPolicy.targetTracking";
|
package/dist/serverGroup/details/scalingPolicy/targetTracking/targetTrackingChart.component.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const TARGET_TRACKING_CHART_COMPONENT = "spinnaker.titus.scalingPolicy.targetTracking.chart.component";
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
<span class="label label-default">{{ $ctrl.policy.policyType | robotToHuman | uppercase }}</span>
|
|
2
|
-
<span class="label small" ng-if="$ctrl.policy.status.state !== 'Applied'">({{ $ctrl.policy.status.state }})</span>
|
|
3
|
-
<div ng-repeat="alarm in $ctrl.policy.alarms track by $index">
|
|
4
|
-
<div
|
|
5
|
-
uib-popover-template="$ctrl.popoverTemplate"
|
|
6
|
-
popover-placement="left"
|
|
7
|
-
popover-title="{{ $ctrl.policy.policyName }}"
|
|
8
|
-
popover-trigger="'mouseenter'"
|
|
9
|
-
>
|
|
10
|
-
<div>
|
|
11
|
-
<strong>Whenever</strong>
|
|
12
|
-
{{ alarm.statistic }} of <span class="alarm-name">{{ alarm.metricName }}</span> is
|
|
13
|
-
<span ng-bind-html="alarm.comparator"></span> {{ alarm.threshold }}
|
|
14
|
-
</div>
|
|
15
|
-
<div>
|
|
16
|
-
<strong>for at least</strong>
|
|
17
|
-
{{ alarm.evaluationPeriods }} consecutive periods of {{ alarm.period }} seconds
|
|
18
|
-
</div>
|
|
19
|
-
</div>
|
|
20
|
-
<div class="actions text-right">
|
|
21
|
-
<button class="btn btn-xs btn-link" ng-click="$ctrl.editPolicy()">
|
|
22
|
-
<span class="glyphicon glyphicon-cog" uib-tooltip="Edit policy"></span>
|
|
23
|
-
<span class="sr-only">Edit policy</span>
|
|
24
|
-
</button>
|
|
25
|
-
<button class="btn btn-xs btn-link" ng-click="$ctrl.deletePolicy()">
|
|
26
|
-
<span class="glyphicon glyphicon-trash" uib-tooltip="Delete policy"></span>
|
|
27
|
-
<span class="sr-only">Delete policy</span>
|
|
28
|
-
</button>
|
|
29
|
-
</div>
|
|
30
|
-
</div>
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
import { module } from 'angular';
|
|
4
|
-
|
|
5
|
-
import { AccountService, ConfirmationModalService, ReactModal, TaskExecutor } from '@spinnaker/core';
|
|
6
|
-
|
|
7
|
-
import { UpsertScalingPolicyModal } from './upsert/UpsertScalingPolicyModal';
|
|
8
|
-
|
|
9
|
-
import './scalingPolicySummary.component.less';
|
|
10
|
-
|
|
11
|
-
export const TITUS_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT =
|
|
12
|
-
'spinnaker.titus.serverGroup.details.scalingPolicy.alarmBasedSummary.component';
|
|
13
|
-
export const name = TITUS_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT; // for backwards compatibility
|
|
14
|
-
module(TITUS_SERVERGROUP_DETAILS_SCALINGPOLICY_ALARMBASEDSUMMARY_COMPONENT, []).component('titusAlarmBasedSummary', {
|
|
15
|
-
bindings: {
|
|
16
|
-
policy: '=',
|
|
17
|
-
serverGroup: '=',
|
|
18
|
-
application: '=',
|
|
19
|
-
},
|
|
20
|
-
templateUrl: require('./alarmBasedSummary.component.html'),
|
|
21
|
-
controller: [
|
|
22
|
-
'$uibModal',
|
|
23
|
-
function ($uibModal) {
|
|
24
|
-
this.$onInit = () => {
|
|
25
|
-
AccountService.getAccountDetails(this.serverGroup.account).then((details) => {
|
|
26
|
-
// alarmServerGroup is used to trick the chart rendering into using AWS metrics
|
|
27
|
-
this.alarmServerGroup = {
|
|
28
|
-
type: 'aws',
|
|
29
|
-
name: this.serverGroup.name,
|
|
30
|
-
account: details.awsAccount,
|
|
31
|
-
region: this.serverGroup.region,
|
|
32
|
-
};
|
|
33
|
-
});
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
this.popoverTemplate = require('./popover/scalingPolicyDetails.popover.html');
|
|
37
|
-
|
|
38
|
-
this.editPolicy = () => {
|
|
39
|
-
const upsertProps = {
|
|
40
|
-
app: this.application,
|
|
41
|
-
policy: this.policy,
|
|
42
|
-
serverGroup: this.serverGroup,
|
|
43
|
-
};
|
|
44
|
-
const modalProps = { dialogClassName: 'wizard-modal modal-lg' };
|
|
45
|
-
ReactModal.show(UpsertScalingPolicyModal, upsertProps, modalProps);
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
this.deletePolicy = () => {
|
|
49
|
-
const { application, policy, serverGroup } = this;
|
|
50
|
-
const taskMonitor = {
|
|
51
|
-
application,
|
|
52
|
-
title: 'Deleting scaling policy ' + policy.id,
|
|
53
|
-
};
|
|
54
|
-
|
|
55
|
-
const submitMethod = () =>
|
|
56
|
-
TaskExecutor.executeTask({
|
|
57
|
-
application,
|
|
58
|
-
description: 'Delete scaling policy ' + policy.id,
|
|
59
|
-
job: [
|
|
60
|
-
{
|
|
61
|
-
type: 'deleteScalingPolicy',
|
|
62
|
-
cloudProvider: 'titus',
|
|
63
|
-
credentials: serverGroup.account,
|
|
64
|
-
region: serverGroup.region,
|
|
65
|
-
scalingPolicyID: policy.id,
|
|
66
|
-
serverGroupName: serverGroup.name,
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
});
|
|
70
|
-
|
|
71
|
-
ConfirmationModalService.confirm({
|
|
72
|
-
header: `Really delete ${policy.id}?`,
|
|
73
|
-
buttonText: 'Delete scaling policy',
|
|
74
|
-
account: serverGroup.account,
|
|
75
|
-
taskMonitorConfig: taskMonitor,
|
|
76
|
-
submitMethod: submitMethod,
|
|
77
|
-
});
|
|
78
|
-
};
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
<aws-scaling-policy-popover policy="$ctrl.policy" server-group="$ctrl.alarmServerGroup"></aws-scaling-policy-popover>
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
titus-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 var(--color-alto);
|
|
9
|
-
|
|
10
|
-
.btn-left {
|
|
11
|
-
padding-left: 0;
|
|
12
|
-
border-left-width: 0;
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { IComponentOptions, IController } from 'angular';
|
|
2
|
-
import { module } from 'angular';
|
|
3
|
-
|
|
4
|
-
import type { Application, IServerGroup } from '@spinnaker/core';
|
|
5
|
-
import type { ITitusPolicy } from '../../../domain';
|
|
6
|
-
|
|
7
|
-
class ScalingPolicyDetailsSummaryController implements IController {
|
|
8
|
-
public templateUrl: string;
|
|
9
|
-
public policy: ITitusPolicy;
|
|
10
|
-
public serverGroup: IServerGroup;
|
|
11
|
-
public application: Application;
|
|
12
|
-
|
|
13
|
-
public $onInit() {
|
|
14
|
-
if (this.policy.targetPolicyDescriptor) {
|
|
15
|
-
this.templateUrl = require('./targetTracking/targetTrackingSummary.html');
|
|
16
|
-
} else {
|
|
17
|
-
this.templateUrl = require('./alarmBasedSummary.template.html');
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
const component: IComponentOptions = {
|
|
23
|
-
bindings: {
|
|
24
|
-
policy: '<',
|
|
25
|
-
serverGroup: '<',
|
|
26
|
-
application: '<',
|
|
27
|
-
},
|
|
28
|
-
controller: ScalingPolicyDetailsSummaryController,
|
|
29
|
-
template: `<div ng-include src="$ctrl.templateUrl"></div>`,
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const SCALING_POLICY_SUMMARY = 'spinnaker.titus.scalingPolicy.details.summary.component';
|
|
33
|
-
module(SCALING_POLICY_SUMMARY, []).component('titusScalingPolicySummary', component);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { module } from 'angular';
|
|
2
|
-
|
|
3
|
-
import { TARGET_TRACKING_CHART_COMPONENT } from './targetTrackingChart.component';
|
|
4
|
-
import { TARGET_TRACKING_SUMMARY_COMPONENT } from './targetTrackingSummary.component';
|
|
5
|
-
|
|
6
|
-
export const TARGET_TRACKING_MODULE = 'spinnaker.titus.scalingPolicy.targetTracking';
|
|
7
|
-
module(TARGET_TRACKING_MODULE, [TARGET_TRACKING_CHART_COMPONENT, TARGET_TRACKING_SUMMARY_COMPONENT]);
|
package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingChart.component.ts
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { module } from 'angular';
|
|
2
|
-
import { react2angular } from 'react2angular';
|
|
3
|
-
import { withErrorBoundary } from '@spinnaker/core';
|
|
4
|
-
import { TitusTargetTrackingChart } from './TitusTargetTrackingChart';
|
|
5
|
-
|
|
6
|
-
export const TARGET_TRACKING_CHART_COMPONENT = 'spinnaker.titus.scalingPolicy.targetTracking.chart.component';
|
|
7
|
-
module(TARGET_TRACKING_CHART_COMPONENT, []).component(
|
|
8
|
-
'titusTargetTrackingChart',
|
|
9
|
-
react2angular(withErrorBoundary(TitusTargetTrackingChart, 'targetTrackingChart'), [
|
|
10
|
-
'alarmUpdated',
|
|
11
|
-
'config',
|
|
12
|
-
'serverGroup',
|
|
13
|
-
'unit',
|
|
14
|
-
'updateUnit',
|
|
15
|
-
]),
|
|
16
|
-
);
|
package/src/serverGroup/details/scalingPolicy/targetTracking/targetTrackingSummary.component.ts
DELETED
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import type { IComponentController, IComponentOptions } from 'angular';
|
|
2
|
-
import { module } from 'angular';
|
|
3
|
-
|
|
4
|
-
import type { ITargetTrackingConfiguration, ITargetTrackingPolicy } from '@spinnaker/amazon';
|
|
5
|
-
import type { Application, IServerGroup, ITaskMonitorConfig } from '@spinnaker/core';
|
|
6
|
-
import { AccountService, ConfirmationModalService, ReactModal, TaskExecutor } from '@spinnaker/core';
|
|
7
|
-
|
|
8
|
-
import type { IUpsertTargetTrackingModalProps } from './UpsertTargetTrackingModal';
|
|
9
|
-
import { UpsertTargetTrackingModal } from './UpsertTargetTrackingModal';
|
|
10
|
-
|
|
11
|
-
export interface IAlarmRenderingServerGroup {
|
|
12
|
-
type: string;
|
|
13
|
-
name: string;
|
|
14
|
-
account: string;
|
|
15
|
-
region: string;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
interface ITitusPolicy extends ITargetTrackingPolicy {
|
|
19
|
-
id: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
class TargetTrackingSummaryController implements IComponentController {
|
|
23
|
-
public policy: ITitusPolicy;
|
|
24
|
-
public serverGroup: IServerGroup;
|
|
25
|
-
public alarmServerGroup: IAlarmRenderingServerGroup;
|
|
26
|
-
public application: Application;
|
|
27
|
-
public config: ITargetTrackingConfiguration;
|
|
28
|
-
public popoverTemplate = require('./targetTrackingPopover.html');
|
|
29
|
-
|
|
30
|
-
constructor() {}
|
|
31
|
-
|
|
32
|
-
public $onInit() {
|
|
33
|
-
this.config = this.policy.targetTrackingConfiguration;
|
|
34
|
-
AccountService.getAccountDetails(this.serverGroup.account).then((details) => {
|
|
35
|
-
// alarmServerGroup is used to trick the chart rendering into using AWS metrics
|
|
36
|
-
this.alarmServerGroup = {
|
|
37
|
-
type: 'aws',
|
|
38
|
-
name: this.serverGroup.name,
|
|
39
|
-
account: details.awsAccount,
|
|
40
|
-
region: this.serverGroup.region,
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
public editPolicy(): void {
|
|
46
|
-
const upsertProps = {
|
|
47
|
-
app: this.application,
|
|
48
|
-
policy: this.policy,
|
|
49
|
-
serverGroup: this.serverGroup,
|
|
50
|
-
} as IUpsertTargetTrackingModalProps;
|
|
51
|
-
const modalProps = { dialogClassName: 'wizard-modal modal-lg' };
|
|
52
|
-
ReactModal.show(UpsertTargetTrackingModal, upsertProps, modalProps);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
public deletePolicy(): void {
|
|
56
|
-
const { application, serverGroup, policy } = this;
|
|
57
|
-
const taskMonitor: ITaskMonitorConfig = {
|
|
58
|
-
application: this.application,
|
|
59
|
-
title: 'Deleting scaling policy ' + this.policy.id,
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
ConfirmationModalService.confirm({
|
|
63
|
-
header: `Really delete ${policy.id}?`,
|
|
64
|
-
buttonText: 'Delete scaling policy',
|
|
65
|
-
account: this.serverGroup.account,
|
|
66
|
-
taskMonitorConfig: taskMonitor,
|
|
67
|
-
submitMethod: () =>
|
|
68
|
-
TaskExecutor.executeTask({
|
|
69
|
-
application,
|
|
70
|
-
description: 'Delete scaling policy ' + policy.id,
|
|
71
|
-
job: [
|
|
72
|
-
{
|
|
73
|
-
type: 'deleteScalingPolicy',
|
|
74
|
-
cloudProvider: 'titus',
|
|
75
|
-
credentials: serverGroup.account,
|
|
76
|
-
region: serverGroup.region,
|
|
77
|
-
scalingPolicyID: policy.id,
|
|
78
|
-
serverGroupName: serverGroup.name,
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
}),
|
|
82
|
-
});
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
const component: IComponentOptions = {
|
|
87
|
-
bindings: {
|
|
88
|
-
policy: '<',
|
|
89
|
-
serverGroup: '<',
|
|
90
|
-
application: '<',
|
|
91
|
-
},
|
|
92
|
-
controller: TargetTrackingSummaryController,
|
|
93
|
-
template: `
|
|
94
|
-
<div uib-popover-template="$ctrl.popoverTemplate"
|
|
95
|
-
popover-placement="left"
|
|
96
|
-
popover-title="Policy {{$ctrl.policy.id}}"
|
|
97
|
-
popover-trigger="'mouseenter'">
|
|
98
|
-
<p>
|
|
99
|
-
<span class="label label-default">TARGET TRACKING</span>
|
|
100
|
-
<span class="label small" ng-if="$ctrl.policy.status.state !== 'Applied'">({{$ctrl.policy.status.state}})</span>
|
|
101
|
-
<div>
|
|
102
|
-
<strong>Target</strong>
|
|
103
|
-
{{$ctrl.config.predefinedMetricSpecification.predefinedMetricType}}
|
|
104
|
-
{{$ctrl.config.customizedMetricSpecification.metricName}}
|
|
105
|
-
<span ng-if="$ctrl.config.customizedMetricSpecification">({{$ctrl.config.customizedMetricSpecification.statistic}})</span>
|
|
106
|
-
@ {{$ctrl.config.targetValue}}
|
|
107
|
-
</div>
|
|
108
|
-
</p>
|
|
109
|
-
<div class="actions text-right">
|
|
110
|
-
<button class="btn btn-xs btn-link" ng-click="$ctrl.editPolicy()">
|
|
111
|
-
<span class="glyphicon glyphicon-cog" uib-tooltip="Edit policy"></span>
|
|
112
|
-
<span class="sr-only">Edit policy</span>
|
|
113
|
-
</button>
|
|
114
|
-
<button class="btn btn-xs btn-link" ng-click="$ctrl.deletePolicy()">
|
|
115
|
-
<span class="glyphicon glyphicon-trash" uib-tooltip="Delete policy"></span>
|
|
116
|
-
<span class="sr-only">Delete policy</span>
|
|
117
|
-
</button>
|
|
118
|
-
</div>
|
|
119
|
-
</div>
|
|
120
|
-
`,
|
|
121
|
-
};
|
|
122
|
-
|
|
123
|
-
export const TARGET_TRACKING_SUMMARY_COMPONENT = 'spinnaker.titus.scalingPolicy.targetTracking.summary.component';
|
|
124
|
-
module(TARGET_TRACKING_SUMMARY_COMPONENT, []).component('titusTargetTrackingSummary', component);
|