@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,155 @@
1
+ import { module } from 'angular';
2
+
3
+ import {
4
+ CloudProviderRegistry,
5
+ SETTINGS,
6
+ STAGE_ARTIFACT_SELECTOR_COMPONENT_REACT,
7
+ YAML_EDITOR_COMPONENT,
8
+ } from '@spinnaker/core';
9
+
10
+ import './help/kubernetes.help';
11
+ import { KUBERNETES_INSTANCE_DETAILS_CTRL } from './instance/details/details.controller';
12
+ import { KUBERNETES_LOAD_BALANCER_DETAILS_CTRL } from './loadBalancer/details/details.controller';
13
+ import { KUBERNETES_LOAD_BALANCER_TRANSFORMER } from './loadBalancer/transformer';
14
+ import kubernetesLogo from './logo/kubernetes.logo.svg';
15
+ import { KUBERNETES_ANNOTATION_CUSTOM_SECTIONS } from './manifest/annotationCustomSections.component';
16
+ import { KUBERNETES_MANIFEST_DELETE_CTRL } from './manifest/delete/delete.controller';
17
+ import { JSON_EDITOR_COMPONENT } from './manifest/editor/json/jsonEditor.component';
18
+ import { KUBERNETES_MANIFEST_EVENTS } from './manifest/manifestEvents.component';
19
+ import { KUBERNETES_MANIFEST_IMAGE_DETAILS } from './manifest/manifestImageDetails.component';
20
+ import { KUBERNETES_MANIFEST_LABELS } from './manifest/manifestLabels.component';
21
+ import { KUBERNETES_MANIFEST_QOS } from './manifest/manifestQos.component';
22
+ import { KUBERNETES_MANIFEST_RESOURCES } from './manifest/manifestResources.component';
23
+ import { KUBERNETES_MANIFEST_PAUSE_ROLLOUT_CTRL } from './manifest/rollout/pause.controller';
24
+ import { KUBERNETES_MANIFEST_RESUME_ROLLOUT_CTRL } from './manifest/rollout/resume.controller';
25
+ import { KUBERNETES_MANIFEST_UNDO_ROLLOUT_CTRL } from './manifest/rollout/undo.controller';
26
+ import { KUBERNETES_MANIFEST_SCALE_CTRL } from './manifest/scale/scale.controller';
27
+ import { KUBERNETES_MANIFEST_SELECTOR } from './manifest/selector/selector.component';
28
+ import { KUBERNETES_MANIFEST_CONDITION } from './manifest/status/condition.component';
29
+ import { KUBERNETES_MANIFEST_STATUS } from './manifest/status/status.component';
30
+ import { ManifestWizard } from './manifest/wizard/ManifestWizard';
31
+ import './pipelines/stages';
32
+ import { KUBERNETES_DISABLE_MANIFEST_STAGE } from './pipelines/stages/traffic/disableManifest.stage';
33
+ import { KUBERNETES_ENABLE_MANIFEST_STAGE } from './pipelines/stages/traffic/enableManifest.stage';
34
+ import './pipelines/validation/manifestSelector.validator';
35
+ import { KUBERNETS_RAW_RESOURCE_MODULE } from './rawResource';
36
+ import { KUBERNETES_REACT_MODULE } from './reactShims/kubernetes.react.module';
37
+ import { KUBERNETES_RESOURCE_STATES } from './resources/resources.state';
38
+ import { KUBERNETES_SECURITY_GROUP_DETAILS_CTRL } from './securityGroup/details/details.controller';
39
+ import { KubernetesSecurityGroupReader } from './securityGroup/securityGroup.reader';
40
+ import { KUBERNETES_SECURITY_GROUP_TRANSFORMER } from './securityGroup/transformer';
41
+ import { KubernetesServerGroupActions } from './serverGroup/details/KubernetesServerGroupActions';
42
+ import { kubernetesServerGroupDetailsGetter } from './serverGroup/details/kubernetesServerGroupDetailsGetter';
43
+ import {
44
+ ServerGroupAnnotationCustomSection,
45
+ ServerGroupEventsSection,
46
+ ServerGroupHealthSection,
47
+ ServerGroupImagesSection,
48
+ ServerGroupInformationSection,
49
+ ServerGroupLabelsSection,
50
+ ServerGroupManifestStatusSection,
51
+ ServerGroupSizeSection,
52
+ } from './serverGroup/details/sections';
53
+ import { KubernetesV2ServerGroupCommandBuilder } from './serverGroup/serverGroupCommandBuilder';
54
+ import { KubernetesV2ServerGroupTransformer } from './serverGroup/serverGroupTransformer';
55
+ import { ServerGroupManagerDetails } from './serverGroupManager/details/ServerGroupManagerDetails';
56
+ import './validation/applicationName.validator';
57
+
58
+ import './logo/kubernetes.logo.less';
59
+
60
+ export const KUBERNETES_MODULE = 'spinnaker.kubernetes';
61
+
62
+ const requires = [
63
+ KUBERNETES_REACT_MODULE,
64
+ KUBERNETES_INSTANCE_DETAILS_CTRL,
65
+ KUBERNETES_LOAD_BALANCER_DETAILS_CTRL,
66
+ KUBERNETES_SECURITY_GROUP_DETAILS_CTRL,
67
+ KUBERNETES_MANIFEST_DELETE_CTRL,
68
+ KUBERNETES_MANIFEST_SCALE_CTRL,
69
+ KUBERNETES_MANIFEST_UNDO_ROLLOUT_CTRL,
70
+ KUBERNETES_MANIFEST_PAUSE_ROLLOUT_CTRL,
71
+ KUBERNETES_MANIFEST_RESUME_ROLLOUT_CTRL,
72
+ KUBERNETES_MANIFEST_STATUS,
73
+ KUBERNETES_MANIFEST_CONDITION,
74
+ KUBERNETES_LOAD_BALANCER_TRANSFORMER,
75
+ KUBERNETES_SECURITY_GROUP_TRANSFORMER,
76
+ KUBERNETES_MANIFEST_SELECTOR,
77
+ KUBERNETES_MANIFEST_LABELS,
78
+ KUBERNETES_MANIFEST_EVENTS,
79
+ KUBERNETES_MANIFEST_RESOURCES,
80
+ KUBERNETES_MANIFEST_QOS,
81
+ KUBERNETES_ANNOTATION_CUSTOM_SECTIONS,
82
+ KUBERNETES_MANIFEST_IMAGE_DETAILS,
83
+ KUBERNETES_RESOURCE_STATES,
84
+ YAML_EDITOR_COMPONENT,
85
+ JSON_EDITOR_COMPONENT,
86
+ KUBERNETES_ENABLE_MANIFEST_STAGE,
87
+ KUBERNETES_DISABLE_MANIFEST_STAGE,
88
+ STAGE_ARTIFACT_SELECTOR_COMPONENT_REACT,
89
+ ];
90
+
91
+ if (SETTINGS.feature.kubernetesRawResources) {
92
+ requires.push(KUBERNETS_RAW_RESOURCE_MODULE);
93
+ }
94
+
95
+ module(KUBERNETES_MODULE, requires).config(() => {
96
+ CloudProviderRegistry.registerProvider('kubernetes', {
97
+ name: 'Kubernetes',
98
+ adHocInfrastructureWritesEnabled: SETTINGS.kubernetesAdHocInfraWritesEnabled,
99
+ logo: {
100
+ path: kubernetesLogo,
101
+ },
102
+ serverGroup: {
103
+ CloneServerGroupModal: ManifestWizard,
104
+ detailsActions: KubernetesServerGroupActions,
105
+ detailsGetter: kubernetesServerGroupDetailsGetter,
106
+ detailsSections: [
107
+ ServerGroupManifestStatusSection,
108
+ ServerGroupInformationSection,
109
+ ServerGroupAnnotationCustomSection,
110
+ ServerGroupImagesSection,
111
+ ServerGroupEventsSection,
112
+ ServerGroupLabelsSection,
113
+ ServerGroupSizeSection,
114
+ ServerGroupHealthSection,
115
+ ],
116
+ commandBuilder: KubernetesV2ServerGroupCommandBuilder,
117
+ transformer: KubernetesV2ServerGroupTransformer,
118
+ },
119
+ serverGroupManager: {
120
+ details: ServerGroupManagerDetails,
121
+ },
122
+ loadBalancer: {
123
+ CreateLoadBalancerModal: ManifestWizard,
124
+ detailsController: 'kubernetesV2LoadBalancerDetailsCtrl',
125
+ detailsTemplateUrl: require('./loadBalancer/details/details.html'),
126
+ transformer: 'kubernetesV2LoadBalancerTransformer',
127
+ },
128
+ securityGroup: {
129
+ reader: KubernetesSecurityGroupReader,
130
+ CreateSecurityGroupModal: ManifestWizard,
131
+ detailsController: 'kubernetesV2SecurityGroupDetailsCtrl',
132
+ detailsTemplateUrl: require('./securityGroup/details/details.html'),
133
+ transformer: 'kubernetesV2SecurityGroupTransformer',
134
+ },
135
+ instance: {
136
+ detailsController: 'kubernetesV2InstanceDetailsCtrl',
137
+ detailsTemplateUrl: require('./instance/details/details.html'),
138
+ },
139
+ unsupportedStageTypes: [
140
+ 'deploy',
141
+ 'destroyServerGroup',
142
+ 'disableCluster',
143
+ 'disableServerGroup',
144
+ 'enableServerGroup',
145
+ 'findImage',
146
+ 'resizeServerGroup',
147
+ 'rollbackCluster',
148
+ 'runJob',
149
+ 'scaleDown',
150
+ 'scaleDownCluster',
151
+ 'shrinkCluster',
152
+ 'upsertLoadBalancers',
153
+ ],
154
+ });
155
+ });
@@ -0,0 +1,101 @@
1
+ import type { StateService } from '@uirouter/angularjs';
2
+ import type { IController, IScope } from 'angular';
3
+ import { module } from 'angular';
4
+ import type { IModalService } from 'angular-ui-bootstrap';
5
+
6
+ import type { Application, ILoadBalancer, IManifest } from '@spinnaker/core';
7
+ import { ManifestReader, SETTINGS } from '@spinnaker/core';
8
+
9
+ import type { IKubernetesLoadBalancer } from '../../interfaces';
10
+ import { KubernetesManifestCommandBuilder } from '../../manifest/manifestCommandBuilder.service';
11
+ import { ManifestWizard } from '../../manifest/wizard/ManifestWizard';
12
+
13
+ interface ILoadBalancerFromStateParams {
14
+ accountId: string;
15
+ region: string;
16
+ name: string;
17
+ }
18
+
19
+ class KubernetesLoadBalancerDetailsController implements IController {
20
+ public state = { loading: true };
21
+ public manifest: IManifest;
22
+ public loadBalancer: IKubernetesLoadBalancer;
23
+
24
+ public static $inject = ['$uibModal', '$state', '$scope', 'loadBalancer', 'app'];
25
+ constructor(
26
+ private $uibModal: IModalService,
27
+ private $state: StateService,
28
+ private $scope: IScope,
29
+ loadBalancer: ILoadBalancerFromStateParams,
30
+ private app: Application,
31
+ ) {
32
+ const dataSource = this.app.getDataSource('loadBalancers');
33
+ dataSource
34
+ .ready()
35
+ .then(() => {
36
+ this.extractLoadBalancer(loadBalancer);
37
+ this.$scope.isDisabled = !SETTINGS.kubernetesAdHocInfraWritesEnabled;
38
+ dataSource.onRefresh(this.$scope, () => this.extractLoadBalancer(loadBalancer));
39
+ })
40
+ .catch(() => this.autoClose());
41
+ }
42
+
43
+ public deleteLoadBalancer(): void {
44
+ this.$uibModal.open({
45
+ templateUrl: require('../../manifest/delete/delete.html'),
46
+ controller: 'kubernetesV2ManifestDeleteCtrl',
47
+ controllerAs: 'ctrl',
48
+ resolve: {
49
+ coordinates: {
50
+ name: this.loadBalancer.name,
51
+ namespace: this.loadBalancer.namespace,
52
+ account: this.loadBalancer.account,
53
+ },
54
+ application: this.app,
55
+ manifestController: (): string => null,
56
+ },
57
+ });
58
+ }
59
+
60
+ public editLoadBalancer(): void {
61
+ KubernetesManifestCommandBuilder.buildNewManifestCommand(
62
+ this.app,
63
+ this.manifest.manifest,
64
+ this.loadBalancer.moniker,
65
+ this.loadBalancer.account,
66
+ ).then((builtCommand) => {
67
+ ManifestWizard.show({ title: 'Edit Manifest', application: this.app, command: builtCommand });
68
+ });
69
+ }
70
+
71
+ private extractLoadBalancer({ accountId, name, region }: ILoadBalancerFromStateParams): void {
72
+ const loadBalancer = this.app.getDataSource('loadBalancers').data.find((test: ILoadBalancer) => {
73
+ return test.name === name && test.account === accountId && test.region === region;
74
+ });
75
+
76
+ if (!loadBalancer) {
77
+ return this.autoClose();
78
+ }
79
+
80
+ ManifestReader.getManifest(accountId, region, name).then((manifest: IManifest) => {
81
+ this.manifest = manifest;
82
+ this.loadBalancer = loadBalancer;
83
+ this.state.loading = false;
84
+ });
85
+ }
86
+
87
+ private autoClose(): void {
88
+ if (this.$scope.$$destroyed) {
89
+ return;
90
+ } else {
91
+ this.$state.params.allowModalToStayOpen = true;
92
+ this.$state.go('^', null, { location: 'replace' });
93
+ }
94
+ }
95
+ }
96
+
97
+ export const KUBERNETES_LOAD_BALANCER_DETAILS_CTRL = 'spinnaker.kubernetes.loadBalancerDetails.controller';
98
+ module(KUBERNETES_LOAD_BALANCER_DETAILS_CTRL, []).controller(
99
+ 'kubernetesV2LoadBalancerDetailsCtrl',
100
+ KubernetesLoadBalancerDetailsController,
101
+ );
@@ -0,0 +1,187 @@
1
+ <div class="details-panel">
2
+ <div ng-if="ctrl.state.loading" class="header">
3
+ <div class="close-button">
4
+ <a class="btn btn-link" ui-sref="^">
5
+ <span class="glyphicon glyphicon-remove"></span>
6
+ </a>
7
+ </div>
8
+ <h4 class="text-center">
9
+ <span us-spinner="{radius:20, width:6, length: 12}"></span>
10
+ </h4>
11
+ </div>
12
+
13
+ <div class="header" ng-if="!ctrl.state.loading">
14
+ <div class="close-button">
15
+ <a class="btn btn-link" ui-sref="^">
16
+ <span class="glyphicon glyphicon-remove"></span>
17
+ </a>
18
+ </div>
19
+ <div class="header-text horizontal middle">
20
+ <cloud-provider-logo
21
+ provider="ctrl.loadBalancer.cloudProvider"
22
+ height="'36px'"
23
+ width="'36px'"
24
+ ></cloud-provider-logo>
25
+ <h3 class="horizontal middle space-between flex-1" select-on-dbl-click>
26
+ {{ctrl.loadBalancer.displayName}}
27
+ <render-if-feature feature="entityTags">
28
+ <entity-notifications
29
+ ng-if="!state.loading"
30
+ entity="ctrl.loadBalancer"
31
+ application="ctrl.app"
32
+ placement="bottom"
33
+ h-offset-percent="90%"
34
+ entity-type="loadBalancer"
35
+ page-location="details"
36
+ on-update="ctrl.app.loadBalancers.refresh()"
37
+ ></entity-notifications>
38
+ </render-if-feature>
39
+ </h3>
40
+ </div>
41
+ <div class="actions">
42
+ <div class="dropdown" uib-dropdown dropdown-append-to-body>
43
+ <button type="button" class="btn btn-sm btn-primary dropdown-toggle" uib-dropdown-toggle ng-hide="isDisabled">
44
+ {{ctrl.loadBalancer.kind | robotToHuman}} Actions <span class="caret"></span>
45
+ </button>
46
+ <ul class="dropdown-menu" uib-dropdown-menu role="menu">
47
+ <li>
48
+ <a href ng-click="ctrl.deleteLoadBalancer()">Delete</a>
49
+ </li>
50
+ <li>
51
+ <a href ng-click="ctrl.editLoadBalancer()">Edit</a>
52
+ </li>
53
+ <render-if-feature feature="entityTags">
54
+ <add-entity-tag-links
55
+ component="ctrl.loadBalancer"
56
+ application="ctrl.app"
57
+ entity-type="loadBalancer"
58
+ on-update="ctrl.app.loadBalancers.refresh"
59
+ ></add-entity-tag-links>
60
+ </render-if-feature>
61
+ </ul>
62
+ </div>
63
+ </div>
64
+ </div>
65
+
66
+ <div ng-if="!ctrl.state.loading" class="content">
67
+ <collapsible-section heading="Information" expanded="true">
68
+ <dl class="dl-horizontal dl-narrow">
69
+ <dt>Created</dt>
70
+ <dd>{{ctrl.loadBalancer.createdTime | timestamp}}</dd>
71
+ <dt>Account</dt>
72
+ <dd><account-tag account="ctrl.loadBalancer.account" pad="right"></account-tag></dd>
73
+ <dt>Namespace</dt>
74
+ <dd>{{ctrl.loadBalancer.namespace}}</dd>
75
+ <dt>Kind</dt>
76
+ <dd>{{ctrl.loadBalancer.kind}}</dd>
77
+ <dt>Service Type</dt>
78
+ <dd>{{ctrl.manifest.manifest.spec.type}}</dd>
79
+ <dt>Sess. Affinity</dt>
80
+ <dd>{{ctrl.manifest.manifest.spec.sessionAffinity}}</dd>
81
+ </dl>
82
+ </collapsible-section>
83
+ <collapsible-section heading="Status" expanded="true">
84
+ <dl class="dl-horizontal dl-narrow">
85
+ <div ng-if="!ctrl.loadBalancer.serverGroups.length">
86
+ No workloads associated with this {{ctrl.loadBalancer.kind | robotToHuman}}.
87
+ </div>
88
+ <dt ng-if="ctrl.loadBalancer.serverGroups.length">Workloads</dt>
89
+ <dd ng-if="ctrl.loadBalancer.serverGroups.length">
90
+ <ul>
91
+ <li ng-repeat="serverGroup in ctrl.loadBalancer.serverGroups | orderBy: ['isDisabled', '-name']">
92
+ <a
93
+ ui-sref="^.serverGroup({region: serverGroup.region,
94
+ accountId: serverGroup.account,
95
+ serverGroup: serverGroup.name,
96
+ provider: 'kubernetes'})"
97
+ >
98
+ {{serverGroup.name}}
99
+ </a>
100
+ </li>
101
+ </ul>
102
+ </dd>
103
+ <div ng-if="ctrl.loadBalancer.serverGroups.length">
104
+ <dt>Pod status</dt>
105
+ <dd>
106
+ <health-counts class="pull-left" container="ctrl.loadBalancer.instanceCounts"></health-counts>
107
+ </dd>
108
+ </div>
109
+ <div ng-if="ctrl.manifest.manifest.spec.clusterIP">
110
+ <dt>Cluster IP</dt>
111
+ <dd>
112
+ <a target="_blank" href="//{{ctrl.manifest.manifest.spec.clusterIP}}">
113
+ {{ctrl.manifest.manifest.spec.clusterIP}}
114
+ </a>
115
+ <copy-to-clipboard
116
+ class="copy-to-clipboard copy-to-clipboard-sm"
117
+ text="ctrl.manifest.manifest.spec.clusterIP"
118
+ tool-tip="'Copy Cluster IP to clipboard'"
119
+ >
120
+ </copy-to-clipboard>
121
+ </dd>
122
+ </div>
123
+ <div ng-if="ctrl.manifest.manifest.spec.loadBalancerIP">
124
+ <dt>Load Balancer IP</dt>
125
+ <dd>
126
+ <a target="_blank" href="//{{ctrl.manifest.manifest.spec.loadBalancerIP}}">
127
+ {{ctrl.manifest.manifest.spec.loadBalancerIP}}
128
+ </a>
129
+ <copy-to-clipboard
130
+ class="copy-to-clipboard copy-to-clipboard-sm"
131
+ text="ctrl.manifest.manifest.spec.loadBalancerIP"
132
+ tool-tip="'Copy Load Balancer IP to clipboard'"
133
+ >
134
+ </copy-to-clipboard>
135
+ </dd>
136
+ </div>
137
+ <div ng-if="ctrl.manifest.manifest.spec.rules.length">
138
+ <dt>Host Rules</dt>
139
+ <dd ng-repeat="ingressRule in ctrl.manifest.manifest.spec.rules">
140
+ <a ng-if="ingressRule.host" target="_blank" href="//{{ingressRule.host}}"> {{ingressRule.host}} </a>
141
+ <copy-to-clipboard
142
+ ng-if="ingressRule.host"
143
+ class="copy-to-clipboard copy-to-clipboard-sm"
144
+ text="ingressRule.host"
145
+ tool-tip="'Copy ingress rule host to clipboard'"
146
+ >
147
+ </copy-to-clipboard>
148
+ </dd>
149
+ </div>
150
+ <div ng-if="ctrl.manifest.manifest.status.loadBalancer.ingress.length">
151
+ <dt>Ingress</dt>
152
+ <dd ng-repeat="ingress in ctrl.manifest.manifest.status.loadBalancer.ingress">
153
+ <a ng-if="ingress.hostname" target="_blank" href="//{{ingress.hostname}}"> {{ingress.hostname}} </a>
154
+ <copy-to-clipboard
155
+ ng-if="ingress.hostname"
156
+ class="copy-to-clipboard copy-to-clipboard-sm"
157
+ text="ingress.hostname"
158
+ tool-tip="'Copy Ingress hostname to clipboard'"
159
+ >
160
+ </copy-to-clipboard>
161
+ <a ng-if="ingress.ip" target="_blank" href="//{{ingress.ip}}"> {{ingress.ip}} </a>
162
+ <copy-to-clipboard
163
+ ng-if="ingress.ip"
164
+ class="copy-to-clipboard copy-to-clipboard-sm"
165
+ text="ingress.ip"
166
+ tool-tip="'Copy Ingress IP to clipboard'"
167
+ >
168
+ </copy-to-clipboard>
169
+ </dd>
170
+ </div>
171
+ </dl>
172
+ </collapsible-section>
173
+
174
+ <kubernetes-annotation-custom-sections
175
+ manifest="ctrl.manifest.manifest"
176
+ resource="ctrl.loadBalancer"
177
+ ></kubernetes-annotation-custom-sections>
178
+
179
+ <collapsible-section heading="Events" expanded="true">
180
+ <kubernetes-manifest-events manifest="ctrl.manifest"></kubernetes-manifest-events>
181
+ </collapsible-section>
182
+
183
+ <collapsible-section heading="Labels" expanded="true">
184
+ <kubernetes-manifest-labels manifest="ctrl.manifest.manifest"></kubernetes-manifest-labels>
185
+ </collapsible-section>
186
+ </div>
187
+ </div>
@@ -0,0 +1 @@
1
+ export * from './details/details.controller';
@@ -0,0 +1,60 @@
1
+ import type { IQService } from 'angular';
2
+ import { module } from 'angular';
3
+ import { camelCase, chain } from 'lodash';
4
+
5
+ import type { IInstanceCounts, IServerGroup } from '@spinnaker/core';
6
+
7
+ import type { IKubernetesLoadBalancer } from '../interfaces';
8
+
9
+ class KubernetesV2LoadBalancerTransformer {
10
+ public static $inject = ['$q'];
11
+ constructor(private $q: IQService) {}
12
+
13
+ public normalizeLoadBalancer(loadBalancer: IKubernetesLoadBalancer): PromiseLike<IKubernetesLoadBalancer> {
14
+ loadBalancer.provider = loadBalancer.type;
15
+ loadBalancer.instances = [];
16
+ loadBalancer.instanceCounts = this.buildInstanceCounts(loadBalancer.serverGroups);
17
+ (loadBalancer.serverGroups || []).forEach((serverGroup) => {
18
+ serverGroup.cloudProvider = loadBalancer.provider;
19
+ (serverGroup.instances || []).forEach((instance) => {
20
+ instance.cloudProvider = loadBalancer.provider;
21
+ });
22
+ });
23
+ return this.$q.resolve(loadBalancer);
24
+ }
25
+
26
+ private buildInstanceCounts(serverGroups: IServerGroup[]): IInstanceCounts {
27
+ const instanceCounts = chain(serverGroups)
28
+ .map((serverGroup) => serverGroup.instances)
29
+ .flatten()
30
+ .reduce(
31
+ (acc: IInstanceCounts, instance: any) => {
32
+ acc[camelCase(instance.health.state) as keyof IInstanceCounts]++;
33
+ return acc;
34
+ },
35
+ {
36
+ up: 0,
37
+ down: 0,
38
+ outOfService: 0,
39
+ succeeded: 0,
40
+ failed: 0,
41
+ unknown: 0,
42
+ starting: 0,
43
+ },
44
+ )
45
+ .value();
46
+
47
+ instanceCounts.outOfService += chain(serverGroups)
48
+ .map((serverGroup) => serverGroup.detachedInstances)
49
+ .flatten()
50
+ .value().length;
51
+
52
+ return instanceCounts;
53
+ }
54
+ }
55
+
56
+ export const KUBERNETES_LOAD_BALANCER_TRANSFORMER = 'spinnaker.kubernetes.loadBalancerTransformer';
57
+ module(KUBERNETES_LOAD_BALANCER_TRANSFORMER, []).service(
58
+ 'kubernetesV2LoadBalancerTransformer',
59
+ KubernetesV2LoadBalancerTransformer,
60
+ );
@@ -0,0 +1,102 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4
+ xmlns:cc="http://creativecommons.org/ns#"
5
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
6
+ xmlns:svg="http://www.w3.org/2000/svg"
7
+ xmlns="http://www.w3.org/2000/svg"
8
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
9
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
10
+ width="8.14444in"
11
+ height="8.14444in"
12
+ viewBox="0 0 733 733"
13
+ id="svg2"
14
+ version="1.1"
15
+ inkscape:version="0.48.4 r9939"
16
+ sodipodi:docname="kubernetes.svg">
17
+ <metadata
18
+ id="metadata9">
19
+ <rdf:RDF>
20
+ <cc:Work
21
+ rdf:about="">
22
+ <dc:format>image/svg+xml</dc:format>
23
+ <dc:type
24
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
25
+ <dc:title></dc:title>
26
+ </cc:Work>
27
+ </rdf:RDF>
28
+ </metadata>
29
+ <defs
30
+ id="defs7" />
31
+ <sodipodi:namedview
32
+ pagecolor="#ffffff"
33
+ bordercolor="#666666"
34
+ borderopacity="1"
35
+ objecttolerance="10"
36
+ gridtolerance="10"
37
+ guidetolerance="10"
38
+ inkscape:pageopacity="0"
39
+ inkscape:pageshadow="2"
40
+ inkscape:window-width="1916"
41
+ inkscape:window-height="1142"
42
+ id="namedview5"
43
+ showgrid="false"
44
+ inkscape:zoom="0.32196472"
45
+ inkscape:cx="366.49979"
46
+ inkscape:cy="366.49979"
47
+ inkscape:window-x="0"
48
+ inkscape:window-y="56"
49
+ inkscape:window-maximized="0"
50
+ inkscape:current-layer="svg2" />
51
+ <path
52
+ id="Selection"
53
+ fill="none"
54
+ stroke="black"
55
+ stroke-width="1"
56
+ d="M 411.00,29.74 C 411.00,29.74 499.00,71.74 499.00,71.74 499.00,71.74 555.00,98.26 555.00,98.26 555.00,98.26 592.00,116.14 592.00,116.14 592.00,116.14 625.00,131.75 625.00,131.75 634.53,136.52 640.47,138.65 647.82,147.00 657.13,157.58 659.33,171.69 662.21,185.00 662.21,185.00 673.42,234.00 673.42,234.00 673.42,234.00 705.42,373.00 705.42,373.00 705.42,373.00 719.68,439.00 719.68,439.00 721.02,456.85 708.90,470.12 698.60,483.00 698.60,483.00 641.40,554.00 641.40,554.00 641.40,554.00 557.00,659.00 557.00,659.00 541.16,678.73 531.22,696.96 503.00,697.00 503.00,697.00 232.00,697.00 232.00,697.00 204.00,696.96 192.42,676.52 176.80,657.00 176.80,657.00 84.39,542.00 84.39,542.00 84.39,542.00 41.75,489.00 41.75,489.00 33.00,478.41 21.48,466.29 17.75,453.00 13.91,439.33 16.97,429.26 20.12,416.00 20.12,416.00 29.35,376.00 29.35,376.00 29.35,376.00 66.12,216.00 66.12,216.00 66.12,216.00 75.12,177.00 75.12,177.00 78.06,164.59 78.76,157.38 87.46,147.01 95.04,138.00 103.06,135.55 113.00,130.74 113.00,130.74 159.00,108.74 159.00,108.74 159.00,108.74 292.00,45.22 292.00,45.22 292.00,45.22 335.00,24.69 335.00,24.69 348.10,18.68 348.93,16.70 364.00,14.42 379.89,12.53 397.06,23.00 411.00,29.74 Z M 557.00,380.00 C 557.00,380.00 557.00,360.00 557.00,360.00 556.98,344.89 552.44,322.39 547.65,308.00 544.05,297.20 539.23,285.88 533.57,276.00 532.16,273.53 526.21,264.94 526.62,262.61 526.62,262.61 530.18,256.83 530.18,256.83 531.15,254.78 531.21,253.28 532.72,251.04 538.54,242.42 559.13,233.05 567.91,226.64 574.90,221.54 579.79,212.09 574.28,204.04 568.42,195.49 557.02,197.87 550.00,203.39 538.15,212.70 529.02,231.46 513.00,234.06 510.10,234.53 506.59,236.28 504.00,235.13 502.10,234.29 498.71,230.71 497.00,229.17 497.00,229.17 482.00,216.65 482.00,216.65 468.70,206.50 454.37,198.79 439.00,192.28 427.89,187.58 414.82,184.10 403.00,181.66 399.01,180.84 387.91,180.19 385.31,178.15 383.20,176.49 382.80,173.40 381.62,171.00 380.31,168.36 379.10,167.10 378.39,164.00 376.45,155.45 381.77,133.42 381.99,124.00 382.11,118.31 381.90,113.53 377.78,109.11 370.81,101.64 359.24,103.73 354.92,113.00 351.98,119.91 353.59,127.86 354.92,135.00 356.18,143.75 357.05,150.08 357.00,159.00 356.93,172.46 352.16,166.31 352.00,179.00 322.16,180.37 288.94,192.63 264.00,208.69 256.14,213.75 247.93,219.91 241.00,226.17 238.50,228.43 232.87,234.79 230.00,235.49 228.05,235.96 225.13,234.59 223.00,234.22 220.80,233.84 219.25,234.06 217.00,233.15 211.66,230.99 198.37,217.65 194.17,213.00 188.30,206.51 183.61,199.54 174.00,199.04 159.75,198.31 155.84,211.34 161.01,220.00 165.34,227.27 173.09,230.35 180.00,234.45 186.12,238.08 199.61,246.30 203.15,252.01 203.15,252.01 205.47,257.70 205.47,257.70 206.35,259.49 208.10,261.07 208.33,262.46 208.75,265.03 202.92,273.39 201.43,276.00 196.26,285.03 191.30,297.10 188.00,307.00 181.22,327.31 177.97,348.62 178.00,370.00 178.00,370.00 180.00,395.00 180.00,395.00 169.67,396.74 174.11,401.22 161.00,404.35 149.33,407.12 126.34,406.63 118.02,411.53 108.10,417.37 108.11,431.51 119.00,436.15 130.21,440.92 149.36,429.76 161.00,426.43 164.16,425.52 169.83,423.96 173.00,424.14 179.08,424.49 175.02,426.24 188.00,426.00 189.16,433.52 194.32,445.03 197.76,452.00 208.97,474.74 222.76,491.52 241.00,508.96 245.93,513.68 254.31,520.05 260.00,523.98 262.17,525.47 268.82,529.32 269.79,531.38 270.77,533.42 269.51,535.68 269.79,538.96 269.73,541.38 270.44,542.43 269.79,545.16 268.86,550.82 259.44,565.91 255.86,571.00 250.64,578.39 245.61,584.45 246.05,594.00 246.65,607.20 261.18,611.20 270.37,601.67 275.18,596.69 276.41,590.39 278.29,584.00 278.29,584.00 286.31,562.00 286.31,562.00 292.40,548.86 294.88,556.11 300.00,545.00 328.12,554.73 356.26,559.67 386.00,556.83 397.21,555.76 408.11,553.38 419.00,550.63 421.96,549.88 431.78,546.48 433.90,546.92 436.03,547.36 438.27,550.16 440.21,551.58 442.59,553.31 443.53,553.58 445.61,556.05 452.20,563.86 456.12,582.09 459.70,592.00 462.49,599.73 468.72,607.85 478.00,606.63 484.69,605.75 488.98,600.52 489.66,594.00 490.43,586.66 485.91,579.74 481.98,574.00 477.29,567.17 470.65,557.44 467.31,550.00 462.43,539.12 468.92,542.96 464.00,531.00 473.63,527.44 487.29,516.07 495.00,509.07 521.56,484.98 537.34,458.61 549.00,425.00 558.47,427.60 556.97,422.09 568.00,424.43 568.00,424.43 607.00,436.96 607.00,436.96 614.22,437.30 621.24,435.52 624.11,428.00 627.22,419.86 621.25,412.42 614.00,409.36 609.08,407.29 600.39,407.20 595.00,406.96 590.64,406.77 576.10,404.68 572.00,403.51 562.95,400.92 565.61,396.62 556.00,395.00 556.00,395.00 557.00,380.00 557.00,380.00 Z M 350.00,217.00 C 350.00,217.00 348.00,250.00 348.00,250.00 348.00,250.00 347.00,264.00 347.00,264.00 347.00,264.00 346.00,287.00 346.00,287.00 345.87,297.63 341.31,310.19 328.00,306.36 322.74,304.85 310.11,295.07 305.00,291.42 305.00,291.42 276.00,270.86 276.00,270.86 270.80,267.14 265.12,263.95 261.00,259.00 283.51,236.99 318.35,219.57 350.00,217.00 Z M 458.00,245.65 C 463.37,249.75 469.98,254.64 474.00,260.00 474.00,260.00 424.00,295.71 424.00,295.71 418.45,299.67 409.10,307.56 402.00,306.63 390.37,305.12 390.66,295.62 389.83,287.00 389.83,287.00 389.00,277.00 389.00,277.00 389.00,277.00 388.00,259.00 388.00,259.00 388.00,259.00 387.00,243.00 387.00,243.00 387.00,243.00 386.00,217.00 386.00,217.00 413.03,221.86 435.69,228.62 458.00,245.65 Z M 258.00,304.93 C 258.00,304.93 289.00,332.72 289.00,332.72 295.42,338.37 303.69,345.37 299.35,355.00 295.79,362.89 284.60,364.71 277.00,366.86 277.00,366.86 217.00,384.00 217.00,384.00 215.40,377.43 215.92,366.09 216.00,359.00 216.29,334.69 226.02,308.80 238.00,288.00 244.56,292.17 252.07,299.54 258.00,304.93 Z M 508.60,311.00 C 515.69,328.71 520.21,350.91 520.00,370.00 520.00,370.00 519.00,384.00 519.00,384.00 519.00,384.00 454.00,365.29 454.00,365.29 444.54,362.57 433.95,360.52 435.11,348.00 435.86,339.96 446.16,332.48 452.00,327.42 452.00,327.42 496.00,288.00 496.00,288.00 501.50,293.39 505.72,303.80 508.60,311.00 Z M 373.00,343.00 C 375.23,343.02 377.71,342.87 379.71,344.02 382.83,345.81 392.75,358.50 393.53,362.00 394.23,365.13 392.43,371.75 391.63,375.00 390.21,380.76 390.53,383.98 384.98,387.20 381.81,389.05 371.25,394.58 368.00,394.58 364.26,394.58 348.22,386.97 346.30,383.79 344.90,381.46 343.82,374.96 343.12,372.00 342.45,369.17 340.95,364.77 341.65,362.00 342.74,357.66 352.32,346.69 356.04,344.02 361.19,342.27 367.56,342.96 373.00,343.00 Z M 274.00,410.75 C 274.00,410.75 301.42,406.28 301.42,406.28 314.90,405.57 318.21,415.88 314.80,427.00 314.80,427.00 287.00,495.00 287.00,495.00 279.03,493.05 268.83,483.76 263.00,478.00 248.36,463.53 229.79,439.38 225.00,419.00 225.00,419.00 274.00,410.75 274.00,410.75 Z M 440.42,475.00 C 440.42,475.00 425.20,438.00 425.20,438.00 422.29,430.75 416.48,420.73 420.45,413.02 425.26,403.68 435.62,405.91 444.00,407.42 444.00,407.42 511.00,419.00 511.00,419.00 502.92,442.30 491.41,459.62 474.00,477.00 467.89,483.10 456.99,492.94 449.00,496.00 449.00,496.00 440.42,475.00 440.42,475.00 Z M 329.23,492.00 C 329.23,492.00 351.86,451.00 351.86,451.00 355.72,444.13 360.59,435.49 370.00,437.41 378.47,439.13 382.61,449.24 386.42,456.00 386.42,456.00 417.00,512.00 417.00,512.00 382.18,523.39 353.77,522.16 319.00,512.00 320.74,506.03 326.10,497.76 329.23,492.00 Z" />
57
+ <path
58
+ style="fill:#a0a0a0;stroke:none"
59
+ d="M 211.64776,688.72752 C 199.18399,681.12883 204.11492,686.90132 106.38132,565.49488 63.249477,511.91572 25.861839,464.02125 23.297683,459.06272 c -2.564155,-4.95855 -4.662101,-13.19299 -4.662101,-18.2988 0,-13.66622 60.851497,-274.62895 66.655226,-285.85213 5.745934,-11.11141 10.493927,-13.62254 165.090372,-87.313529 100.50103,-47.905502 105.94827,-50.104506 120.7775,-48.756997 21.60054,1.962804 259.4388,115.387256 273.4144,130.390606 8.74397,9.387 11.42228,18.89968 37.82349,134.33957 37.09879,162.21523 36.24332,157.97694 33.82846,167.59859 -1.82843,7.28502 -151.28754,197.23748 -176.95311,224.89548 -17.91576,19.30659 -15.51217,19.04286 -173.44885,19.0301 -139.36163,-0.0124 -144.06727,-0.20562 -154.17531,-6.36809 l 0,0 z m 59.63042,-85.19822 c 2.53653,-2.53652 7.58811,-13.55546 11.22574,-24.48653 3.63762,-10.93108 9.25693,-22.26664 12.48735,-25.19013 5.47954,-4.95889 7.33455,-4.98309 27.65689,-0.36087 26.55799,6.04047 63.37339,6.21062 90.40095,0.41774 26.82521,-5.74948 28.96243,-4.22176 42.20742,30.17064 6.44828,16.74379 9.68553,21.37849 16.04797,22.97534 20.00337,5.02052 24.99029,-14.63592 9.92491,-39.12025 -5.4188,-8.80668 -10.89191,-20.62123 -12.16242,-26.25452 -2.13235,-9.45464 -1.48249,-10.688 8.45015,-16.03707 18.10297,-9.74911 48.14816,-45.08972 61.53407,-72.37945 8.3579,-17.03916 14.35139,-25.50497 18.85918,-26.63857 3.63428,-0.91392 14.81563,1.24554 24.84744,4.79882 28.12743,9.96267 44.64011,7.40531 44.64011,-6.91346 0,-10.67446 -10.44158,-17.22869 -31.18615,-19.57566 -10.81693,-1.2238 -23.59951,-4.2586 -28.40572,-6.74397 -8.34834,-4.31711 -8.74102,-5.52097 -8.79252,-26.95714 -0.0705,-29.36558 -6.754,-59.98059 -18.79864,-86.11178 -6.56128,-14.23485 -9.02292,-23.30388 -7.56894,-27.88497 1.18513,-3.73401 10.71049,-12.31892 21.16745,-19.07758 21.48536,-13.88666 23.7753,-16.56209 23.84208,-27.85574 0.0593,-10.02002 -10.4658,-15.69188 -21.52608,-11.60021 -4.17832,1.54575 -14.92658,9.74252 -23.88504,18.21505 -8.95844,8.47253 -18.62586,15.4046 -21.48313,15.4046 -2.85727,0 -13.77288,-6.48513 -24.25689,-14.4114 -24.55542,-18.56473 -50.43239,-30.78657 -78.31991,-36.99096 -27.47994,-6.11371 -30.17834,-10.24779 -25.99058,-39.81876 3.25597,-22.99146 0.43604,-34.52706 -9.18697,-37.58128 -7.49461,-2.37869 -17.4184,2.3558 -20.21529,9.64438 -1.10842,2.88848 -1.10174,13.32674 0.0155,23.19615 3.03455,26.82207 -0.19816,39.63 -10.5137,41.65535 -42.81015,8.40521 -65.79704,18.24725 -94.59966,40.50336 -9.8248,7.59174 -20.4974,13.80316 -23.71689,13.80316 -3.21949,0 -14.04955,-7.72918 -24.06679,-17.17596 -15.83344,-14.93174 -19.63355,-17.06231 -29.08393,-16.30613 -10.45342,0.83643 -10.87075,1.3435 -10.87075,13.20817 0,11.57756 1.09949,13.06593 17.83144,24.13804 9.8073,6.48983 20.13467,15.31485 22.94973,19.61116 4.87705,7.44333 4.72878,8.52708 -3.14615,22.99594 -12.08927,22.21197 -20.55241,58.88284 -20.55241,89.05382 0,25.04796 -0.25661,25.9543 -8.54131,30.16681 -4.69772,2.38865 -16.92732,5.33251 -27.17689,6.54193 -23.88502,2.81842 -33.30936,8.62455 -32.02332,19.72897 0.62557,5.40152 3.86937,9.70972 9.23947,12.27128 7.11466,3.39372 11.4251,2.92476 30.73008,-3.34326 30.68433,-9.96273 34.14229,-8.80994 44.43347,14.81281 10.18607,23.38144 36.58457,56.29859 57.92933,72.23394 18.99536,14.18136 19.62788,20.41105 4.60241,45.32906 -11.16257,18.51181 -13.69099,32.26854 -7.13565,38.82388 5.13265,5.13265 16.62346,4.67434 22.18256,-0.88475 z"
60
+ id="path2986"
61
+ inkscape:connector-curvature="0" />
62
+ <path
63
+ style="fill:#a0a0a0;stroke:none"
64
+ d="m 295.55767,281.76003 -31.75731,-21.99996 11.54199,-9.17242 c 14.41086,-11.45232 45.45892,-26.18898 60.93903,-28.92412 l 11.71165,-2.0693 -2.06514,35.09453 c -2.33966,39.75975 -4.79135,49.07123 -12.92032,49.07123 -3.13093,0 -19.98338,-9.89998 -37.4499,-21.99996 z"
65
+ id="path2988"
66
+ inkscape:connector-curvature="0" />
67
+ <path
68
+ style="fill:#a0a0a0;stroke:none"
69
+ d="m 394.75802,296.77165 c -1.45603,-3.84359 -3.68331,-22.90514 -4.94951,-42.359 l -2.30218,-35.37066 8.90879,2.07076 c 19.89331,4.62399 43.91797,15.20006 58.19539,25.61862 17.69226,12.91046 18.79741,10.773 -19.7698,38.23649 -28.61516,20.37669 -36.01014,22.55441 -40.08269,11.80379 z"
70
+ id="path2990"
71
+ inkscape:connector-curvature="0" />
72
+ <path
73
+ style="fill:#a0a0a0;stroke:none"
74
+ d="m 476.76032,369.50784 c -51.75745,-15.82263 -51.74616,-14.91999 -0.75267,-60.21158 l 20.98885,-18.64195 6.36541,14.39007 c 10.72838,24.25328 19.70972,76.84004 12.99902,76.1107 -1.2812,-0.13924 -19.10147,-5.3805 -39.60061,-11.64724 z"
75
+ id="path2992"
76
+ inkscape:connector-curvature="0" />
77
+ <path
78
+ style="fill:#a0a0a0;stroke:none"
79
+ d="m 435.48897,456.7043 c -14.46935,-36.25055 -15.71568,-43.42123 -8.05778,-46.35984 7.32986,-2.81274 78.84102,8.75347 78.80632,12.74612 -0.11228,12.91882 -43.26201,67.05973 -53.40025,67.00247 -2.21801,-0.0124 -10.019,-15.0264 -17.34829,-33.38875 l 0,0 z"
80
+ id="path2994"
81
+ inkscape:connector-curvature="0" />
82
+ <path
83
+ style="fill:#a0a0a0;stroke:none"
84
+ d="m 338.54641,514.3208 c -7.68717,-1.69573 -14.4868,-3.5703 -15.11027,-4.16572 -0.62347,-0.59542 4.09998,-10.58909 10.49655,-22.20816 27.03082,-49.1002 32.08856,-54.10343 42.54932,-42.09061 4.06983,4.67366 36.60673,62.08283 36.60673,64.5901 0,0.4929 -7.05713,2.40966 -15.68253,4.25948 -18.62111,3.99351 -39.63369,3.85604 -58.8598,-0.38509 z"
85
+ id="path2996"
86
+ inkscape:connector-curvature="0" />
87
+ <path
88
+ style="fill:#a0a0a0;stroke:none"
89
+ d="m 262.97346,473.7049 c -16.77296,-17.17992 -33.13461,-41.67919 -33.13461,-49.61442 0,-3.17228 10.01376,-5.8894 36.9054,-10.01386 20.29798,-3.11317 39.1665,-4.79264 41.93006,-3.73216 2.76356,1.06047 4.92594,5.11676 4.80529,9.01396 -0.30476,9.84389 -25.6065,68.49526 -30.21033,70.02988 -2.06811,0.68936 -11.20122,-6.36817 -20.29581,-15.6834 l 0,0 z"
90
+ id="path2998"
91
+ inkscape:connector-curvature="0" />
92
+ <path
93
+ style="fill:#a0a0a0;stroke:none"
94
+ d="m 217.41513,369.61776 c 0,-28.25915 15.19645,-76.45934 23.50125,-74.54137 6.0423,1.39545 57.25975,49.00646 57.20538,53.17729 -0.10849,8.32162 -6.5906,11.97505 -36.32712,20.47461 -17.20033,4.91635 -34.22222,9.87476 -37.82642,11.01869 -5.90819,1.87519 -6.55309,0.87836 -6.55309,-10.12922 z"
95
+ id="path3000"
96
+ inkscape:connector-curvature="0" />
97
+ <path
98
+ style="fill:#a0a0a0;stroke:none"
99
+ d="m 355.12214,387.05557 c -12.30722,-5.95336 -13.73186,-24.30319 -2.74022,-35.29483 10.083,-10.083 21.74685,-9.76596 31.59351,0.85877 18.12886,19.56137 -4.29002,46.31803 -28.85329,34.43606 z"
100
+ id="path3002"
101
+ inkscape:connector-curvature="0" />
102
+ </svg>
@@ -0,0 +1,6 @@
1
+ .cloud-provider-logo {
2
+ .icon-kubernetes {
3
+ mask-image: url('kubernetes.icon.svg');
4
+ background-color: #326ce5;
5
+ }
6
+ }