@rancher/shell 2.0.2-rc.1 → 2.0.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/translations/en-us.yaml +53 -31
- package/components/PromptRemove.vue +8 -3
- package/components/ResourceDetail/Masthead.vue +1 -0
- package/components/ResourceDetail/index.vue +2 -1
- package/components/SideNav.vue +1 -1
- package/components/TableDataUserIcon.vue +1 -1
- package/components/fleet/FleetClusters.vue +0 -3
- package/components/fleet/FleetRepos.vue +0 -7
- package/components/formatter/CloudCredExpired.vue +69 -0
- package/components/formatter/ClusterProvider.vue +3 -3
- package/components/formatter/Date.vue +1 -1
- package/components/nav/Header.vue +9 -5
- package/components/nav/TopLevelMenu.vue +127 -63
- package/components/nav/__tests__/TopLevelMenu.test.ts +53 -27
- package/config/labels-annotations.js +3 -0
- package/core/types-provisioning.ts +5 -0
- package/core/types.ts +26 -1
- package/detail/catalog.cattle.io.app.vue +17 -4
- package/detail/fleet.cattle.io.bundle.vue +5 -68
- package/detail/fleet.cattle.io.cluster.vue +11 -9
- package/detail/fleet.cattle.io.gitrepo.vue +3 -2
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +109 -24
- package/edit/provisioning.cattle.io.cluster/index.vue +10 -4
- package/edit/provisioning.cattle.io.cluster/rke2.vue +13 -2
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +1 -0
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +177 -26
- package/list/provisioning.cattle.io.cluster.vue +56 -5
- package/mixins/chart.js +6 -2
- package/models/__tests__/management.cattle.io.cluster.test.ts +3 -3
- package/models/__tests__/provisioning.cattle.io.cluster.test.ts +0 -86
- package/models/catalog.cattle.io.app.js +108 -21
- package/models/cloudcredential.js +159 -2
- package/models/fleet.cattle.io.bundle.js +3 -1
- package/models/fleet.cattle.io.gitrepo.js +50 -61
- package/models/management.cattle.io.cluster.js +15 -7
- package/models/provisioning.cattle.io.cluster.js +62 -15
- package/package.json +1 -1
- package/pages/c/_cluster/apps/charts/install.vue +2 -1
- package/pages/c/_cluster/explorer/__tests__/index.test.ts +1 -1
- package/pages/c/_cluster/explorer/index.vue +1 -2
- package/pages/c/_cluster/fleet/index.vue +12 -5
- package/pages/c/_cluster/manager/cloudCredential/index.vue +68 -4
- package/pages/c/_cluster/uiplugins/index.vue +4 -2
- package/pages/home.vue +1 -0
- package/scripts/extension/bundle +1 -1
- package/scripts/extension/helm/charts/ui-plugin-server/Chart.yaml +0 -2
- package/scripts/extension/parse-tag-name +21 -12
- package/scripts/publish-shell.sh +10 -4
- package/scripts/typegen.sh +27 -22
- package/store/features.js +1 -0
- package/types/resources/fleet.d.ts +40 -0
- package/types/shell/index.d.ts +4692 -0
- package/utils/auth.js +1 -1
- package/utils/cluster.js +1 -1
- package/utils/fleet.ts +159 -0
- package/utils/string.js +9 -0
- package/utils/v-sphere.ts +282 -0
- package/vue.config.js +3 -3
- package/shell/types/shell/index.d.ts +0 -2
|
@@ -360,8 +360,8 @@ addClusterMemberDialog:
|
|
|
360
360
|
title: Add Cluster Member
|
|
361
361
|
|
|
362
362
|
addonConfigConfirmation:
|
|
363
|
-
title: Add-On
|
|
364
|
-
body: Changing the Kubernetes Version can reset
|
|
363
|
+
title: Add-On Reset
|
|
364
|
+
body: Changing the Kubernetes Version can reset Add-On values. You should check that the values are as expected before continuing.
|
|
365
365
|
|
|
366
366
|
addProjectMemberDialog:
|
|
367
367
|
title: Add Project Member
|
|
@@ -1187,38 +1187,38 @@ cluster:
|
|
|
1187
1187
|
<code>Cluster Management > Advanced > JWT Authentication</code>"
|
|
1188
1188
|
addonChart:
|
|
1189
1189
|
rancher-vsphere-cpi:
|
|
1190
|
-
label: vSphere CPI
|
|
1191
|
-
configuration: vSphere CPI
|
|
1190
|
+
label: "Add-on: vSphere CPI"
|
|
1191
|
+
configuration: vSphere CPI
|
|
1192
1192
|
rancher-vsphere-csi:
|
|
1193
|
-
label: vSphere CSI
|
|
1194
|
-
configuration: vSphere CSI
|
|
1193
|
+
label: "Add-on: vSphere CSI"
|
|
1194
|
+
configuration: vSphere CSI
|
|
1195
1195
|
rke2-calico:
|
|
1196
|
-
label: Calico
|
|
1197
|
-
configuration: Calico
|
|
1196
|
+
label: "Add-on: Calico"
|
|
1197
|
+
configuration: Calico
|
|
1198
1198
|
rke2-calico-crd:
|
|
1199
|
-
label: Calico
|
|
1200
|
-
configuration: Calico
|
|
1199
|
+
label: "Add-on: Calico"
|
|
1200
|
+
configuration: Calico
|
|
1201
1201
|
rke2-canal:
|
|
1202
|
-
label: Canal
|
|
1203
|
-
configuration: Canal
|
|
1202
|
+
label: "Add-on: Canal"
|
|
1203
|
+
configuration: Canal
|
|
1204
1204
|
rke2-cilium:
|
|
1205
|
-
label: Cilium
|
|
1206
|
-
configuration: Cilium
|
|
1205
|
+
label: "Add-on: Cilium"
|
|
1206
|
+
configuration: Cilium
|
|
1207
1207
|
rke2-coredns:
|
|
1208
|
-
label: CoreDNS
|
|
1209
|
-
configuration: CoreDNS
|
|
1208
|
+
label: "Add-on: CoreDNS"
|
|
1209
|
+
configuration: CoreDNS
|
|
1210
1210
|
rke2-ingress-nginx:
|
|
1211
|
-
label: NGINX
|
|
1212
|
-
configuration: NGINX Ingress
|
|
1211
|
+
label: "Add-on: NGINX"
|
|
1212
|
+
configuration: NGINX Ingress
|
|
1213
1213
|
rke2-kube-proxy:
|
|
1214
|
-
label: Kube Proxy
|
|
1215
|
-
configuration: Kube Proxy
|
|
1214
|
+
label: "Add-on: Kube Proxy"
|
|
1215
|
+
configuration: Kube Proxy
|
|
1216
1216
|
rke2-metrics-server:
|
|
1217
|
-
label: Metrics Server
|
|
1218
|
-
configuration: Metrics Server
|
|
1217
|
+
label: "Add-on: Metrics Server"
|
|
1218
|
+
configuration: Metrics Server
|
|
1219
1219
|
rke2-multus:
|
|
1220
|
-
label: Multus
|
|
1221
|
-
configuration: Multus
|
|
1220
|
+
label: "Add-on: Multus"
|
|
1221
|
+
configuration: Multus
|
|
1222
1222
|
agentEnvVars:
|
|
1223
1223
|
label: Agent Environment
|
|
1224
1224
|
detail: Add additional environment variables to the agent container. This is most commonly useful for configuring a HTTP proxy.
|
|
@@ -1234,7 +1234,7 @@ cluster:
|
|
|
1234
1234
|
label: Google
|
|
1235
1235
|
rancher-vsphere:
|
|
1236
1236
|
label: vSphere
|
|
1237
|
-
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-
|
|
1237
|
+
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-on tabs.'
|
|
1238
1238
|
harvester:
|
|
1239
1239
|
label: Harvester
|
|
1240
1240
|
copyConfig: Copy KubeConfig to Clipboard
|
|
@@ -1380,8 +1380,10 @@ cluster:
|
|
|
1380
1380
|
macAddress: Mac Address
|
|
1381
1381
|
macFormat: 'Invalid MAC address format.'
|
|
1382
1382
|
vGpus:
|
|
1383
|
+
warnings:
|
|
1384
|
+
minimumAllocatable: It's highly recommended to select a vGPU with a number of allocatable devices greater than the number of nodes (Machine Count) to avoid "un-schedulable" errors after cluster updates.
|
|
1383
1385
|
errors:
|
|
1384
|
-
notAllocatable: '
|
|
1386
|
+
notAllocatable: '[{vGpu}] vGPU device is not allocatable; required: {allocated}, allocatable: {allocatable}'
|
|
1385
1387
|
volume:
|
|
1386
1388
|
title: Volumes
|
|
1387
1389
|
volume: Volume
|
|
@@ -1465,6 +1467,14 @@ cluster:
|
|
|
1465
1467
|
placeholder: A unique name for the cluster
|
|
1466
1468
|
directoryConfig:
|
|
1467
1469
|
title: Data directory configuration
|
|
1470
|
+
banner: Data directory configuration can not be changed once the cluster has been created
|
|
1471
|
+
radioInput:
|
|
1472
|
+
defaultLabel: Use default data directory configuration
|
|
1473
|
+
commonLabel: Use a common base directory for data directory configuration (sub-directories will be used for the system-agent, provisioning and distro paths)
|
|
1474
|
+
customLabel: Use custom data directories
|
|
1475
|
+
common:
|
|
1476
|
+
label: Data directory base path
|
|
1477
|
+
tooltip: Data directory base path. We will append the sub-directories appropriate for each directory (/agent, /provisioning and either /rke2 or /k3s)
|
|
1468
1478
|
systemAgent:
|
|
1469
1479
|
label: System-agent directory path
|
|
1470
1480
|
tooltip: Data directory for the system-agent connection info and plans
|
|
@@ -1745,7 +1755,7 @@ cluster:
|
|
|
1745
1755
|
serverOs:
|
|
1746
1756
|
label: OS
|
|
1747
1757
|
addOns:
|
|
1748
|
-
dependencyBanner: Add-On
|
|
1758
|
+
dependencyBanner: Add-On Configuration can vary between Kubernetes versions. Changing the Kubernetes version may reset the values below.
|
|
1749
1759
|
additionalManifest:
|
|
1750
1760
|
title: Additional Manifest
|
|
1751
1761
|
tooltip: 'Additional Kubernetes Manifest YAML to be applied to the cluster on startup.'
|
|
@@ -1809,11 +1819,18 @@ cluster:
|
|
|
1809
1819
|
other { {pool_name}: The provided values for {fields} were not found in the list of expected values. This can happen with clusters provisioned outside of Rancher or when options for the provider have changed. }
|
|
1810
1820
|
}
|
|
1811
1821
|
rkeTemplateUpgrade: Template revision {name} available for upgrade
|
|
1822
|
+
cloudCredentials:
|
|
1823
|
+
renew: Renew Cloud Credentials
|
|
1824
|
+
expired: Cloud Credential expired, please Renew Cloud Credentials
|
|
1825
|
+
expiring: Cloud Credential will expire on { expires }, please Renew Cloud Credentials
|
|
1826
|
+
banners:
|
|
1827
|
+
expiring: "{count} {count, plural, =1 { Cluster has a Cloud Credential that expires soon} other { Clusters have Cloud Credentials that expire soon}}, please Renew Cloud {count, plural, =1 { Credential} other { Credentials}}"
|
|
1828
|
+
expired: "{count} {count, plural, =1 { Cluster has a Cloud Credential that has expired} other { Clusters have Cloud Credentials that have expired}}, please Renew Cloud {count, plural, =1 { Credential} other { Credentials}}"
|
|
1812
1829
|
|
|
1813
1830
|
architecture:
|
|
1814
1831
|
label:
|
|
1815
|
-
unknown:
|
|
1816
|
-
mixed:
|
|
1832
|
+
unknown: unknown
|
|
1833
|
+
mixed: mixed
|
|
1817
1834
|
|
|
1818
1835
|
availabilityWarnings:
|
|
1819
1836
|
node: Node {name} is inactive
|
|
@@ -1945,7 +1962,7 @@ cluster:
|
|
|
1945
1962
|
pinganyunecs: Pinganyun ECS
|
|
1946
1963
|
pnap: phoenixNAP
|
|
1947
1964
|
rackspace: RackSpace
|
|
1948
|
-
rancherkubernetesengine:
|
|
1965
|
+
rancherkubernetesengine: RKE1
|
|
1949
1966
|
rke2: RKE2
|
|
1950
1967
|
rke: RKE1
|
|
1951
1968
|
rkeWindows: Windows (RKE1 only)
|
|
@@ -5624,7 +5641,6 @@ tableHeaders:
|
|
|
5624
5641
|
createdAt: Created At
|
|
5625
5642
|
customVerbs: Custom Verbs
|
|
5626
5643
|
description: Description
|
|
5627
|
-
expires: Expires
|
|
5628
5644
|
cpu: CPU
|
|
5629
5645
|
currentReplicas: Current Replicas
|
|
5630
5646
|
date: Date
|
|
@@ -5641,6 +5657,7 @@ tableHeaders:
|
|
|
5641
5657
|
distinguisherMethod: Distinguisher Method
|
|
5642
5658
|
effect: Effect
|
|
5643
5659
|
endpoints: Endpoints
|
|
5660
|
+
expires: Expires
|
|
5644
5661
|
firstSeen: First Seen
|
|
5645
5662
|
fleetBundleType: Type
|
|
5646
5663
|
flow: Flow
|
|
@@ -7719,6 +7736,11 @@ volumeClaimTemplate:
|
|
|
7719
7736
|
manager:
|
|
7720
7737
|
cloudCredentials:
|
|
7721
7738
|
label: Cloud Credentials
|
|
7739
|
+
renew: Renew
|
|
7740
|
+
expired: Expired
|
|
7741
|
+
banners:
|
|
7742
|
+
expiring: "{count} Cloud {count, plural, =1 { Credential expires soon} other { Credentials expire soon}}, please Renew"
|
|
7743
|
+
expired: "{count} Cloud {count, plural, =1 { Credential has expired} other { Credentials have expired}}, please Renew"
|
|
7722
7744
|
drivers:
|
|
7723
7745
|
label: Drivers
|
|
7724
7746
|
rkeTemplates:
|
|
@@ -105,8 +105,8 @@ export default {
|
|
|
105
105
|
return null;
|
|
106
106
|
}
|
|
107
107
|
|
|
108
|
-
if (this.toRemove[0].
|
|
109
|
-
return this.toRemove[0].
|
|
108
|
+
if (this.toRemove[0].doneOverride) {
|
|
109
|
+
return this.toRemove[0].doneOverride;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
const currentRoute = this.toRemove[0].currentRoute();
|
|
@@ -300,7 +300,12 @@ export default {
|
|
|
300
300
|
},
|
|
301
301
|
done() {
|
|
302
302
|
if ( this.cachedDoneLocation && !isEmpty(this.cachedDoneLocation) ) {
|
|
303
|
-
|
|
303
|
+
// Only push if the route will change otherwise we'll get a `NavigationDuplicated` exception
|
|
304
|
+
const resolvedRoute = this.currentRouter.resolve(this.cachedDoneLocation);
|
|
305
|
+
|
|
306
|
+
if (resolvedRoute.resolved.fullPath !== this.$route.fullPath) {
|
|
307
|
+
this.currentRouter.push(this.cachedDoneLocation);
|
|
308
|
+
}
|
|
304
309
|
}
|
|
305
310
|
this.close();
|
|
306
311
|
},
|
package/components/SideNav.vue
CHANGED
|
@@ -480,7 +480,7 @@ export default {
|
|
|
480
480
|
<template v-else>
|
|
481
481
|
<span
|
|
482
482
|
v-if="isVirtualCluster && isExplorer"
|
|
483
|
-
v-tooltip="{content: harvesterVersion, placement: 'top'}"
|
|
483
|
+
v-clean-tooltip="{content: harvesterVersion, placement: 'top'}"
|
|
484
484
|
class="clip text-muted ml-5"
|
|
485
485
|
>
|
|
486
486
|
(Harvester-{{ harvesterVersion }})
|
|
@@ -42,7 +42,6 @@ export default {
|
|
|
42
42
|
value: 'status.display.readyBundles',
|
|
43
43
|
sort: 'status.summary.ready',
|
|
44
44
|
search: false,
|
|
45
|
-
align: 'center',
|
|
46
45
|
},
|
|
47
46
|
{
|
|
48
47
|
name: 'reposReady',
|
|
@@ -50,7 +49,6 @@ export default {
|
|
|
50
49
|
value: 'status.readyGitRepos',
|
|
51
50
|
sort: 'status.summary.ready',
|
|
52
51
|
search: false,
|
|
53
|
-
align: 'center',
|
|
54
52
|
},
|
|
55
53
|
FLEET_SUMMARY,
|
|
56
54
|
{
|
|
@@ -62,7 +60,6 @@ export default {
|
|
|
62
60
|
formatter: 'LiveDate',
|
|
63
61
|
formatterOpts: { addSuffix: true },
|
|
64
62
|
width: 120,
|
|
65
|
-
align: 'right'
|
|
66
63
|
},
|
|
67
64
|
AGE,
|
|
68
65
|
];
|
|
@@ -16,7 +16,6 @@ import {
|
|
|
16
16
|
FLEET_REPO_PER_CLUSTER_STATE
|
|
17
17
|
|
|
18
18
|
} from '@shell/config/table-headers';
|
|
19
|
-
import { FLEET } from '@shell/config/labels-annotations';
|
|
20
19
|
import { STATES_ENUM } from '@shell/plugins/dashboard-store/resource-class';
|
|
21
20
|
|
|
22
21
|
// i18n-ignore repoDisplay
|
|
@@ -118,12 +117,6 @@ export default {
|
|
|
118
117
|
parseTargetMode(row) {
|
|
119
118
|
return row.targetInfo?.mode === 'clusterGroup' ? this.t('fleet.gitRepo.warningTooltip.clusterGroup') : this.t('fleet.gitRepo.warningTooltip.cluster');
|
|
120
119
|
},
|
|
121
|
-
|
|
122
|
-
clusterViewResourceStatus(row) {
|
|
123
|
-
return row.clusterResourceStatus.find((c) => {
|
|
124
|
-
return c.metadata?.labels[FLEET.CLUSTER_NAME] === this.clusterId;
|
|
125
|
-
});
|
|
126
|
-
}
|
|
127
120
|
},
|
|
128
121
|
};
|
|
129
122
|
</script>
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
|
|
3
|
+
export default {
|
|
4
|
+
props: {
|
|
5
|
+
value: {
|
|
6
|
+
type: [Number, String],
|
|
7
|
+
required: true
|
|
8
|
+
},
|
|
9
|
+
|
|
10
|
+
row: {
|
|
11
|
+
type: Object,
|
|
12
|
+
default: () => {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
|
|
17
|
+
verbose: {
|
|
18
|
+
type: Boolean,
|
|
19
|
+
default: false,
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
},
|
|
23
|
+
|
|
24
|
+
computed: {
|
|
25
|
+
outputString() {
|
|
26
|
+
return this.verbose ? this.verboseOutputString : this.row.expiresString;
|
|
27
|
+
},
|
|
28
|
+
|
|
29
|
+
verboseOutputString() {
|
|
30
|
+
const expireData = this.row?.expireData;
|
|
31
|
+
|
|
32
|
+
if (expireData?.expired) {
|
|
33
|
+
return this.t('cluster.cloudCredentials.expired');
|
|
34
|
+
} else if (expireData?.expiring) {
|
|
35
|
+
return this.t('cluster.cloudCredentials.expiring', { expires: this.row.expiresString });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
</script>
|
|
43
|
+
|
|
44
|
+
<template>
|
|
45
|
+
<div
|
|
46
|
+
v-if="outputString"
|
|
47
|
+
class="cloud-cred-expired"
|
|
48
|
+
:class="{ 'text-error': row.expireData.expired, 'text-warning': row.expireData.expiring}"
|
|
49
|
+
>
|
|
50
|
+
<div class="token-icon mr-5">
|
|
51
|
+
<i
|
|
52
|
+
class="icon"
|
|
53
|
+
:class="{'icon-error': row.expireData.expired, 'icon-warning': row.expireData.expiring}"
|
|
54
|
+
/>
|
|
55
|
+
</div>
|
|
56
|
+
{{ outputString }}
|
|
57
|
+
</div>
|
|
58
|
+
</template>
|
|
59
|
+
|
|
60
|
+
<style lang="scss" scoped>
|
|
61
|
+
.cloud-cred-expired {
|
|
62
|
+
display: flex;
|
|
63
|
+
align-items: center;
|
|
64
|
+
.token-icon {
|
|
65
|
+
display: flex;
|
|
66
|
+
align-items: center;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
</style>
|
|
@@ -25,12 +25,12 @@ export default {
|
|
|
25
25
|
{{ row.machineProviderDisplay }}
|
|
26
26
|
</span>
|
|
27
27
|
</template>
|
|
28
|
-
<template v-else-if="row.isCustom">
|
|
29
|
-
{{ t('cluster.provider.custom') }}
|
|
30
|
-
</template>
|
|
31
28
|
<template v-else-if="row.isImported">
|
|
32
29
|
{{ t('cluster.provider.imported') }}
|
|
33
30
|
</template>
|
|
31
|
+
<template v-else-if="row.isCustom">
|
|
32
|
+
{{ t('cluster.provider.custom') }}
|
|
33
|
+
</template>
|
|
34
34
|
<div class="text-muted">
|
|
35
35
|
{{ row.provisionerDisplay }}
|
|
36
36
|
</div>
|
|
@@ -188,12 +188,16 @@ export default {
|
|
|
188
188
|
}
|
|
189
189
|
},
|
|
190
190
|
// since the Header is a "persistent component" we need to update it at every route change...
|
|
191
|
-
$route
|
|
192
|
-
|
|
193
|
-
|
|
191
|
+
$route: {
|
|
192
|
+
handler(nue) {
|
|
193
|
+
if (nue) {
|
|
194
|
+
this.extensionHeaderActions = getApplicableExtensionEnhancements(this, ExtensionPoint.ACTION, ActionLocation.HEADER, nue);
|
|
194
195
|
|
|
195
|
-
|
|
196
|
-
|
|
196
|
+
this.navHeaderRight = this.$plugin?.getDynamic('component', 'NavHeaderRight');
|
|
197
|
+
}
|
|
198
|
+
},
|
|
199
|
+
immediate: true,
|
|
200
|
+
deep: true,
|
|
197
201
|
}
|
|
198
202
|
},
|
|
199
203
|
|