@spinnaker/titus 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 (185) hide show
  1. package/CHANGELOG.md +2661 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/domain/IJobDisruptionBudget.d.ts +35 -0
  4. package/dist/domain/ITitusCredentials.d.ts +5 -0
  5. package/dist/domain/ITitusInstance.d.ts +28 -0
  6. package/dist/domain/ITitusScalingPolicy.d.ts +4 -0
  7. package/dist/domain/ITitusServerGroup.d.ts +52 -0
  8. package/dist/domain/ITitusServiceJobProcesses.d.ts +3 -0
  9. package/dist/domain/index.d.ts +5 -0
  10. package/dist/help/titus.help.d.ts +1 -0
  11. package/dist/index.d.ts +6 -0
  12. package/dist/index.js +12828 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/instance/details/TitusInstanceDetails.d.ts +25 -0
  15. package/dist/instance/details/TitusInstanceDns.d.ts +8 -0
  16. package/dist/instance/details/TitusInstanceInformation.d.ts +7 -0
  17. package/dist/instance/details/index.d.ts +4 -0
  18. package/dist/instance/details/titusInstanceDetailsUtils.d.ts +14 -0
  19. package/dist/pipeline/stages/cloneServerGroup/cloneServerGroupExecutionDetails.controller.d.ts +2 -0
  20. package/dist/pipeline/stages/cloneServerGroup/titusCloneServerGroupStage.d.ts +2 -0
  21. package/dist/pipeline/stages/destroyAsg/titusDestroyAsgStage.d.ts +2 -0
  22. package/dist/pipeline/stages/disableAsg/titusDisableAsgStage.d.ts +2 -0
  23. package/dist/pipeline/stages/disableCluster/titusDisableClusterStage.d.ts +2 -0
  24. package/dist/pipeline/stages/enableAsg/titusEnableAsgStage.d.ts +2 -0
  25. package/dist/pipeline/stages/findAmi/titusFindAmiStage.d.ts +2 -0
  26. package/dist/pipeline/stages/resizeAsg/titusResizeAsgStage.d.ts +2 -0
  27. package/dist/pipeline/stages/runJob/RunJobExecutionDetails.d.ts +16 -0
  28. package/dist/pipeline/stages/runJob/TitusRunJobStageConfig.d.ts +25 -0
  29. package/dist/pipeline/stages/runJob/TitusSecurityGroupPicker.d.ts +34 -0
  30. package/dist/pipeline/stages/runJob/titusRunJobStage.d.ts +1 -0
  31. package/dist/pipeline/stages/scaleDownCluster/titusScaleDownClusterStage.d.ts +2 -0
  32. package/dist/pipeline/stages/shrinkCluster/titusShrinkClusterStage.d.ts +2 -0
  33. package/dist/reactShims/index.d.ts +1 -0
  34. package/dist/reactShims/titus.react.injector.d.ts +11 -0
  35. package/dist/reactShims/titus.react.module.d.ts +1 -0
  36. package/dist/securityGroup/securityGroup.read.service.d.ts +2 -0
  37. package/dist/serverGroup/configure/ServerGroupCommandBuilder.d.ts +2 -0
  38. package/dist/serverGroup/configure/serverGroup.configure.titus.module.d.ts +2 -0
  39. package/dist/serverGroup/configure/serverGroupConfiguration.service.d.ts +89 -0
  40. package/dist/serverGroup/configure/wizard/TitusCloneServerGroupModal.d.ts +31 -0
  41. package/dist/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.d.ts +28 -0
  42. package/dist/serverGroup/configure/wizard/pages/ServerGroupParameters.d.ts +15 -0
  43. package/dist/serverGroup/configure/wizard/pages/ServerGroupResources.d.ts +11 -0
  44. package/dist/serverGroup/configure/wizard/pages/TitusMapLayout.d.ts +4 -0
  45. package/dist/serverGroup/configure/wizard/pages/disruptionBudget/JobDisruptionBudget.d.ts +40 -0
  46. package/dist/serverGroup/configure/wizard/pages/disruptionBudget/PolicyOptions.d.ts +2 -0
  47. package/dist/serverGroup/configure/wizard/pages/disruptionBudget/RateOptions.d.ts +2 -0
  48. package/dist/serverGroup/configure/wizard/pages/disruptionBudget/WindowPicker.d.ts +23 -0
  49. package/dist/serverGroup/configure/wizard/pages/index.d.ts +4 -0
  50. package/dist/serverGroup/details/TitusCapacityDetailsSection.d.ts +11 -0
  51. package/dist/serverGroup/details/TitusLaunchConfigSection.d.ts +9 -0
  52. package/dist/serverGroup/details/TitusPackageDetailsSection.d.ts +6 -0
  53. package/dist/serverGroup/details/TitusSecurityGroups.d.ts +17 -0
  54. package/dist/serverGroup/details/capacityDetailsSection.component.d.ts +1 -0
  55. package/dist/serverGroup/details/disruptionBudget/DisruptionBudgetSection.d.ts +19 -0
  56. package/dist/serverGroup/details/disruptionBudget/EditDisruptionBudgetModal.d.ts +14 -0
  57. package/dist/serverGroup/details/index.d.ts +5 -0
  58. package/dist/serverGroup/details/launchConfigSection.component.d.ts +1 -0
  59. package/dist/serverGroup/details/resize/TitusResizeServerGroupModal.d.ts +8 -0
  60. package/dist/serverGroup/details/resize/useTaskMonitor.d.ts +25 -0
  61. package/dist/serverGroup/details/rollback/rollbackServerGroup.controller.d.ts +2 -0
  62. package/dist/serverGroup/details/scalingActivity/TitusScalingActivitiesModal.d.ts +7 -0
  63. package/dist/serverGroup/details/scalingPolicy/CreateScalingPolicyButton.d.ts +21 -0
  64. package/dist/serverGroup/details/scalingPolicy/TitusCustomScalingPolicy.d.ts +7 -0
  65. package/dist/serverGroup/details/scalingPolicy/createScalingPolicyButton.component.d.ts +1 -0
  66. package/dist/serverGroup/details/scalingPolicy/index.d.ts +3 -0
  67. package/dist/serverGroup/details/scalingPolicy/scalingPolicy.module.d.ts +1 -0
  68. package/dist/serverGroup/details/scalingPolicy/targetTracking/TitusTargetTrackingChart.d.ts +9 -0
  69. package/dist/serverGroup/details/scalingPolicy/targetTracking/UpsertTargetTrackingModal.d.ts +10 -0
  70. package/dist/serverGroup/details/scalingPolicy/titusCustomScalingPolicy.component.d.ts +1 -0
  71. package/dist/serverGroup/details/scalingPolicy/upsert/TitusScalingPolicyCommandBuilderService.d.ts +10 -0
  72. package/dist/serverGroup/details/scalingPolicy/upsert/UpsertScalingPolicyModal.d.ts +10 -0
  73. package/dist/serverGroup/details/sections/ITitusServerGroupDetailsSectionProps.d.ts +5 -0
  74. package/dist/serverGroup/details/serverGroupDetails.titus.controller.d.ts +2 -0
  75. package/dist/serverGroup/details/serviceJobProcesses/ServiceJobProcesses.d.ts +3 -0
  76. package/dist/serverGroup/details/serviceJobProcesses/ServiceJobProcessesSection.d.ts +7 -0
  77. package/dist/serverGroup/details/titusPackageDetailsSection.component.d.ts +1 -0
  78. package/dist/serverGroup/details/titusSecurityGroups.component.d.ts +1 -0
  79. package/dist/serverGroup/serverGroup.transformer.d.ts +2 -0
  80. package/dist/titus.module.d.ts +5 -0
  81. package/dist/titus.settings.d.ts +14 -0
  82. package/dist/validation/ApplicationNameValidator.d.ts +1 -0
  83. package/package.json +52 -0
  84. package/src/domain/IJobDisruptionBudget.ts +19 -0
  85. package/src/domain/ITitusCredentials.ts +6 -0
  86. package/src/domain/ITitusInstance.ts +30 -0
  87. package/src/domain/ITitusScalingPolicy.ts +5 -0
  88. package/src/domain/ITitusServerGroup.ts +56 -0
  89. package/src/domain/ITitusServiceJobProcesses.ts +3 -0
  90. package/src/domain/index.ts +5 -0
  91. package/src/help/titus.help.ts +99 -0
  92. package/src/index.ts +6 -0
  93. package/src/instance/details/TitusInstanceDetails.tsx +234 -0
  94. package/src/instance/details/TitusInstanceDns.tsx +40 -0
  95. package/src/instance/details/TitusInstanceInformation.tsx +42 -0
  96. package/src/instance/details/index.ts +4 -0
  97. package/src/instance/details/titusInstanceDetailsUtils.spec.ts +124 -0
  98. package/src/instance/details/titusInstanceDetailsUtils.ts +181 -0
  99. package/src/logo/titus.logo.less +5 -0
  100. package/src/logo/titus.logo.png +0 -0
  101. package/src/logo/titus.logo.svg +7 -0
  102. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupExecutionDetails.controller.js +66 -0
  103. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupExecutionDetails.html +46 -0
  104. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStage.html +106 -0
  105. package/src/pipeline/stages/cloneServerGroup/cloneServerGroupStepLabel.html +1 -0
  106. package/src/pipeline/stages/cloneServerGroup/titusCloneServerGroupStage.js +104 -0
  107. package/src/pipeline/stages/destroyAsg/destroyAsgStage.html +9 -0
  108. package/src/pipeline/stages/destroyAsg/destroyAsgStepLabel.html +1 -0
  109. package/src/pipeline/stages/destroyAsg/titusDestroyAsgStage.js +65 -0
  110. package/src/pipeline/stages/disableAsg/disableAsgStage.html +11 -0
  111. package/src/pipeline/stages/disableAsg/disableAsgStepLabel.html +1 -0
  112. package/src/pipeline/stages/disableAsg/titusDisableAsgStage.js +69 -0
  113. package/src/pipeline/stages/disableCluster/disableClusterStage.html +26 -0
  114. package/src/pipeline/stages/disableCluster/titusDisableClusterStage.js +85 -0
  115. package/src/pipeline/stages/enableAsg/enableAsgStage.html +11 -0
  116. package/src/pipeline/stages/enableAsg/enableAsgStepLabel.html +1 -0
  117. package/src/pipeline/stages/enableAsg/titusEnableAsgStage.js +73 -0
  118. package/src/pipeline/stages/findAmi/findAmiStage.html +24 -0
  119. package/src/pipeline/stages/findAmi/titusFindAmiStage.js +79 -0
  120. package/src/pipeline/stages/resizeAsg/resizeAsgStage.html +99 -0
  121. package/src/pipeline/stages/resizeAsg/resizeAsgStepLabel.html +1 -0
  122. package/src/pipeline/stages/resizeAsg/titusResizeAsgStage.js +125 -0
  123. package/src/pipeline/stages/runJob/RunJobExecutionDetails.tsx +165 -0
  124. package/src/pipeline/stages/runJob/TitusRunJobStageConfig.tsx +466 -0
  125. package/src/pipeline/stages/runJob/TitusSecurityGroupPicker.tsx +170 -0
  126. package/src/pipeline/stages/runJob/titusRunJobStage.ts +30 -0
  127. package/src/pipeline/stages/scaleDownCluster/scaleDownClusterStage.html +35 -0
  128. package/src/pipeline/stages/scaleDownCluster/titusScaleDownClusterStage.js +79 -0
  129. package/src/pipeline/stages/shrinkCluster/shrinkClusterStage.html +34 -0
  130. package/src/pipeline/stages/shrinkCluster/titusShrinkClusterStage.js +73 -0
  131. package/src/reactShims/index.ts +1 -0
  132. package/src/reactShims/titus.react.injector.ts +17 -0
  133. package/src/reactShims/titus.react.module.ts +10 -0
  134. package/src/securityGroup/securityGroup.read.service.js +15 -0
  135. package/src/serverGroup/configure/ServerGroupCommandBuilder.js +247 -0
  136. package/src/serverGroup/configure/serverGroup.configure.titus.module.js +9 -0
  137. package/src/serverGroup/configure/serverGroupCommandBuilder.spec.js +63 -0
  138. package/src/serverGroup/configure/serverGroupConfiguration.service.ts +410 -0
  139. package/src/serverGroup/configure/wizard/TitusCloneServerGroupModal.tsx +293 -0
  140. package/src/serverGroup/configure/wizard/pages/ServerGroupBasicSettings.tsx +339 -0
  141. package/src/serverGroup/configure/wizard/pages/ServerGroupParameters.less +5 -0
  142. package/src/serverGroup/configure/wizard/pages/ServerGroupParameters.tsx +217 -0
  143. package/src/serverGroup/configure/wizard/pages/ServerGroupResources.tsx +200 -0
  144. package/src/serverGroup/configure/wizard/pages/TitusMapLayout.less +3 -0
  145. package/src/serverGroup/configure/wizard/pages/TitusMapLayout.tsx +29 -0
  146. package/src/serverGroup/configure/wizard/pages/disruptionBudget/JobDisruptionBudget.tsx +285 -0
  147. package/src/serverGroup/configure/wizard/pages/disruptionBudget/PolicyOptions.tsx +112 -0
  148. package/src/serverGroup/configure/wizard/pages/disruptionBudget/RateOptions.tsx +89 -0
  149. package/src/serverGroup/configure/wizard/pages/disruptionBudget/WindowPicker.tsx +202 -0
  150. package/src/serverGroup/configure/wizard/pages/index.ts +4 -0
  151. package/src/serverGroup/details/TitusCapacityDetailsSection.tsx +66 -0
  152. package/src/serverGroup/details/TitusLaunchConfigSection.tsx +35 -0
  153. package/src/serverGroup/details/TitusPackageDetailsSection.tsx +40 -0
  154. package/src/serverGroup/details/TitusSecurityGroups.tsx +107 -0
  155. package/src/serverGroup/details/capacityDetailsSection.component.ts +12 -0
  156. package/src/serverGroup/details/disruptionBudget/DisruptionBudgetSection.tsx +226 -0
  157. package/src/serverGroup/details/disruptionBudget/EditDisruptionBudgetModal.tsx +92 -0
  158. package/src/serverGroup/details/index.ts +5 -0
  159. package/src/serverGroup/details/launchConfigSection.component.ts +12 -0
  160. package/src/serverGroup/details/resize/TitusResizeServerGroupModal.tsx +302 -0
  161. package/src/serverGroup/details/resize/useTaskMonitor.ts +30 -0
  162. package/src/serverGroup/details/rollback/rollbackServerGroup.controller.js +149 -0
  163. package/src/serverGroup/details/rollback/rollbackServerGroup.html +133 -0
  164. package/src/serverGroup/details/scalingActivity/TitusScalingActivitiesModal.tsx +81 -0
  165. package/src/serverGroup/details/scalingPolicy/CreateScalingPolicyButton.tsx +102 -0
  166. package/src/serverGroup/details/scalingPolicy/TitusCustomScalingPolicy.tsx +13 -0
  167. package/src/serverGroup/details/scalingPolicy/createScalingPolicyButton.component.ts +15 -0
  168. package/src/serverGroup/details/scalingPolicy/index.js +3 -0
  169. package/src/serverGroup/details/scalingPolicy/scalingPolicy.module.ts +7 -0
  170. package/src/serverGroup/details/scalingPolicy/targetTracking/TitusTargetTrackingChart.tsx +57 -0
  171. package/src/serverGroup/details/scalingPolicy/targetTracking/UpsertTargetTrackingModal.tsx +82 -0
  172. package/src/serverGroup/details/scalingPolicy/titusCustomScalingPolicy.component.ts +17 -0
  173. package/src/serverGroup/details/scalingPolicy/upsert/TitusScalingPolicyCommandBuilderService.ts +115 -0
  174. package/src/serverGroup/details/scalingPolicy/upsert/UpsertScalingPolicyModal.tsx +157 -0
  175. package/src/serverGroup/details/sections/ITitusServerGroupDetailsSectionProps.ts +6 -0
  176. package/src/serverGroup/details/serverGroupDetails.html +191 -0
  177. package/src/serverGroup/details/serverGroupDetails.titus.controller.js +457 -0
  178. package/src/serverGroup/details/serviceJobProcesses/ServiceJobProcesses.ts +12 -0
  179. package/src/serverGroup/details/serviceJobProcesses/ServiceJobProcessesSection.tsx +136 -0
  180. package/src/serverGroup/details/titusPackageDetailsSection.component.ts +12 -0
  181. package/src/serverGroup/details/titusSecurityGroups.component.ts +12 -0
  182. package/src/serverGroup/serverGroup.transformer.js +90 -0
  183. package/src/titus.module.ts +95 -0
  184. package/src/titus.settings.ts +22 -0
  185. package/src/validation/ApplicationNameValidator.ts +43 -0
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import type { IModalComponentProps } from '@spinnaker/core';
3
+ import type { ITitusServerGroup } from '../../../domain';
4
+ export interface ITitusScalingActivitiesProps extends IModalComponentProps {
5
+ serverGroup: ITitusServerGroup;
6
+ }
7
+ export declare const TitusScalingActivitiesModal: ({ dismissModal, serverGroup }: ITitusScalingActivitiesProps) => JSX.Element;
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import type { Application, IServerGroup } from '@spinnaker/core';
3
+ export interface ICreateScalingPolicyButtonProps {
4
+ application: Application;
5
+ serverGroup: IServerGroup;
6
+ }
7
+ export interface ICreateScalingPolicyButtonState {
8
+ showSelection: boolean;
9
+ showModal: boolean;
10
+ typeSelection: string;
11
+ awsAccount: string;
12
+ }
13
+ export declare class CreateScalingPolicyButton extends React.Component<ICreateScalingPolicyButtonProps, ICreateScalingPolicyButtonState> {
14
+ constructor(props: ICreateScalingPolicyButtonProps);
15
+ handleClick: () => void;
16
+ createStepPolicy(): void;
17
+ createTargetTrackingPolicy(): void;
18
+ typeSelected: (typeSelection: string) => void;
19
+ showModalCallback: () => void;
20
+ render(): JSX.Element;
21
+ }
@@ -0,0 +1,7 @@
1
+ import type * as React from 'react';
2
+ import type { Application, IServerGroup } from '@spinnaker/core';
3
+ export interface ITitusCustomScalingPolicyProps {
4
+ application: Application;
5
+ serverGroup: IServerGroup;
6
+ }
7
+ export declare const TitusCustomScalingPolicy: React.ComponentType<ITitusCustomScalingPolicyProps>;
@@ -0,0 +1 @@
1
+ export declare const TITUS_CREATE_SCALING_POLICY_BUTTON = "spinnaker.titus.serverGroup.details.scaling.policy.button";
@@ -0,0 +1,3 @@
1
+ export * from "./targetTracking/TitusTargetTrackingChart";
2
+ export { UpsertTargetTrackingModal as TitusUpsertTargetTrackingModal } from "./targetTracking/UpsertTargetTrackingModal";
3
+ export { UpsertScalingPolicyModal as TitusUpsertScalingPolicyModal } from "./upsert/UpsertScalingPolicyModal";
@@ -0,0 +1 @@
1
+ export declare const SCALING_POLICY_MODULE = "spinnaker.titus.scalingPolicy.module";
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import type { IAmazonServerGroup, ITargetTrackingConfiguration } from '@spinnaker/amazon';
3
+ export interface ITitusTargetTrackingChartProps {
4
+ config: ITargetTrackingConfiguration;
5
+ serverGroup: IAmazonServerGroup;
6
+ unit?: string;
7
+ updateUnit?: (unit: string) => void;
8
+ }
9
+ export declare const TitusTargetTrackingChart: ({ config, serverGroup, unit, updateUnit }: ITitusTargetTrackingChartProps) => JSX.Element;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { ITargetTrackingPolicy } from '@spinnaker/amazon';
3
+ import type { Application, IModalComponentProps } from '@spinnaker/core';
4
+ import type { ITitusServerGroup } from '../../../../domain';
5
+ export interface IUpsertTargetTrackingModalProps extends IModalComponentProps {
6
+ app: Application;
7
+ policy: ITargetTrackingPolicy;
8
+ serverGroup: ITitusServerGroup;
9
+ }
10
+ export declare const UpsertTargetTrackingModal: ({ app, closeModal, dismissModal, policy, serverGroup, }: IUpsertTargetTrackingModalProps) => JSX.Element;
@@ -0,0 +1 @@
1
+ export declare const TITUS_SERVERGROUP_CUSTOM_SCALING_COMPONENT = "spinnaker.application.titus.serverGroup.customScaling.component";
@@ -0,0 +1,10 @@
1
+ import type { IScalingPolicy, IStepPolicyDescription, ITargetTrackingPolicy, IUpsertAlarmDescription, IUpsertScalingPolicyCommand } from '@spinnaker/amazon';
2
+ import type { ITitusServerGroup } from '../../../../domain';
3
+ declare type PolicyType = 'Step' | 'TargetTracking';
4
+ export declare const TitusScalingPolicyCommandBuilder: {
5
+ buildAlarm: (policy: IScalingPolicy, region: string) => IUpsertAlarmDescription;
6
+ buildStepPolicy: (policy: IScalingPolicy, threshold: number, cooldown: number) => IStepPolicyDescription;
7
+ buildNewCommand: (type: PolicyType, serverGroup: ITitusServerGroup, policy: ITargetTrackingPolicy) => IUpsertScalingPolicyCommand;
8
+ prepareCommandForUpsert: (command: IUpsertScalingPolicyCommand, isRemove: boolean) => IUpsertScalingPolicyCommand;
9
+ };
10
+ export {};
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import type { IScalingPolicy } from '@spinnaker/amazon';
3
+ import type { Application, IModalComponentProps } from '@spinnaker/core';
4
+ import type { ITitusServerGroup } from '../../../../domain';
5
+ export interface IUpsertScalingPolicyModalProps extends IModalComponentProps {
6
+ app: Application;
7
+ policy: IScalingPolicy;
8
+ serverGroup: ITitusServerGroup;
9
+ }
10
+ export declare const UpsertScalingPolicyModal: ({ app, closeModal, dismissModal, policy, serverGroup, }: IUpsertScalingPolicyModalProps) => JSX.Element;
@@ -0,0 +1,5 @@
1
+ import type { IServerGroupDetailsSectionProps } from '@spinnaker/core';
2
+ import type { ITitusServerGroup } from '../../../domain';
3
+ export interface ITitusServerGroupDetailsSectionProps extends IServerGroupDetailsSectionProps {
4
+ serverGroup: ITitusServerGroup;
5
+ }
@@ -0,0 +1,2 @@
1
+ export const TITUS_SERVERGROUP_DETAILS_SERVERGROUPDETAILS_TITUS_CONTROLLER: "spinnaker.serverGroup.details.titus.controller";
2
+ export const name: "spinnaker.serverGroup.details.titus.controller";
@@ -0,0 +1,3 @@
1
+ import type { ITitusServiceJobProcesses } from '../../../domain/ITitusServiceJobProcesses';
2
+ export declare const processesList: string[];
3
+ export declare const enabledProcesses: (processesMap: ITitusServiceJobProcesses) => string[];
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import type { ITitusServerGroupDetailsSectionProps } from '../sections/ITitusServerGroupDetailsSectionProps';
3
+ export declare class ServiceJobProcessesSection extends React.Component<ITitusServerGroupDetailsSectionProps> {
4
+ private toggleServiceJobProcesses;
5
+ render(): JSX.Element;
6
+ }
7
+ export declare const SERVICE_JOB_PROCESSES_DETAILS_SECTION = "spinnaker.titus.servicejobprocesses.section";
@@ -0,0 +1 @@
1
+ export declare const TITUS_PACKAGE_DETAILS_SECTION = "spinnaker.titus.serverGroup.details.packageDetails.component";
@@ -0,0 +1 @@
1
+ export declare const TITUS_SECURITY_GROUPS_DETAILS = "spinnaker.titus.serverGroup.details.securityGroups.component";
@@ -0,0 +1,2 @@
1
+ export const TITUS_SERVERGROUP_SERVERGROUP_TRANSFORMER: "spinnaker.titus.serverGroup.transformer";
2
+ export const name: "spinnaker.titus.serverGroup.transformer";
@@ -0,0 +1,5 @@
1
+ import './help/titus.help';
2
+ import './pipeline/stages/runJob/titusRunJobStage';
3
+ import './validation/ApplicationNameValidator';
4
+ import './logo/titus.logo.less';
5
+ export declare const TITUS_MODULE = "spinnaker.titus";
@@ -0,0 +1,14 @@
1
+ import type { IProviderSettings } from '@spinnaker/core';
2
+ export interface ITitusProviderSettings extends IProviderSettings {
3
+ defaults: {
4
+ account?: string;
5
+ region?: string;
6
+ subnetType?: string;
7
+ iamProfile?: string;
8
+ };
9
+ serverGroups?: {
10
+ recommendedSubnets?: string[];
11
+ };
12
+ scalingActivities?: string[];
13
+ }
14
+ export declare const TitusProviderSettings: ITitusProviderSettings;
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@spinnaker/titus",
3
+ "license": "Apache-2.0",
4
+ "version": "0.0.0-main-2",
5
+ "module": "dist/index.js",
6
+ "typings": "dist/index.d.ts",
7
+ "publishConfig": {
8
+ "access": "public",
9
+ "registry": "https://registry.npmjs.org"
10
+ },
11
+ "scripts": {
12
+ "clean": "shx rm -rf dist",
13
+ "prepublishOnly": "npm run build",
14
+ "build": "npm run clean && spinnaker-scripts build",
15
+ "dev": "spinnaker-scripts start",
16
+ "dev:push": "spinnaker-scripts start --push",
17
+ "lib": "npm run build"
18
+ },
19
+ "dependencies": {
20
+ "@spinnaker/amazon": "^0.14.5",
21
+ "@spinnaker/core": "^0.29.1",
22
+ "@spinnaker/docker": "^0.0.147",
23
+ "@spinnaker/mocks": "1.0.7",
24
+ "@uirouter/angularjs": "1.0.26",
25
+ "@uirouter/react": "1.0.7",
26
+ "@uirouter/react-hybrid": "1.0.2",
27
+ "angular": "1.6.10",
28
+ "angular-ui-bootstrap": "2.5.0",
29
+ "formik": "1.5.1",
30
+ "lodash": "4.17.21",
31
+ "ngimport": "0.6.1",
32
+ "pretty-ms": "5.0.0",
33
+ "react": "16.14.0",
34
+ "react-bootstrap": "0.32.1",
35
+ "react-select": "1.2.1",
36
+ "react2angular": "3.2.1",
37
+ "rxjs": "6.6.7"
38
+ },
39
+ "devDependencies": {
40
+ "@spinnaker/eslint-plugin": "^3.0.2",
41
+ "@spinnaker/scripts": "^0.4.0",
42
+ "@types/angular": "1.6.26",
43
+ "@types/angular-ui-bootstrap": "0.13.41",
44
+ "@types/lodash": "4.14.64",
45
+ "@types/react": "16.14.10",
46
+ "@types/react-bootstrap": "0.32.5",
47
+ "@types/react-select": "1.3.4",
48
+ "shx": "0.3.3",
49
+ "typescript": "4.3.5"
50
+ },
51
+ "gitHead": "41637c82dc23fbf1195173a93611a08000fc0e53"
52
+ }
@@ -0,0 +1,19 @@
1
+ export interface IJobTimeWindow {
2
+ days: string[];
3
+ hourlyTimeWindows: Array<{ startHour: number; endHour: number }>;
4
+ timeZone: string;
5
+ }
6
+
7
+ export interface IJobDisruptionBudget {
8
+ // policy options
9
+ availabilityPercentageLimit?: { percentageOfHealthyContainers: number }; // default
10
+ unhealthyTasksLimit?: { limitOfUnhealthyContainers: number };
11
+ selfManaged?: { relocationTimeMs: number };
12
+ relocationLimit?: { limit: number };
13
+
14
+ rateUnlimited?: boolean;
15
+ timeWindows: IJobTimeWindow[];
16
+ containerHealthProviders: Array<{ name: string }>;
17
+ ratePerInterval?: { intervalMs: number; limitPerInterval: number };
18
+ ratePercentagePerInterval?: { intervalMs: number; percentageLimitPerInterval: number };
19
+ }
@@ -0,0 +1,6 @@
1
+ import type { ICredentials } from '@spinnaker/core';
2
+
3
+ export interface ITitusCredentials extends ICredentials {
4
+ awsAccount: string;
5
+ awsVpc: string;
6
+ }
@@ -0,0 +1,30 @@
1
+ import type { IInstance } from '@spinnaker/core';
2
+
3
+ interface ITitusInstancePlacement {
4
+ containerIp: string;
5
+ host: string;
6
+ region: string;
7
+ zone: string;
8
+ }
9
+
10
+ interface InsightAction {
11
+ label: string;
12
+ url: string;
13
+ }
14
+
15
+ export interface ITitusInstance extends IInstance {
16
+ containerIp: string;
17
+ instancePort?: string;
18
+ instanceType?: string;
19
+ insightActions?: InsightAction[];
20
+ ipv6Address?: string;
21
+ jobId?: string;
22
+ jobName?: string;
23
+ permanentIps?: string[];
24
+ placement: ITitusInstancePlacement;
25
+ privateDnsName?: string;
26
+ privateIpAddress?: string;
27
+ publicDnsName?: string;
28
+ publicIpAddress?: string;
29
+ titusUiEndpoint: string;
30
+ }
@@ -0,0 +1,5 @@
1
+ import type { IScalingPolicy, ITargetTrackingConfiguration } from '@spinnaker/amazon';
2
+
3
+ export interface ITitusPolicy extends IScalingPolicy {
4
+ targetPolicyDescriptor?: ITargetTrackingConfiguration;
5
+ }
@@ -0,0 +1,56 @@
1
+ import type { IScalingPolicyView } from '@spinnaker/amazon';
2
+ import type { IAccountDetails, IServerGroup } from '@spinnaker/core';
3
+
4
+ import type { IJobDisruptionBudget } from './IJobDisruptionBudget';
5
+ import type { ITitusPolicy } from './ITitusScalingPolicy';
6
+ import type { ITitusServiceJobProcesses } from './ITitusServiceJobProcesses';
7
+
8
+ export interface ITitusResources {
9
+ cpu: number;
10
+ disk: number;
11
+ gpu: number;
12
+ memory: number;
13
+ networkMbps: number;
14
+ }
15
+
16
+ export interface ITitusBuildInfo {
17
+ docker: {
18
+ digest: string;
19
+ image: string;
20
+ tag: string;
21
+ };
22
+ images: string[];
23
+ jenkins: {
24
+ commitId?: string;
25
+ host?: string;
26
+ name?: string;
27
+ number?: string;
28
+ version?: string;
29
+ };
30
+ }
31
+
32
+ export interface ITitusServerGroup extends IServerGroup {
33
+ buildInfo: ITitusBuildInfo;
34
+ capacityGroup?: string;
35
+ disruptionBudget?: IJobDisruptionBudget;
36
+ entryPoint: string;
37
+ iamProfile: string;
38
+ id?: string;
39
+ image?: ITitusImage;
40
+ migrationPolicy?: { type: string };
41
+ resources: ITitusResources;
42
+ scalingPolicies?: ITitusPolicy[];
43
+ serviceJobProcesses?: ITitusServiceJobProcesses;
44
+ targetGroups?: string[];
45
+ }
46
+
47
+ export interface ITitusImage {
48
+ dockerImageDigest: string;
49
+ dockerImageName: string;
50
+ dockerImageVersion: string;
51
+ }
52
+
53
+ export interface ITitusServerGroupView extends ITitusServerGroup {
54
+ accountDetails?: IAccountDetails;
55
+ scalingPolicies: IScalingPolicyView[];
56
+ }
@@ -0,0 +1,3 @@
1
+ export interface ITitusServiceJobProcesses {
2
+ [key: string]: boolean;
3
+ }
@@ -0,0 +1,5 @@
1
+ export * from './IJobDisruptionBudget';
2
+ export * from './ITitusCredentials';
3
+ export * from './ITitusInstance';
4
+ export * from './ITitusScalingPolicy';
5
+ export * from './ITitusServerGroup';
@@ -0,0 +1,99 @@
1
+ import { HelpContentsRegistry } from '@spinnaker/core';
2
+
3
+ const helpContents: { [key: string]: string } = {
4
+ 'titus.deploy.runtimeLimitSecs': '<p>Maximum amount of time (in seconds) a batch job is allowed to run</p>',
5
+ 'titus.deploy.retries': '<p>Number of times to retry this job</p>',
6
+ 'titus.deploy.propertyFile':
7
+ '<p>(Optional) Configures the name to the file used to pass in properties to later stages in the Spinnaker pipeline. The file must be saved into the /logs directory during execution</p>',
8
+ 'titus.deploy.iamProfile': 'AWS IAM instance profile to assign to this service',
9
+ 'titus.deploy.capacityGroup':
10
+ 'Used by Titus to ensure capacity guarantees, defaults to the application name if not provided',
11
+ 'titus.deploy.command':
12
+ '<p>(Optional) Defines one or more custom commands. If multiple commands are defined, they must be comma delimited with no spaces: <b>cmd1,cmd2</b></p>',
13
+ 'titus.deploy.entrypoint':
14
+ '<p>(Optional) Defines one or more entrypoints. If multiple entrypoints are defined, they must be comma delimited with no spaces: <b>entry1,entry2</b></p>',
15
+ 'titus.deploy.migrationPolicy': 'Defines how the tasks for this job will be migrated during an infrastructure change',
16
+ 'titus.deploy.network': 'Amount of networking bandwidth to allocate in Mbps',
17
+ 'titus.deploy.gpu': 'Number of GPUs to use. WARNING: only use if directed by Titus team, otherwise leave at 0',
18
+ 'titus.deploy.softConstraints':
19
+ 'Soft constraints are enforced on a best efforts basis. For example, if tasks can’t be perfectly balanced across zones, the best available balance is achieved without keeping the tasks pending for execution.',
20
+ 'titus.deploy.hardConstraints':
21
+ 'Constraints must be met and tasks will not be launched if constraint can’t be perfectly met',
22
+ 'titus.deploy.efs':
23
+ 'if completed, allows you to specify an EFS volume to attach to each Task that gets created for the Job',
24
+ 'titus.deploy.mountPoint':
25
+ '(Required) A valid directory to mount the volume, e.g, <samp>/efs</samp>. Invalid locations are <samp>/</samp>, <samp>/data</samp>, and <samp>/logs</samp> as these are reserved directories.',
26
+ 'titus.deploy.efsId': '(Required) The EFS file system ID, e.g. <samp> fs-0208c74b</samp>.',
27
+ 'titus.deploy.efsRelativeMountPoint': '(Optional) Relative dir within FS ID, e.g. <samp>/dirInVol</samp>',
28
+ 'titus.job.waitForCompletion':
29
+ 'if unchecked, marks the stage as successful right away without waiting for the job to complete',
30
+ 'titus.bake.fromGitTrigger': 'If checked, gets git details from the specified git trigger.',
31
+ 'titus.bake.repositoryUrl':
32
+ 'Url to the git repository containing the code to create the Docker image from, <samp>ssh://git@stash.corp.netflix.com:7999/SPKR/orca.git</samp> or <samp>ssh://git@github.com/spinnaker/orca.git</samp>',
33
+ 'titus.bake.repositoryHash': '(Optional) The hashcode to the git commit for the image',
34
+ 'titus.bake.repositoryBranch': '(Optional) The branch in git to build the image from',
35
+ 'titus.bake.repositoryDirectory':
36
+ '(Optional) If specified, will build the image from the Dockerfile contained in this directory. Default to project root.',
37
+ 'titus.bake.imageOrganization':
38
+ '(Optional) The organization to which this image belongs to, e.g. <samp>spinnaker</samp> for <samp>spinnaker/igor</samp>Defaults to none.',
39
+ 'titus.bake.imageName':
40
+ '(Optional) The name for the image, e.g. <samp>igor</samp> for <samp>spinnaker/igor</samp>Defaults to [git project name].[git repo name].',
41
+ 'titus.bake.tags':
42
+ '(Optional) Comma separated. By default, the <samp>latest</samp> tag is updated. Adds additional tags to label this image <samp>1.0.0-unstable,1.0.0-rc1</samp>',
43
+ 'titus.bake.buildParameters':
44
+ '(Optional) Build time variables to be passed to the Docker image. These are the set of values passed to --build-args in the command line.',
45
+ 'titus.serverGroup.subnet': `The subnet selection determines the VPC in which your container will run. Options vary by account and region. The most common are:
46
+ <ul>
47
+ <li><b>titus</b>: instances will be restricted to internal clients with their own NAT gateways</li>
48
+ <li><b>internal</b> instances will be restricted to internal clients (i.e. require VPN access)</li>
49
+ <li><b>external</b> instances will be publicly accessible and running in VPC</li>
50
+ </ul>
51
+ `,
52
+ 'titus.serverGroup.traffic': `
53
+ <p>Enables the "inService" scaling process, which is used by Spinnaker and discovery services to determine if the server group is enabled.</p>
54
+ <p>Will be automatically enabled when any non "custom" deployment strategy is selected.</p>`,
55
+ 'titus.deploy.imageId':
56
+ 'This value has been manually overridden. To edit this value, please update the <b><i>imageId</i></b> attribute in the stage JSON. Spinnaker expects this to follow the <b><i>name:tag</i></b> format, or the <b><i>imageName</i></b> directly from Jenkins',
57
+ 'titus.deploy.securityGroups':
58
+ 'AWS Security Groups to assign to this service. Security groups are set only if <samp>Allocate IP?</samp> has been selected and are assigned to the Titus AWS Elastic Network Interface.',
59
+ 'titus.job.capacityGroup': 'Capacity Group will default to application name if not specified.',
60
+ 'titus.job.securityGroups': 'AWS Security Groups to assign to this job',
61
+ 'titus.autoscaling.cooldown': `
62
+ <p>The amount of time, in seconds, after a scaling activity completes where previous trigger-related scaling
63
+ activities can influence future scaling events.</p>
64
+ <p>For scale out policies, while the cooldown period is in effect, the capacity that has been added by the
65
+ previous scale out event that initiated the cooldown is calculated as part of the desired capacity for the next
66
+ scale out. The intention is to continuously (but not excessively) scale out. For example, an alarm triggers a
67
+ step scaling policy to scale out an Amazon ECS service by 2 tasks, the scaling activity completes successfully,
68
+ and a cooldown period of 5 minutes starts. During the Cooldown period, if the alarm triggers the same policy
69
+ again but at a more aggressive step adjustment to scale out the service by 3 tasks, the 2 tasks that were added
70
+ in the previous scale out event are considered part of that capacity and only 1 additional task is added to the desired count.</p>
71
+ <p>For scale in policies, the cooldown period is used to block subsequent scale in requests until it has expired.
72
+ The intention is to scale in conservatively to protect your application's availability. However, if another
73
+ alarm triggers a scale out policy during the cooldown period after a scale in, Application Auto Scaling scales
74
+ out your scalable target immediately.</p>
75
+ `,
76
+ 'titus.autoscaling.scaleIn.cooldown': `
77
+ <p>The amount of time, in seconds, after a scale in activity completes before another scale in activity can start.</p>
78
+ <p>The cooldown period is used to block subsequent scale in requests until it has expired. The intention is to scale
79
+ in conservatively to protect your application's availability. However, if another alarm triggers a scale out policy
80
+ during the cooldown period after a scale in, Application Auto Scaling scales out your scalable target immediately.</p>
81
+ `,
82
+ 'titus.autoscaling.scaleOut.cooldown': `
83
+ <p>The amount of time, in seconds, after a scale out activity completes before another scale out activity can start.</p>
84
+ <p>While the cooldown period is in effect, the capacity that has been added by the previous scale out event that
85
+ initiated the cooldown is calculated as part of the desired capacity for the next scale out. The intention is to
86
+ continuously (but not excessively) scale out.</p>
87
+ `,
88
+ 'titus.disruptionbudget.description': `
89
+ <p>
90
+ The Job Disruption Budget is part of the job descriptor, and defines the behavior of how containers of the
91
+ job can be relocated.
92
+ <a href="http://manuals.test.netflix.net/view/titus-docs/mkdocs/master/disruption_budget/" target="_blank">
93
+ Read the full documentation
94
+ </a>
95
+ </p>
96
+ `,
97
+ };
98
+
99
+ Object.keys(helpContents).forEach((key) => HelpContentsRegistry.register(key, helpContents[key]));
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ export { TITUS_MODULE } from './titus.module';
2
+ export * from './reactShims';
3
+ export * from './serverGroup/details';
4
+ export * from './titus.settings';
5
+ export * from './domain';
6
+ export * from './instance/details';