@rancher/shell 3.0.8-rc.2 → 3.0.8-rc.3
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/assets/brand/suse/dark/rancher-logo.svg +64 -1
- package/assets/brand/suse/rancher-logo.svg +1 -1
- package/assets/styles/global/_cards.scss +0 -3
- package/assets/styles/themes/_modern.scss +9 -1
- package/assets/styles/themes/_suse.scss +81 -24
- package/assets/translations/en-us.yaml +68 -3
- package/components/AutoscalerCard.vue +113 -0
- package/components/AutoscalerTab.vue +94 -0
- package/components/ClusterIconMenu.vue +1 -1
- package/components/ClusterProviderIcon.vue +1 -1
- package/components/IconOrSvg.vue +2 -2
- package/components/PopoverCard.vue +192 -0
- package/components/Resource/Detail/FetchLoader/composables.ts +18 -4
- package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +1 -1
- package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +4 -0
- package/components/Resource/Detail/ResourcePopover/ResourcePopoverCard.vue +2 -19
- package/components/Resource/Detail/ResourcePopover/__tests__/ResourcePopoverCard.test.ts +0 -29
- package/components/Resource/Detail/ResourcePopover/__tests__/index.test.ts +132 -150
- package/components/Resource/Detail/ResourcePopover/index.vue +54 -159
- package/components/ResourceDetail/Masthead/latest.vue +29 -0
- package/components/ResourceList/Masthead.vue +1 -1
- package/components/__tests__/AutoscalerCard.test.ts +154 -0
- package/components/__tests__/AutoscalerTab.test.ts +125 -0
- package/components/__tests__/PopoverCard.test.ts +204 -0
- package/components/formatter/Autoscaler.vue +97 -0
- package/components/formatter/InternalExternalIP.vue +195 -24
- package/components/formatter/__tests__/Autoscaler.test.ts +156 -0
- package/components/formatter/__tests__/InternalExternalIP.test.ts +133 -0
- package/components/nav/Group.vue +12 -3
- package/components/nav/TopLevelMenu.vue +2 -2
- package/composables/useInterval.ts +15 -0
- package/config/labels-annotations.js +8 -1
- package/config/product/manager.js +20 -9
- package/config/router/routes.js +4 -0
- package/config/settings.ts +2 -1
- package/config/table-headers.js +8 -0
- package/config/types.js +2 -0
- package/core/types-provisioning.ts +3 -0
- package/detail/provisioning.cattle.io.cluster.vue +12 -1
- package/directives/ui-context.ts +8 -2
- package/edit/auth/github.vue +5 -0
- package/edit/cloudcredential.vue +1 -1
- package/edit/fleet.cattle.io.gitrepo.vue +0 -10
- package/edit/provisioning.cattle.io.cluster/CustomCommand.vue +32 -5
- package/edit/provisioning.cattle.io.cluster/__tests__/CustomCommand.test.ts +35 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/Networking.test.ts +132 -0
- package/edit/provisioning.cattle.io.cluster/index.vue +18 -12
- package/edit/provisioning.cattle.io.cluster/rke2.vue +39 -8
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +107 -5
- package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +90 -3
- package/initialize/install-plugins.js +3 -1
- package/list/provisioning.cattle.io.cluster.vue +15 -2
- package/machine-config/amazonec2.vue +36 -135
- package/machine-config/components/EC2Networking.vue +474 -0
- package/machine-config/components/__tests__/EC2Networking.test.ts +94 -0
- package/machine-config/components/__tests__/utils/vpcSubnetMockData.js +294 -0
- package/machine-config/digitalocean.vue +11 -0
- package/models/cluster/node.js +13 -6
- package/models/cluster.x-k8s.io.machine.js +10 -20
- package/models/cluster.x-k8s.io.machinedeployment.js +5 -1
- package/models/management.cattle.io.kontainerdriver.js +1 -0
- package/models/provisioning.cattle.io.cluster.js +223 -2
- package/package.json +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +1 -1
- package/pages/c/_cluster/manager/hostedprovider/index.vue +209 -0
- package/plugins/dynamic-content.js +13 -0
- package/rancher-components/Form/Checkbox/Checkbox.vue +1 -1
- package/rancher-components/Pill/RcStatusBadge/RcStatusBadge.vue +8 -0
- package/store/features.js +1 -0
- package/store/notifications.ts +32 -1
- package/store/plugins.js +7 -3
- package/store/prefs.js +1 -0
- package/types/notifications/index.ts +24 -3
- package/types/shell/index.d.ts +26 -1
- package/utils/__tests__/object.test.ts +19 -0
- package/utils/autoscaler-utils.ts +7 -0
- package/utils/dynamic-content/__tests__/announcement.test.ts +498 -0
- package/utils/dynamic-content/announcement.ts +112 -0
- package/utils/dynamic-content/example.json +40 -0
- package/utils/dynamic-content/index.ts +6 -2
- package/utils/dynamic-content/new-release.ts +1 -1
- package/utils/dynamic-content/notification-handler.ts +48 -0
- package/utils/dynamic-content/types.d.ts +33 -1
- package/utils/object.js +20 -2
- package/utils/scroll.js +7 -0
- package/utils/settings.ts +15 -0
- package/utils/validators/machine-pool.ts +13 -3
|
@@ -1 +1,64 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<!-- Generator: Adobe Illustrator 28.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
3
|
+
<svg version="1.1" id="Layer_2_00000129197277348757038330000010842559623398722730_"
|
|
4
|
+
xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 439.6 36.2"
|
|
5
|
+
style="enable-background:new 0 0 439.6 36.2;" xml:space="preserve">
|
|
6
|
+
<style type="text/css">
|
|
7
|
+
.st0{fill:#FFFFFF;}
|
|
8
|
+
</style>
|
|
9
|
+
<g id="Layer_1-2">
|
|
10
|
+
<g id="Layer_1-3">
|
|
11
|
+
<path class="st0" d="M67.1,11.3c-0.4-0.5-1.2-0.5-1.6,0c-0.5,0.5-0.4,1.4,0.2,1.8c0.4,0.2,0.9,0.2,1.3,0
|
|
12
|
+
C67.5,12.7,67.6,11.8,67.1,11.3 M65.6,7.4c-3.1-0.7-5.8,2-5.1,5.1c0.4,1.6,1.6,2.8,3.2,3.2c3.1,0.7,5.9-2.1,5.1-5.1
|
|
13
|
+
C68.4,9,67.2,7.8,65.6,7.4 M45.3,24.7c-2-0.7-2.8-0.6-5.3-0.6c-1.8,0-1.8,0-3.9,0c-0.6,0-0.9,3,1.4,3.6c1,0.3,2.1,0.5,2.8,1.2
|
|
14
|
+
c0.3,0.3,0.5,0.9-0.2,0.9h-5.6c-1,0-1.9,0-2.7-0.6c-1.1-1-1.7-2.3-2.2-3.6c-0.6-1.4-1.2-2.7-2-4c-1.5-2.6-3.5-4.9-6.1-6.3
|
|
15
|
+
c-3.3-1.8-8.9-2.6-13.3,0.8c-4.7,3.6-3.7,10.3,0.4,13.6c1.6,1.3,3.7,1.8,5.8,1.7c4-0.2,7-3.2,6.3-6.9c-0.2-1.2-1-2.4-2-3
|
|
16
|
+
c-0.8-0.5-1.7-0.6-2.6-0.6c-0.9,0-2,0.2-2.6,0.9c-0.8,0.8-0.9,2.2-0.3,3.1c0.4,0.5,0.9,0.9,0.8,1.6c-0.1,0.5-0.4,0.8-0.9,0.9
|
|
17
|
+
c-0.8,0.2-1.4-0.3-2-0.8c-1.3-1.4-1.7-3.5-1-5.2c0.9-2.3,3.6-3.5,6-3.5c3.2,0.1,6.2,2.2,7.5,5.1s0.9,6.5-0.9,9.1
|
|
18
|
+
c-4,5.8-13.8,5.1-18.4,0.2C1.4,29.2-0.2,26.2,0,20.6c0.2-3.9,2.4-7.8,5.3-10.6c4.7-4.4,10.9-7.5,17.3-8.8c3.8-0.8,7.8-1,11.7-0.6
|
|
19
|
+
c3.4,0.3,6.9,1,10.2,2c1.6,0.5,3.2,1.1,4.8,1.8c1.4,0.6,3.2,1.3,4.2,2.4c0-2-0.1-4.2-0.1-5.7c0-0.6,0.6-1,1.1-0.7
|
|
20
|
+
c2.2,1,7.5,3.5,11.1,5.2c4.7,2.2,5.1,7.3,5.2,11.8c0,0.1,0,0.2,0,0.3c-0.2,0.3-0.9,0.2-1.2,0.2c-0.6,0-1.4,0-2,0
|
|
21
|
+
c-1.1,0-2.2,0-3.4,0c-2.1-0.1-4.1-1-5.5-2.2c-0.1-0.1-0.6-0.2-0.8,0s-0.1,0.6,0,0.7c0.8,0.8,1.6,1.3,2.6,1.8
|
|
22
|
+
c1.2,0.6,2.6,0.8,4,0.9c1.5,0.1,2.9,0.1,4.4-0.1c1.2-0.1,1.5-0.2,0.3,0.7c-1.1,0.8-2.3,1.4-3.6,1.8c-1.8,0.6-3.7,0.9-5.6,1
|
|
23
|
+
c-1.2,0-2.3,0-3.4-0.2c-0.6-0.1-1.2-0.2-1.8-0.2c-0.5,0-1-0.1-1.5,0c-0.4,0.1-0.8,0.3-1.1,0.7c-0.4,0.5-0.5,1.8-0.3,2.4
|
|
24
|
+
c0.4,1.1,1.3,1.8,2.3,2.4c1,0.6,2.4,0.8,2.7,2c0.1,0.2-2.2,0.3-2.4,0.2h-3c0,0-1.6,0-2.2-0.2c0,0,0,0-0.1,0
|
|
25
|
+
c-0.3-0.2-0.5-0.6-0.6-1c-0.2-0.5-0.5-1-0.8-1.5C47.3,26.2,46.3,25.1,45.3,24.7 M67.8,11.6c0,1.7-1.4,3.2-3.2,3.2
|
|
26
|
+
s-3.2-1.4-3.2-3.1s1.4-3.1,3.2-3.1C66.4,8.4,67.8,9.8,67.8,11.6"/>
|
|
27
|
+
</g>
|
|
28
|
+
<path class="st0" d="M80.4,25.5l3-3c2.2,2.2,4.2,3.1,6.5,3.1c3.2,0,5-1.6,5-4c0-6.4-14-2.8-14-12.5c0-5.2,3.9-8.5,9.8-8.5
|
|
29
|
+
c3.6,0,6.6,1.4,8.5,3.5l-3.1,3.1c-1.6-1.6-3.2-2.5-5.4-2.5c-3,0-4.9,1.5-4.9,3.9c0,6.1,14.1,2.1,14.1,12.2c0,5.4-4.1,8.8-10.2,8.8
|
|
30
|
+
C85.6,29.8,82.6,28.1,80.4,25.5z"/>
|
|
31
|
+
<path class="st0" d="M104.5,19.5V1.2h4.9v17.9c0,4.1,2.4,6.1,6,6.1s5.9-2,5.9-6.1V1.2h4.9v18.3c0,6.8-4.3,10.2-10.8,10.2
|
|
32
|
+
S104.5,26.4,104.5,19.5z"/>
|
|
33
|
+
<path class="st0" d="M130.7,25.5l3-3c2.2,2.2,4.2,3.1,6.5,3.1c3.2,0,5-1.6,5-4c0-6.4-14-2.8-14-12.5c0-5.2,3.9-8.5,9.8-8.5
|
|
34
|
+
c3.6,0,6.6,1.4,8.5,3.5l-3.1,3.1c-1.6-1.6-3.2-2.5-5.4-2.5c-3,0-4.9,1.5-4.9,3.9c0,6.1,14.1,2.1,14.1,12.2c0,5.4-4.1,8.8-10.2,8.8
|
|
35
|
+
C135.9,29.8,132.8,28.1,130.7,25.5L130.7,25.5z"/>
|
|
36
|
+
<path class="st0" d="M154.4,24.5V5.9c0-2.7,2-4.7,4.7-4.7h13.6v4.5h-12c-0.8,0-1.5,0.6-1.5,1.4V13h12.6v4.3h-12.6v6
|
|
37
|
+
c0,0.8,0.6,1.4,1.5,1.4h12v4.5h-13.6C156.4,29.2,154.4,27.2,154.4,24.5z"/>
|
|
38
|
+
<path class="st0" d="M187.5,1.2h9c5.6,0,9.4,2.9,9.4,8.4c0,4.7-2.5,7.3-6.5,8.1l7.4,11.5h-4l-7-11.2h-4.9v11.2h-3.4L187.5,1.2
|
|
39
|
+
L187.5,1.2z M196.4,15c3.6,0,6.1-1.7,6.1-5.4c0-3.5-2.4-5.5-6.1-5.5h-5.4V15C190.9,15,196.4,15,196.4,15z"/>
|
|
40
|
+
<path class="st0" d="M222.9,27.3c-1.1,1.5-3,2.3-5.7,2.3c-4.6,0-7.4-2.3-7.4-5.7s2.8-6,7.8-6c2.1,0,3.7,0.5,4.9,1.3v-2.5
|
|
41
|
+
c0-2.9-1.5-4.3-4.5-4.3c-2,0-4.4,0.8-6,2.3l-1.5-2.2c1.7-2,4.7-3,7.7-3c4.5,0,7.6,2.4,7.6,7.2v6.2c0,2.1,0,4.2,0.1,6.3h-2.9
|
|
42
|
+
C222.9,29.2,222.9,27.3,222.9,27.3z M217.8,27.2c2.9,0,4.7-1.3,4.7-3.3s-1.8-3.3-4.7-3.3s-4.8,1.3-4.8,3.3S215,27.2,217.8,27.2z"/>
|
|
43
|
+
<path class="st0" d="M232,10h3.1v3c1.6-2.6,4.3-3.4,6.4-3.4c4.3,0,7.3,2.8,7.3,8.3v11.3h-3.2V18.4c0-4.1-2.1-5.8-4.9-5.8
|
|
44
|
+
c-3,0-5.4,2-5.4,5.9v10.8H232L232,10L232,10z"/>
|
|
45
|
+
<path class="st0" d="M253.5,19.8v-0.5c0-5.8,4.2-9.8,9.9-9.8c2.8,0,5.2,1.1,6.8,3l-2,2c-1.2-1.3-2.8-2-4.8-2
|
|
46
|
+
c-3.8,0-6.7,2.7-6.7,6.8v0.5c0,4.1,2.8,6.8,6.7,6.8c1.9,0,3.5-0.6,4.8-1.9l2,2c-1.6,1.9-4.1,3-6.8,3
|
|
47
|
+
C257.7,29.6,253.5,25.6,253.5,19.8L253.5,19.8z"/>
|
|
48
|
+
<path class="st0" d="M274.9,0h3.1v13c1.6-2.6,4.3-3.4,6.4-3.4c4.3,0,7.3,2.8,7.3,8.3v11.3h-3.2V18.4c0-4.1-2.1-5.8-4.9-5.8
|
|
49
|
+
c-3,0-5.4,2-5.4,5.9v10.8h-3.2L274.9,0L274.9,0z"/>
|
|
50
|
+
<path class="st0" d="M296.4,19.7v-0.4c0-5.6,3.6-9.7,9-9.7s8.9,4.4,8.2,11h-13.9c0.4,3.6,2.8,6.1,6.6,6.1c2,0,3.6-0.5,4.7-1.5
|
|
51
|
+
l1.8,2c-1.5,1.6-3.9,2.5-6.7,2.5C300.3,29.6,296.4,25.6,296.4,19.7L296.4,19.7z M310.5,17.9c0-3.5-2.1-5.6-5-5.6
|
|
52
|
+
c-3.2,0-5.3,2.2-5.8,5.6H310.5L310.5,17.9z"/>
|
|
53
|
+
<path class="st0" d="M317.8,10h3.2V13c0.9-2.4,3-3.2,5.3-3.2h1.6v3.2H326c-3.1,0-5,1.5-5,4.7v11.4h-3.2L317.8,10L317.8,10z"/>
|
|
54
|
+
<path class="st0" d="M341.5,1.2h8.7c5.6,0,9.4,3.1,9.4,8.4s-3.8,8.4-9.4,8.4h-5.3v11.2h-3.4V1.2z M350.3,15.2
|
|
55
|
+
c3.5,0,5.8-2.2,5.8-5.5s-2.4-5.5-5.8-5.5h-5.4v11H350.3z"/>
|
|
56
|
+
<path class="st0" d="M363.5,10h3.2V13c0.9-2.4,3-3.2,5.3-3.2h1.6v3.2h-1.9c-3.1,0-5,1.5-5,4.7v11.4h-3.2L363.5,10L363.5,10z"/>
|
|
57
|
+
<path class="st0" d="M379,12.8h-3.7V10h6.9v19.2H379V12.8z M378.9,1.1h3.5v4.6h-3.5V1.1z"/>
|
|
58
|
+
<path class="st0" d="M388.6,10h3.1v3c1.5-2.6,4-3.4,6.1-3.4c2.8,0,5,1.2,6.1,3.8c1.6-2.9,4.5-3.8,6.6-3.8c4.2,0,7.1,2.7,7.1,8.2
|
|
59
|
+
v11.4h-3.2v-11c0-4-1.8-5.6-4.6-5.6s-5,2-5,5.6v11h-3.2v-11c0-4-1.8-5.6-4.6-5.6s-5,2-5,5.6v11h-3.2L388.6,10L388.6,10z"/>
|
|
60
|
+
<path class="st0" d="M422.3,19.7v-0.4c0-5.6,3.6-9.7,9-9.7s8.9,4.4,8.2,11h-13.9c0.4,3.6,2.8,6.1,6.6,6.1c2,0,3.6-0.5,4.7-1.5
|
|
61
|
+
l1.8,2c-1.5,1.6-3.9,2.5-6.7,2.5C426.2,29.6,422.3,25.6,422.3,19.7L422.3,19.7z M436.4,17.9c0-3.5-2.1-5.6-5-5.6
|
|
62
|
+
c-3.2,0-5.3,2.2-5.8,5.6H436.4L436.4,17.9z"/>
|
|
63
|
+
</g>
|
|
64
|
+
</svg>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?><svg id="Layer_2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 439.52 36.16"><defs><style>.cls-1{fill:#30ba78;}.cls-2{fill:#0c322c;}</style></defs><g id="Layer_1-2"><g id="Layer_1-3"><path class="cls-1" d="M66.89,13.09c-.38.25-.89.25-1.27,0-.62-.41-.68-1.28-.18-1.78.45-.46,1.18-.46,1.63,0,.5.5.44,1.36-.18,1.78M68.7,10.57c.72,3.08-2.04,5.84-5.12,5.12-1.57-.37-2.81-1.61-3.18-3.18-.72-3.07,2.04-5.84,5.12-5.12,1.57.37,2.81,1.61,3.18,3.17M47.99,27.11c.35.51.64.99.81,1.48.11.35.26.8.61.99.02.01.04.02.06.03.63.23,2.24.19,2.24.19h2.97c.25,0,2.48,0,2.43-.25-.27-1.19-1.65-1.41-2.7-2.03-.97-.58-1.88-1.23-2.3-2.36-.22-.58-.09-1.92.29-2.41.27-.35.67-.59,1.11-.68.48-.1.97-.01,1.45.03.59.06,1.17.17,1.76.24,1.14.15,2.28.21,3.43.18,1.89-.05,3.78-.35,5.57-.96,1.25-.42,2.48-.99,3.54-1.78,1.21-.9.89-.81-.33-.69-1.47.15-2.95.17-4.42.09-1.37-.08-2.73-.24-3.97-.88-.98-.5-1.82-1.01-2.59-1.79-.12-.12-.19-.46.02-.68.21-.21.64-.09.78.02,1.35,1.13,3.37,2.06,5.46,2.16,1.13.06,2.23.08,3.36.03.56-.03,1.42-.02,1.98-.03.29,0,1.09.08,1.24-.23.05-.09.04-.19.04-.3-.17-4.52-.5-9.62-5.23-11.78-3.53-1.61-8.82-4.11-11.05-5.15-.52-.25-1.12.14-1.12.72,0,1.51.08,3.68.08,5.65-1.07-1.09-2.87-1.78-4.25-2.41-1.56-.72-3.17-1.32-4.81-1.83-3.3-1.02-6.72-1.65-10.15-1.99-3.89-.39-7.86-.2-11.69.59-6.32,1.31-12.53,4.35-17.24,8.79C2.44,12.8.17,16.67.02,20.61c-.22,5.57,1.34,8.56,4.21,11.64,4.57,4.91,14.41,5.6,18.39-.23,1.79-2.62,2.18-6.18.88-9.07-1.3-2.9-4.29-4.99-7.46-5.1-2.46-.08-5.08,1.17-6.02,3.45-.72,1.74-.31,3.88,1,5.23.51.53,1.2.96,1.96.79.44-.1.82-.43.88-.89.1-.67-.48-1.1-.84-1.61-.65-.92-.52-2.31.29-3.09.68-.66,1.7-.86,2.65-.86.89,0,1.79.16,2.56.61,1.08.63,1.79,1.79,2.04,3.01.74,3.66-2.23,6.63-6.26,6.86-2.06.12-4.16-.42-5.77-1.71-4.07-3.28-5.07-9.98-.41-13.56,4.42-3.4,10-2.52,13.29-.76,2.63,1.41,4.6,3.72,6.08,6.28.75,1.28,1.38,2.63,1.97,3.99.57,1.31,1.1,2.63,2.23,3.59.75.64,1.68.61,2.67.61h5.63c.76,0,.58-.51.25-.85-.75-.76-1.82-.93-2.81-1.21-2.27-.62-2.04-3.63-1.41-3.63,2.03,0,2.09.06,3.87.04,2.56-.04,3.34-.18,5.34.56,1.07.4,2.1,1.44,2.77,2.4"/></g><path class="cls-2" d="M80.34,25.52l3.04-3.04c2.16,2.2,4.16,3.12,6.52,3.12,3.16,0,5.04-1.6,5.04-3.96,0-6.44-13.96-2.8-13.96-12.48,0-5.2,3.88-8.52,9.76-8.52,3.6,0,6.6,1.4,8.48,3.52l-3.12,3.12c-1.6-1.64-3.24-2.48-5.36-2.48-2.96,0-4.88,1.52-4.88,3.88,0,6.08,14.08,2.12,14.08,12.24,0,5.36-4.12,8.84-10.2,8.84-4.2,0-7.24-1.68-9.4-4.24Z"/><path class="cls-2" d="M104.42,19.52V1.2h4.92v17.92c0,4.08,2.36,6.08,5.96,6.08s5.92-2,5.92-6.08V1.2h4.92v18.32c0,6.84-4.32,10.24-10.84,10.24s-10.88-3.4-10.88-10.24Z"/><path class="cls-2" d="M130.62,25.52l3.04-3.04c2.16,2.2,4.16,3.12,6.52,3.12,3.16,0,5.04-1.6,5.04-3.96,0-6.44-13.96-2.8-13.96-12.48,0-5.2,3.88-8.52,9.76-8.52,3.6,0,6.6,1.4,8.48,3.52l-3.12,3.12c-1.6-1.64-3.24-2.48-5.36-2.48-2.96,0-4.88,1.52-4.88,3.88,0,6.08,14.08,2.12,14.08,12.24,0,5.36-4.12,8.84-10.2,8.84-4.2,0-7.24-1.68-9.4-4.24Z"/><path class="cls-2" d="M154.38,24.52V5.88c0-2.72,1.96-4.68,4.68-4.68h13.6v4.48h-11.96c-.84,0-1.48.64-1.48,1.44v5.88h12.6v4.28h-12.6v6c0,.8.64,1.44,1.48,1.44h11.96v4.48h-13.6c-2.72,0-4.68-1.96-4.68-4.68Z"/><path class="cls-2" d="M187.46,1.2h9c5.64,0,9.4,2.88,9.4,8.36,0,4.72-2.52,7.32-6.52,8.12l7.36,11.52h-3.96l-7-11.24h-4.88v11.24h-3.4V1.2ZM196.3,15.04c3.64,0,6.08-1.68,6.08-5.4,0-3.52-2.44-5.52-6.08-5.52h-5.44v10.92h5.44Z"/><path class="cls-2" d="M222.86,27.28c-1.08,1.52-2.96,2.32-5.68,2.32-4.56,0-7.4-2.28-7.4-5.68s2.8-5.96,7.76-5.96c2.08,0,3.72.48,4.92,1.32v-2.52c0-2.88-1.48-4.28-4.48-4.28-2,0-4.36.76-6.04,2.28l-1.52-2.2c1.72-1.96,4.72-3,7.68-3,4.48,0,7.56,2.4,7.56,7.16v6.16c0,2.12,0,4.2.12,6.32h-2.92v-1.92ZM217.78,27.16c2.88,0,4.68-1.28,4.68-3.32s-1.76-3.28-4.68-3.28-4.76,1.28-4.76,3.28,1.88,3.32,4.76,3.32Z"/><path class="cls-2" d="M231.94,9.96h3.12v3.04c1.56-2.64,4.32-3.44,6.36-3.44,4.32,0,7.28,2.8,7.28,8.32v11.32h-3.2v-10.84c0-4.12-2.08-5.84-4.88-5.84-2.96,0-5.44,2.04-5.44,5.88v10.8h-3.24V9.96Z"/><path class="cls-2" d="M253.46,19.8v-.48c0-5.76,4.2-9.76,9.88-9.76,2.76,0,5.2,1.08,6.76,2.96l-2,2c-1.2-1.28-2.8-1.96-4.76-1.96-3.84,0-6.68,2.68-6.68,6.76v.48c0,4.08,2.84,6.8,6.72,6.8,1.92,0,3.52-.6,4.84-1.92l1.96,1.96c-1.6,1.88-4.08,2.96-6.84,2.96-5.72,0-9.88-4.04-9.88-9.8Z"/><path class="cls-2" d="M274.82,0h3.12v13c1.56-2.64,4.32-3.44,6.36-3.44,4.32,0,7.28,2.8,7.28,8.32v11.32h-3.2v-10.84c0-4.12-2.08-5.84-4.88-5.84-2.96,0-5.44,2.04-5.44,5.88v10.8h-3.24V0Z"/><path class="cls-2" d="M296.34,19.68v-.4c0-5.56,3.6-9.72,9-9.72s8.92,4.36,8.16,11h-13.92c.36,3.56,2.8,6.08,6.56,6.08,2,0,3.56-.48,4.72-1.52l1.84,2c-1.48,1.6-3.92,2.48-6.72,2.48-5.72,0-9.64-4.04-9.64-9.92ZM310.42,17.92c-.04-3.52-2.08-5.56-5.04-5.56-3.24,0-5.32,2.2-5.76,5.56h10.8Z"/><path class="cls-2" d="M317.7,9.96h3.16v3.08c.92-2.44,2.96-3.16,5.32-3.16h1.64v3.2h-1.92c-3.12,0-4.96,1.52-4.96,4.72v11.4h-3.24V9.96Z"/><path class="cls-2" d="M341.42,1.2h8.68c5.6,0,9.36,3.12,9.36,8.44s-3.76,8.4-9.36,8.4h-5.28v11.16h-3.4V1.2ZM350.26,15.16c3.48,0,5.84-2.16,5.84-5.52s-2.36-5.48-5.84-5.48h-5.44v11h5.44Z"/><path class="cls-2" d="M363.42,9.96h3.16v3.08c.92-2.44,2.96-3.16,5.32-3.16h1.64v3.2h-1.92c-3.12,0-4.96,1.52-4.96,4.72v11.4h-3.24V9.96Z"/><path class="cls-2" d="M378.98,12.76h-3.72v-2.8h6.92v19.24h-3.2V12.76ZM378.86,1.08h3.52v4.64h-3.52V1.08Z"/><path class="cls-2" d="M388.54,9.96h3.12v3c1.48-2.56,3.96-3.4,6.08-3.4,2.8,0,4.96,1.24,6.08,3.76,1.6-2.88,4.48-3.76,6.6-3.76,4.2,0,7.08,2.68,7.08,8.2v11.44h-3.2v-11.04c0-3.96-1.84-5.64-4.64-5.64s-5,2-5,5.64v11.04h-3.24v-11.04c0-3.96-1.84-5.64-4.6-5.64s-5.04,2-5.04,5.64v11.04h-3.24V9.96Z"/><path class="cls-2" d="M422.26,19.68v-.4c0-5.56,3.6-9.72,9-9.72s8.92,4.36,8.16,11h-13.92c.36,3.56,2.8,6.08,6.56,6.08,2,0,3.56-.48,4.72-1.52l1.84,2c-1.48,1.6-3.92,2.48-6.72,2.48-5.72,0-9.64-4.04-9.64-9.92ZM436.34,17.92c-.04-3.52-2.08-5.56-5.04-5.56-3.24,0-5.32,2.2-5.76,5.56h10.8Z"/></g></svg>
|
|
@@ -49,6 +49,14 @@ $primary-50 : #A7BFF1; // Active dark
|
|
|
49
49
|
$primary-20 : #EDF2FC;
|
|
50
50
|
$primary-15 : #EEF1F6; // Category active light
|
|
51
51
|
|
|
52
|
+
$green-140 : #025937;
|
|
53
|
+
$green-120 : #008657;
|
|
54
|
+
$green-jungle : #30BA78;
|
|
55
|
+
$green-80 : #42D29F;
|
|
56
|
+
$green-60 : #83E1BE;
|
|
57
|
+
$green-40 : #C0EFDE;
|
|
58
|
+
$green-20 : #EAFAF4;
|
|
59
|
+
|
|
52
60
|
$secondary : $grey-50;
|
|
53
61
|
$link : $primary-80;
|
|
54
62
|
|
|
@@ -847,7 +855,7 @@ BODY, .theme-dark {
|
|
|
847
855
|
// Header, Footer and Consent banner defaults
|
|
848
856
|
--banner-text-color : #{$lightest};
|
|
849
857
|
|
|
850
|
-
--primary-keyboard-focus :
|
|
858
|
+
--primary-keyboard-focus : hsl(from var(--primary) h s calc(l + 10));
|
|
851
859
|
|
|
852
860
|
--nav-bg : #{$body-bg};
|
|
853
861
|
--nav-active : #333;
|
|
@@ -1,27 +1,84 @@
|
|
|
1
1
|
.suse {
|
|
2
|
-
$
|
|
3
|
-
$
|
|
4
|
-
$
|
|
5
|
-
|
|
6
|
-
--primary : #{$primary};
|
|
7
|
-
--primary-text : #fff;
|
|
8
|
-
--primary-hover-bg : #{darken($primary, 10%)};
|
|
9
|
-
--primary-hover-text : #{saturate($lightest, 20%)};
|
|
10
|
-
--primary-active-bg : #{darken($primary, 25%)};
|
|
11
|
-
--primary-active-text : #{contrast-color(darken($primary, 25%))};
|
|
12
|
-
--primary-border : #{$primary};
|
|
13
|
-
--primary-banner-bg : #{rgba($primary, 0.15)};
|
|
14
|
-
--primary-light-bg : #{rgba($primary, 0.05)};
|
|
15
|
-
--primary-keyboard-focus : hsl(from var(--primary) h s calc(l - 10));
|
|
16
|
-
|
|
17
|
-
--info : #{$info};
|
|
18
|
-
--info-text : #{contrast-color($info)};
|
|
19
|
-
--info-hover-bg : #{darken($info, 10%)};
|
|
20
|
-
--info-hover-text : #{saturate($lightest, 20%)};
|
|
21
|
-
--info-active-bg : #{darken($info, 25%)};
|
|
22
|
-
--info-active-text : #{contrast-color(darken($info, 25%))};
|
|
23
|
-
--info-border : #{$info};
|
|
24
|
-
--info-banner-bg : #{rgba($info, 0.15)};
|
|
25
|
-
--info-light-bg : #{rgba($info, 0.05)};
|
|
2
|
+
$green-jungle : #30BA78;
|
|
3
|
+
$light-green-jungle: #4DD192;
|
|
4
|
+
$lighter-green-jungle: #72EEB3;
|
|
26
5
|
|
|
6
|
+
$jungle-120: #008657;
|
|
7
|
+
|
|
8
|
+
&.theme-light {
|
|
9
|
+
--primary: #{$jungle-120};
|
|
10
|
+
--primary-text: #FFFFFF;
|
|
11
|
+
--primary-hover: #006B46;
|
|
12
|
+
--primary-hover-bg: #006B46;
|
|
13
|
+
--primary-border: #{$green-120};
|
|
14
|
+
|
|
15
|
+
--link: #4871C7;
|
|
16
|
+
--active-nav: #{$green-140};
|
|
17
|
+
|
|
18
|
+
--non-primary-text: #{$green-120};
|
|
19
|
+
--non-primary-hover: #{$green-20};
|
|
20
|
+
|
|
21
|
+
--secondary: var(--body-bg);
|
|
22
|
+
--secondary-border: var(--primary);
|
|
23
|
+
--on-secondary: var(--non-primary-text);
|
|
24
|
+
--secondary-hover: var(--non-primary-hover);
|
|
25
|
+
|
|
26
|
+
--tertiary: transparent;
|
|
27
|
+
--on-tertiary: var(--non-primary-text);
|
|
28
|
+
--on-tertiary-hover: var(--non-primary-text);
|
|
29
|
+
--on-tertiary-header: var(--non-primary-text);
|
|
30
|
+
--on-tertiary-header-hover: var(--non-primary-text);
|
|
31
|
+
--tertiary-hover: var(--non-primary-hover);
|
|
32
|
+
--tertiary-hover-app-bar: var(--non-primary-text);
|
|
33
|
+
|
|
34
|
+
$super-light-green: #F4F6F5;
|
|
35
|
+
--active: #{$green-140};
|
|
36
|
+
--on-active: #{$grey-0};
|
|
37
|
+
--active-hover: #{lighten($green-140, 5%)};
|
|
38
|
+
--category-active: #{$super-light-green};
|
|
39
|
+
--category-active-hover: #e8eeeb;
|
|
40
|
+
|
|
41
|
+
--checkbox-tick : var(--on-active);
|
|
42
|
+
--checkbox-border : var(--body-border);
|
|
43
|
+
--checkbox-tick-disabled : #{darken($disabled, 40%)};
|
|
44
|
+
--checkbox-disabled-bg : #{$disabled};
|
|
45
|
+
--checkbox-ticked-bg : var(--active);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
&.theme-dark {
|
|
49
|
+
--link: #9BBFFD;
|
|
50
|
+
--active-nav: #{$green-40};
|
|
51
|
+
|
|
52
|
+
--primary: #{$light-green-jungle};
|
|
53
|
+
--primary-text: #{$grey-90};
|
|
54
|
+
--primary-hover: #{$lighter-green-jungle};
|
|
55
|
+
--primary-hover-bg: #{$lighter-green-jungle};
|
|
56
|
+
--primary-border: #{$lighter-green-jungle};
|
|
57
|
+
|
|
58
|
+
--non-primary-text: #{$lighter-green-jungle};
|
|
59
|
+
--non-primary-hover: #1E372B;
|
|
60
|
+
|
|
61
|
+
--secondary: var(--body-bg);
|
|
62
|
+
--secondary-border: var(--non-primary-text);
|
|
63
|
+
--on-secondary: var(--non-primary-text);
|
|
64
|
+
--secondary-hover: var(--non-primary-hover);
|
|
65
|
+
|
|
66
|
+
--tertiary: transparent;
|
|
67
|
+
--on-tertiary: var(--non-primary-text);
|
|
68
|
+
--on-tertiary-hover: var(--non-primary-text);
|
|
69
|
+
--on-tertiary-header: var(--non-primary-text);
|
|
70
|
+
--on-tertiary-header-hover: var(--non-primary-text);
|
|
71
|
+
--tertiary-hover: var(--non-primary-hover);
|
|
72
|
+
--tertiary-hover-app-bar: var(--non-primary-text);
|
|
73
|
+
|
|
74
|
+
$category-active:#303633;
|
|
75
|
+
--active: #{$green-40};
|
|
76
|
+
--on-active: #{$grey-90};
|
|
77
|
+
--active-hover: #{$green-60};
|
|
78
|
+
--category-active: #{$category-active};
|
|
79
|
+
--category-active-hover: #{lighten($category-active, 10%)};
|
|
80
|
+
|
|
81
|
+
--toggle-off-bg: #{$grey-70};
|
|
82
|
+
--sortable-table-selected-bg: #3f4350;
|
|
83
|
+
}
|
|
27
84
|
}
|
|
@@ -158,6 +158,8 @@ generic:
|
|
|
158
158
|
genericRow: row {index}
|
|
159
159
|
showLess: Show less
|
|
160
160
|
showMore: Show more
|
|
161
|
+
externalIps: External IPs
|
|
162
|
+
internalIps: Internal IPs
|
|
161
163
|
opensInNewTab: Opens in a new tab
|
|
162
164
|
|
|
163
165
|
tabs:
|
|
@@ -233,7 +235,7 @@ nav:
|
|
|
233
235
|
workload: Workloads
|
|
234
236
|
monitoring: Monitoring
|
|
235
237
|
advanced: Advanced
|
|
236
|
-
|
|
238
|
+
providers: Providers
|
|
237
239
|
RKE1Configuration: RKE1 Configuration
|
|
238
240
|
admission: Admission
|
|
239
241
|
apps: Apps
|
|
@@ -1576,6 +1578,7 @@ cluster:
|
|
|
1576
1578
|
nodeLabel:
|
|
1577
1579
|
title: Node Labels
|
|
1578
1580
|
label: Add Label
|
|
1581
|
+
ipv6: "It looks like this cluster uses IPv6 networking: <code>Node Private IP</code> should be set to the cluster's IPV6 address."
|
|
1579
1582
|
registrationCommand:
|
|
1580
1583
|
label: Registration Command
|
|
1581
1584
|
linuxDetail: Run this command on each of the existing Linux machines you want to register.
|
|
@@ -2077,6 +2080,21 @@ cluster:
|
|
|
2077
2080
|
httpEndpoint: Allow access to EC2 metadata
|
|
2078
2081
|
httpTokens: Use tokens for metadata
|
|
2079
2082
|
tagTitle: EC2 Tags
|
|
2083
|
+
enableIpv6:
|
|
2084
|
+
label: Enable IPv6
|
|
2085
|
+
description: "Checking this automatically sets your <a aria-label='scroll to the networking section in cluster configuration' href=\"#networking\">Network Stack Preference Order</a> to <b>DUAL</b> stack, enabling both IPv4 and IPv6. For an IPv6-only cluster, you can manually change that setting to <b>IPv6</b>."
|
|
2086
|
+
ipv6AddressCount:
|
|
2087
|
+
label: IPv6 Address Count
|
|
2088
|
+
tooltip: Specifies the number of IPv6 addresses to assign to the network interface
|
|
2089
|
+
error: IPv6 Address Count must be greater than 0 when using an IPv6 vpc or subnet.
|
|
2090
|
+
enablePrimaryIpv6:
|
|
2091
|
+
label: Enable Static Primary Ipv6
|
|
2092
|
+
description: This allows IPv6 communication for components and workloads.
|
|
2093
|
+
ipv6AddressOnly:
|
|
2094
|
+
label: Use IPv6 Only
|
|
2095
|
+
httpProtocolIpv6:
|
|
2096
|
+
label: Use IPv6 for instance metadata service
|
|
2097
|
+
ipv6ValidationWarning: When one pool uses an IPv6 or dual-stack subnet/vpc, all pools must use an IPv6 or dual-stack subnet/vpc.
|
|
2080
2098
|
pnap:
|
|
2081
2099
|
serverLocation:
|
|
2082
2100
|
label: Location
|
|
@@ -2249,6 +2267,18 @@ cluster:
|
|
|
2249
2267
|
rkeTemplate: RKE Template
|
|
2250
2268
|
|
|
2251
2269
|
machinePool:
|
|
2270
|
+
automation:
|
|
2271
|
+
label: Automation
|
|
2272
|
+
autoscaler:
|
|
2273
|
+
heading: Autoscaler
|
|
2274
|
+
enable: Enable autoscaler and override "Machine Count" value
|
|
2275
|
+
machineCountValueOverride: Controlled by autoscaler
|
|
2276
|
+
baseUnit: Machines
|
|
2277
|
+
min: Min
|
|
2278
|
+
max: Max
|
|
2279
|
+
validation:
|
|
2280
|
+
isAutoscalerMaxGreaterThanMin: The max machines count must be equal or exceed the min machine count.
|
|
2281
|
+
etcdControlPlaneWarning: We don't recommend using Autoscaler with machine pools that have the etcd or Control Plane roles. You can modify the yaml if you want to override the current value.
|
|
2252
2282
|
name:
|
|
2253
2283
|
label: Pool Name
|
|
2254
2284
|
placeholder: A random one will be generated by default
|
|
@@ -2388,8 +2418,8 @@ cluster:
|
|
|
2388
2418
|
providerGroup:
|
|
2389
2419
|
create-custom1: Use existing nodes and create a cluster using RKE
|
|
2390
2420
|
create-custom2: Use existing nodes and create a cluster using RKE2/K3s
|
|
2391
|
-
create-
|
|
2392
|
-
register-
|
|
2421
|
+
create-hosted: Create a cluster in a hosted Kubernetes provider
|
|
2422
|
+
register-hosted: Register an existing cluster in a hosted Kubernetes provider
|
|
2393
2423
|
create-rke1: Provision new nodes and create a cluster using RKE
|
|
2394
2424
|
create-rke2: Provision new nodes and create a cluster using RKE2/K3s
|
|
2395
2425
|
create-template: Use a Catalog Template to create a cluster
|
|
@@ -2523,6 +2553,14 @@ cluster:
|
|
|
2523
2553
|
label: Accept any certificate (insecure)
|
|
2524
2554
|
endpointCA:
|
|
2525
2555
|
label: Endpoint CA Cert
|
|
2556
|
+
stackPreference:
|
|
2557
|
+
label: Stack Preference
|
|
2558
|
+
description: "Stack preference determines the networking stack used by the cluster. The selected value configures the address used for health and readiness probes of calico, etcd, kube-apiserver, kube-scheduler, kube-controller-manager, and kubelet. It also defines the server URL in the <code>authentication-token-webhook-config-file</code> for the Authorized Cluster Endpoint and the advertise-client-urls for etcd during snapshot restore. When set to <code>dual</code>, the cluster uses <code>localhost</code>; when set to <code>ipv6</code>, it uses <code>[::1]</code>; and when set to <code>ipv4</code>, it uses <code>127.0.0.1</code>."
|
|
2559
|
+
options:
|
|
2560
|
+
ipv4: IPv4
|
|
2561
|
+
ipv6: IPv6
|
|
2562
|
+
dual: Dual-Stack
|
|
2563
|
+
errorNeedsIpv6: Stack preference must be set to dual-stack or ipv6 if using ipv6 networking in nodepools.
|
|
2526
2564
|
k3s:
|
|
2527
2565
|
systemService:
|
|
2528
2566
|
coredns: 'CoreDNS'
|
|
@@ -2679,6 +2717,10 @@ cruResource:
|
|
|
2679
2717
|
previewYaml: Edit as YAML
|
|
2680
2718
|
showYaml: View as YAML
|
|
2681
2719
|
|
|
2720
|
+
providers:
|
|
2721
|
+
hosted:
|
|
2722
|
+
title: Hosted Providers
|
|
2723
|
+
prime: Prime only
|
|
2682
2724
|
drivers:
|
|
2683
2725
|
kontainer:
|
|
2684
2726
|
title: Cluster Drivers
|
|
@@ -3619,6 +3661,7 @@ internalExternalIP:
|
|
|
3619
3661
|
none: None
|
|
3620
3662
|
copyInternalIp: Copy internal IP address to clipboard
|
|
3621
3663
|
copyExternalIp: Copy external IP address to clipboard
|
|
3664
|
+
clickToShowMoreIps: "Click to show {count} more {count, plural, one {IP} other {IPs}}"
|
|
3622
3665
|
|
|
3623
3666
|
istio:
|
|
3624
3667
|
links:
|
|
@@ -6589,6 +6632,7 @@ storageClass:
|
|
|
6589
6632
|
|
|
6590
6633
|
tableHeaders:
|
|
6591
6634
|
assuredConcurrencyShares: Assured Concurrency Shares
|
|
6635
|
+
autoscaler: Autoscaler
|
|
6592
6636
|
accessKey: Access Key
|
|
6593
6637
|
addressType: Address Type
|
|
6594
6638
|
accessModes: Access Modes
|
|
@@ -9153,3 +9197,24 @@ component:
|
|
|
9153
9197
|
marchToMayHourly: "Every hour, only in March, April, and May"
|
|
9154
9198
|
every4Hours9to17: "At 0 minutes past the hour, every 4 hours, between 09:00 AM and 05:00 PM"
|
|
9155
9199
|
|
|
9200
|
+
autoscaler:
|
|
9201
|
+
card:
|
|
9202
|
+
title: Autoscaler
|
|
9203
|
+
pause: Pause
|
|
9204
|
+
resume: Resume
|
|
9205
|
+
loadingError: There was a problem loading details
|
|
9206
|
+
loadingAlt: Details Loading
|
|
9207
|
+
details:
|
|
9208
|
+
status: Status
|
|
9209
|
+
health: Health
|
|
9210
|
+
scaleDown: Scale Down
|
|
9211
|
+
scaleUp: Scale Up
|
|
9212
|
+
nodes: Nodes
|
|
9213
|
+
ready: Ready
|
|
9214
|
+
notStarted: Not Started
|
|
9215
|
+
inTotal: In Total
|
|
9216
|
+
provisioning: Provisioning
|
|
9217
|
+
paused: Paused
|
|
9218
|
+
unavailable: Unavailable
|
|
9219
|
+
tab:
|
|
9220
|
+
title: Autoscaler
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { computed, ComputedRef } from 'vue';
|
|
3
|
+
import { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';
|
|
4
|
+
import { useInterval } from '@shell/composables/useInterval';
|
|
5
|
+
import { useI18n } from '@shell/composables/useI18n';
|
|
6
|
+
import { useStore } from 'vuex';
|
|
7
|
+
|
|
8
|
+
export interface Props {
|
|
9
|
+
value: any;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface Detail {
|
|
13
|
+
label: string;
|
|
14
|
+
value?: string | { component: any; props: any };
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const props = defineProps<Props>();
|
|
18
|
+
|
|
19
|
+
const store = useStore();
|
|
20
|
+
const i18n = useI18n(store);
|
|
21
|
+
|
|
22
|
+
const fetch = useFetch(async() => {
|
|
23
|
+
return await props.value.loadAutoscalerDetails();
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// The backend only updates the configmap every 10 seconds and we don't cache the configmap in the stores
|
|
27
|
+
useInterval(() => fetch.value.refresh(), 10000);
|
|
28
|
+
|
|
29
|
+
const details: ComputedRef<Detail[]> = computed(() => fetch.value.data);
|
|
30
|
+
</script>
|
|
31
|
+
|
|
32
|
+
<template>
|
|
33
|
+
<div class="autoscaler-card">
|
|
34
|
+
<div
|
|
35
|
+
v-if="fetch.loading && !fetch.refreshing"
|
|
36
|
+
class="loading"
|
|
37
|
+
>
|
|
38
|
+
<i
|
|
39
|
+
class="icon icon-lg icon-spinner icon-spin"
|
|
40
|
+
:alt="i18n.t('autoscaler.card.loadingAlt')"
|
|
41
|
+
/>
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<div
|
|
45
|
+
v-else-if="fetch.data"
|
|
46
|
+
class="details"
|
|
47
|
+
>
|
|
48
|
+
<div
|
|
49
|
+
v-for="(detail) in details"
|
|
50
|
+
:key="detail.label"
|
|
51
|
+
class="detail"
|
|
52
|
+
>
|
|
53
|
+
<label
|
|
54
|
+
v-if="detail.value"
|
|
55
|
+
class="label text-deemphasized"
|
|
56
|
+
>
|
|
57
|
+
{{ detail.label }}
|
|
58
|
+
</label>
|
|
59
|
+
<h5 v-else-if="detail.label">
|
|
60
|
+
{{ detail.label }}
|
|
61
|
+
</h5>
|
|
62
|
+
<div
|
|
63
|
+
v-if="detail.value"
|
|
64
|
+
class="value"
|
|
65
|
+
>
|
|
66
|
+
<component
|
|
67
|
+
:is="detail.value.component"
|
|
68
|
+
v-if="typeof detail.value === 'object'"
|
|
69
|
+
v-bind="detail.value.props"
|
|
70
|
+
/>
|
|
71
|
+
<span v-else>{{ detail.value }}</span>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
</div>
|
|
75
|
+
<div
|
|
76
|
+
v-else
|
|
77
|
+
class="text-warning"
|
|
78
|
+
>
|
|
79
|
+
{{ i18n.t('autoscaler.card.loadingError') }}
|
|
80
|
+
</div>
|
|
81
|
+
</div>
|
|
82
|
+
</template>
|
|
83
|
+
|
|
84
|
+
<style lang="scss" scoped>
|
|
85
|
+
.autoscaler-card {
|
|
86
|
+
width: 240px;
|
|
87
|
+
|
|
88
|
+
.loading {
|
|
89
|
+
display: flex;
|
|
90
|
+
justify-content: center;
|
|
91
|
+
}
|
|
92
|
+
.detail {
|
|
93
|
+
display: flex;
|
|
94
|
+
white-space: nowrap;
|
|
95
|
+
width: 244px;
|
|
96
|
+
|
|
97
|
+
&:not(:last-of-type) {
|
|
98
|
+
margin-bottom: 8px;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
label, .value {
|
|
102
|
+
width: 50%;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
h5 {
|
|
107
|
+
margin-bottom: 0;
|
|
108
|
+
margin-top: 12px;
|
|
109
|
+
font-size: 14px;
|
|
110
|
+
font-weight: 600;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { useFetch } from '@shell/components/Resource/Detail/FetchLoader/composables';
|
|
3
|
+
import Tab from '@shell/components/Tabbed/Tab.vue';
|
|
4
|
+
import { useI18n } from '@shell/composables/useI18n';
|
|
5
|
+
import { computed, onMounted, ref } from 'vue';
|
|
6
|
+
import { useStore } from 'vuex';
|
|
7
|
+
import SortableTable from '@shell/components/SortableTable/index.vue';
|
|
8
|
+
import { useInterval } from '@shell/composables/useInterval';
|
|
9
|
+
|
|
10
|
+
export interface Props {
|
|
11
|
+
value: any;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface Detail {
|
|
15
|
+
label: string;
|
|
16
|
+
values: (string | { component: any; props: any })[];
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const props = withDefaults(defineProps<Props>(), { value: true });
|
|
20
|
+
|
|
21
|
+
const store = useStore();
|
|
22
|
+
const i18n = useI18n(store);
|
|
23
|
+
|
|
24
|
+
const table = ref<any>(null);
|
|
25
|
+
|
|
26
|
+
const eventHeaders = [
|
|
27
|
+
{
|
|
28
|
+
name: 'type',
|
|
29
|
+
label: i18n.t('tableHeaders.type'),
|
|
30
|
+
value: '_type',
|
|
31
|
+
sort: '_type',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'reason',
|
|
35
|
+
label: i18n.t('tableHeaders.reason'),
|
|
36
|
+
value: 'reason',
|
|
37
|
+
sort: 'reason',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'date',
|
|
41
|
+
label: i18n.t('tableHeaders.updated'),
|
|
42
|
+
value: 'firstTimestamp',
|
|
43
|
+
sort: 'date:desc',
|
|
44
|
+
formatter: 'LiveDate',
|
|
45
|
+
formatterOpts: { addSuffix: true },
|
|
46
|
+
width: 125
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'message',
|
|
50
|
+
label: i18n.t('tableHeaders.message'),
|
|
51
|
+
value: 'message',
|
|
52
|
+
sort: 'message',
|
|
53
|
+
},
|
|
54
|
+
];
|
|
55
|
+
|
|
56
|
+
const fetch = useFetch(async() => {
|
|
57
|
+
return await props.value.loadAutoscalerEvents();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// From the FAQ there appears to be a 20 second target between detecting scaling needs to happen to scaling beginning
|
|
61
|
+
// so I don't see a reason to poll quicker than 20 seconds.
|
|
62
|
+
// https://github.com/kubernetes/autoscaler/blob/9befb31fd94d73ae0b888bd9536ae085cd9304e1/cluster-autoscaler/FAQ.md#what-are-the-service-level-objectives-for-cluster-autoscaler
|
|
63
|
+
useInterval(() => {
|
|
64
|
+
fetch.value.refresh();
|
|
65
|
+
}, 20000);
|
|
66
|
+
|
|
67
|
+
const rows = computed(() => {
|
|
68
|
+
return fetch.value.data || [];
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
onMounted(() => {
|
|
72
|
+
table.value?.changeSort('date', true);
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
</script>
|
|
76
|
+
|
|
77
|
+
<template>
|
|
78
|
+
<Tab
|
|
79
|
+
name="autoscaler"
|
|
80
|
+
:label="i18n.t('autoscaler.tab.title')"
|
|
81
|
+
>
|
|
82
|
+
<SortableTable
|
|
83
|
+
ref="table"
|
|
84
|
+
:headers="eventHeaders"
|
|
85
|
+
:namespaced="false"
|
|
86
|
+
:row-actions="false"
|
|
87
|
+
default-sort-by="date"
|
|
88
|
+
:rows="rows"
|
|
89
|
+
/>
|
|
90
|
+
</Tab>
|
|
91
|
+
</template>
|
|
92
|
+
|
|
93
|
+
<style lang="scss" scoped>
|
|
94
|
+
</style>
|