@spinnaker/kubernetes 0.0.0-main-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1663 -0
- package/LICENSE.txt +203 -0
- package/dist/help/kubernetes.help.d.ts +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +6024 -0
- package/dist/index.js.map +1 -0
- package/dist/instance/details/details.controller.d.ts +1 -0
- package/dist/instance/index.d.ts +1 -0
- package/dist/interfaces/index.d.ts +1 -0
- package/dist/interfaces/infrastructure.types.d.ts +24 -0
- package/dist/kubernetes.module.d.ts +6 -0
- package/dist/loadBalancer/details/details.controller.d.ts +1 -0
- package/dist/loadBalancer/index.d.ts +1 -0
- package/dist/loadBalancer/transformer.d.ts +1 -0
- package/dist/manifest/IManifestCoordinates.d.ts +5 -0
- package/dist/manifest/ManifestImageDetails.d.ts +18 -0
- package/dist/manifest/ManifestKindSearch.d.ts +13 -0
- package/dist/manifest/ManifestLabels.d.ts +15 -0
- package/dist/manifest/ManifestQos.d.ts +15 -0
- package/dist/manifest/ManifestResources.d.ts +35 -0
- package/dist/manifest/ManifestSource.d.ts +4 -0
- package/dist/manifest/annotationCustomSections.component.d.ts +1 -0
- package/dist/manifest/artifact/artifact.component.d.ts +1 -0
- package/dist/manifest/delete/delete.controller.d.ts +12 -0
- package/dist/manifest/delete/deleteOptionsForm.component.d.ts +1 -0
- package/dist/manifest/editor/json/JsonEditor.d.ts +12 -0
- package/dist/manifest/editor/json/jsonEditor.component.d.ts +1 -0
- package/dist/manifest/index.d.ts +10 -0
- package/dist/manifest/manifest.service.d.ts +25 -0
- package/dist/manifest/manifestCommandBuilder.service.d.ts +30 -0
- package/dist/manifest/manifestEvents.component.d.ts +1 -0
- package/dist/manifest/manifestImageDetails.component.d.ts +1 -0
- package/dist/manifest/manifestLabels.component.d.ts +1 -0
- package/dist/manifest/manifestQos.component.d.ts +1 -0
- package/dist/manifest/manifestResources.component.d.ts +1 -0
- package/dist/manifest/rollout/RollingRestart.d.ts +1 -0
- package/dist/manifest/rollout/pause.controller.d.ts +1 -0
- package/dist/manifest/rollout/resume.controller.d.ts +1 -0
- package/dist/manifest/rollout/undo.controller.d.ts +1 -0
- package/dist/manifest/scale/ScaleSettingsForm.d.ts +10 -0
- package/dist/manifest/scale/scale.controller.d.ts +8 -0
- package/dist/manifest/scale/scaleSettingsForm.component.d.ts +1 -0
- package/dist/manifest/selector/IManifestLabelSelector.d.ts +9 -0
- package/dist/manifest/selector/IManifestSelector.d.ts +30 -0
- package/dist/manifest/selector/ManifestSelector.d.ts +46 -0
- package/dist/manifest/selector/labelEditor/LabelEditor.d.ts +15 -0
- package/dist/manifest/selector/selector.component.d.ts +1 -0
- package/dist/manifest/status/ManifestCondition.d.ts +13 -0
- package/dist/manifest/status/condition.component.d.ts +1 -0
- package/dist/manifest/status/status.component.d.ts +1 -0
- package/dist/manifest/traffic/ManifestTrafficService.d.ts +12 -0
- package/dist/manifest/wizard/BasicSettings.d.ts +17 -0
- package/dist/manifest/wizard/ManifestEntry.d.ts +16 -0
- package/dist/manifest/wizard/ManifestWizard.d.ts +22 -0
- package/dist/pipelines/stages/ManifestCoordinates.d.ts +31 -0
- package/dist/pipelines/stages/ManifestExecutionDetails.d.ts +69 -0
- package/dist/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.d.ts +18 -0
- package/dist/pipelines/stages/deleteManifest/DeleteManifestStageConfig.d.ts +14 -0
- package/dist/pipelines/stages/deleteManifest/deleteManifestStage.d.ts +1 -0
- package/dist/pipelines/stages/deployManifest/CopyFromTemplateButton.d.ts +15 -0
- package/dist/pipelines/stages/deployManifest/DeployManifestStageConfig.d.ts +15 -0
- package/dist/pipelines/stages/deployManifest/DeployManifestStageForm.d.ts +31 -0
- package/dist/pipelines/stages/deployManifest/ManifestBindArtifactsSelector.d.ts +17 -0
- package/dist/pipelines/stages/deployManifest/ManifestCopier.d.ts +36 -0
- package/dist/pipelines/stages/deployManifest/ManifestDeploymentOptions.d.ts +34 -0
- package/dist/pipelines/stages/deployManifest/NamespaceSelector.d.ts +16 -0
- package/dist/pipelines/stages/deployManifest/deployManifest.validator.d.ts +2 -0
- package/dist/pipelines/stages/deployManifest/deployManifestStage.d.ts +1 -0
- package/dist/pipelines/stages/deployManifest/manifestStatus/DeployStatus.d.ts +23 -0
- package/dist/pipelines/stages/deployManifest/manifestStatus/DeployStatusPills.d.ts +8 -0
- package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestDetailsLink.d.ts +20 -0
- package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestEvents.d.ts +9 -0
- package/dist/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.d.ts +8 -0
- package/dist/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceConfig.d.ts +3 -0
- package/dist/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceStageForm.d.ts +7 -0
- package/dist/pipelines/stages/findArtifactsFromResource/findArtifactsFromResourceStage.d.ts +1 -0
- package/dist/pipelines/stages/index.d.ts +8 -0
- package/dist/pipelines/stages/patchManifest/PatchManifestOptionsForm.d.ts +8 -0
- package/dist/pipelines/stages/patchManifest/PatchManifestStageConfig.d.ts +7 -0
- package/dist/pipelines/stages/patchManifest/PatchManifestStageForm.d.ts +21 -0
- package/dist/pipelines/stages/patchManifest/patchManifestStage.d.ts +4 -0
- package/dist/pipelines/stages/rolloutRestartManifest/RolloutRestartManifestStageConfig.d.ts +13 -0
- package/dist/pipelines/stages/rolloutRestartManifest/rolloutRestartManifestStage.d.ts +4 -0
- package/dist/pipelines/stages/runJob/KubernetesV2RunJobStageConfig.d.ts +31 -0
- package/dist/pipelines/stages/runJob/RunJobExecutionDetails.d.ts +7 -0
- package/dist/pipelines/stages/runJob/runJobStage.d.ts +1 -0
- package/dist/pipelines/stages/scaleManifest/ScaleManifestConfig.d.ts +3 -0
- package/dist/pipelines/stages/scaleManifest/ScaleManifestStageForm.d.ts +7 -0
- package/dist/pipelines/stages/scaleManifest/scaleManifestStage.d.ts +1 -0
- package/dist/pipelines/stages/traffic/ManifestTrafficStageConfig.d.ts +11 -0
- package/dist/pipelines/stages/traffic/disableManifest.stage.d.ts +1 -0
- package/dist/pipelines/stages/traffic/enableManifest.stage.d.ts +1 -0
- package/dist/pipelines/stages/undoRolloutManifest/UndoRolloutManifestConfig.d.ts +3 -0
- package/dist/pipelines/stages/undoRolloutManifest/UndoRolloutManifestStageForm.d.ts +7 -0
- package/dist/pipelines/stages/undoRolloutManifest/undoRolloutManifestStage.d.ts +1 -0
- package/dist/pipelines/stages/validators/manifestSelectorValidators.d.ts +2 -0
- package/dist/pipelines/validation/manifestSelector.validator.d.ts +8 -0
- package/dist/rawResource/component/K8sResources.d.ts +25 -0
- package/dist/rawResource/component/K8sResourcesFilters.d.ts +20 -0
- package/dist/rawResource/component/RawResourceUtils.d.ts +5 -0
- package/dist/rawResource/component/group/RawResouceGroup.d.ts +15 -0
- package/dist/rawResource/component/group/RawResource.d.ts +12 -0
- package/dist/rawResource/component/group/RawResourceDetails.d.ts +32 -0
- package/dist/rawResource/component/group/RawResourceGroups.d.ts +14 -0
- package/dist/rawResource/controller/FiltersPubSub.d.ts +12 -0
- package/dist/rawResource/index.d.ts +1 -0
- package/dist/rawResource/model/resource.d.ts +17 -0
- package/dist/rawResource/rawResource.dataSource.d.ts +2 -0
- package/dist/rawResource/rawResource.module.d.ts +1 -0
- package/dist/rawResource/rawResource.states.d.ts +6 -0
- package/dist/resources/ResourceDetails.d.ts +17 -0
- package/dist/resources/resources.state.d.ts +7 -0
- package/dist/rolloutStrategy/bluegreen.strategy.d.ts +2 -0
- package/dist/rolloutStrategy/highlander.strategy.d.ts +2 -0
- package/dist/rolloutStrategy/index.d.ts +1 -0
- package/dist/rolloutStrategy/none.strategy.d.ts +2 -0
- package/dist/rolloutStrategy/redblack.strategy.d.ts +2 -0
- package/dist/securityGroup/details/details.controller.d.ts +1 -0
- package/dist/securityGroup/index.d.ts +1 -0
- package/dist/securityGroup/securityGroup.reader.d.ts +4 -0
- package/dist/securityGroup/transformer.d.ts +1 -0
- package/dist/serverGroup/details/details.controller.d.ts +1 -0
- package/dist/serverGroup/details/resize/resize.controller.d.ts +1 -0
- package/dist/serverGroup/index.d.ts +4 -0
- package/dist/serverGroup/serverGroupCommandBuilder.service.d.ts +6 -0
- package/dist/serverGroup/serverGroupTransformer.service.d.ts +6 -0
- package/dist/serverGroupManager/details/details.controller.d.ts +1 -0
- package/dist/serverGroupManager/index.d.ts +1 -0
- package/dist/validation/applicationName.validator.d.ts +9 -0
- package/package.json +58 -0
- package/src/help/kubernetes.help.ts +236 -0
- package/src/index.ts +7 -0
- package/src/instance/details/details.controller.ts +186 -0
- package/src/instance/details/details.html +80 -0
- package/src/instance/index.ts +1 -0
- package/src/interfaces/index.ts +1 -0
- package/src/interfaces/infrastructure.types.ts +35 -0
- package/src/kubernetes.module.ts +144 -0
- package/src/loadBalancer/details/details.controller.ts +101 -0
- package/src/loadBalancer/details/details.html +187 -0
- package/src/loadBalancer/index.ts +1 -0
- package/src/loadBalancer/transformer.ts +60 -0
- package/src/logo/kubernetes.icon.svg +102 -0
- package/src/logo/kubernetes.logo.less +6 -0
- package/src/logo/kubernetes.logo.svg +1 -0
- package/src/manifest/IManifestCoordinates.ts +5 -0
- package/src/manifest/ManifestImageDetails.spec.tsx +76 -0
- package/src/manifest/ManifestImageDetails.tsx +64 -0
- package/src/manifest/ManifestKindSearch.tsx +31 -0
- package/src/manifest/ManifestLabels.tsx +31 -0
- package/src/manifest/ManifestQos.tsx +68 -0
- package/src/manifest/ManifestResources.tsx +69 -0
- package/src/manifest/ManifestSource.ts +4 -0
- package/src/manifest/annotationCustomSections.component.ts +114 -0
- package/src/manifest/artifact/artifact.component.ts +23 -0
- package/src/manifest/delete/delete.controller.ts +80 -0
- package/src/manifest/delete/delete.html +42 -0
- package/src/manifest/delete/deleteOptionsForm.component.ts +52 -0
- package/src/manifest/editor/json/JsonEditor.tsx +56 -0
- package/src/manifest/editor/json/jsonEditor.component.ts +12 -0
- package/src/manifest/index.ts +10 -0
- package/src/manifest/manifest.service.ts +90 -0
- package/src/manifest/manifestCommandBuilder.service.ts +126 -0
- package/src/manifest/manifestEvents.component.ts +12 -0
- package/src/manifest/manifestImageDetails.component.ts +12 -0
- package/src/manifest/manifestLabels.component.ts +12 -0
- package/src/manifest/manifestLabels.less +3 -0
- package/src/manifest/manifestQos.component.ts +12 -0
- package/src/manifest/manifestResources.component.ts +12 -0
- package/src/manifest/rollout/RollingRestart.tsx +54 -0
- package/src/manifest/rollout/pause.controller.ts +66 -0
- package/src/manifest/rollout/pause.html +28 -0
- package/src/manifest/rollout/resume.controller.ts +66 -0
- package/src/manifest/rollout/resume.html +28 -0
- package/src/manifest/rollout/undo.controller.ts +74 -0
- package/src/manifest/rollout/undo.html +44 -0
- package/src/manifest/scale/ScaleSettingsForm.tsx +43 -0
- package/src/manifest/scale/scale.controller.ts +75 -0
- package/src/manifest/scale/scale.html +32 -0
- package/src/manifest/scale/scaleSettingsForm.component.ts +11 -0
- package/src/manifest/selector/IManifestLabelSelector.ts +19 -0
- package/src/manifest/selector/IManifestSelector.ts +64 -0
- package/src/manifest/selector/ManifestSelector.spec.tsx +414 -0
- package/src/manifest/selector/ManifestSelector.tsx +424 -0
- package/src/manifest/selector/labelEditor/LabelEditor.spec.tsx +81 -0
- package/src/manifest/selector/labelEditor/LabelEditor.tsx +126 -0
- package/src/manifest/selector/labelEditor/labelEditor.less +3 -0
- package/src/manifest/selector/selector.component.ts +17 -0
- package/src/manifest/status/ManifestCondition.tsx +32 -0
- package/src/manifest/status/condition.component.ts +12 -0
- package/src/manifest/status/status.component.ts +36 -0
- package/src/manifest/traffic/ManifestTrafficService.spec.ts +30 -0
- package/src/manifest/traffic/ManifestTrafficService.ts +67 -0
- package/src/manifest/wizard/BasicSettings.tsx +57 -0
- package/src/manifest/wizard/ManifestEntry.tsx +46 -0
- package/src/manifest/wizard/ManifestWizard.tsx +94 -0
- package/src/pipelines/stages/ManifestCoordinates.spec.tsx +90 -0
- package/src/pipelines/stages/ManifestCoordinates.tsx +128 -0
- package/src/pipelines/stages/ManifestExecutionDetails.tsx +58 -0
- package/src/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.spec.tsx +85 -0
- package/src/pipelines/stages/deleteManifest/DeleteManifestOptionsForm.tsx +87 -0
- package/src/pipelines/stages/deleteManifest/DeleteManifestStageConfig.tsx +62 -0
- package/src/pipelines/stages/deleteManifest/deleteManifestOptionsForm.less +9 -0
- package/src/pipelines/stages/deleteManifest/deleteManifestStage.ts +21 -0
- package/src/pipelines/stages/deployManifest/CopyFromTemplateButton.tsx +45 -0
- package/src/pipelines/stages/deployManifest/DeployManifestStageConfig.tsx +77 -0
- package/src/pipelines/stages/deployManifest/DeployManifestStageForm.tsx +265 -0
- package/src/pipelines/stages/deployManifest/ManifestBindArtifactsSelector.tsx +69 -0
- package/src/pipelines/stages/deployManifest/ManifestCopier.spec.ts +110 -0
- package/src/pipelines/stages/deployManifest/ManifestCopier.tsx +222 -0
- package/src/pipelines/stages/deployManifest/ManifestDeploymentOptions.spec.tsx +75 -0
- package/src/pipelines/stages/deployManifest/ManifestDeploymentOptions.tsx +203 -0
- package/src/pipelines/stages/deployManifest/NamespaceSelector.tsx +40 -0
- package/src/pipelines/stages/deployManifest/deployManifest.validator.ts +38 -0
- package/src/pipelines/stages/deployManifest/deployManifestStage.ts +28 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatus.less +11 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatus.tsx +120 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/DeployStatusPills.tsx +47 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/ManifestDetailsLink.tsx +92 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/ManifestEvents.tsx +87 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.less +24 -0
- package/src/pipelines/stages/deployManifest/manifestStatus/ManifestStatus.tsx +46 -0
- package/src/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceConfig.tsx +35 -0
- package/src/pipelines/stages/findArtifactsFromResource/FindArtifactsFromResourceStageForm.tsx +37 -0
- package/src/pipelines/stages/findArtifactsFromResource/findArtifactsFromResourceStage.ts +21 -0
- package/src/pipelines/stages/index.ts +8 -0
- package/src/pipelines/stages/patchManifest/PatchManifestOptionsForm.tsx +35 -0
- package/src/pipelines/stages/patchManifest/PatchManifestStageConfig.tsx +57 -0
- package/src/pipelines/stages/patchManifest/PatchManifestStageForm.tsx +157 -0
- package/src/pipelines/stages/patchManifest/patchManifestStage.ts +30 -0
- package/src/pipelines/stages/rolloutRestartManifest/RolloutRestartManifestStageConfig.tsx +46 -0
- package/src/pipelines/stages/rolloutRestartManifest/rolloutRestartManifestStage.ts +20 -0
- package/src/pipelines/stages/runJob/KubernetesV2RunJobStageConfig.tsx +242 -0
- package/src/pipelines/stages/runJob/RunJobExecutionDetails.tsx +67 -0
- package/src/pipelines/stages/runJob/runJobStage.ts +39 -0
- package/src/pipelines/stages/scaleManifest/ScaleManifestConfig.tsx +38 -0
- package/src/pipelines/stages/scaleManifest/ScaleManifestStageForm.tsx +46 -0
- package/src/pipelines/stages/scaleManifest/scaleManifestStage.ts +24 -0
- package/src/pipelines/stages/traffic/ManifestTrafficStageConfig.tsx +44 -0
- package/src/pipelines/stages/traffic/disableManifest.stage.ts +26 -0
- package/src/pipelines/stages/traffic/enableManifest.stage.ts +26 -0
- package/src/pipelines/stages/undoRolloutManifest/UndoRolloutManifestConfig.tsx +37 -0
- package/src/pipelines/stages/undoRolloutManifest/UndoRolloutManifestStageForm.tsx +60 -0
- package/src/pipelines/stages/undoRolloutManifest/undoRolloutManifestStage.ts +21 -0
- package/src/pipelines/stages/validators/manifestSelectorValidators.ts +43 -0
- package/src/pipelines/validation/manifestSelector.validator.ts +36 -0
- package/src/rawResource/component/K8sResources.less +9 -0
- package/src/rawResource/component/K8sResources.tsx +112 -0
- package/src/rawResource/component/K8sResourcesFilters.tsx +112 -0
- package/src/rawResource/component/RawResourceUtils.ts +19 -0
- package/src/rawResource/component/group/RawResouceGroup.tsx +41 -0
- package/src/rawResource/component/group/RawResource.less +79 -0
- package/src/rawResource/component/group/RawResource.tsx +51 -0
- package/src/rawResource/component/group/RawResourceDetails.tsx +236 -0
- package/src/rawResource/component/group/RawResourceGroups.tsx +53 -0
- package/src/rawResource/controller/FiltersPubSub.ts +35 -0
- package/src/rawResource/index.ts +1 -0
- package/src/rawResource/model/resource.ts +18 -0
- package/src/rawResource/rawResource.dataSource.ts +39 -0
- package/src/rawResource/rawResource.module.ts +8 -0
- package/src/rawResource/rawResource.states.ts +64 -0
- package/src/resources/ResourceDetails.tsx +121 -0
- package/src/resources/resources.state.ts +45 -0
- package/src/rolloutStrategy/bluegreen.strategy.ts +7 -0
- package/src/rolloutStrategy/highlander.strategy.ts +7 -0
- package/src/rolloutStrategy/index.ts +6 -0
- package/src/rolloutStrategy/none.strategy.ts +8 -0
- package/src/rolloutStrategy/redblack.strategy.ts +7 -0
- package/src/securityGroup/details/details.controller.ts +118 -0
- package/src/securityGroup/details/details.html +91 -0
- package/src/securityGroup/index.ts +1 -0
- package/src/securityGroup/securityGroup.reader.ts +11 -0
- package/src/securityGroup/transformer.ts +19 -0
- package/src/serverGroup/details/details.controller.ts +207 -0
- package/src/serverGroup/details/details.html +153 -0
- package/src/serverGroup/details/resize/resize.controller.ts +73 -0
- package/src/serverGroup/details/resize/resize.html +57 -0
- package/src/serverGroup/index.ts +4 -0
- package/src/serverGroup/serverGroupCommandBuilder.service.ts +18 -0
- package/src/serverGroup/serverGroupTransformer.service.spec.ts +67 -0
- package/src/serverGroup/serverGroupTransformer.service.ts +34 -0
- package/src/serverGroupManager/details/details.controller.ts +191 -0
- package/src/serverGroupManager/details/details.html +136 -0
- package/src/serverGroupManager/index.ts +1 -0
- package/src/validation/applicationName.validator.spec.ts +19 -0
- package/src/validation/applicationName.validator.ts +44 -0
|
@@ -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 @@
|
|
|
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,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
|
+
}
|