@rancher/shell 3.0.0-rc.9 → 3.0.1-rc.1
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/harvester/favicon.png +0 -0
- package/assets/brand/harvester/metadata.json +3 -0
- package/assets/images/pl/harvester.svg +1 -0
- package/assets/translations/en-us.yaml +37 -15
- package/assets/translations/zh-hans.yaml +2 -5
- package/components/BrandImage.vue +5 -1
- package/components/CopyToClipboardText.vue +2 -0
- package/components/CruResourceFooter.vue +1 -0
- package/components/DetailTop.vue +1 -1
- package/components/EmberPage.vue +0 -8
- package/components/ExplorerMembers.vue +5 -1
- package/components/ExplorerProjectsNamespaces.vue +39 -15
- package/components/HardwareResourceGauge.vue +12 -2
- package/components/InputOrDisplay.vue +6 -2
- package/components/LandingPagePreference.vue +2 -2
- package/components/MessageLink.vue +1 -1
- package/components/ResourceDetail/Masthead.vue +22 -1
- package/components/ResourceDetail/index.vue +2 -8
- package/components/ResourceTable.vue +40 -7
- package/components/ResourceYaml.vue +1 -1
- package/components/SideNav.vue +1 -1
- package/components/SortableTable/actions.js +1 -1
- package/components/SortableTable/index.vue +17 -1
- package/components/SortableTable/selection.js +1 -1
- package/components/SortableTable/sorting.js +11 -3
- package/components/TableDataUserIcon.vue +1 -1
- package/components/fleet/FleetClusters.vue +0 -3
- package/components/fleet/FleetRepos.vue +0 -7
- package/components/form/ArrayList.vue +5 -1
- package/components/form/ArrayListSelect.vue +5 -1
- package/components/form/HookOption.vue +31 -29
- package/components/form/KeyValue.vue +1 -1
- package/components/form/LabeledSelect.vue +26 -7
- package/components/form/LifecycleHooks.vue +2 -2
- package/components/form/Password.vue +7 -1
- package/components/form/UnitInput.vue +10 -1
- package/components/form/__tests__/UnitInput.test.ts +1 -0
- package/components/formatter/ClusterProvider.vue +3 -3
- package/components/formatter/ImagePercentageBar.vue +1 -1
- package/components/formatter/SecretData.vue +1 -1
- package/components/formatter/Si.vue +5 -1
- package/components/formatter/Translate.vue +1 -1
- package/components/nav/Header.vue +38 -17
- package/components/nav/NamespaceFilter.vue +5 -8
- package/components/nav/TopLevelMenu.vue +11 -51
- package/components/nav/WorkspaceSwitcher.vue +0 -1
- package/config/labels-annotations.js +2 -0
- package/config/private-label.js +2 -1
- package/config/router/routes.js +2 -26
- package/config/settings.ts +5 -0
- package/config/table-headers.js +15 -0
- package/config/types.js +3 -0
- package/config/version.js +2 -0
- 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/directives/clean-tooltip.js +4 -4
- package/edit/cis.cattle.io.clusterscan.vue +4 -3
- package/edit/fleet.cattle.io.gitrepo.vue +11 -8
- package/edit/logging-flow/Match.vue +75 -42
- package/edit/logging-flow/index.vue +89 -10
- package/edit/logging.banzaicloud.io.output/index.vue +2 -2
- package/edit/management.cattle.io.project.vue +4 -3
- package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +5 -5
- package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -1
- package/edit/namespace.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +26 -0
- package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +63 -149
- package/edit/provisioning.cattle.io.cluster/index.vue +2 -1
- package/edit/provisioning.cattle.io.cluster/rke2.vue +4 -4
- package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +7 -2
- package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +108 -35
- package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +1 -1
- package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryMirrors.vue +1 -1
- package/edit/workload/mixins/workload.js +1 -1
- package/list/harvesterhci.io.management.cluster.vue +244 -0
- package/list/namespace.vue +16 -4
- package/mixins/browser-tab-visibility.js +1 -1
- package/mixins/chart.js +6 -2
- package/mixins/metric-poller.js +1 -1
- package/mixins/resource-fetch.js +1 -1
- package/models/__tests__/management.cattle.io.cluster.test.ts +45 -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 +4 -4
- package/models/fleet.cattle.io.bundle.js +3 -1
- package/models/fleet.cattle.io.gitrepo.js +51 -63
- package/models/k8s.cni.cncf.io.networkattachmentdefinition.js +88 -0
- package/models/management.cattle.io.cluster.js +39 -7
- package/models/management.cattle.io.project.js +4 -0
- package/models/management.cattle.io.setting.js +25 -0
- package/models/provisioning.cattle.io.cluster.js +6 -16
- package/models/storage.k8s.io.storageclass.js +15 -4
- package/models/workload.js +1 -1
- package/package.json +5 -5
- package/pages/auth/login.vue +3 -2
- package/pages/auth/logout.vue +7 -9
- package/pages/auth/setup.vue +4 -1
- package/pages/c/_cluster/apps/charts/install.vue +11 -3
- 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 +13 -9
- package/pages/c/_cluster/settings/brand.vue +4 -1
- package/pages/c/_cluster/uiplugins/index.vue +4 -2
- package/pages/diagnostic.vue +1 -0
- package/pages/prefs.vue +22 -10
- package/plugins/dashboard-store/resource-class.js +11 -3
- package/plugins/steve/mutations.js +4 -1
- package/plugins/steve/steve-pagination-utils.ts +1 -1
- package/plugins/steve/subscribe.js +3 -4
- package/rancher-components/Form/LabeledInput/LabeledInput.vue +7 -2
- package/store/features.js +1 -0
- package/store/i18n.js +5 -1
- package/store/prefs.js +8 -0
- package/types/resources/fleet.d.ts +40 -0
- package/types/shell/index.d.ts +442 -396
- package/utils/__tests__/object.test.ts +152 -1
- package/utils/auth.js +1 -1
- package/utils/create-yaml.js +1 -1
- package/utils/favicon.js +2 -0
- package/utils/fleet.ts +159 -0
- package/utils/gc/gc.ts +1 -1
- package/utils/object.js +37 -0
- package/utils/string.js +9 -0
- package/utils/v-sphere.ts +31 -0
- package/utils/validators/cron-schedule.js +1 -1
- package/utils/validators/formRules/index.ts +2 -2
- package/config/product/multi-cluster-apps.js +0 -61
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 194.25619 159.08912"><defs><style>.cls-1{fill:#00a383;}.cls-2{fill:#fff;}</style></defs><rect class="cls-1" width="194.25619" height="159.08912" rx="20.56068"/><path class="cls-2" d="M180.4487,81.46673a4.97417,4.97417,0,0,0,.25287-.81463c.01635-.07209.0296-.14435.04284-.21759a4.98972,4.98972,0,0,0,0-1.78c-.01324-.07324-.02649-.14551-.04284-.21759a4.97458,4.97458,0,0,0-.25287-.81464c-.01587-.03815-.03748-.07269-.05432-.11035a4.9932,4.9932,0,0,0-.23017-.46741l-19.7666-34.2373a4.96949,4.96949,0,0,0-.28741-.42926c-.02527-.03491-.04535-.07251-.07154-.10681a4.97881,4.97881,0,0,0-.57611-.62305c-.05584-.05176-.11346-.10089-.17206-.15033a5.00763,5.00763,0,0,0-.71991-.51843l-.00305-.0022-.00274-.00122a5.00234,5.00234,0,0,0-.80945-.36469c-.07269-.02624-.14459-.05175-.2179-.0744a4.97937,4.97937,0,0,0-.82483-.18683c-.04693-.0061-.0935-.00457-.14044-.00927a4.98006,4.98006,0,0,0-.50464-.03351H116.53335a4.96842,4.96842,0,0,0-.504.03345c-.0476.00482-.09478.00329-.14233.00946a4.97566,4.97566,0,0,0-.82226.18627c-.07447.023-.14753.049-.22138.07563a5.00058,5.00058,0,0,0-.80719.36383l-.00281.00128-.00305.0022a5.00874,5.00874,0,0,0-.71991.51843c-.05859.04944-.11615.09845-.172.15027a4.97536,4.97536,0,0,0-.57635.62335c-.026.034-.04584.07123-.07086.10584a4.98409,4.98409,0,0,0-.2879.43L93.88046,74.54449H79.278l13.99317-24.2373h6.4956a5,5,0,0,0,0-10H90.38443a5.0003,5.0003,0,0,0-4.33008,2.5L67.73111,74.54449h-14.602l13.99316-24.2373h6.49561a5,5,0,0,0,0-10H64.2355a5.00031,5.00031,0,0,0-4.33008,2.5L41.58218,74.54449H26.9797l13.99359-24.2373H47.4689a5,5,0,0,0,0-10H38.08658a5.00029,5.00029,0,0,0-4.33008,2.5L13.98941,77.04449a4.98206,4.98206,0,0,0-.22925.46594c-.01715.0384-.03912.07349-.05536.11243a4.974,4.974,0,0,0-.25183.81128c-.01691.07422-.03058.1485-.04413.22388a4.99817,4.99817,0,0,0-.089.88305l-.00036.00342.00036.00342a4.99828,4.99828,0,0,0,.089.88306c.01355.07538.02722.14966.04413.22387a4.97371,4.97371,0,0,0,.25183.81128c.01624.03894.03821.074.05536.11243a4.98084,4.98084,0,0,0,.22925.46594L33.7565,116.28131a5.00031,5.00031,0,0,0,4.33008,2.5H47.4689a5,5,0,1,0,0-10H40.97329L26.97976,84.54449H41.58218l18.32324,31.73682a5.00033,5.00033,0,0,0,4.33008,2.5h9.38233a5,5,0,0,0,0-10H67.12222L53.12912,84.54449h14.602l18.32324,31.73682a5.00032,5.00032,0,0,0,4.33008,2.5h9.38232a5,5,0,0,0,0-10h-6.4956L79.278,84.54449H93.88052l18.32276,31.73682a4.97193,4.97193,0,0,0,.28759.42944c.02521.03479.04517.07233.07135.10657a4.98039,4.98039,0,0,0,.57605.62311c.05591.05188.11371.10095.17237.15051a5.00138,5.00138,0,0,0,.71966.51825l.00305.0022c.02063.0119.04254.01953.0633.03112a4.99593,4.99593,0,0,0,.52386.25788c.15222.06329.30756.11084.46283.15808.051.0155.09961.037.15119.0509a4.96725,4.96725,0,0,0,1.29394.17292l.01508-.001h39.51379l.01508.001a4.96725,4.96725,0,0,0,1.29394-.17292c.05158-.01391.10016-.0354.15119-.0509.15527-.04724.3106-.09479.46282-.15808a4.99511,4.99511,0,0,0,.52387-.25788c.02075-.01159.04266-.01922.06329-.03112l.00312-.0022a5.00713,5.00713,0,0,0,.71856-.51733c.05939-.05011.11774-.09986.17432-.15229a4.97862,4.97862,0,0,0,.57458-.6214c.027-.03546.04773-.07415.0738-.11023a4.98327,4.98327,0,0,0,.2857-.42663l19.7666-34.23682a4.99182,4.99182,0,0,0,.23017-.4674C180.41122,81.53943,180.43283,81.50488,180.4487,81.46673Zm-24.38111,22.31452L150.2941,93.78094l5.33294-9.23645h11.54688ZM105.42776,84.54449h11.54706l5.33289,9.23633-5.77417,10.00061ZM116.5336,55.307l5.77411,10.00031-5.33295,9.23718H105.4277Zm14.43432,33.47382-5.333-9.23633,5.333-9.2373h10.666l5.333,9.2373-5.333,9.23633Zm10.666-28.47363H130.9678l-5.77392-10h22.2135ZM130.96786,98.78082h10.666l5.77362,10.00049H125.19375ZM155.6271,74.54449l-5.333-9.2373,5.77343-10L167.174,74.54449Z"/></svg>
|
|
@@ -26,6 +26,7 @@ generic:
|
|
|
26
26
|
id: ID
|
|
27
27
|
ignored: Ignored
|
|
28
28
|
invalidCron: Invalid cron schedule
|
|
29
|
+
inProgress: In Progress
|
|
29
30
|
imagePullPolicy:
|
|
30
31
|
always: Always
|
|
31
32
|
ifNotPresent: IfNotPresent
|
|
@@ -111,6 +112,7 @@ generic:
|
|
|
111
112
|
=1 {Matches 1 of {total, number}: "{sample}"}
|
|
112
113
|
other {Matches {matched, number} of {total, number}, including "{sample}"}
|
|
113
114
|
}
|
|
115
|
+
basic: Basic
|
|
114
116
|
|
|
115
117
|
locale:
|
|
116
118
|
en-us: English
|
|
@@ -230,7 +232,6 @@ product:
|
|
|
230
232
|
settings: Global Settings
|
|
231
233
|
clusterManagement: Cluster Management
|
|
232
234
|
monitoring: Monitoring
|
|
233
|
-
mcapps: Global Configuration
|
|
234
235
|
neuvector: NeuVector
|
|
235
236
|
harvesterManager: Virtualization Management
|
|
236
237
|
rancher: Rancher
|
|
@@ -817,7 +818,7 @@ backupRestoreOperator:
|
|
|
817
818
|
encryption: Encryption
|
|
818
819
|
encryptionConfigName:
|
|
819
820
|
backuptip: 'Any secret in the <code>{ns}</code> namespace that has an <code>encryption-provider-config.yaml</code> key. <br/>The contents of this file are necessary to perform a restore from this backup, and are not stored by Rancher Backup.'
|
|
820
|
-
label: Encryption
|
|
821
|
+
label: Encryption Configuration Secret
|
|
821
822
|
options:
|
|
822
823
|
none: Store the contents of the backup unencrypted
|
|
823
824
|
secret: 'Encrypt backups using an <a target="_blank" rel="noopener noreferrer nofollow" href="https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/#understanding-the-encryption-at-rest-configuration">Encryption Config Secret</a> (Recommended)'
|
|
@@ -1241,7 +1242,7 @@ cluster:
|
|
|
1241
1242
|
label: Google
|
|
1242
1243
|
rancher-vsphere:
|
|
1243
1244
|
label: vSphere
|
|
1244
|
-
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-on
|
|
1245
|
+
note: '<b>Important:</b> Configure the vSphere Cloud Provider and Storage Provider options in the Add-on Configuration tab.'
|
|
1245
1246
|
harvester:
|
|
1246
1247
|
label: Harvester
|
|
1247
1248
|
copyConfig: Copy KubeConfig to Clipboard
|
|
@@ -1474,10 +1475,13 @@ cluster:
|
|
|
1474
1475
|
placeholder: A unique name for the cluster
|
|
1475
1476
|
directoryConfig:
|
|
1476
1477
|
title: Data directory configuration
|
|
1477
|
-
|
|
1478
|
+
radioInput:
|
|
1479
|
+
defaultLabel: Use default data directory configuration
|
|
1480
|
+
commonLabel: Use a common base directory for data directory configuration (sub-directories will be used for the system-agent, provisioning and distro paths)
|
|
1481
|
+
customLabel: Use custom data directories
|
|
1478
1482
|
common:
|
|
1479
|
-
label: Data directory
|
|
1480
|
-
tooltip: Data directory
|
|
1483
|
+
label: Data directory base path
|
|
1484
|
+
tooltip: Data directory base path. We will append the sub-directories appropriate for each directory (/agent, /provisioning and either /rke2 or /k3s)
|
|
1481
1485
|
systemAgent:
|
|
1482
1486
|
label: System-agent directory path
|
|
1483
1487
|
tooltip: Data directory for the system-agent connection info and plans
|
|
@@ -1832,8 +1836,8 @@ cluster:
|
|
|
1832
1836
|
|
|
1833
1837
|
architecture:
|
|
1834
1838
|
label:
|
|
1835
|
-
unknown:
|
|
1836
|
-
mixed:
|
|
1839
|
+
unknown: unknown
|
|
1840
|
+
mixed: mixed
|
|
1837
1841
|
|
|
1838
1842
|
availabilityWarnings:
|
|
1839
1843
|
node: Node {name} is inactive
|
|
@@ -1965,7 +1969,7 @@ cluster:
|
|
|
1965
1969
|
pinganyunecs: Pinganyun ECS
|
|
1966
1970
|
pnap: phoenixNAP
|
|
1967
1971
|
rackspace: RackSpace
|
|
1968
|
-
rancherkubernetesengine:
|
|
1972
|
+
rancherkubernetesengine: RKE1
|
|
1969
1973
|
rke2: RKE2
|
|
1970
1974
|
rke: RKE1
|
|
1971
1975
|
rkeWindows: Windows (RKE1 only)
|
|
@@ -2124,6 +2128,7 @@ cluster:
|
|
|
2124
2128
|
tabs:
|
|
2125
2129
|
ace: Authorized Endpoint
|
|
2126
2130
|
addOnAdditionalManifest: Additional Manifest
|
|
2131
|
+
addons: Add-on Configuration
|
|
2127
2132
|
advanced: Advanced
|
|
2128
2133
|
agentEnv: Agent Environment Vars
|
|
2129
2134
|
basic: Basics
|
|
@@ -2157,6 +2162,7 @@ clusterIndexPage:
|
|
|
2157
2162
|
ram: Memory
|
|
2158
2163
|
used: Used
|
|
2159
2164
|
reserved: Reserved
|
|
2165
|
+
allocated: Allocated
|
|
2160
2166
|
units:
|
|
2161
2167
|
cores: |-
|
|
2162
2168
|
{count, plural,
|
|
@@ -2980,6 +2986,10 @@ labelSelect:
|
|
|
2980
2986
|
pagination:
|
|
2981
2987
|
counts: '{count} / {totalCount} items'
|
|
2982
2988
|
more: Load More...
|
|
2989
|
+
labeledSelect:
|
|
2990
|
+
startTyping: Start typing to define an item
|
|
2991
|
+
pressEnter: Press enter to add "{input}"
|
|
2992
|
+
|
|
2983
2993
|
landing:
|
|
2984
2994
|
clusters:
|
|
2985
2995
|
title: Clusters
|
|
@@ -2995,8 +3005,8 @@ landing:
|
|
|
2995
3005
|
other {cores}}
|
|
2996
3006
|
cpuUsed: CPU Used
|
|
2997
3007
|
memoryUsed: Memory Used
|
|
2998
|
-
seeWhatsNew: Learn more about the improvements and new capabilities in this version.
|
|
2999
|
-
whatsNewLink: "What's new in 2.
|
|
3008
|
+
seeWhatsNew: Learn more about the improvements and new capabilities in this version and read about the UI framework migration in 2.10
|
|
3009
|
+
whatsNewLink: "What's new in 2.10"
|
|
3000
3010
|
learnMore: Learn More
|
|
3001
3011
|
support: Support
|
|
3002
3012
|
community:
|
|
@@ -3227,6 +3237,9 @@ logging:
|
|
|
3227
3237
|
certificate: Connection
|
|
3228
3238
|
labels: Labels
|
|
3229
3239
|
configuration: Configuration
|
|
3240
|
+
tips:
|
|
3241
|
+
singleProvider: This output is configured with multiple providers. We currently only support a single provider per output. You can view or edit the YAML.
|
|
3242
|
+
multipleProviders: This output is configured with providers we do not support yet. You can view or edit the YAML.
|
|
3230
3243
|
outputProviders:
|
|
3231
3244
|
elasticsearch: Elasticsearch
|
|
3232
3245
|
opensearch: OpenSearch
|
|
@@ -3712,6 +3725,9 @@ namespace:
|
|
|
3712
3725
|
selectNamespace: Select Namespace
|
|
3713
3726
|
createNamespace: Create a new Namespace
|
|
3714
3727
|
selectOrCreate: Select or Create a Namespace
|
|
3728
|
+
snapshots:
|
|
3729
|
+
label: Snapshots
|
|
3730
|
+
totalSnapshotSize: Total Snapshot Size
|
|
3715
3731
|
resourceStates:
|
|
3716
3732
|
success: 'Active'
|
|
3717
3733
|
info: 'Transitioning'
|
|
@@ -4014,6 +4030,7 @@ persistentVolume:
|
|
|
4014
4030
|
file-csi-azure-com: Azure File (CSI)
|
|
4015
4031
|
driver-longhorn-io: Longhorn (CSI)
|
|
4016
4032
|
driver-harvesterhci-io: Harvester (CSI)
|
|
4033
|
+
lvm-driver-harvesterhci-io: LVM
|
|
4017
4034
|
nfs-csi-k8s-io: NFS (CSI)
|
|
4018
4035
|
ebs-csi-aws-com: AWS Elastic Block Store (CSI)
|
|
4019
4036
|
rbd-csi-ceph-com: Ceph RBD (CSI)
|
|
@@ -4993,6 +5010,7 @@ resourceTable:
|
|
|
4993
5010
|
node: Group by Node
|
|
4994
5011
|
role: Group by Role
|
|
4995
5012
|
cluster: Group by Cluster
|
|
5013
|
+
device: Group by Device
|
|
4996
5014
|
groupLabel:
|
|
4997
5015
|
cluster: "<span>Cluster:</span> {name}"
|
|
4998
5016
|
notInACluster: Not in a Cluster
|
|
@@ -5277,7 +5295,7 @@ setup:
|
|
|
5277
5295
|
dockerSuffix: ""
|
|
5278
5296
|
helmPrefix: 'For a Helm installation, run:'
|
|
5279
5297
|
helmSuffix: ""
|
|
5280
|
-
eula: By checking the box, you accept the <a href="https://
|
|
5298
|
+
eula: By checking the box, you accept the <a href="https://www.suse.com/licensing/eula/download/suse_end_user_license_agreement_june_2024.pdf" target="_blank" rel="noopener noreferrer nofollow">End User License Agreement & Terms & Conditions</a>
|
|
5281
5299
|
newPassword: New Password
|
|
5282
5300
|
newUserSetPassword: The first order of business is to set a strong password. We suggest using this random one generated just for you, but enter your own if you like.
|
|
5283
5301
|
serverUrl:
|
|
@@ -5788,6 +5806,7 @@ tableHeaders:
|
|
|
5788
5806
|
resourcesReady: Resources Ready
|
|
5789
5807
|
restarts: Restarts
|
|
5790
5808
|
restart: Restart Required
|
|
5809
|
+
restore: Restore
|
|
5791
5810
|
role: Role
|
|
5792
5811
|
roles: Roles
|
|
5793
5812
|
routes: Routes
|
|
@@ -5823,6 +5842,7 @@ tableHeaders:
|
|
|
5823
5842
|
targetKind: Target Type
|
|
5824
5843
|
targetPort: Target
|
|
5825
5844
|
template: Template
|
|
5845
|
+
totalSnapshotQuota: Total Snapshot Quota
|
|
5826
5846
|
type: Type
|
|
5827
5847
|
updated: Updated
|
|
5828
5848
|
up-to-date: Up To Date
|
|
@@ -7299,6 +7319,7 @@ action:
|
|
|
7299
7319
|
viewYaml: View YAML
|
|
7300
7320
|
activate: Activate
|
|
7301
7321
|
deactivate: Deactivate
|
|
7322
|
+
editQuota: Edit Quota
|
|
7302
7323
|
show: Show
|
|
7303
7324
|
hide: Hide
|
|
7304
7325
|
copy: Copy
|
|
@@ -7413,6 +7434,7 @@ advancedSettings:
|
|
|
7413
7434
|
'brand': Folder name for an alternative theme defined in '/assets/brand'
|
|
7414
7435
|
'hide-local-cluster': Hide the local cluster
|
|
7415
7436
|
'agent-tls-mode': "Rancher Certificate Verification. In `strict` mode the agents (system, cluster, fleet, etc) will only trust Rancher installations which are using a certificate signed by the CABundle in the `cacerts` setting. When the mode is system-store, the agents will trust any certificate signed by a CABundle in the operating system’s trust store."
|
|
7437
|
+
'k3s-based-upgrader-uninstall-concurrency': Defines the maximum number of clusters in which Rancher can concurrently uninstall the legacy `rancher-k3s-upgrader` or `rancher-rke2-upgrader` app from imported K3s or RKE2 clusters.
|
|
7416
7438
|
warnings:
|
|
7417
7439
|
'agent-tls-mode': 'Changing this setting will cause all agents to be redeployed.'
|
|
7418
7440
|
editHelp:
|
|
@@ -7737,8 +7759,6 @@ legacy:
|
|
|
7737
7759
|
catalogs: Catalogs
|
|
7738
7760
|
configMaps: Config Maps
|
|
7739
7761
|
configuration: Configuration
|
|
7740
|
-
globalDnsEntries: Global DNS Entries
|
|
7741
|
-
globalDnsProviders: Global DNS Providers
|
|
7742
7762
|
notifiers: Notifiers
|
|
7743
7763
|
monitoring: Monitoring
|
|
7744
7764
|
secrets: Secrets
|
|
@@ -7778,7 +7798,9 @@ auth:
|
|
|
7778
7798
|
label: Auth Provider
|
|
7779
7799
|
vncConsole:
|
|
7780
7800
|
error:
|
|
7781
|
-
message: Web VNC console
|
|
7801
|
+
message: Web VNC console is disconnected
|
|
7802
|
+
reconnecting:
|
|
7803
|
+
message: Web VNC console reconnection attempt
|
|
7782
7804
|
|
|
7783
7805
|
gitPicker:
|
|
7784
7806
|
github:
|
|
@@ -48,7 +48,7 @@ generic:
|
|
|
48
48
|
info: 信息
|
|
49
49
|
warning: 警告
|
|
50
50
|
error: 错误
|
|
51
|
-
ok:
|
|
51
|
+
ok: 确定
|
|
52
52
|
overview: 概述
|
|
53
53
|
plusMore: "+ {n} 更多"
|
|
54
54
|
readFromFile: 从文件读取
|
|
@@ -222,7 +222,6 @@ product:
|
|
|
222
222
|
settings: 全局设置
|
|
223
223
|
clusterManagement: 集群管理
|
|
224
224
|
monitoring: 监控
|
|
225
|
-
mcapps: 全局配置
|
|
226
225
|
neuvector: NeuVector
|
|
227
226
|
harvesterManager: 虚拟化管理
|
|
228
227
|
rancher: Rancher
|
|
@@ -4960,7 +4959,7 @@ setup:
|
|
|
4960
4959
|
dockerSuffix: ""
|
|
4961
4960
|
helmPrefix: 'Helm 安装,运行:'
|
|
4962
4961
|
helmSuffix: ""
|
|
4963
|
-
eula: 选中此框,即表示你接受<a href="https://
|
|
4962
|
+
eula: 选中此框,即表示你接受<a href="https://www.suse.com/licensing/eula/download/suse_end_user_license_agreement_june_2024.pdf" target="_blank" rel="noopener noreferrer nofollow">最终用户许可协议及条款和条件</a>
|
|
4964
4963
|
newPassword: 新密码
|
|
4965
4964
|
newUserSetPassword: 请设置强密码。建议使用生成的随机密码。你也可以自行设置。
|
|
4966
4965
|
serverUrl:
|
|
@@ -7335,8 +7334,6 @@ legacy:
|
|
|
7335
7334
|
catalogs: 应用商店
|
|
7336
7335
|
configMaps: ConfigMaps
|
|
7337
7336
|
configuration: 配置
|
|
7338
|
-
globalDnsEntries: 全局 DNS 条目
|
|
7339
|
-
globalDnsProviders: 全局 DNS 提供商
|
|
7340
7337
|
notifiers: Notifiers
|
|
7341
7338
|
monitoring: 监控
|
|
7342
7339
|
secrets: 密文
|
|
@@ -12,6 +12,10 @@ export default {
|
|
|
12
12
|
dark: {
|
|
13
13
|
type: Boolean,
|
|
14
14
|
default: false
|
|
15
|
+
},
|
|
16
|
+
supportCustomLogo: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
default: false
|
|
15
19
|
}
|
|
16
20
|
},
|
|
17
21
|
data() {
|
|
@@ -75,7 +79,7 @@ export default {
|
|
|
75
79
|
},
|
|
76
80
|
|
|
77
81
|
pathToBrandedImage() {
|
|
78
|
-
if (this.fileName === 'rancher-logo.svg') {
|
|
82
|
+
if (this.fileName === 'rancher-logo.svg' || this.supportCustomLogo) {
|
|
79
83
|
if (this.theme === 'dark' && this.uiLogoDark) {
|
|
80
84
|
return this.uiLogoDark;
|
|
81
85
|
}
|
|
@@ -46,6 +46,7 @@ export default {
|
|
|
46
46
|
|
|
47
47
|
<template>
|
|
48
48
|
<a
|
|
49
|
+
v-if="text"
|
|
49
50
|
class="copy-to-clipboard-text"
|
|
50
51
|
:class="{ 'copied': copied, 'plain': plain}"
|
|
51
52
|
href="#"
|
|
@@ -59,6 +60,7 @@ export default {
|
|
|
59
60
|
</template>
|
|
60
61
|
<style lang="scss" scoped>
|
|
61
62
|
.copy-to-clipboard-text {
|
|
63
|
+
white-space: nowrap;
|
|
62
64
|
&.plain {
|
|
63
65
|
color: var(--body-text);
|
|
64
66
|
|
package/components/DetailTop.vue
CHANGED
package/components/EmberPage.vue
CHANGED
|
@@ -31,14 +31,6 @@ const INTERCEPTS = {
|
|
|
31
31
|
resource: CAPI.RANCHER_CLUSTER,
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
|
-
'global-admin.catalog': {
|
|
35
|
-
name: 'c-cluster-mcapps-pages-page',
|
|
36
|
-
params: {
|
|
37
|
-
cluster: 'local',
|
|
38
|
-
product: 'mcapps',
|
|
39
|
-
page: 'catalogs'
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
34
|
'authenticated.cluster.istio.cluster-setting': { name: 'c-cluster-explorer-tools' },
|
|
43
35
|
};
|
|
44
36
|
|
|
@@ -11,6 +11,7 @@ import SortableTable from '@shell/components/SortableTable';
|
|
|
11
11
|
import { mapGetters } from 'vuex';
|
|
12
12
|
import { canViewProjectMembershipEditor } from '@shell/components/form/Members/ProjectMembershipEditor.vue';
|
|
13
13
|
import { allHash } from '@shell/utils/promise';
|
|
14
|
+
import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* Explorer members page.
|
|
@@ -227,6 +228,9 @@ export default {
|
|
|
227
228
|
canEditClusterMembers() {
|
|
228
229
|
return this.normanClusterRTBSchema?.collectionMethods.find((x) => x.toLowerCase() === 'post');
|
|
229
230
|
},
|
|
231
|
+
isHarvester() {
|
|
232
|
+
return this.$store.getters['currentProduct'].inStore === HARVESTER;
|
|
233
|
+
},
|
|
230
234
|
},
|
|
231
235
|
methods: {
|
|
232
236
|
getMgmtProjectId(group) {
|
|
@@ -324,7 +328,7 @@ export default {
|
|
|
324
328
|
/>
|
|
325
329
|
</Tab>
|
|
326
330
|
<Tab
|
|
327
|
-
v-if="canManageProjectMembers"
|
|
331
|
+
v-if="canManageProjectMembers && !isHarvester"
|
|
328
332
|
name="project-membership"
|
|
329
333
|
:label="t('members.projectMembership')"
|
|
330
334
|
>
|
|
@@ -1,20 +1,21 @@
|
|
|
1
1
|
<script>
|
|
2
2
|
import { mapGetters } from 'vuex';
|
|
3
3
|
import ResourceTable, { defaultTableSortGenerationFn } from '@shell/components/ResourceTable';
|
|
4
|
-
import { STATE, AGE, NAME } from '@shell/config/table-headers';
|
|
4
|
+
import { STATE, AGE, NAME, NS_SNAPSHOT_QUOTA } from '@shell/config/table-headers';
|
|
5
5
|
import { uniq } from '@shell/utils/array';
|
|
6
|
-
import { MANAGEMENT, NAMESPACE, VIRTUAL_TYPES } from '@shell/config/types';
|
|
6
|
+
import { MANAGEMENT, NAMESPACE, VIRTUAL_TYPES, HCI } from '@shell/config/types';
|
|
7
7
|
import { PROJECT_ID, FLAT_VIEW } from '@shell/config/query-params';
|
|
8
8
|
import { PanelLocation, ExtensionPoint } from '@shell/core/types';
|
|
9
9
|
import ExtensionPanel from '@shell/components/ExtensionPanel';
|
|
10
10
|
import Masthead from '@shell/components/ResourceList/Masthead';
|
|
11
|
-
import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES } from '@shell/store/prefs';
|
|
11
|
+
import { mapPref, GROUP_RESOURCES, ALL_NAMESPACES, DEV } from '@shell/store/prefs';
|
|
12
12
|
import MoveModal from '@shell/components/MoveModal';
|
|
13
13
|
import ButtonMultiAction from '@shell/components/ButtonMultiAction.vue';
|
|
14
14
|
|
|
15
15
|
import { NAMESPACE_FILTER_ALL_ORPHANS } from '@shell/utils/namespace-filter';
|
|
16
16
|
import ResourceFetch from '@shell/mixins/resource-fetch';
|
|
17
17
|
import DOMPurify from 'dompurify';
|
|
18
|
+
import { HARVESTER_NAME as HARVESTER } from '@shell/config/features';
|
|
18
19
|
|
|
19
20
|
export default {
|
|
20
21
|
name: 'ListProjectNamespace',
|
|
@@ -42,6 +43,7 @@ export default {
|
|
|
42
43
|
async fetch() {
|
|
43
44
|
const inStore = this.$store.getters['currentStore'](NAMESPACE);
|
|
44
45
|
|
|
46
|
+
this.harvesterResourceQuotaSchema = this.$store.getters[`${ inStore }/schemaFor`](HCI.RESOURCE_QUOTA);
|
|
45
47
|
this.schema = this.$store.getters[`${ inStore }/schemaFor`](NAMESPACE);
|
|
46
48
|
this.projectSchema = this.$store.getters[`management/schemaFor`](MANAGEMENT.PROJECT);
|
|
47
49
|
|
|
@@ -60,6 +62,7 @@ export default {
|
|
|
60
62
|
return {
|
|
61
63
|
loadResources: [NAMESPACE],
|
|
62
64
|
loadIndeterminate: true,
|
|
65
|
+
harvesterResourceQuotaSchema: null,
|
|
63
66
|
schema: null,
|
|
64
67
|
projects: [],
|
|
65
68
|
projectSchema: null,
|
|
@@ -93,20 +96,33 @@ export default {
|
|
|
93
96
|
isNamespaceCreatable() {
|
|
94
97
|
return (this.schema?.collectionMethods || []).includes('POST');
|
|
95
98
|
},
|
|
99
|
+
isHarvester() {
|
|
100
|
+
return this.$store.getters['currentProduct'].inStore === HARVESTER;
|
|
101
|
+
},
|
|
96
102
|
headers() {
|
|
97
|
-
const
|
|
98
|
-
name: 'project',
|
|
99
|
-
label: this.t('tableHeaders.project'),
|
|
100
|
-
value: 'project.nameDisplay',
|
|
101
|
-
sort: ['projectNameSort', 'nameSort'],
|
|
102
|
-
};
|
|
103
|
-
|
|
104
|
-
return [
|
|
103
|
+
const headers = [
|
|
105
104
|
STATE,
|
|
106
105
|
NAME,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
if (this.groupPreference === 'none') {
|
|
109
|
+
const projectHeader = {
|
|
110
|
+
name: 'project',
|
|
111
|
+
label: this.t('tableHeaders.project'),
|
|
112
|
+
value: 'project.nameDisplay',
|
|
113
|
+
sort: ['projectNameSort', 'nameSort'],
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
headers.push(projectHeader);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
if (this.isHarvester && this.harvesterResourceQuotaSchema) {
|
|
120
|
+
headers.push(NS_SNAPSHOT_QUOTA);
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
headers.push(AGE);
|
|
124
|
+
|
|
125
|
+
return headers;
|
|
110
126
|
},
|
|
111
127
|
projectIdsWithNamespaces() {
|
|
112
128
|
const ids = this.rows
|
|
@@ -211,7 +227,15 @@ export default {
|
|
|
211
227
|
return this.groupPreference === 'none' ? this.rows : this.rowsWithFakeNamespaces;
|
|
212
228
|
},
|
|
213
229
|
rows() {
|
|
214
|
-
|
|
230
|
+
let isDev;
|
|
231
|
+
|
|
232
|
+
try {
|
|
233
|
+
isDev = this.$store.getters['prefs/get'](ALL_NAMESPACES);
|
|
234
|
+
} catch {
|
|
235
|
+
isDev = this.$store.getters['prefs/get'](DEV);
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
if (isDev) {
|
|
215
239
|
// If all namespaces options are turned on in the user preferences,
|
|
216
240
|
// return all namespaces including system namespaces and RBAC
|
|
217
241
|
// management namespaces.
|
|
@@ -20,9 +20,19 @@ export default {
|
|
|
20
20
|
default: null
|
|
21
21
|
},
|
|
22
22
|
|
|
23
|
+
usedTitle: {
|
|
24
|
+
type: String,
|
|
25
|
+
default: null
|
|
26
|
+
},
|
|
27
|
+
|
|
23
28
|
reserved: {
|
|
24
29
|
type: Object,
|
|
25
30
|
default: null
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
reservedTitle: {
|
|
34
|
+
type: String,
|
|
35
|
+
default: null
|
|
26
36
|
}
|
|
27
37
|
},
|
|
28
38
|
computed: {
|
|
@@ -78,7 +88,7 @@ export default {
|
|
|
78
88
|
>
|
|
79
89
|
<template #title>
|
|
80
90
|
<span>
|
|
81
|
-
{{ t('clusterIndexPage.hardwareResourceGauge.reserved') }}
|
|
91
|
+
{{ reservedTitle ?? t('clusterIndexPage.hardwareResourceGauge.reserved') }}
|
|
82
92
|
<span class="values text-muted">
|
|
83
93
|
<span v-if="reserved.formattedUseful">
|
|
84
94
|
{{ reserved.formattedUseful }}
|
|
@@ -112,7 +122,7 @@ export default {
|
|
|
112
122
|
>
|
|
113
123
|
<template #title>
|
|
114
124
|
<span>
|
|
115
|
-
{{ t('clusterIndexPage.hardwareResourceGauge.used') }}
|
|
125
|
+
{{ usedTitle ?? t('clusterIndexPage.hardwareResourceGauge.used') }}
|
|
116
126
|
<span class="values text-muted">
|
|
117
127
|
<span v-if="used.formattedUseful">
|
|
118
128
|
{{ used.formattedUseful }}
|
|
@@ -39,10 +39,14 @@ export default {
|
|
|
39
39
|
class="label"
|
|
40
40
|
>
|
|
41
41
|
<div class="text-label">
|
|
42
|
-
|
|
42
|
+
<slot name="name">
|
|
43
|
+
{{ name }}
|
|
44
|
+
</slot>
|
|
43
45
|
</div>
|
|
44
46
|
<div class="value">
|
|
45
|
-
|
|
47
|
+
<slot name="value">
|
|
48
|
+
{{ displayValue }}
|
|
49
|
+
</slot>
|
|
46
50
|
</div>
|
|
47
51
|
</div>
|
|
48
52
|
<slot v-else />
|
|
@@ -113,14 +113,14 @@ export default {
|
|
|
113
113
|
:options="routeRadioOptions"
|
|
114
114
|
@update:value="updateLoginRoute"
|
|
115
115
|
>
|
|
116
|
-
<template #2="{option
|
|
116
|
+
<template #2="{option}">
|
|
117
117
|
<div class="custom-page">
|
|
118
118
|
<RadioButton
|
|
119
119
|
:label="option.label"
|
|
120
120
|
:val="false"
|
|
121
121
|
:value="afterLoginRoute=== 'home' || afterLoginRoute === 'last-visited'"
|
|
122
|
+
:v-bind="$attrs"
|
|
122
123
|
@update:value="afterLoginRoute = false"
|
|
123
|
-
v-on="listeners"
|
|
124
124
|
/>
|
|
125
125
|
<Select
|
|
126
126
|
v-model:value="routeFromDropdown"
|
|
@@ -101,6 +101,10 @@ export default {
|
|
|
101
101
|
},
|
|
102
102
|
|
|
103
103
|
computed: {
|
|
104
|
+
dev() {
|
|
105
|
+
return this.$store.getters['prefs/dev'];
|
|
106
|
+
},
|
|
107
|
+
|
|
104
108
|
schema() {
|
|
105
109
|
const inStore = this.storeOverride || this.$store.getters['currentStore'](this.resource);
|
|
106
110
|
|
|
@@ -383,6 +387,10 @@ export default {
|
|
|
383
387
|
hideNamespaceLocation() {
|
|
384
388
|
return this.$store.getters['currentProduct'].hideNamespaceLocation || this.value.namespaceLocation === null;
|
|
385
389
|
},
|
|
390
|
+
|
|
391
|
+
resourceExternalLink() {
|
|
392
|
+
return this.value.resourceExternalLink;
|
|
393
|
+
},
|
|
386
394
|
},
|
|
387
395
|
|
|
388
396
|
methods: {
|
|
@@ -462,6 +470,16 @@ export default {
|
|
|
462
470
|
class="icon icon-sm icon-istio"
|
|
463
471
|
/>
|
|
464
472
|
</span>
|
|
473
|
+
<a
|
|
474
|
+
v-if="dev && !!resourceExternalLink"
|
|
475
|
+
v-clean-tooltip="t(resourceExternalLink.tipsKey || 'generic.resourceExternalLinkTips')"
|
|
476
|
+
class="resource-external"
|
|
477
|
+
rel="nofollow noopener noreferrer"
|
|
478
|
+
target="_blank"
|
|
479
|
+
:href="resourceExternalLink.url"
|
|
480
|
+
>
|
|
481
|
+
<i class="icon icon-external-link" />
|
|
482
|
+
</a>
|
|
465
483
|
</h1>
|
|
466
484
|
</div>
|
|
467
485
|
<div
|
|
@@ -521,7 +539,7 @@ export default {
|
|
|
521
539
|
<button
|
|
522
540
|
v-if="isView"
|
|
523
541
|
ref="actions"
|
|
524
|
-
data-testid="
|
|
542
|
+
data-testid="masthead-action-menu"
|
|
525
543
|
aria-haspopup="true"
|
|
526
544
|
type="button"
|
|
527
545
|
class="btn role-multi-action actions"
|
|
@@ -642,4 +660,7 @@ export default {
|
|
|
642
660
|
justify-content: flex-end;
|
|
643
661
|
}
|
|
644
662
|
|
|
663
|
+
.resource-external {
|
|
664
|
+
font-size: 18px;
|
|
665
|
+
}
|
|
645
666
|
</style>
|
|
@@ -68,11 +68,6 @@ export default {
|
|
|
68
68
|
default: null,
|
|
69
69
|
},
|
|
70
70
|
|
|
71
|
-
flexContent: {
|
|
72
|
-
type: Boolean,
|
|
73
|
-
default: false,
|
|
74
|
-
},
|
|
75
|
-
|
|
76
71
|
/**
|
|
77
72
|
* Inherited global identifier prefix for tests
|
|
78
73
|
* Define a term based on the parent component to avoid conflicts on multiple components
|
|
@@ -173,7 +168,8 @@ export default {
|
|
|
173
168
|
},
|
|
174
169
|
bundle: {
|
|
175
170
|
inStoreType: 'management',
|
|
176
|
-
type: FLEET.BUNDLE
|
|
171
|
+
type: FLEET.BUNDLE,
|
|
172
|
+
opt: { excludeFields: ['metadata.managedFields', 'spec.resources'] },
|
|
177
173
|
},
|
|
178
174
|
|
|
179
175
|
bundleDeployment: {
|
|
@@ -418,7 +414,6 @@ export default {
|
|
|
418
414
|
:offer-preview="offerPreview"
|
|
419
415
|
:done-route="doneRoute"
|
|
420
416
|
:done-override="value.doneOverride"
|
|
421
|
-
:class="{'flex-content': flexContent}"
|
|
422
417
|
@update:value="$emit('input', $event)"
|
|
423
418
|
/>
|
|
424
419
|
|
|
@@ -434,7 +429,6 @@ export default {
|
|
|
434
429
|
:initial-value="initialModel"
|
|
435
430
|
:live-value="liveModel"
|
|
436
431
|
:real-mode="realMode"
|
|
437
|
-
:class="{'flex-content': flexContent}"
|
|
438
432
|
@update:value="$emit('input', $event)"
|
|
439
433
|
@set-subtype="setSubtype"
|
|
440
434
|
/>
|