@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.
Files changed (130) hide show
  1. package/assets/brand/harvester/favicon.png +0 -0
  2. package/assets/brand/harvester/metadata.json +3 -0
  3. package/assets/images/pl/harvester.svg +1 -0
  4. package/assets/translations/en-us.yaml +37 -15
  5. package/assets/translations/zh-hans.yaml +2 -5
  6. package/components/BrandImage.vue +5 -1
  7. package/components/CopyToClipboardText.vue +2 -0
  8. package/components/CruResourceFooter.vue +1 -0
  9. package/components/DetailTop.vue +1 -1
  10. package/components/EmberPage.vue +0 -8
  11. package/components/ExplorerMembers.vue +5 -1
  12. package/components/ExplorerProjectsNamespaces.vue +39 -15
  13. package/components/HardwareResourceGauge.vue +12 -2
  14. package/components/InputOrDisplay.vue +6 -2
  15. package/components/LandingPagePreference.vue +2 -2
  16. package/components/MessageLink.vue +1 -1
  17. package/components/ResourceDetail/Masthead.vue +22 -1
  18. package/components/ResourceDetail/index.vue +2 -8
  19. package/components/ResourceTable.vue +40 -7
  20. package/components/ResourceYaml.vue +1 -1
  21. package/components/SideNav.vue +1 -1
  22. package/components/SortableTable/actions.js +1 -1
  23. package/components/SortableTable/index.vue +17 -1
  24. package/components/SortableTable/selection.js +1 -1
  25. package/components/SortableTable/sorting.js +11 -3
  26. package/components/TableDataUserIcon.vue +1 -1
  27. package/components/fleet/FleetClusters.vue +0 -3
  28. package/components/fleet/FleetRepos.vue +0 -7
  29. package/components/form/ArrayList.vue +5 -1
  30. package/components/form/ArrayListSelect.vue +5 -1
  31. package/components/form/HookOption.vue +31 -29
  32. package/components/form/KeyValue.vue +1 -1
  33. package/components/form/LabeledSelect.vue +26 -7
  34. package/components/form/LifecycleHooks.vue +2 -2
  35. package/components/form/Password.vue +7 -1
  36. package/components/form/UnitInput.vue +10 -1
  37. package/components/form/__tests__/UnitInput.test.ts +1 -0
  38. package/components/formatter/ClusterProvider.vue +3 -3
  39. package/components/formatter/ImagePercentageBar.vue +1 -1
  40. package/components/formatter/SecretData.vue +1 -1
  41. package/components/formatter/Si.vue +5 -1
  42. package/components/formatter/Translate.vue +1 -1
  43. package/components/nav/Header.vue +38 -17
  44. package/components/nav/NamespaceFilter.vue +5 -8
  45. package/components/nav/TopLevelMenu.vue +11 -51
  46. package/components/nav/WorkspaceSwitcher.vue +0 -1
  47. package/config/labels-annotations.js +2 -0
  48. package/config/private-label.js +2 -1
  49. package/config/router/routes.js +2 -26
  50. package/config/settings.ts +5 -0
  51. package/config/table-headers.js +15 -0
  52. package/config/types.js +3 -0
  53. package/config/version.js +2 -0
  54. package/detail/catalog.cattle.io.app.vue +17 -4
  55. package/detail/fleet.cattle.io.bundle.vue +5 -68
  56. package/detail/fleet.cattle.io.cluster.vue +11 -9
  57. package/detail/fleet.cattle.io.gitrepo.vue +3 -2
  58. package/directives/clean-tooltip.js +4 -4
  59. package/edit/cis.cattle.io.clusterscan.vue +4 -3
  60. package/edit/fleet.cattle.io.gitrepo.vue +11 -8
  61. package/edit/logging-flow/Match.vue +75 -42
  62. package/edit/logging-flow/index.vue +89 -10
  63. package/edit/logging.banzaicloud.io.output/index.vue +2 -2
  64. package/edit/management.cattle.io.project.vue +4 -3
  65. package/edit/monitoring.coreos.com.prometheusrule/AlertingRule.vue +5 -5
  66. package/edit/monitoring.coreos.com.prometheusrule/index.vue +1 -1
  67. package/edit/namespace.vue +1 -1
  68. package/edit/provisioning.cattle.io.cluster/__tests__/Advanced.test.ts +26 -0
  69. package/edit/provisioning.cattle.io.cluster/__tests__/DirectoryConfig.test.ts +63 -149
  70. package/edit/provisioning.cattle.io.cluster/index.vue +2 -1
  71. package/edit/provisioning.cattle.io.cluster/rke2.vue +4 -4
  72. package/edit/provisioning.cattle.io.cluster/tabs/Advanced.vue +7 -2
  73. package/edit/provisioning.cattle.io.cluster/tabs/DirectoryConfig.vue +108 -35
  74. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +1 -1
  75. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryConfigs.vue +1 -1
  76. package/edit/provisioning.cattle.io.cluster/tabs/registries/RegistryMirrors.vue +1 -1
  77. package/edit/workload/mixins/workload.js +1 -1
  78. package/list/harvesterhci.io.management.cluster.vue +244 -0
  79. package/list/namespace.vue +16 -4
  80. package/mixins/browser-tab-visibility.js +1 -1
  81. package/mixins/chart.js +6 -2
  82. package/mixins/metric-poller.js +1 -1
  83. package/mixins/resource-fetch.js +1 -1
  84. package/models/__tests__/management.cattle.io.cluster.test.ts +45 -3
  85. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +0 -86
  86. package/models/catalog.cattle.io.app.js +108 -21
  87. package/models/cloudcredential.js +4 -4
  88. package/models/fleet.cattle.io.bundle.js +3 -1
  89. package/models/fleet.cattle.io.gitrepo.js +51 -63
  90. package/models/k8s.cni.cncf.io.networkattachmentdefinition.js +88 -0
  91. package/models/management.cattle.io.cluster.js +39 -7
  92. package/models/management.cattle.io.project.js +4 -0
  93. package/models/management.cattle.io.setting.js +25 -0
  94. package/models/provisioning.cattle.io.cluster.js +6 -16
  95. package/models/storage.k8s.io.storageclass.js +15 -4
  96. package/models/workload.js +1 -1
  97. package/package.json +5 -5
  98. package/pages/auth/login.vue +3 -2
  99. package/pages/auth/logout.vue +7 -9
  100. package/pages/auth/setup.vue +4 -1
  101. package/pages/c/_cluster/apps/charts/install.vue +11 -3
  102. package/pages/c/_cluster/explorer/__tests__/index.test.ts +1 -1
  103. package/pages/c/_cluster/explorer/index.vue +1 -2
  104. package/pages/c/_cluster/fleet/index.vue +13 -9
  105. package/pages/c/_cluster/settings/brand.vue +4 -1
  106. package/pages/c/_cluster/uiplugins/index.vue +4 -2
  107. package/pages/diagnostic.vue +1 -0
  108. package/pages/prefs.vue +22 -10
  109. package/plugins/dashboard-store/resource-class.js +11 -3
  110. package/plugins/steve/mutations.js +4 -1
  111. package/plugins/steve/steve-pagination-utils.ts +1 -1
  112. package/plugins/steve/subscribe.js +3 -4
  113. package/rancher-components/Form/LabeledInput/LabeledInput.vue +7 -2
  114. package/store/features.js +1 -0
  115. package/store/i18n.js +5 -1
  116. package/store/prefs.js +8 -0
  117. package/types/resources/fleet.d.ts +40 -0
  118. package/types/shell/index.d.ts +442 -396
  119. package/utils/__tests__/object.test.ts +152 -1
  120. package/utils/auth.js +1 -1
  121. package/utils/create-yaml.js +1 -1
  122. package/utils/favicon.js +2 -0
  123. package/utils/fleet.ts +159 -0
  124. package/utils/gc/gc.ts +1 -1
  125. package/utils/object.js +37 -0
  126. package/utils/string.js +9 -0
  127. package/utils/v-sphere.ts +31 -0
  128. package/utils/validators/cron-schedule.js +1 -1
  129. package/utils/validators/formRules/index.ts +2 -2
  130. package/config/product/multi-cluster-apps.js +0 -61
@@ -0,0 +1,3 @@
1
+ {
2
+ "hasStylesheet": "false"
3
+ }
@@ -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 Config Secret
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 tabs.'
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
- checkboxText: Use the same path for System-agent, Provisioning and K8s Distro data directories configuration
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 configuration path
1480
- tooltip: Data directory configuration for System-agent, Provisioning and K8s Distro
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: Unknown
1836
- mixed: 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: RKE
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.9"
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://rancher.com/eula" target="_blank" rel="noopener noreferrer nofollow">End User License Agreement & Terms & Conditions</a>
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 connection is disconnected
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: 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://rancher.com/eula" target="_blank" rel="noopener noreferrer nofollow">最终用户许可协议及条款和条件</a>
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
 
@@ -117,6 +117,7 @@ export default {
117
117
  display: flex;
118
118
  justify-content: flex-end;
119
119
  margin-top: 20px;
120
+ z-index: 40;
120
121
 
121
122
  .btn {
122
123
  margin-left: 20px;
@@ -94,7 +94,7 @@ export default {
94
94
  },
95
95
 
96
96
  labels() {
97
- if (!this.showFilteredSystemLabels) {
97
+ if (this.showAllLabels || !this.showFilteredSystemLabels) {
98
98
  return this.value?.labels || {};
99
99
  }
100
100
 
@@ -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 project = {
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
- this.groupPreference === 'none' ? project : null,
108
- AGE
109
- ].filter((h) => h);
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
- if (this.$store.getters['prefs/get'](ALL_NAMESPACES)) {
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
- {{ $slots.name || name }}
42
+ <slot name="name">
43
+ {{ name }}
44
+ </slot>
43
45
  </div>
44
46
  <div class="value">
45
- {{ $slots.value || displayValue }}
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, listeners}">
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"
@@ -2,7 +2,7 @@
2
2
  export default {
3
3
  props: {
4
4
  to: {
5
- type: String,
5
+ type: [String, Object],
6
6
  required: true
7
7
  },
8
8
 
@@ -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="mathead-action-menu"
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
  />