@spinnaker/kubernetes 0.0.0-2025.1-0

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 (337) hide show
  1. package/CHANGELOG.md +1663 -0
  2. package/LICENSE.txt +203 -0
  3. package/dist/help/kubernetes.help.d.ts +1 -0
  4. package/dist/index.d.ts +8 -0
  5. package/dist/index.js +6561 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/instance/details/details.controller.d.ts +1 -0
  8. package/dist/instance/index.d.ts +1 -0
  9. package/dist/interfaces/index.d.ts +1 -0
  10. package/dist/interfaces/infrastructure.types.d.ts +27 -0
  11. package/dist/kubernetes.module.d.ts +6 -0
  12. package/dist/loadBalancer/details/details.controller.d.ts +1 -0
  13. package/dist/loadBalancer/index.d.ts +1 -0
  14. package/dist/loadBalancer/transformer.d.ts +1 -0
  15. package/dist/manifest/AnnotationCustomSections.d.ts +5 -0
  16. package/dist/manifest/IManifestCoordinates.d.ts +5 -0
  17. package/dist/manifest/ManifestImageDetails.d.ts +18 -0
  18. package/dist/manifest/ManifestKindSearch.d.ts +13 -0
  19. package/dist/manifest/ManifestLabels.d.ts +15 -0
  20. package/dist/manifest/ManifestQos.d.ts +15 -0
  21. package/dist/manifest/ManifestResources.d.ts +35 -0
  22. package/dist/manifest/ManifestSource.d.ts +4 -0
  23. package/dist/manifest/annotationCustomSections.component.d.ts +3 -0
  24. package/dist/manifest/artifact/ManifestArtifact.d.ts +6 -0
  25. package/dist/manifest/delete/delete.controller.d.ts +12 -0
  26. package/dist/manifest/delete/deleteOptionsForm.component.d.ts +1 -0
  27. package/dist/manifest/editor/json/JsonEditor.d.ts +12 -0
  28. package/dist/manifest/editor/json/jsonEditor.component.d.ts +1 -0
  29. package/dist/manifest/index.d.ts +10 -0
  30. package/dist/manifest/manifest.service.d.ts +25 -0
  31. package/dist/manifest/manifestCommandBuilder.service.d.ts +30 -0
  32. package/dist/manifest/manifestEvents.component.d.ts +1 -0
  33. package/dist/manifest/manifestImageDetails.component.d.ts +1 -0
  34. package/dist/manifest/manifestLabels.component.d.ts +1 -0
  35. package/dist/manifest/manifestQos.component.d.ts +1 -0
  36. package/dist/manifest/manifestResources.component.d.ts +1 -0
  37. package/dist/manifest/rollout/RollingRestart.d.ts +9 -0
  38. package/dist/manifest/rollout/pause.controller.d.ts +1 -0
  39. package/dist/manifest/rollout/resume.controller.d.ts +1 -0
  40. package/dist/manifest/rollout/undo.controller.d.ts +1 -0
  41. package/dist/manifest/scale/ScaleSettingsForm.d.ts +10 -0
  42. package/dist/manifest/scale/scale.controller.d.ts +8 -0
  43. package/dist/manifest/scale/scaleSettingsForm.component.d.ts +1 -0
  44. package/dist/manifest/selector/IManifestLabelSelector.d.ts +9 -0
  45. package/dist/manifest/selector/IManifestSelector.d.ts +30 -0
  46. package/dist/manifest/selector/ManifestSelector.d.ts +46 -0
  47. package/dist/manifest/selector/labelEditor/LabelEditor.d.ts +15 -0
  48. package/dist/manifest/selector/selector.component.d.ts +1 -0
  49. package/dist/manifest/status/ManifestCondition.d.ts +13 -0
  50. package/dist/manifest/status/ManifestStatus.d.ts +8 -0
  51. package/dist/manifest/status/condition.component.d.ts +1 -0
  52. package/dist/manifest/status/status.component.d.ts +1 -0
  53. package/dist/manifest/traffic/ManifestTrafficService.d.ts +12 -0
  54. package/dist/manifest/wizard/BasicSettings.d.ts +17 -0
  55. package/dist/manifest/wizard/ManifestEntry.d.ts +16 -0
  56. package/dist/manifest/wizard/ManifestWizard.d.ts +22 -0
  57. package/dist/pipelines/stages/ManifestCoordinates.d.ts +31 -0
  58. package/dist/pipelines/stages/ManifestExecutionDetails.d.ts +69 -0
  59. package/dist/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.d.ts +18 -0
  60. package/dist/pipelines/stages/deleteManifest/DeleteManifestStageConfig.d.ts +14 -0
  61. package/dist/pipelines/stages/deleteManifest/deleteManifestStage.d.ts +1 -0
  62. package/dist/pipelines/stages/deployManifest/CopyFromTemplateButton.d.ts +15 -0
  63. package/dist/pipelines/stages/deployManifest/DeployManifestStageConfig.d.ts +15 -0
  64. package/dist/pipelines/stages/deployManifest/DeployManifestStageForm.d.ts +31 -0
  65. package/dist/pipelines/stages/deployManifest/ManifestBindArtifactsSelector.d.ts +17 -0
  66. package/dist/pipelines/stages/deployManifest/ManifestCopier.d.ts +36 -0
  67. package/dist/pipelines/stages/deployManifest/ManifestDeploymentOptions.d.ts +34 -0
  68. package/dist/pipelines/stages/deployManifest/NamespaceSelector.d.ts +16 -0
  69. package/dist/pipelines/stages/deployManifest/deployManifest.validator.d.ts +2 -0
  70. package/dist/pipelines/stages/deployManifest/deployManifestStage.d.ts +1 -0
  71. package/dist/pipelines/stages/deployManifest/manifestStatus/DeployStatus.d.ts +23 -0
  72. package/dist/pipelines/stages/deployManifest/manifestStatus/DeployStatusPills.d.ts +8 -0
  73. package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestDetailsLink.d.ts +20 -0
  74. package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestEvents.d.ts +9 -0
  75. package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.d.ts +8 -0
  76. package/dist/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceConfig.d.ts +3 -0
  77. package/dist/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceStageForm.d.ts +7 -0
  78. package/dist/pipelines/stages/findArtifactsFromResource/findArtifactsFromResourceStage.d.ts +1 -0
  79. package/dist/pipelines/stages/index.d.ts +8 -0
  80. package/dist/pipelines/stages/patchManifest/PatchManifestOptionsForm.d.ts +8 -0
  81. package/dist/pipelines/stages/patchManifest/PatchManifestStageConfig.d.ts +7 -0
  82. package/dist/pipelines/stages/patchManifest/PatchManifestStageForm.d.ts +21 -0
  83. package/dist/pipelines/stages/patchManifest/patchManifestStage.d.ts +4 -0
  84. package/dist/pipelines/stages/rolloutRestartManifest/RolloutRestartManifestStageConfig.d.ts +13 -0
  85. package/dist/pipelines/stages/rolloutRestartManifest/rolloutRestartManifestStage.d.ts +4 -0
  86. package/dist/pipelines/stages/runJob/KubernetesV2RunJobStageConfig.d.ts +31 -0
  87. package/dist/pipelines/stages/runJob/RunJobExecutionDetails.d.ts +7 -0
  88. package/dist/pipelines/stages/runJob/runJobStage.d.ts +1 -0
  89. package/dist/pipelines/stages/scaleManifest/ScaleManifestConfig.d.ts +3 -0
  90. package/dist/pipelines/stages/scaleManifest/ScaleManifestStageForm.d.ts +7 -0
  91. package/dist/pipelines/stages/scaleManifest/scaleManifestStage.d.ts +1 -0
  92. package/dist/pipelines/stages/traffic/ManifestTrafficStageConfig.d.ts +11 -0
  93. package/dist/pipelines/stages/traffic/disableManifest.stage.d.ts +1 -0
  94. package/dist/pipelines/stages/traffic/enableManifest.stage.d.ts +1 -0
  95. package/dist/pipelines/stages/undoRolloutManifest/UndoRolloutManifestConfig.d.ts +3 -0
  96. package/dist/pipelines/stages/undoRolloutManifest/UndoRolloutManifestStageForm.d.ts +7 -0
  97. package/dist/pipelines/stages/undoRolloutManifest/undoRolloutManifestStage.d.ts +1 -0
  98. package/dist/pipelines/stages/validators/manifestSelectorValidators.d.ts +2 -0
  99. package/dist/pipelines/validation/manifestSelector.validator.d.ts +8 -0
  100. package/dist/rawResource/component/K8sResources.d.ts +25 -0
  101. package/dist/rawResource/component/K8sResourcesFilters.d.ts +20 -0
  102. package/dist/rawResource/component/RawResourceUtils.d.ts +5 -0
  103. package/dist/rawResource/component/group/RawResouceGroup.d.ts +15 -0
  104. package/dist/rawResource/component/group/RawResource.d.ts +12 -0
  105. package/dist/rawResource/component/group/RawResourceDetails.d.ts +32 -0
  106. package/dist/rawResource/component/group/RawResourceGroups.d.ts +14 -0
  107. package/dist/rawResource/controller/FiltersPubSub.d.ts +12 -0
  108. package/dist/rawResource/index.d.ts +1 -0
  109. package/dist/rawResource/model/resource.d.ts +17 -0
  110. package/dist/rawResource/rawResource.dataSource.d.ts +2 -0
  111. package/dist/rawResource/rawResource.module.d.ts +1 -0
  112. package/dist/rawResource/rawResource.states.d.ts +6 -0
  113. package/dist/reactShims/index.d.ts +1 -0
  114. package/dist/reactShims/kubernetes.react.injector.d.ts +11 -0
  115. package/dist/reactShims/kubernetes.react.module.d.ts +1 -0
  116. package/dist/resources/ResourceDetails.d.ts +17 -0
  117. package/dist/resources/resources.state.d.ts +7 -0
  118. package/dist/rolloutStrategy/bluegreen.strategy.d.ts +2 -0
  119. package/dist/rolloutStrategy/highlander.strategy.d.ts +2 -0
  120. package/dist/rolloutStrategy/index.d.ts +1 -0
  121. package/dist/rolloutStrategy/none.strategy.d.ts +2 -0
  122. package/dist/rolloutStrategy/redblack.strategy.d.ts +2 -0
  123. package/dist/securityGroup/details/details.controller.d.ts +1 -0
  124. package/dist/securityGroup/index.d.ts +1 -0
  125. package/dist/securityGroup/securityGroup.reader.d.ts +4 -0
  126. package/dist/securityGroup/transformer.d.ts +1 -0
  127. package/dist/serverGroup/details/KubernetesServerGroupActions.d.ts +7 -0
  128. package/dist/serverGroup/details/kubernetesServerGroupDetailsGetter.d.ts +4 -0
  129. package/dist/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.d.ts +5 -0
  130. package/dist/serverGroup/details/sections/ServerGroupAnnotationCustomSection.d.ts +3 -0
  131. package/dist/serverGroup/details/sections/ServerGroupEventsSection.d.ts +3 -0
  132. package/dist/serverGroup/details/sections/ServerGroupHealthSection.d.ts +3 -0
  133. package/dist/serverGroup/details/sections/ServerGroupImagesSection.d.ts +3 -0
  134. package/dist/serverGroup/details/sections/ServerGroupInformationSection.d.ts +3 -0
  135. package/dist/serverGroup/details/sections/ServerGroupLabelsSection.d.ts +3 -0
  136. package/dist/serverGroup/details/sections/ServerGroupManifestStatusSection.d.ts +3 -0
  137. package/dist/serverGroup/details/sections/ServerGroupSizeSection.d.ts +3 -0
  138. package/dist/serverGroup/details/sections/index.d.ts +9 -0
  139. package/dist/serverGroup/details/useManifest.d.ts +8 -0
  140. package/dist/serverGroup/index.d.ts +3 -0
  141. package/dist/serverGroup/serverGroupCommandBuilder.d.ts +5 -0
  142. package/dist/serverGroup/serverGroupTransformer.d.ts +5 -0
  143. package/dist/serverGroupManager/details/ServerGroupManagerActions.d.ts +9 -0
  144. package/dist/serverGroupManager/details/ServerGroupManagerDetails.d.ts +7 -0
  145. package/dist/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.d.ts +6 -0
  146. package/dist/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.d.ts +3 -0
  147. package/dist/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.d.ts +3 -0
  148. package/dist/serverGroupManager/details/sections/ServerGroupManagerEventsSection.d.ts +3 -0
  149. package/dist/serverGroupManager/details/sections/ServerGroupManagerInformationSection.d.ts +3 -0
  150. package/dist/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.d.ts +3 -0
  151. package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.d.ts +3 -0
  152. package/dist/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.d.ts +3 -0
  153. package/dist/serverGroupManager/details/sections/index.d.ts +8 -0
  154. package/dist/serverGroupManager/details/useKubernetesServerGroupManagerDetails.d.ts +4 -0
  155. package/dist/serverGroupManager/index.d.ts +1 -0
  156. package/dist/validation/applicationName.validator.d.ts +9 -0
  157. package/package.json +58 -0
  158. package/src/help/kubernetes.help.ts +236 -0
  159. package/src/index.ts +8 -0
  160. package/src/instance/details/details.controller.ts +186 -0
  161. package/src/instance/details/details.html +80 -0
  162. package/src/instance/index.ts +1 -0
  163. package/src/interfaces/index.ts +1 -0
  164. package/src/interfaces/infrastructure.types.ts +40 -0
  165. package/src/kubernetes.module.ts +155 -0
  166. package/src/loadBalancer/details/details.controller.ts +101 -0
  167. package/src/loadBalancer/details/details.html +187 -0
  168. package/src/loadBalancer/index.ts +1 -0
  169. package/src/loadBalancer/transformer.ts +60 -0
  170. package/src/logo/kubernetes.icon.svg +102 -0
  171. package/src/logo/kubernetes.logo.less +6 -0
  172. package/src/logo/kubernetes.logo.svg +1 -0
  173. package/src/manifest/AnnotationCustomSections.tsx +6 -0
  174. package/src/manifest/IManifestCoordinates.ts +5 -0
  175. package/src/manifest/ManifestImageDetails.spec.tsx +76 -0
  176. package/src/manifest/ManifestImageDetails.tsx +64 -0
  177. package/src/manifest/ManifestKindSearch.tsx +31 -0
  178. package/src/manifest/ManifestLabels.tsx +31 -0
  179. package/src/manifest/ManifestQos.tsx +68 -0
  180. package/src/manifest/ManifestResources.tsx +69 -0
  181. package/src/manifest/ManifestSource.ts +4 -0
  182. package/src/manifest/annotationCustomSections.component.ts +114 -0
  183. package/src/manifest/artifact/ManifestArtifact.tsx +16 -0
  184. package/src/manifest/delete/delete.controller.ts +80 -0
  185. package/src/manifest/delete/delete.html +42 -0
  186. package/src/manifest/delete/deleteOptionsForm.component.ts +52 -0
  187. package/src/manifest/editor/json/JsonEditor.tsx +56 -0
  188. package/src/manifest/editor/json/jsonEditor.component.ts +12 -0
  189. package/src/manifest/index.ts +10 -0
  190. package/src/manifest/manifest.service.ts +90 -0
  191. package/src/manifest/manifestCommandBuilder.service.ts +126 -0
  192. package/src/manifest/manifestEvents.component.ts +12 -0
  193. package/src/manifest/manifestImageDetails.component.ts +12 -0
  194. package/src/manifest/manifestLabels.component.ts +12 -0
  195. package/src/manifest/manifestLabels.less +3 -0
  196. package/src/manifest/manifestQos.component.ts +12 -0
  197. package/src/manifest/manifestResources.component.ts +12 -0
  198. package/src/manifest/rollout/RollingRestart.tsx +46 -0
  199. package/src/manifest/rollout/pause.controller.ts +66 -0
  200. package/src/manifest/rollout/pause.html +28 -0
  201. package/src/manifest/rollout/resume.controller.ts +66 -0
  202. package/src/manifest/rollout/resume.html +28 -0
  203. package/src/manifest/rollout/undo.controller.ts +74 -0
  204. package/src/manifest/rollout/undo.html +44 -0
  205. package/src/manifest/scale/ScaleSettingsForm.tsx +43 -0
  206. package/src/manifest/scale/scale.controller.ts +75 -0
  207. package/src/manifest/scale/scale.html +32 -0
  208. package/src/manifest/scale/scaleSettingsForm.component.ts +11 -0
  209. package/src/manifest/selector/IManifestLabelSelector.ts +19 -0
  210. package/src/manifest/selector/IManifestSelector.ts +64 -0
  211. package/src/manifest/selector/ManifestSelector.spec.tsx +414 -0
  212. package/src/manifest/selector/ManifestSelector.tsx +424 -0
  213. package/src/manifest/selector/labelEditor/LabelEditor.spec.tsx +81 -0
  214. package/src/manifest/selector/labelEditor/LabelEditor.tsx +126 -0
  215. package/src/manifest/selector/labelEditor/labelEditor.less +3 -0
  216. package/src/manifest/selector/selector.component.ts +17 -0
  217. package/src/manifest/status/ManifestCondition.tsx +32 -0
  218. package/src/manifest/status/ManifestStatus.tsx +39 -0
  219. package/src/manifest/status/condition.component.ts +12 -0
  220. package/src/manifest/status/status.component.ts +11 -0
  221. package/src/manifest/traffic/ManifestTrafficService.spec.ts +30 -0
  222. package/src/manifest/traffic/ManifestTrafficService.ts +67 -0
  223. package/src/manifest/wizard/BasicSettings.tsx +57 -0
  224. package/src/manifest/wizard/ManifestEntry.tsx +46 -0
  225. package/src/manifest/wizard/ManifestWizard.tsx +94 -0
  226. package/src/pipelines/stages/ManifestCoordinates.spec.tsx +90 -0
  227. package/src/pipelines/stages/ManifestCoordinates.tsx +128 -0
  228. package/src/pipelines/stages/ManifestExecutionDetails.tsx +58 -0
  229. package/src/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.spec.tsx +85 -0
  230. package/src/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.tsx +87 -0
  231. package/src/pipelines/stages/deleteManifest/DeleteManifestStageConfig.tsx +62 -0
  232. package/src/pipelines/stages/deleteManifest/deleteManifestOptionsForm.less +9 -0
  233. package/src/pipelines/stages/deleteManifest/deleteManifestStage.ts +21 -0
  234. package/src/pipelines/stages/deployManifest/CopyFromTemplateButton.tsx +45 -0
  235. package/src/pipelines/stages/deployManifest/DeployManifestStageConfig.tsx +77 -0
  236. package/src/pipelines/stages/deployManifest/DeployManifestStageForm.tsx +265 -0
  237. package/src/pipelines/stages/deployManifest/ManifestBindArtifactsSelector.tsx +69 -0
  238. package/src/pipelines/stages/deployManifest/ManifestCopier.spec.ts +110 -0
  239. package/src/pipelines/stages/deployManifest/ManifestCopier.tsx +222 -0
  240. package/src/pipelines/stages/deployManifest/ManifestDeploymentOptions.spec.tsx +75 -0
  241. package/src/pipelines/stages/deployManifest/ManifestDeploymentOptions.tsx +203 -0
  242. package/src/pipelines/stages/deployManifest/NamespaceSelector.tsx +40 -0
  243. package/src/pipelines/stages/deployManifest/deployManifest.validator.ts +38 -0
  244. package/src/pipelines/stages/deployManifest/deployManifestStage.ts +28 -0
  245. package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatus.less +11 -0
  246. package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatus.tsx +120 -0
  247. package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatusPills.tsx +47 -0
  248. package/src/pipelines/stages/deployManifest/manifestStatus/ManifestDetailsLink.tsx +92 -0
  249. package/src/pipelines/stages/deployManifest/manifestStatus/ManifestEvents.tsx +87 -0
  250. package/src/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.less +24 -0
  251. package/src/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.tsx +46 -0
  252. package/src/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceConfig.tsx +35 -0
  253. package/src/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceStageForm.tsx +37 -0
  254. package/src/pipelines/stages/findArtifactsFromResource/findArtifactsFromResourceStage.ts +21 -0
  255. package/src/pipelines/stages/index.ts +8 -0
  256. package/src/pipelines/stages/patchManifest/PatchManifestOptionsForm.tsx +35 -0
  257. package/src/pipelines/stages/patchManifest/PatchManifestStageConfig.tsx +57 -0
  258. package/src/pipelines/stages/patchManifest/PatchManifestStageForm.tsx +157 -0
  259. package/src/pipelines/stages/patchManifest/patchManifestStage.ts +30 -0
  260. package/src/pipelines/stages/rolloutRestartManifest/RolloutRestartManifestStageConfig.tsx +46 -0
  261. package/src/pipelines/stages/rolloutRestartManifest/rolloutRestartManifestStage.ts +20 -0
  262. package/src/pipelines/stages/runJob/KubernetesV2RunJobStageConfig.tsx +242 -0
  263. package/src/pipelines/stages/runJob/RunJobExecutionDetails.tsx +67 -0
  264. package/src/pipelines/stages/runJob/runJobStage.ts +39 -0
  265. package/src/pipelines/stages/scaleManifest/ScaleManifestConfig.tsx +38 -0
  266. package/src/pipelines/stages/scaleManifest/ScaleManifestStageForm.tsx +46 -0
  267. package/src/pipelines/stages/scaleManifest/scaleManifestStage.ts +24 -0
  268. package/src/pipelines/stages/traffic/ManifestTrafficStageConfig.tsx +44 -0
  269. package/src/pipelines/stages/traffic/disableManifest.stage.ts +26 -0
  270. package/src/pipelines/stages/traffic/enableManifest.stage.ts +26 -0
  271. package/src/pipelines/stages/undoRolloutManifest/UndoRolloutManifestConfig.tsx +37 -0
  272. package/src/pipelines/stages/undoRolloutManifest/UndoRolloutManifestStageForm.tsx +60 -0
  273. package/src/pipelines/stages/undoRolloutManifest/undoRolloutManifestStage.ts +21 -0
  274. package/src/pipelines/stages/validators/manifestSelectorValidators.ts +43 -0
  275. package/src/pipelines/validation/manifestSelector.validator.ts +36 -0
  276. package/src/rawResource/component/K8sResources.less +9 -0
  277. package/src/rawResource/component/K8sResources.tsx +112 -0
  278. package/src/rawResource/component/K8sResourcesFilters.tsx +112 -0
  279. package/src/rawResource/component/RawResourceUtils.ts +19 -0
  280. package/src/rawResource/component/group/RawResouceGroup.tsx +41 -0
  281. package/src/rawResource/component/group/RawResource.less +79 -0
  282. package/src/rawResource/component/group/RawResource.tsx +51 -0
  283. package/src/rawResource/component/group/RawResourceDetails.tsx +236 -0
  284. package/src/rawResource/component/group/RawResourceGroups.tsx +53 -0
  285. package/src/rawResource/controller/FiltersPubSub.ts +35 -0
  286. package/src/rawResource/index.ts +1 -0
  287. package/src/rawResource/model/resource.ts +18 -0
  288. package/src/rawResource/rawResource.dataSource.ts +39 -0
  289. package/src/rawResource/rawResource.module.ts +8 -0
  290. package/src/rawResource/rawResource.states.ts +64 -0
  291. package/src/reactShims/index.ts +1 -0
  292. package/src/reactShims/kubernetes.react.injector.ts +30 -0
  293. package/src/reactShims/kubernetes.react.module.ts +12 -0
  294. package/src/resources/ResourceDetails.tsx +121 -0
  295. package/src/resources/resources.state.ts +45 -0
  296. package/src/rolloutStrategy/bluegreen.strategy.ts +7 -0
  297. package/src/rolloutStrategy/highlander.strategy.ts +7 -0
  298. package/src/rolloutStrategy/index.ts +6 -0
  299. package/src/rolloutStrategy/none.strategy.ts +8 -0
  300. package/src/rolloutStrategy/redblack.strategy.ts +7 -0
  301. package/src/securityGroup/details/details.controller.ts +118 -0
  302. package/src/securityGroup/details/details.html +91 -0
  303. package/src/securityGroup/index.ts +1 -0
  304. package/src/securityGroup/securityGroup.reader.ts +11 -0
  305. package/src/securityGroup/transformer.ts +19 -0
  306. package/src/serverGroup/details/KubernetesServerGroupActions.tsx +138 -0
  307. package/src/serverGroup/details/kubernetesServerGroupDetailsGetter.ts +63 -0
  308. package/src/serverGroup/details/sections/IKubernetesServerGroupDetailsSectionProps.ts +6 -0
  309. package/src/serverGroup/details/sections/ServerGroupAnnotationCustomSection.tsx +11 -0
  310. package/src/serverGroup/details/sections/ServerGroupEventsSection.tsx +14 -0
  311. package/src/serverGroup/details/sections/ServerGroupHealthSection.tsx +19 -0
  312. package/src/serverGroup/details/sections/ServerGroupImagesSection.tsx +14 -0
  313. package/src/serverGroup/details/sections/ServerGroupInformationSection.tsx +46 -0
  314. package/src/serverGroup/details/sections/ServerGroupLabelsSection.tsx +14 -0
  315. package/src/serverGroup/details/sections/ServerGroupManifestStatusSection.tsx +9 -0
  316. package/src/serverGroup/details/sections/ServerGroupSizeSection.tsx +35 -0
  317. package/src/serverGroup/details/sections/index.ts +9 -0
  318. package/src/serverGroup/details/useManifest.ts +42 -0
  319. package/src/serverGroup/index.ts +3 -0
  320. package/src/serverGroup/serverGroupCommandBuilder.ts +9 -0
  321. package/src/serverGroup/serverGroupTransformer.spec.ts +67 -0
  322. package/src/serverGroup/serverGroupTransformer.ts +27 -0
  323. package/src/serverGroupManager/details/ServerGroupManagerActions.tsx +171 -0
  324. package/src/serverGroupManager/details/ServerGroupManagerDetails.tsx +72 -0
  325. package/src/serverGroupManager/details/sections/IKubernetesServerGroupManagerDetailsSectionProps.ts +7 -0
  326. package/src/serverGroupManager/details/sections/ServerGroupManagerAnnotationCustomSection.tsx +12 -0
  327. package/src/serverGroupManager/details/sections/ServerGroupManagerArtifactsSection.tsx +18 -0
  328. package/src/serverGroupManager/details/sections/ServerGroupManagerEventsSection.tsx +14 -0
  329. package/src/serverGroupManager/details/sections/ServerGroupManagerInformationSection.tsx +51 -0
  330. package/src/serverGroupManager/details/sections/ServerGroupManagerLabelsSection.tsx +14 -0
  331. package/src/serverGroupManager/details/sections/ServerGroupManagerManifestConditionSection.tsx +21 -0
  332. package/src/serverGroupManager/details/sections/ServerGroupManagerManifestStatusSection.tsx +10 -0
  333. package/src/serverGroupManager/details/sections/index.ts +8 -0
  334. package/src/serverGroupManager/details/useKubernetesServerGroupManagerDetails.tsx +53 -0
  335. package/src/serverGroupManager/index.ts +1 -0
  336. package/src/validation/applicationName.validator.spec.ts +19 -0
  337. package/src/validation/applicationName.validator.ts +44 -0
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0.03 -8.96 362.18 282.43"><defs><style>.cls-1{fill:#fff}.cls-2{fill:#326ce5}</style></defs><g id="its-pronounced"><g id="kyoob-cuttle"><path id="kkkkkkk" d="M16.841 243.586c.952-1.07 1.904-2.141 2.974-3.212q1.493-1.66 2.975-3.33c.951-1.191 1.903-2.262 2.737-3.214s1.665-1.903 2.26-2.617h11.54c-2.26 2.617-4.522 5.235-6.781 7.614q-3.213 3.57-7.138 7.495a48.052 48.052 0 0 1 4.045 4.284c1.427 1.665 2.736 3.33 4.045 4.995a50.807 50.807 0 0 1 3.568 5.236c1.07 1.784 2.024 3.33 2.737 4.759H28.62c-.715-1.19-1.547-2.38-2.38-3.69a43.32 43.32 0 0 0-2.856-4.162 34.21 34.21 0 0 0-3.211-4.045 20.442 20.442 0 0 0-3.213-3.213v14.99H7.205v-49.134l9.755-1.547v28.791"/><path id="uuuuuuu" d="M73.709 264.406a46.294 46.294 0 0 1-6.424 1.309 45.986 45.986 0 0 1-8.21.594 19.17 19.17 0 0 1-7.375-1.189 10.928 10.928 0 0 1-6.9-8.328 27.977 27.977 0 0 1-.715-6.425v-19.154h9.757v17.965c0 3.093.357 5.354 1.19 6.782s2.378 2.141 4.639 2.141a15.169 15.169 0 0 0 2.26-.119c.833-.119 1.429-.119 2.142-.238v-26.53h9.755l-.119 33.192"/><path id="bbbbbbb" d="M105 248.107c0-6.305-2.262-9.398-6.902-9.398a12.706 12.706 0 0 0-2.974.356 8.99 8.99 0 0 0-2.379.952v17.727c.475.119 1.07.119 1.784.238.714 0 1.546.12 2.38.12a7.366 7.366 0 0 0 6.068-2.738 12.2 12.2 0 0 0 2.022-7.257m9.874.238a21.543 21.543 0 0 1-1.19 7.496 15.313 15.313 0 0 1-3.45 5.71 18.297 18.297 0 0 1-5.591 3.688 21.774 21.774 0 0 1-7.615 1.19c-1.189 0-2.379-.12-3.688-.238s-2.497-.238-3.806-.358c-1.19-.118-2.38-.356-3.57-.595a15.037 15.037 0 0 1-2.974-.832V216.34l9.756-1.546v17.132a16.617 16.617 0 0 1 3.45-1.07 19.691 19.691 0 0 1 3.807-.357 15.074 15.074 0 0 1 6.424 1.308 12.884 12.884 0 0 1 4.76 3.57 14.348 14.348 0 0 1 2.855 5.71 33.785 33.785 0 0 1 .832 7.257"/><path id="eeeeeee0" d="M120.704 248.702a20.303 20.303 0 0 1 1.427-7.97 18.206 18.206 0 0 1 3.689-5.712 13.866 13.866 0 0 1 5.233-3.45 15.9 15.9 0 0 1 6.187-1.19 15.227 15.227 0 0 1 11.54 4.521c2.855 2.974 4.282 7.378 4.282 13.087a10.887 10.887 0 0 1-.118 1.904c0 .595-.119 1.189-.119 1.784h-22.13a6.522 6.522 0 0 0 2.856 4.759 11.32 11.32 0 0 0 6.662 1.784 25.212 25.212 0 0 0 5.235-.475 21.342 21.342 0 0 0 4.283-1.19l1.308 7.97c-.476.239-1.19.477-2.14.833a11.994 11.994 0 0 1-2.976.596 26.855 26.855 0 0 1-3.45.475c-1.19.12-2.497.238-3.688.238a20.92 20.92 0 0 1-8.09-1.427 17.517 17.517 0 0 1-5.71-3.688 17.172 17.172 0 0 1-3.33-5.71 27.944 27.944 0 0 1-.954-7.139m22.962-3.807a7.692 7.692 0 0 0-.476-2.38 7.232 7.232 0 0 0-1.07-2.141 5.684 5.684 0 0 0-4.76-2.142 7.188 7.188 0 0 0-2.855.595 4.732 4.732 0 0 0-1.903 1.428 6.24 6.24 0 0 0-1.19 2.142 17.396 17.396 0 0 0-.595 2.38h12.85"/><path id="rrrrrrr" d="M181.26 239.78a17.875 17.875 0 0 0-3.094-.596 19.688 19.688 0 0 0-3.807-.357 20.977 20.977 0 0 0-2.26.238 18.687 18.687 0 0 0-1.904.357v26.293h-9.756v-32.717a50.606 50.606 0 0 1 6.186-1.666 33.468 33.468 0 0 1 7.971-.832 11.58 11.58 0 0 1 1.904.118 16.256 16.256 0 0 1 2.26.238c.715.12 1.428.238 2.261.357.713.12 1.428.358 1.903.476l-1.665 8.09"/><path id="nnnnnnn" d="M188.16 232.403a57.524 57.524 0 0 1 14.633-1.903 18.147 18.147 0 0 1 7.257 1.189 10.191 10.191 0 0 1 4.64 3.212 13.897 13.897 0 0 1 2.38 4.997 26.54 26.54 0 0 1 .713 6.424v19.393h-9.756v-18.201c0-3.094-.356-5.354-1.19-6.663s-2.379-1.904-4.64-1.904a15.17 15.17 0 0 0-2.26.12 11.787 11.787 0 0 0-2.14.237v26.531h-9.638v-33.43"/><path id="eeeeeee1" d="M225.04 248.702a20.301 20.301 0 0 1 1.427-7.97 18.206 18.206 0 0 1 3.69-5.712 13.866 13.866 0 0 1 5.234-3.45 15.9 15.9 0 0 1 6.187-1.19 15.227 15.227 0 0 1 11.54 4.521c2.854 2.974 4.282 7.378 4.282 13.087a10.884 10.884 0 0 1-.119 1.904c0 .595-.12 1.189-.12 1.784h-22.127a6.522 6.522 0 0 0 2.856 4.759 11.32 11.32 0 0 0 6.66 1.784 25.213 25.213 0 0 0 5.237-.475 21.34 21.34 0 0 0 4.282-1.19l1.309 7.97c-.476.239-1.19.477-2.142.833a11.992 11.992 0 0 1-2.974.596 26.86 26.86 0 0 1-3.45.475c-1.19.12-2.499.238-3.688.238a20.92 20.92 0 0 1-8.09-1.427 17.516 17.516 0 0 1-5.71-3.688 17.172 17.172 0 0 1-3.332-5.71 27.938 27.938 0 0 1-.952-7.139m22.961-3.807a7.693 7.693 0 0 0-.475-2.38 7.233 7.233 0 0 0-1.071-2.141 5.684 5.684 0 0 0-4.76-2.142 7.188 7.188 0 0 0-2.855.595 4.732 4.732 0 0 0-1.903 1.428 6.24 6.24 0 0 0-1.19 2.142 17.388 17.388 0 0 0-.594 2.38h12.848"/><path id="ttttttt" d="M264.657 222.647l9.756-1.546v10.112h11.66v8.09h-11.66v12.135a9.566 9.566 0 0 0 1.07 4.878c.715 1.19 2.261 1.785 4.403 1.785a29.167 29.167 0 0 0 3.212-.238 19.344 19.344 0 0 0 3.093-.833l1.427 7.614a18.948 18.948 0 0 1-3.926 1.19 22.872 22.872 0 0 1-5.354.475 18.18 18.18 0 0 1-6.66-1.07 11.01 11.01 0 0 1-4.165-2.975 11.804 11.804 0 0 1-2.261-4.758 30.834 30.834 0 0 1-.594-6.068v-28.791"/><path id="eeeeeee2" d="M291.069 248.702a20.3 20.3 0 0 1 1.428-7.97 18.206 18.206 0 0 1 3.688-5.712 13.866 13.866 0 0 1 5.234-3.45 15.9 15.9 0 0 1 6.187-1.19 15.227 15.227 0 0 1 11.54 4.521c2.856 2.974 4.283 7.378 4.283 13.087a10.885 10.885 0 0 1-.12 1.904c0 .595-.119 1.189-.119 1.784h-22.128a6.522 6.522 0 0 0 2.856 4.759 11.32 11.32 0 0 0 6.661 1.784 25.213 25.213 0 0 0 5.236-.475 21.34 21.34 0 0 0 4.282-1.19l1.31 7.97c-.476.239-1.19.477-2.143.833a11.992 11.992 0 0 1-2.974.596 26.856 26.856 0 0 1-3.45.475c-1.19.12-2.497.238-3.688.238a20.92 20.92 0 0 1-8.09-1.427 17.516 17.516 0 0 1-5.71-3.688 17.172 17.172 0 0 1-3.33-5.71 23.525 23.525 0 0 1-.953-7.139m22.843-3.807a7.692 7.692 0 0 0-.477-2.38 7.232 7.232 0 0 0-1.07-2.141 5.684 5.684 0 0 0-4.759-2.142 7.188 7.188 0 0 0-2.856.595 4.732 4.732 0 0 0-1.904 1.428 6.24 6.24 0 0 0-1.188 2.142 17.391 17.391 0 0 0-.596 2.38h12.85"/><path id="sssssss" d="M340.68 258.576a9.776 9.776 0 0 0 3.807-.475 2.084 2.084 0 0 0 1.07-2.023c0-.833-.475-1.427-1.427-2.022a22.567 22.567 0 0 0-4.403-2.023c-1.546-.595-2.974-1.19-4.162-1.785a11.894 11.894 0 0 1-3.095-2.141 9.304 9.304 0 0 1-2.022-3.094 11.526 11.526 0 0 1-.714-4.282 9.052 9.052 0 0 1 3.569-7.614c2.38-1.904 5.711-2.856 9.875-2.856a33.842 33.842 0 0 1 6.068.595 21.997 21.997 0 0 1 4.52 1.191l-1.665 7.614c-1.19-.358-2.38-.715-3.69-1.071a16.645 16.645 0 0 0-4.4-.477c-3.094 0-4.522.833-4.522 2.498a3.474 3.474 0 0 0 .238 1.072 1.998 1.998 0 0 0 .833.952c.357.238.952.594 1.547.951.714.357 1.546.595 2.617 1.071a39.243 39.243 0 0 1 5.354 2.379 8.882 8.882 0 0 1 3.213 2.499 6.214 6.214 0 0 1 1.665 2.974 12.346 12.346 0 0 1 .476 3.807 8.868 8.868 0 0 1-3.808 7.734c-2.498 1.784-6.067 2.616-10.826 2.616a27.502 27.502 0 0 1-7.613-.832 21.717 21.717 0 0 1-4.164-1.31l1.665-7.97a36.36 36.36 0 0 0 5.116 1.546 21.894 21.894 0 0 0 4.877.476"/></g></g><path d="M76.523 126.992h10.619v8.432h-10.62z" class="cls-1"/><path d="M200.688 120.047a3.59 3.59 0 0 0-.855-.065 3.685 3.685 0 0 0-1.425.37 3.725 3.725 0 0 0-1.803 4.825l-.026.037 8.528 20.603a43.53 43.53 0 0 0 17.595-22.102l-21.976-3.714zm-34.194 2.92a3.72 3.72 0 0 0-3.568-2.894 3.656 3.656 0 0 0-.733.065l-.037-.045-21.785 3.698a43.695 43.695 0 0 0 17.54 21.946l8.442-20.399-.066-.08a3.683 3.683 0 0 0 .207-2.291zm18.245 8a3.718 3.718 0 0 0-6.557.008h-.018l-10.713 19.372a43.637 43.637 0 0 0 23.815 1.225q2.197-.5 4.292-1.199l-10.738-19.407zm33.914-45L202.17 100.72l.009.047a3.725 3.725 0 0 0 1.46 6.395l.02.089 21.35 6.15a44.278 44.278 0 0 0-6.356-27.432zM188.03 87.62a3.725 3.725 0 0 0 5.913 2.84l.065.028 18.036-12.789a43.85 43.85 0 0 0-25.287-12.19l1.253 22.105zm-19.1 2.922a3.72 3.72 0 0 0 5.904-2.85l.092-.044 1.253-22.139a44.68 44.68 0 0 0-4.501.775 43.467 43.467 0 0 0-20.937 11.409l18.154 12.869zm-9.678 16.728a3.72 3.72 0 0 0 1.462-6.396l.018-.087-16.574-14.825a43.454 43.454 0 0 0-6.168 27.511l21.245-6.13zm16.098 6.512l6.114 2.94 6.096-2.933 1.514-6.582-4.219-5.276h-6.79l-4.231 5.268z" class="cls-2"/><path d="M282.538 126.748l-17.422-75.675A13.602 13.602 0 0 0 257.823 42L187.302 8.33a13.589 13.589 0 0 0-11.705 0L105.09 42.018a13.598 13.598 0 0 0-7.295 9.072l-17.394 75.673a13.315 13.315 0 0 0-.004 5.81 13.505 13.505 0 0 0 .491 1.718 13.101 13.101 0 0 0 1.343 2.726c.239.365.491.72.765 1.064l48.804 60.678c.213.264.448.505.681.75a13.423 13.423 0 0 0 2.574 2.133 13.924 13.924 0 0 0 3.857 1.677 13.298 13.298 0 0 0 3.43.473h.759l77.504-.018a12.996 12.996 0 0 0 1.41-.083 13.47 13.47 0 0 0 1.989-.378 13.87 13.87 0 0 0 1.381-.442c.353-.135.705-.27 1.045-.433a13.941 13.941 0 0 0 1.479-.822 13.304 13.304 0 0 0 3.237-2.865l1.488-1.85 47.299-58.84a13.185 13.185 0 0 0 2.108-3.785 13.67 13.67 0 0 0 .5-1.724 13.282 13.282 0 0 0-.004-5.809zm-73.147 29.432a14.515 14.515 0 0 0 .703 1.703 3.314 3.314 0 0 0-.327 2.49 39.373 39.373 0 0 0 3.742 6.7 35.065 35.065 0 0 1 2.263 3.364c.17.315.392.803.553 1.136a4.24 4.24 0 1 1-7.63 3.607c-.161-.33-.385-.77-.522-1.082a35.275 35.275 0 0 1-1.225-3.868 39.305 39.305 0 0 0-2.896-7.097 3.335 3.335 0 0 0-2.154-1.307c-.135-.233-.635-1.149-.903-1.623a54.617 54.617 0 0 1-38.948-.1l-.955 1.731a3.429 3.429 0 0 0-1.819.886 29.518 29.518 0 0 0-3.268 7.582 34.898 34.898 0 0 1-1.218 3.868c-.135.31-.361.744-.522 1.073v.009l-.007.008a4.238 4.238 0 1 1-7.619-3.616c.159-.335.372-.82.54-1.135a35.178 35.178 0 0 1 2.262-3.373 41.227 41.227 0 0 0 3.82-6.866 4.188 4.188 0 0 0-.376-2.387l.768-1.84a54.922 54.922 0 0 1-24.338-30.387l-1.839.313a4.68 4.68 0 0 0-2.428-.855 39.525 39.525 0 0 0-7.356 2.165 35.585 35.585 0 0 1-3.787 1.45c-.305.084-.745.168-1.093.244-.028.01-.052.022-.08.029a.603.603 0 0 1-.065.006 4.236 4.236 0 1 1-1.874-8.224l.061-.015.037-.01c.353-.083.805-.2 1.127-.262a35.268 35.268 0 0 1 4.05-.326 39.39 39.39 0 0 0 7.564-1.242 5.835 5.835 0 0 0 1.814-1.83l1.767-.516a54.613 54.613 0 0 1 8.613-38.073l-1.353-1.206a4.688 4.688 0 0 0-.848-2.436 39.366 39.366 0 0 0-6.277-4.41 35.251 35.251 0 0 1-3.499-2.046c-.256-.191-.596-.478-.874-.704l-.063-.044a4.473 4.473 0 0 1-1.038-6.222 4.066 4.066 0 0 1 3.363-1.488 5.03 5.03 0 0 1 2.942 1.11c.287.225.68.526.935.745a35.253 35.253 0 0 1 2.78 2.95 39.384 39.384 0 0 0 5.69 5.142 3.333 3.333 0 0 0 2.507.243q.754.55 1.522 1.082a54.289 54.289 0 0 1 27.577-15.754 55.052 55.052 0 0 1 7.63-1.173l.1-1.784a4.601 4.601 0 0 0 1.37-2.184 39.476 39.476 0 0 0-.47-7.654 35.468 35.468 0 0 1-.576-4.014c-.011-.307.006-.731.01-1.081 0-.04-.01-.079-.01-.118a4.242 4.242 0 1 1 8.441-.004c0 .37.022.861.009 1.2a35.111 35.111 0 0 1-.579 4.013 39.533 39.533 0 0 0-.478 7.656 3.344 3.344 0 0 0 1.379 2.11c.015.305.065 1.323.102 1.884A55.309 55.309 0 0 1 221.15 71.25l1.606-1.147a4.69 4.69 0 0 0 2.56-.278 39.53 39.53 0 0 0 5.69-5.148 35.004 35.004 0 0 1 2.787-2.95c.259-.222.65-.52.936-.746a4.242 4.242 0 1 1 5.258 6.598c-.283.229-.657.548-.929.75a35.096 35.096 0 0 1-3.507 2.046 39.495 39.495 0 0 0-6.277 4.41 3.337 3.337 0 0 0-.792 2.39c-.235.216-1.06.947-1.497 1.343a54.837 54.837 0 0 1 8.792 37.983l1.704.496a4.745 4.745 0 0 0 1.82 1.831 39.464 39.464 0 0 0 7.568 1.245 35.64 35.64 0 0 1 4.046.324c.355.065.868.207 1.23.29a4.236 4.236 0 1 1-1.878 8.223l-.061-.008c-.028-.007-.054-.022-.083-.029-.348-.076-.785-.152-1.09-.232a35.14 35.14 0 0 1-3.785-1.462 39.477 39.477 0 0 0-7.363-2.165 3.337 3.337 0 0 0-2.362.877q-.9-.171-1.804-.316a54.92 54.92 0 0 1-24.328 30.605z" class="cls-2"/><path d="M291.737 128.689L272.73 46.128a14.838 14.838 0 0 0-7.958-9.9L187.837-.502a14.825 14.825 0 0 0-12.771 0L98.138 36.25a14.838 14.838 0 0 0-7.961 9.895L71.203 128.71a14.668 14.668 0 0 0 1.995 11.185c.261.4.538.788.838 1.162l53.246 66.205a14.98 14.98 0 0 0 11.499 5.487l85.387-.02a14.986 14.986 0 0 0 11.5-5.48l53.227-66.211a14.72 14.72 0 0 0 2.842-12.347zm-9.197 3.866a13.677 13.677 0 0 1-.498 1.723 13.184 13.184 0 0 1-2.11 3.785l-47.299 58.838-1.486 1.852a13.305 13.305 0 0 1-3.24 2.865 13.943 13.943 0 0 1-1.474.822q-.513.237-1.045.431a13.865 13.865 0 0 1-1.383.444 13.472 13.472 0 0 1-1.989.379 12.988 12.988 0 0 1-1.41.082l-77.504.018h-.76a13.298 13.298 0 0 1-3.429-.472 13.924 13.924 0 0 1-3.855-1.678 13.423 13.423 0 0 1-2.576-2.132c-.233-.246-.468-.487-.68-.75l-48.805-60.679q-.408-.514-.765-1.066a13.102 13.102 0 0 1-1.343-2.726 13.506 13.506 0 0 1-.491-1.719 13.315 13.315 0 0 1 .004-5.809l17.394-75.675a13.598 13.598 0 0 1 7.295-9.07l70.508-33.686a13.59 13.59 0 0 1 11.705 0l70.519 33.67a13.602 13.602 0 0 1 7.293 9.073l17.422 75.675a13.282 13.282 0 0 1 .002 5.807z" class="cls-1"/><path d="M252.144 120.687c-.36-.083-.874-.225-1.227-.29a35.635 35.635 0 0 0-4.046-.326 39.464 39.464 0 0 1-7.57-1.242 4.745 4.745 0 0 1-1.82-1.832l-1.704-.496a54.837 54.837 0 0 0-8.79-37.983c.436-.396 1.262-1.127 1.495-1.342a3.338 3.338 0 0 1 .792-2.39 39.495 39.495 0 0 1 6.277-4.41 35.097 35.097 0 0 0 3.507-2.046c.272-.202.644-.522.929-.75a4.242 4.242 0 1 0-5.256-6.6c-.288.227-.68.525-.936.747a35.007 35.007 0 0 0-2.789 2.95 39.532 39.532 0 0 1-5.69 5.148 4.69 4.69 0 0 1-2.56.278l-1.606 1.147a55.309 55.309 0 0 0-35.032-16.927c-.039-.561-.087-1.577-.102-1.884a3.344 3.344 0 0 1-1.377-2.11 39.534 39.534 0 0 1 .478-7.656 35.111 35.111 0 0 0 .575-4.012c.013-.34-.007-.834-.007-1.201a4.242 4.242 0 1 0-8.441.004c0 .04.009.078.01.118-.004.35-.021.774-.01 1.08a35.475 35.475 0 0 0 .576 4.015 39.475 39.475 0 0 1 .47 7.654 4.601 4.601 0 0 1-1.37 2.182l-.1 1.786a55.055 55.055 0 0 0-7.63 1.173 54.289 54.289 0 0 0-27.574 15.754q-.77-.531-1.526-1.082a3.333 3.333 0 0 1-2.506-.243 39.383 39.383 0 0 1-5.69-5.141 35.255 35.255 0 0 0-2.777-2.95c-.257-.22-.65-.52-.938-.749a5.03 5.03 0 0 0-2.942-1.11 4.066 4.066 0 0 0-3.363 1.489 4.473 4.473 0 0 0 1.038 6.222l.065.046c.276.226.616.515.872.702a35.257 35.257 0 0 0 3.499 2.048 39.367 39.367 0 0 1 6.276 4.412 4.69 4.69 0 0 1 .849 2.434l1.351 1.208a54.613 54.613 0 0 0-8.611 38.073l-1.767.514a5.835 5.835 0 0 1-1.814 1.827 39.39 39.39 0 0 1-7.565 1.247 35.264 35.264 0 0 0-4.049.326c-.324.06-.774.174-1.127.262l-.037.008-.06.018a4.236 4.236 0 1 0 1.875 8.224l.063-.01c.028-.006.052-.02.08-.025.348-.079.786-.163 1.092-.246a35.585 35.585 0 0 0 3.786-1.451 39.527 39.527 0 0 1 7.358-2.165 4.68 4.68 0 0 1 2.426.857l1.84-.315a54.922 54.922 0 0 0 24.34 30.387l-.769 1.84a4.188 4.188 0 0 1 .377 2.387 41.227 41.227 0 0 1-3.82 6.864 35.183 35.183 0 0 0-2.263 3.372c-.168.318-.381.805-.542 1.138a4.238 4.238 0 1 0 7.621 3.616l.007-.008v-.01c.16-.33.387-.763.522-1.072a34.9 34.9 0 0 0 1.218-3.868 29.517 29.517 0 0 1 3.268-7.582 3.43 3.43 0 0 1 1.819-.888l.957-1.73a54.617 54.617 0 0 0 38.946.099c.268.478.768 1.392.9 1.623a3.335 3.335 0 0 1 2.155 1.31 39.306 39.306 0 0 1 2.898 7.096 35.274 35.274 0 0 0 1.225 3.868c.137.312.36.751.522 1.082a4.24 4.24 0 1 0 7.63-3.607c-.161-.333-.383-.82-.55-1.136a35.062 35.062 0 0 0-2.263-3.364 39.373 39.373 0 0 1-3.742-6.7 3.314 3.314 0 0 1 .324-2.49 14.515 14.515 0 0 1-.703-1.703 54.92 54.92 0 0 0 24.328-30.605c.546.087 1.497.253 1.806.316a3.337 3.337 0 0 1 2.36-.877 39.477 39.477 0 0 1 7.36 2.165 35.135 35.135 0 0 0 3.788 1.462c.305.08.74.156 1.09.233.029.008.055.021.083.028l.06.009a4.236 4.236 0 1 0 1.878-8.224zm-40.1-42.987l-18.037 12.787-.063-.029a3.723 3.723 0 0 1-5.913-2.839l-.02-.009-1.253-22.104A43.85 43.85 0 0 1 212.043 77.7zm-33.978 24.228h6.788l4.22 5.276-1.513 6.581-6.096 2.933-6.114-2.94-1.516-6.583zM171.68 66.28a44.676 44.676 0 0 1 4.503-.774l-1.255 22.137-.092.044a3.72 3.72 0 0 1-5.904 2.852l-.035.02-18.154-12.872A43.467 43.467 0 0 1 171.68 66.28zm-27.52 19.681l16.574 14.823-.018.091a3.72 3.72 0 0 1-1.462 6.394l-.017.072-21.245 6.131a43.454 43.454 0 0 1 6.168-27.51zm22.191 39.38l-8.441 20.396a43.696 43.696 0 0 1-17.536-21.948l21.783-3.699.037.048a3.655 3.655 0 0 1 .73-.065 3.72 3.72 0 0 1 3.364 5.185zm24.916 26.23a43.637 43.637 0 0 1-23.815-1.224l10.713-19.372h.018a3.725 3.725 0 0 1 6.557-.006h.08l10.74 19.404q-2.091.698-4.293 1.199zm13.841-5.752l-8.528-20.605.026-.037a3.725 3.725 0 0 1 1.803-4.823 3.685 3.685 0 0 1 1.425-.37 3.59 3.59 0 0 1 .855.063l.037-.046 21.977 3.714a43.53 43.53 0 0 1-17.595 22.105zm19.903-32.419l-21.352-6.15-.02-.09a3.725 3.725 0 0 1-1.46-6.396l-.008-.043 16.482-14.751a44.279 44.279 0 0 1 6.357 27.43z" class="cls-1"/></svg>
@@ -0,0 +1,6 @@
1
+ import type { IKubernetesResource } from '../interfaces';
2
+
3
+ export interface IAnnotationCustomSectionsProps {
4
+ manifest: any;
5
+ resource: IKubernetesResource;
6
+ }
@@ -0,0 +1,5 @@
1
+ export interface IManifestCoordinates {
2
+ name: string;
3
+ namespace: string;
4
+ account: string;
5
+ }
@@ -0,0 +1,76 @@
1
+ import { mount } from 'enzyme';
2
+ import { load } from 'js-yaml';
3
+ import React from 'react';
4
+
5
+ import { ManifestImageDetails } from '../manifest/ManifestImageDetails';
6
+
7
+ describe('<ManifestImageDetails />', () => {
8
+ it('renders image names', () => {
9
+ const manifest = `
10
+ apiVersion: extensions/v1beta1
11
+ kind: Deployment
12
+ spec:
13
+ template:
14
+ spec:
15
+ containers:
16
+ - image: 'nginx:1.9.9'
17
+ imagePullPolicy: IfNotPresent
18
+ name: nginx`;
19
+ const wrapper = component(manifest);
20
+ const li = wrapper.find('li').at(0);
21
+ expect(li.text().trim()).toEqual('nginx:1.9.9');
22
+ });
23
+
24
+ it('separates `containers` and `initContainers` if both are present', () => {
25
+ let manifest = `
26
+ apiVersion: extensions/v1beta1
27
+ kind: Deployment
28
+ spec:
29
+ template:
30
+ spec:
31
+ containers:
32
+ - image: 'nginx:1.9.9'
33
+ imagePullPolicy: IfNotPresent
34
+ name: nginx`;
35
+ let wrapper = component(manifest);
36
+ expect(wrapper.html()).not.toContain('Init Containers');
37
+ expect(wrapper.html()).not.toContain('Containers');
38
+
39
+ manifest = `
40
+ apiVersion: extensions/v1beta1
41
+ kind: Deployment
42
+ spec:
43
+ template:
44
+ spec:
45
+ containers:
46
+ - image: 'nginx:1.9.9'
47
+ imagePullPolicy: IfNotPresent
48
+ name: nginx
49
+ initContainers:
50
+ - command:
51
+ - echo
52
+ - helloworld
53
+ image: busybox
54
+ name: init-deployment`;
55
+ wrapper = component(manifest);
56
+ expect(wrapper.html()).toContain('Init Containers');
57
+ expect(wrapper.html()).toContain('Containers');
58
+ });
59
+
60
+ it('appends `:latest` to an image without a tag or digest', () => {
61
+ const manifest = `
62
+ apiVersion: extensions/v1beta1
63
+ kind: Deployment
64
+ spec:
65
+ template:
66
+ spec:
67
+ containers:
68
+ - image: busybox
69
+ imagePullPolicy: IfNotPresent
70
+ name: busybox`;
71
+ const wrapper = component(manifest);
72
+ const li = wrapper.find('li').at(0);
73
+ expect(li.text().trim()).toEqual('busybox:latest');
74
+ });
75
+ });
76
+ const component = (manifest: string) => mount((<ManifestImageDetails manifest={load(manifest)} />) as any);
@@ -0,0 +1,64 @@
1
+ import { has, sortBy } from 'lodash';
2
+ import React from 'react';
3
+
4
+ import { HelpField } from '@spinnaker/core';
5
+
6
+ export interface IContainer {
7
+ name: string;
8
+ image: string;
9
+ }
10
+
11
+ export interface IManifestImageDetailsProps {
12
+ manifest: {
13
+ spec: {
14
+ template: {
15
+ spec: {
16
+ containers: IContainer;
17
+ initContainers: IContainer;
18
+ };
19
+ };
20
+ };
21
+ };
22
+ }
23
+
24
+ // From https://github.com/docker/distribution/blob/master/docs/spec/api.md
25
+ // if an image doesn't have a colon, it doesn't have a tag or digest.
26
+ const normalizeImage = (image: string): string => {
27
+ if (image && image.includes(':')) {
28
+ return image;
29
+ }
30
+ return `${image}:latest`;
31
+ };
32
+
33
+ export const ManifestImageDetails = ({ manifest }: IManifestImageDetailsProps) => {
34
+ if (!has(manifest, 'spec.template.spec')) {
35
+ // Could still be loading the manifest in a parent component.
36
+ return null;
37
+ }
38
+ const containers = sortBy(manifest.spec.template.spec.containers || [], ['image']);
39
+ const initContainers = sortBy(manifest.spec.template.spec.initContainers || [], ['image']);
40
+ const hasBothContainerTypes = containers.length > 0 && initContainers.length > 0;
41
+ if (containers.length === 0 && initContainers.length === 0) {
42
+ // Not sure if this could happen
43
+ return <span>No images.</span>;
44
+ }
45
+
46
+ return (
47
+ <ul>
48
+ {hasBothContainerTypes && <strong>Containers</strong>}
49
+ {containers.map((container) => (
50
+ <li key={container.image} title={normalizeImage(container.image)} className="break-word">
51
+ {normalizeImage(container.image)}{' '}
52
+ <HelpField content={`This is container <strong>${container.name}</strong>'s image.`} />
53
+ </li>
54
+ ))}
55
+ {hasBothContainerTypes && <strong>Init Containers</strong>}
56
+ {initContainers.map((container) => (
57
+ <li key={container.image} className="break-word" title={normalizeImage(container.image)}>
58
+ {normalizeImage(container.image)}{' '}
59
+ <HelpField content={`This is init container <strong>${container.name}</strong>'s image.`} />
60
+ </li>
61
+ ))}
62
+ </ul>
63
+ );
64
+ };
@@ -0,0 +1,31 @@
1
+ import { chain } from 'lodash';
2
+
3
+ import { SearchService } from '@spinnaker/core';
4
+
5
+ interface IManifestKindSearchResults {
6
+ account: string;
7
+ kubernetesKind: string;
8
+ name: string;
9
+ namespace: string;
10
+ provider: string;
11
+ region: string;
12
+ type: string; // spinnakerKind
13
+ }
14
+
15
+ export class ManifestKindSearchService {
16
+ public static search(kind: string, namespace: string, account: string): PromiseLike<IManifestKindSearchResults[]> {
17
+ return SearchService.search<IManifestKindSearchResults>({
18
+ q: namespace,
19
+ type: kind,
20
+ })
21
+ .then((response) =>
22
+ chain(response ? response.results : [])
23
+ .filter(
24
+ (result) => result.namespace === namespace && result.account === account && result.kubernetesKind === kind,
25
+ )
26
+ .uniqBy('name')
27
+ .valueOf(),
28
+ )
29
+ .catch(() => []);
30
+ }
31
+ }
@@ -0,0 +1,31 @@
1
+ import { get, keys } from 'lodash';
2
+ import React from 'react';
3
+
4
+ import './manifestLabels.less';
5
+
6
+ export interface IManifestLabelsMap {
7
+ [key: string]: string;
8
+ }
9
+
10
+ export interface IManifestLabelsProps {
11
+ manifest?: {
12
+ metadata?: {
13
+ labels?: IManifestLabelsMap;
14
+ };
15
+ };
16
+ }
17
+
18
+ export class ManifestLabels extends React.Component<IManifestLabelsProps> {
19
+ public render() {
20
+ const labels: IManifestLabelsMap = get(this.props, ['manifest', 'metadata', 'labels'], {});
21
+ return (
22
+ <div className="horizontal wrap">
23
+ {keys(labels).map((key) => (
24
+ <div key={key} className="manifest-label sp-badge info">
25
+ {key}: {labels[key]}
26
+ </div>
27
+ ))}
28
+ </div>
29
+ );
30
+ }
31
+ }
@@ -0,0 +1,68 @@
1
+ import { get } from 'lodash';
2
+ import React from 'react';
3
+
4
+ import { HoverablePopover } from '@spinnaker/core';
5
+
6
+ import './manifestLabels.less';
7
+
8
+ // TODO(dpeach) https://github.com/spinnaker/spinnaker/issues/3239
9
+ export interface IManifestQosProps {
10
+ manifest?: {
11
+ status?: {
12
+ qosClass?: string;
13
+ };
14
+ };
15
+ }
16
+
17
+ export class ManifestQos extends React.Component<IManifestQosProps> {
18
+ private qosClass(): string {
19
+ return get(this.props, ['manifest', 'status', 'qosClass'], 'Unknown');
20
+ }
21
+
22
+ private qosStyle(): string {
23
+ const qosClass = this.qosClass();
24
+ if (qosClass === 'Guaranteed') {
25
+ return 'success';
26
+ } else if (qosClass === 'BestEffort') {
27
+ return 'alert';
28
+ } else {
29
+ return 'warn';
30
+ }
31
+ }
32
+
33
+ private description = () => {
34
+ return (
35
+ <div>
36
+ <p>There are three QOS (Quality of Service) classes:</p>
37
+ <p>
38
+ <b>Guaranteed</b>: Pods are considered highest-priority, and will only be killed if they exceed their resource
39
+ requests when other containers require their resources.
40
+ </p>
41
+ <p>
42
+ <b>Burstable</b>: Pods have some minimum guaranteed resources and can exceed them, but are more likely to be
43
+ killed than <b>Guaranteed</b> pods.
44
+ </p>
45
+ <p>
46
+ <b>BestEffort</b>: These are the lowest-priority pods, and will be the first to be evicted when resources run
47
+ out.
48
+ </p>
49
+ <p>
50
+ To understand how to set the QOS class of a pod, read{' '}
51
+ <a href="https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/">
52
+ the Kubernetes documentation
53
+ </a>
54
+ .
55
+ </p>
56
+ </div>
57
+ );
58
+ };
59
+
60
+ public render() {
61
+ const style = `sp-badge ${this.qosStyle()}`;
62
+ return (
63
+ <HoverablePopover Component={this.description} title="QOS Class" className={`ephemeral-popover`}>
64
+ <div className={style}>{this.qosClass()}</div>
65
+ </HoverablePopover>
66
+ );
67
+ }
68
+ }
@@ -0,0 +1,69 @@
1
+ import { get } from 'lodash';
2
+ import React from 'react';
3
+
4
+ export interface IManifestResources {
5
+ cpu?: string;
6
+ memory?: string;
7
+ }
8
+
9
+ // TODO(dpeach) https://github.com/spinnaker/spinnaker/issues/3239
10
+ export interface IManifestResourceProps {
11
+ manifest?: {
12
+ spec?: {
13
+ containers?: [
14
+ {
15
+ name?: string;
16
+ resources?: {
17
+ limits?: IManifestResources;
18
+ requests?: IManifestResources;
19
+ };
20
+ },
21
+ ];
22
+ };
23
+ status?: {
24
+ qosClass?: string;
25
+ };
26
+ };
27
+ metrics?: [
28
+ {
29
+ containerName?: string;
30
+ metrics?: IPodMetricsMap;
31
+ },
32
+ ];
33
+ }
34
+
35
+ export interface IPodMetricsMap {
36
+ [key: string]: string;
37
+ }
38
+
39
+ export class ManifestResources extends React.Component<IManifestResourceProps> {
40
+ public render() {
41
+ const containers = get(this.props, ['manifest', 'spec', 'containers'], []);
42
+ const metrics = get(this.props, ['metrics'], []);
43
+
44
+ if (!metrics) {
45
+ return <div>No metrics reported.</div>;
46
+ }
47
+ const containerToMetricMap = metrics.reduce((acc, val) => {
48
+ acc[val.containerName] = { metrics: val.metrics };
49
+ return acc;
50
+ }, {});
51
+
52
+ return (
53
+ <div>
54
+ {containers.map((c, i) => (
55
+ <div key={c.name}>
56
+ Resource usage for <b>{c.name}</b>
57
+ <dl className="dl-horizontal dl-narrow">
58
+ <dt>CPU</dt>
59
+ <dd>{get(containerToMetricMap, [c.name, 'metrics', 'CPU(cores)'], 'Unknown')}</dd>
60
+ <dt>MEMORY</dt>
61
+ <dd>{get(containerToMetricMap, [c.name, 'metrics', 'MEMORY(bytes)'], 'Unknown')}</dd>
62
+ </dl>
63
+ {i < containers.length - 1 ? <hr /> : ''}
64
+ </div>
65
+ ))}
66
+ </div>
67
+ );
68
+ }
69
+ }
@@ -0,0 +1,4 @@
1
+ export enum ManifestSource {
2
+ TEXT = 'text',
3
+ ARTIFACT = 'artifact',
4
+ }
@@ -0,0 +1,114 @@
1
+ import type { IComponentOptions, IController, IInterpolateService, ISCEService } from 'angular';
2
+ import { module } from 'angular';
3
+ import DOMPurify from 'dompurify';
4
+ import { get, partition } from 'lodash';
5
+
6
+ interface IAnnotationsMap {
7
+ [key: string]: string;
8
+ }
9
+
10
+ interface ICustomSection {
11
+ title: string;
12
+ key: string;
13
+ isHtml: boolean;
14
+ content: string;
15
+ }
16
+
17
+ interface ICustomSectionMap {
18
+ [key: string]: ICustomSection[];
19
+ }
20
+
21
+ class KubernetesAnnotationCustomSections implements IController {
22
+ private resource: any;
23
+ public manifest: any;
24
+ public customSections: ICustomSectionMap;
25
+
26
+ public static $inject = ['$sce', '$interpolate'];
27
+ constructor(private $sce: ISCEService, private $interpolate: IInterpolateService) {}
28
+
29
+ public $onInit() {
30
+ const annotations: IAnnotationsMap = get(this, ['manifest', 'metadata', 'annotations']);
31
+ if (annotations == null) {
32
+ return;
33
+ }
34
+ this.populateCustomSections(annotations);
35
+ }
36
+
37
+ private populateCustomSections(annotations: IAnnotationsMap) {
38
+ const customSections: ICustomSectionMap = Object.keys(annotations).reduce(
39
+ (memo: ICustomSectionMap, annotationKey: string) => {
40
+ const entry = this.annotationToEntry(annotations[annotationKey], annotationKey);
41
+ if (entry != null && entry.title) {
42
+ memo[entry.title] = memo[entry.title] || [];
43
+ memo[entry.title].push(entry);
44
+ }
45
+ return memo;
46
+ },
47
+ {},
48
+ );
49
+ // Sort section contents such that text entries appear before HTML entries.
50
+ this.customSections = Object.keys(customSections).reduce((memo: ICustomSectionMap, sectionTitle: string) => {
51
+ const entriesHtmlText = partition(customSections[sectionTitle], (section) => section.isHtml);
52
+ memo[sectionTitle] = entriesHtmlText[1].concat(entriesHtmlText[0]);
53
+ return memo;
54
+ }, {});
55
+ }
56
+
57
+ private annotationToEntry(content: string, annotationKey: string): ICustomSection {
58
+ const parsed = this.parseAnnotationKey(annotationKey);
59
+ if (parsed == null) {
60
+ return null;
61
+ }
62
+ if (this.resource && content.includes('{{')) {
63
+ content = this.$interpolate(content)({ ...this.resource, manifest: this.manifest });
64
+ }
65
+ return {
66
+ title: parsed.title.replace(/-/g, ' ').trim(),
67
+ key: parsed.key.replace(/-/g, ' ').trim(),
68
+ content: parsed.isHtml ? this.sanitizeContent(content) : content,
69
+ isHtml: parsed.isHtml,
70
+ };
71
+ }
72
+
73
+ private parseAnnotationKey(annotationKey: string): { title: string; key: string; isHtml: boolean } {
74
+ const keyParts = /([^.]+)\.details\.(html\.)?spinnaker\.io(?:\/(.*))?/.exec(annotationKey);
75
+ if (keyParts == null || keyParts.length !== 4) {
76
+ return null;
77
+ }
78
+ return {
79
+ title: keyParts[1] || '',
80
+ key: keyParts[3] || '',
81
+ isHtml: !!keyParts[2],
82
+ };
83
+ }
84
+
85
+ private sanitizeContent(unsanitized: string): any {
86
+ const sanitized = DOMPurify.sanitize(unsanitized, {
87
+ ADD_ATTR: ['target'],
88
+ });
89
+ return this.$sce.trustAsHtml(sanitized);
90
+ }
91
+ }
92
+
93
+ export const kubernetesAnnotationCustomSectionsComponent: IComponentOptions = {
94
+ bindings: { manifest: '<', resource: '<' },
95
+ controller: ['$sce', '$interpolate', KubernetesAnnotationCustomSections],
96
+ controllerAs: 'ctrl',
97
+ template: `
98
+ <collapsible-section expanded="true" ng-if="ctrl.manifest" ng-repeat="(section, entries) in ctrl.customSections" heading="{{ section }}">
99
+ <div ng-repeat="entry in entries">
100
+ <div ng-if="entry.isHtml" ng-bind-html="entry.content"></div>
101
+ <div ng-if="!entry.isHtml">
102
+ <span ng-if="entry.key" style="font-weight:bold">{{ entry.key }}</span>
103
+ <span>{{ entry.content }}</span>
104
+ </div>
105
+ </div>
106
+ </collapsible-section>
107
+ `,
108
+ };
109
+
110
+ export const KUBERNETES_ANNOTATION_CUSTOM_SECTIONS = 'spinnaker.kubernetes.v2.manifest.annotation.custom.sections';
111
+ module(KUBERNETES_ANNOTATION_CUSTOM_SECTIONS, []).component(
112
+ 'kubernetesAnnotationCustomSections',
113
+ kubernetesAnnotationCustomSectionsComponent,
114
+ );
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+
3
+ import type { IArtifact } from '@spinnaker/core';
4
+
5
+ export interface IKubernetesManifestArtifactProps {
6
+ artifact: IArtifact;
7
+ }
8
+
9
+ export function ManifestArtifact({ artifact }: IKubernetesManifestArtifactProps) {
10
+ return (
11
+ <span>
12
+ <b>{artifact.type}&nbsp;</b>
13
+ <i>{artifact.reference}</i>
14
+ </span>
15
+ );
16
+ }
@@ -0,0 +1,80 @@
1
+ import type { IController } from 'angular';
2
+ import { copy, module } from 'angular';
3
+ import type { IModalServiceInstance } from 'angular-ui-bootstrap';
4
+
5
+ import type { Application } from '@spinnaker/core';
6
+ import { ManifestWriter, TaskMonitor } from '@spinnaker/core';
7
+ import type { IManifestCoordinates } from '../IManifestCoordinates';
8
+ import { KUBERNETES_DELETE_MANIFEST_OPTIONS_FORM } from './deleteOptionsForm.component';
9
+
10
+ export interface IDeleteCommand {
11
+ manifestName: string;
12
+ location: string;
13
+ account: string;
14
+ reason: string;
15
+ options: IDeleteOptions;
16
+ }
17
+
18
+ export interface IDeleteOptions {
19
+ gracePeriodSeconds?: number;
20
+ cascading: boolean;
21
+ }
22
+
23
+ class KubernetesManifestDeleteController implements IController {
24
+ public taskMonitor: TaskMonitor;
25
+ public command: IDeleteCommand;
26
+ public verification = {
27
+ verified: false,
28
+ };
29
+
30
+ public static $inject = ['coordinates', '$uibModalInstance', 'application', 'manifestController'];
31
+ constructor(
32
+ coordinates: IManifestCoordinates,
33
+ private $uibModalInstance: IModalServiceInstance,
34
+ private application: Application,
35
+ public manifestController: string,
36
+ ) {
37
+ this.taskMonitor = new TaskMonitor({
38
+ title: `Deleting ${coordinates.name} in ${coordinates.namespace}`,
39
+ application,
40
+ modalInstance: $uibModalInstance,
41
+ });
42
+
43
+ this.command = {
44
+ manifestName: coordinates.name,
45
+ location: coordinates.namespace,
46
+ account: coordinates.account,
47
+ reason: null,
48
+ options: {
49
+ cascading: true,
50
+ },
51
+ };
52
+ }
53
+
54
+ public isValid(): boolean {
55
+ return this.verification.verified;
56
+ }
57
+
58
+ public cancel(): void {
59
+ this.$uibModalInstance.dismiss();
60
+ }
61
+
62
+ public delete(): void {
63
+ this.taskMonitor.submit(() => {
64
+ const payload = copy(this.command) as any;
65
+ payload.cloudProvider = 'kubernetes';
66
+ // cascading is the kubectl term (more familiar) orphanDependants is the k8s server term
67
+ payload.options.orphanDependants = !payload.options.cascading;
68
+ delete payload.options.cascading;
69
+
70
+ return ManifestWriter.deleteManifest(payload, this.application);
71
+ });
72
+ }
73
+ }
74
+
75
+ export const KUBERNETES_MANIFEST_DELETE_CTRL = 'spinnaker.kubernetes.v2.manifest.delete.controller';
76
+
77
+ module(KUBERNETES_MANIFEST_DELETE_CTRL, [KUBERNETES_DELETE_MANIFEST_OPTIONS_FORM]).controller(
78
+ 'kubernetesV2ManifestDeleteCtrl',
79
+ KubernetesManifestDeleteController,
80
+ );
@@ -0,0 +1,42 @@
1
+ <div modal-page class="confirmation-modal">
2
+ <task-monitor monitor="ctrl.taskMonitor"></task-monitor>
3
+ <form role="form" name="deleteForm">
4
+ <modal-close dismiss="$dismiss()"></modal-close>
5
+ <div class="modal-header">
6
+ <h4 class="modal-title">Delete {{ctrl.command.manifestName | robotToHuman}} in {{ctrl.command.location}}</h4>
7
+ </div>
8
+ <div ng-if="ctrl.manifestController">
9
+ <div class="alert alert-warning">
10
+ Manifest is controlled by
11
+ <a
12
+ ui-sref="^.serverGroupManager({
13
+ accountId: ctrl.command.account,
14
+ region: ctrl.command.location,
15
+ serverGroupManager: ctrl.manifestController,
16
+ provider: 'kubernetes'})"
17
+ >
18
+ {{ctrl.manifestController | robotToHuman }}
19
+ </a>
20
+ and may be recreated after deletion.
21
+ </div>
22
+ </div>
23
+ <div class="modal-body confirmation-modal">
24
+ <kubernetes-delete-manifest-options-form options="ctrl.command.options"></kubernetes-delete-manifest-options-form>
25
+ <task-reason command="ctrl.command"></task-reason>
26
+ </div>
27
+ <div class="modal-footer">
28
+ <user-verification account="ctrl.command.account" verification="ctrl.verification"></user-verification>
29
+ <button type="submit" ng-click="ctrl.delete()" style="display: none"></button>
30
+ <!-- Allows form submission via enter keypress-->
31
+ <button class="btn btn-default" ng-click="ctrl.cancel()">Cancel</button>
32
+ <button
33
+ type="submit"
34
+ class="btn btn-primary"
35
+ ng-click="ctrl.delete()"
36
+ ng-disabled="!ctrl.isValid() || !deleteForm.$valid"
37
+ >
38
+ Submit
39
+ </button>
40
+ </div>
41
+ </form>
42
+ </div>