@rancher/shell 3.0.9-rc.5 → 3.0.9

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 (172) hide show
  1. package/assets/images/providers/oci-open-containers.svg +22 -0
  2. package/assets/images/providers/traefik.png +0 -0
  3. package/assets/styles/themes/_dark.scss +2 -0
  4. package/assets/styles/themes/_light.scss +2 -0
  5. package/assets/styles/themes/_modern.scss +6 -0
  6. package/assets/translations/en-us.yaml +129 -25
  7. package/components/CruResource.vue +3 -1
  8. package/components/ExplorerProjectsNamespaces.vue +12 -12
  9. package/components/IconOrSvg.vue +61 -42
  10. package/components/Resource/Detail/Card/StatusCard/__tests__/StatusCard.test.ts +109 -0
  11. package/components/Resource/Detail/Card/StatusCard/index.vue +21 -4
  12. package/components/Resource/Detail/Metadata/IdentifyingInformation/__tests__/identifying-fields.test.ts +19 -2
  13. package/components/Resource/Detail/Metadata/IdentifyingInformation/identifying-fields.ts +19 -11
  14. package/components/Resource/Detail/ResourcePopover/__tests__/index.test.ts +12 -0
  15. package/components/Resource/Detail/ResourcePopover/index.vue +2 -0
  16. package/components/Resource/Detail/ResourceRow.vue +2 -2
  17. package/components/ResourceList/index.vue +7 -4
  18. package/components/SortableTable/index.vue +2 -2
  19. package/components/Window/ContainerLogs.vue +48 -37
  20. package/components/fleet/FleetClusterTargets/TargetsList.vue +2 -2
  21. package/components/fleet/FleetClusterTargets/index.vue +6 -1
  22. package/components/fleet/GitRepoAdvancedTab.vue +333 -0
  23. package/components/fleet/GitRepoMetadataTab.vue +43 -0
  24. package/components/fleet/GitRepoRepositoryTab.vue +101 -0
  25. package/components/fleet/GitRepoTargetTab.vue +77 -0
  26. package/components/fleet/HelmOpAdvancedTab.vue +247 -0
  27. package/components/fleet/HelmOpChartTab.vue +158 -0
  28. package/components/fleet/HelmOpMetadataTab.vue +46 -0
  29. package/components/fleet/HelmOpTargetTab.vue +84 -0
  30. package/components/fleet/HelmOpValuesTab.vue +147 -0
  31. package/components/fleet/__tests__/FleetClusterTargets.test.ts +119 -70
  32. package/components/form/BannerSettings.vue +2 -2
  33. package/components/form/NodeScheduling.vue +81 -7
  34. package/components/form/NotificationSettings.vue +2 -2
  35. package/components/form/PodAffinity.vue +1 -36
  36. package/components/form/ResourceLabeledSelect.vue +8 -4
  37. package/components/form/ResourceQuota/Namespace.vue +30 -9
  38. package/components/form/ResourceQuota/NamespaceRow.vue +25 -7
  39. package/components/form/ResourceQuota/Project.vue +140 -82
  40. package/components/form/ResourceQuota/ResourceQuotaEntry.vue +145 -0
  41. package/components/form/ResourceQuota/__tests__/Namespace.test.ts +307 -0
  42. package/components/form/ResourceQuota/__tests__/NamespaceRow.test.ts +281 -0
  43. package/components/form/ResourceQuota/__tests__/Project.test.ts +274 -27
  44. package/components/form/ResourceQuota/__tests__/ResourceQuotaEntry.test.ts +215 -0
  45. package/components/form/SchedulingCustomization.vue +14 -6
  46. package/components/form/SelectOrCreateAuthSecret.vue +107 -18
  47. package/components/form/__tests__/NodeScheduling.test.ts +12 -9
  48. package/components/form/__tests__/PodAffinity.test.ts +21 -2
  49. package/components/form/__tests__/SchedulingCustomization.test.ts +240 -0
  50. package/components/formatter/ClusterLink.vue +8 -0
  51. package/components/formatter/SecretOrigin.vue +79 -0
  52. package/config/labels-annotations.js +7 -6
  53. package/config/pagination-table-headers.js +6 -4
  54. package/config/product/explorer.js +1 -11
  55. package/config/product/manager.js +0 -1
  56. package/config/query-params.js +3 -0
  57. package/config/settings.ts +15 -2
  58. package/config/table-headers.js +21 -17
  59. package/config/types.js +23 -8
  60. package/detail/fleet.cattle.io.cluster.vue +1 -1
  61. package/detail/workload/index.vue +11 -16
  62. package/dialog/DeactivateDriverDialog.vue +1 -1
  63. package/dialog/FeatureFlagListDialog.vue +1 -1
  64. package/dialog/Ipv6NetworkingDialog.vue +156 -0
  65. package/dialog/ScalePoolDownDialog.vue +2 -2
  66. package/edit/__tests__/fleet.cattle.io.gitrepo.test.ts +1 -1
  67. package/edit/__tests__/fleet.cattle.io.helmop.test.ts +1 -0
  68. package/edit/__tests__/management.cattle.io.project.test.js +56 -128
  69. package/edit/auth/oidc.vue +1 -1
  70. package/edit/catalog.cattle.io.clusterrepo.vue +155 -25
  71. package/edit/fleet.cattle.io.gitrepo.vue +153 -283
  72. package/edit/fleet.cattle.io.helmop.vue +190 -332
  73. package/edit/management.cattle.io.project.vue +5 -42
  74. package/edit/management.cattle.io.setting.vue +6 -0
  75. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/auth.spec.ts +145 -0
  76. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/index.test.ts +202 -0
  77. package/edit/monitoring.coreos.com.alertmanagerconfig/__tests__/tls.spec.ts +226 -0
  78. package/edit/monitoring.coreos.com.alertmanagerconfig/auth.vue +24 -21
  79. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/opsgenie.spec.ts +157 -0
  80. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/pagerduty.spec.ts +132 -0
  81. package/edit/monitoring.coreos.com.alertmanagerconfig/types/__tests__/slack.spec.ts +108 -0
  82. package/edit/monitoring.coreos.com.alertmanagerconfig/types/pagerduty.vue +2 -1
  83. package/edit/monitoring.coreos.com.receiver/__tests__/auth.spec.ts +165 -0
  84. package/edit/monitoring.coreos.com.receiver/__tests__/index.test.ts +153 -0
  85. package/edit/monitoring.coreos.com.receiver/__tests__/tls.spec.ts +115 -0
  86. package/edit/monitoring.coreos.com.receiver/types/__tests__/email.spec.ts +86 -0
  87. package/edit/monitoring.coreos.com.receiver/types/__tests__/opsgenie.spec.ts +209 -0
  88. package/edit/monitoring.coreos.com.receiver/types/__tests__/pagerduty.spec.ts +105 -0
  89. package/edit/monitoring.coreos.com.receiver/types/__tests__/slack.spec.ts +92 -0
  90. package/edit/monitoring.coreos.com.receiver/types/__tests__/webhook.spec.ts +131 -0
  91. package/edit/provisioning.cattle.io.cluster/__tests__/Basics.test.ts +55 -24
  92. package/edit/provisioning.cattle.io.cluster/__tests__/Networking.test.ts +1 -103
  93. package/edit/provisioning.cattle.io.cluster/__tests__/index.test.ts +13 -1
  94. package/edit/provisioning.cattle.io.cluster/__tests__/rke2-fleet-cluster-agent.test.ts +283 -0
  95. package/edit/provisioning.cattle.io.cluster/__tests__/rke2.test.ts +65 -49
  96. package/edit/provisioning.cattle.io.cluster/ingress/IngressCards.vue +114 -0
  97. package/edit/provisioning.cattle.io.cluster/ingress/IngressConfiguration.vue +158 -0
  98. package/edit/provisioning.cattle.io.cluster/rke2.vue +167 -69
  99. package/edit/provisioning.cattle.io.cluster/shared.ts +36 -1
  100. package/edit/provisioning.cattle.io.cluster/tabs/AgentConfiguration.vue +2 -1
  101. package/edit/provisioning.cattle.io.cluster/tabs/Basics.vue +70 -7
  102. package/edit/provisioning.cattle.io.cluster/tabs/Ingress.vue +343 -0
  103. package/edit/provisioning.cattle.io.cluster/tabs/MachinePool.vue +2 -1
  104. package/edit/provisioning.cattle.io.cluster/tabs/etcd/__tests__/S3Config.test.ts +13 -1
  105. package/edit/provisioning.cattle.io.cluster/tabs/networking/index.vue +10 -44
  106. package/edit/secret/index.vue +1 -1
  107. package/edit/token.vue +68 -29
  108. package/edit/workload/__tests__/index.test.ts +2 -37
  109. package/edit/workload/index.vue +6 -2
  110. package/edit/workload/mixins/workload.js +0 -32
  111. package/list/__tests__/management.cattle.io.setting.test.ts +198 -0
  112. package/list/management.cattle.io.setting.vue +13 -0
  113. package/list/provisioning.cattle.io.cluster.vue +50 -1
  114. package/list/secret.vue +4 -9
  115. package/list/service.vue +6 -8
  116. package/machine-config/amazonec2.vue +11 -4
  117. package/machine-config/components/EC2Networking.vue +46 -30
  118. package/machine-config/components/__tests__/EC2Networking.test.ts +7 -7
  119. package/machine-config/components/__tests__/utils/vpcSubnetMockData.js +0 -9
  120. package/machine-config/digitalocean.vue +3 -3
  121. package/models/__tests__/chart.test.ts +2 -2
  122. package/models/__tests__/namespace.test.ts +11 -0
  123. package/models/__tests__/provisioning.cattle.io.cluster.test.ts +96 -0
  124. package/models/__tests__/workload.test.ts +42 -1
  125. package/models/catalog.cattle.io.clusterrepo.js +30 -4
  126. package/models/chart.js +3 -3
  127. package/models/ext.cattle.io.token.js +48 -0
  128. package/models/kontainerdriver.js +2 -2
  129. package/models/namespace.js +7 -1
  130. package/models/nodedriver.js +2 -2
  131. package/models/provisioning.cattle.io.cluster.js +28 -7
  132. package/models/secret.js +0 -17
  133. package/models/service.js +44 -1
  134. package/models/token.js +4 -0
  135. package/models/workload.js +12 -6
  136. package/package.json +1 -1
  137. package/pages/account/index.vue +96 -67
  138. package/pages/auth/setup.vue +5 -14
  139. package/pages/c/_cluster/apps/charts/AppChartCardFooter.vue +45 -18
  140. package/pages/c/_cluster/apps/charts/__tests__/install.test.ts +4 -1
  141. package/pages/c/_cluster/apps/charts/index.vue +82 -3
  142. package/pages/c/_cluster/apps/charts/install.vue +317 -42
  143. package/pages/c/_cluster/explorer/tools/index.vue +1 -1
  144. package/pages/c/_cluster/manager/cloudCredential/index.vue +1 -1
  145. package/pages/c/_cluster/manager/drivers/kontainerDriver/index.vue +5 -4
  146. package/pages/c/_cluster/settings/index.vue +3 -1
  147. package/pages/c/_cluster/uiplugins/index.vue +1 -1
  148. package/plugins/dashboard-store/__tests__/getters.test.ts +108 -0
  149. package/plugins/dashboard-store/__tests__/resource-class.test.ts +27 -0
  150. package/plugins/dashboard-store/actions.js +3 -8
  151. package/plugins/dashboard-store/getters.js +7 -5
  152. package/plugins/dashboard-store/mutations.js +4 -1
  153. package/plugins/dashboard-store/resource-class.js +3 -3
  154. package/plugins/steve/__tests__/steve-class.test.ts +102 -141
  155. package/plugins/steve/steve-class.js +12 -3
  156. package/plugins/steve/steve-pagination-utils.ts +6 -2
  157. package/rancher-components/RcIcon/types.ts +2 -0
  158. package/rancher-components/RcItemCard/RcItemCard.vue +72 -20
  159. package/store/prefs.js +3 -0
  160. package/types/aws-sdk.d.ts +121 -0
  161. package/types/resources/node.ts +15 -0
  162. package/types/shell/index.d.ts +537 -506
  163. package/types/store/pagination.types.ts +5 -5
  164. package/utils/__tests__/array.test.ts +1 -29
  165. package/utils/__tests__/cluster-agent-configuration.test.ts +203 -0
  166. package/utils/array.ts +0 -11
  167. package/utils/aws.ts +21 -0
  168. package/utils/cluster.js +22 -2
  169. package/utils/selector-typed.ts +1 -1
  170. package/utils/svg-filter.js +4 -3
  171. package/components/__tests__/ProjectRow.test.ts +0 -206
  172. package/components/form/ResourceQuota/ProjectRow.vue +0 -277
@@ -108,12 +108,13 @@ export const CATALOG = {
108
108
  _CLUSTER_TPL: 'cluster-template',
109
109
  _CLUSTER_TOOL: 'cluster-tool',
110
110
 
111
- COMPONENT: 'catalog.cattle.io/ui-component',
112
- SOURCE_REPO_TYPE: 'catalog.cattle.io/ui-source-repo-type',
113
- SOURCE_REPO_NAME: 'catalog.cattle.io/ui-source-repo',
114
- COLOR: 'catalog.cattle.io/ui-color',
115
- DISPLAY_NAME: 'catalog.cattle.io/display-name',
116
- CLUSTER_REPO_NAME: 'catalog.cattle.io/cluster-repo-name',
111
+ COMPONENT: 'catalog.cattle.io/ui-component',
112
+ SOURCE_REPO_TYPE: 'catalog.cattle.io/ui-source-repo-type',
113
+ SOURCE_REPO_NAME: 'catalog.cattle.io/ui-source-repo',
114
+ COLOR: 'catalog.cattle.io/ui-color',
115
+ DISPLAY_NAME: 'catalog.cattle.io/display-name',
116
+ CLUSTER_REPO_NAME: 'catalog.cattle.io/cluster-repo-name',
117
+ SUSE_APP_COLLECTION: 'catalog.cattle.io/suse-application-collection',
117
118
 
118
119
  SUPPORTED_OS: 'catalog.cattle.io/os',
119
120
  PERMITTED_OS: 'catalog.cattle.io/permits-os',
@@ -3,7 +3,7 @@ import {
3
3
  STATE, NAME as NAME_COL, NAMESPACE as NAMESPACE_COL, AGE, OBJECT,
4
4
  EVENT_LAST_SEEN_TIME,
5
5
  EVENT_TYPE,
6
- SECRET_CLONE,
6
+ SECRET_ORIGIN,
7
7
  EVENT_FIRST_SEEN_TIME
8
8
  } from '@shell/config/table-headers';
9
9
 
@@ -89,7 +89,9 @@ export const STEVE_LIST_GROUPS = [{
89
89
  groupLabelKey: 'groupByLabel',
90
90
  }];
91
91
 
92
- export const STEVE_SECRET_CLONE = {
93
- ...SECRET_CLONE,
94
- sort: `metadata.annotations[${ UI_PROJECT_SECRET_COPY }]`,
92
+ export const STEVE_SECRET_ORIGIN = {
93
+ ...SECRET_ORIGIN,
94
+ // We can't sort by the 'UI_PROJECT_SECRET' label (management.cattle.io/project-scoped-secret) due to backend limitations.
95
+ // So we sort by the 'UI_PROJECT_SECRET_COPY' annotation (management.cattle.io/project-scoped-secret-copy) which at least groups the copies.
96
+ sort: `metadata.annotations[${ UI_PROJECT_SECRET_COPY }]:desc`,
95
97
  };
@@ -19,7 +19,7 @@ import {
19
19
  USER_ID, USERNAME, USER_DISPLAY_NAME, USER_PROVIDER, USER_LAST_LOGIN, USER_DISABLED_IN, USER_DELETED_IN, WORKLOAD_ENDPOINTS, STORAGE_CLASS_DEFAULT,
20
20
  STORAGE_CLASS_PROVISIONER, PERSISTENT_VOLUME_SOURCE,
21
21
  HPA_REFERENCE, MIN_REPLICA, MAX_REPLICA, CURRENT_REPLICA,
22
- ACCESS_KEY, DESCRIPTION, EXPIRES, EXPIRY_STATE, LAST_USED, SUB_TYPE, AGE_NORMAN, SCOPE_NORMAN, PERSISTENT_VOLUME_CLAIM, RECLAIM_POLICY, PV_REASON, WORKLOAD_HEALTH_SCALE, POD_RESTARTS,
22
+ DESCRIPTION, SUB_TYPE, PERSISTENT_VOLUME_CLAIM, RECLAIM_POLICY, PV_REASON, WORKLOAD_HEALTH_SCALE, POD_RESTARTS,
23
23
  DURATION, MESSAGE, REASON, EVENT_TYPE, OBJECT, ROLE, ROLES, VERSION, INTERNAL_EXTERNAL_IP, KUBE_NODE_OS, CPU, RAM, SECRET_DATA,
24
24
  EVENT_LAST_SEEN_TIME,
25
25
  EVENT_FIRST_SEEN_TIME,
@@ -546,16 +546,6 @@ export function init(store) {
546
546
  AGE
547
547
  ]);
548
548
 
549
- headers(NORMAN.TOKEN, [
550
- EXPIRY_STATE,
551
- ACCESS_KEY,
552
- DESCRIPTION,
553
- SCOPE_NORMAN,
554
- LAST_USED,
555
- EXPIRES,
556
- AGE_NORMAN
557
- ]);
558
-
559
549
  virtualType({
560
550
  label: store.getters['i18n/t']('clusterIndexPage.header'),
561
551
  group: 'Root',
@@ -202,7 +202,6 @@ export function init(store) {
202
202
  ]);
203
203
 
204
204
  headers(EXT.KUBECONFIG, [
205
- STATE,
206
205
  {
207
206
  name: 'clusters',
208
207
  labelKey: 'tableHeaders.clusters',
@@ -94,3 +94,6 @@ export const SECRET_QUERY_PARAMS = {
94
94
  export const SECRET_SCOPE = 'scope';
95
95
  // RANCHER OIDC CLIENT
96
96
  export const RANCHER_AS_OIDC_QUERY_PARAMS = ['scope', 'client_id', 'redirect_uri', 'response_type'];
97
+
98
+ // For REPOSITORIES, to determine which type of repo to create, used on clusterrepo create page
99
+ export const TARGET = 'target';
@@ -2,6 +2,11 @@
2
2
  import { GC_DEFAULTS, GC_PREFERENCES } from '@shell/utils/gc/gc-types';
3
3
  import { PaginationSettings } from '@shell/types/resources/settings';
4
4
 
5
+ export const AGENT_CONFIGURATION_TYPES = {
6
+ CLUSTER: 'cluster',
7
+ FLEET: 'fleet'
8
+ } as const;
9
+
5
10
  interface GlobalSettingRuleset {
6
11
  name: string,
7
12
  key?: string | number,
@@ -17,6 +22,7 @@ interface GlobalSetting {
17
22
  kind?: string,
18
23
  options?: string[]
19
24
  readOnly?: boolean,
25
+ agent?: typeof AGENT_CONFIGURATION_TYPES.CLUSTER | typeof AGENT_CONFIGURATION_TYPES.FLEET,
20
26
  /**
21
27
  * Function used from the form validation
22
28
  */
@@ -111,6 +117,8 @@ export const SETTING = {
111
117
  IMPORTED_CLUSTER_VERSION_MANAGEMENT: 'imported-cluster-version-management',
112
118
  CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS: 'cluster-agent-default-priority-class',
113
119
  CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET: 'cluster-agent-default-pod-disruption-budget',
120
+ FLEET_AGENT_DEFAULT_PRIORITY_CLASS: 'fleet-agent-default-priority-class',
121
+ FLEET_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET: 'fleet-agent-default-pod-disruption-budget',
114
122
  KEV2_OPERATORS: 'kev2-operators',
115
123
  /**
116
124
  * Dynamic Content settings
@@ -178,8 +186,11 @@ export const ALLOWED_SETTINGS: GlobalSetting = {
178
186
  ruleSet: [{ name: 'minValue', factoryArg: 1 }]
179
187
  },
180
188
  [SETTING.IMPORTED_CLUSTER_VERSION_MANAGEMENT]: { kind: 'boolean' },
181
- [SETTING.CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS]: { kind: 'json' },
182
- [SETTING.CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET]: { kind: 'json' }
189
+ // Configuration setup for agent configuration. Setting this up will activate the specific banner configuration.
190
+ [SETTING.CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS]: { kind: 'json', agent: AGENT_CONFIGURATION_TYPES.CLUSTER },
191
+ [SETTING.CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET]: { kind: 'json', agent: AGENT_CONFIGURATION_TYPES.CLUSTER },
192
+ [SETTING.FLEET_AGENT_DEFAULT_PRIORITY_CLASS]: { kind: 'json', agent: AGENT_CONFIGURATION_TYPES.FLEET },
193
+ [SETTING.FLEET_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET]: { kind: 'json', agent: AGENT_CONFIGURATION_TYPES.FLEET }
183
194
 
184
195
  };
185
196
 
@@ -195,6 +206,8 @@ export const PROVISIONING_SETTINGS = [
195
206
  SETTING.IMPORTED_CLUSTER_VERSION_MANAGEMENT,
196
207
  SETTING.CLUSTER_AGENT_DEFAULT_PRIORITY_CLASS,
197
208
  SETTING.CLUSTER_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET,
209
+ SETTING.FLEET_AGENT_DEFAULT_PRIORITY_CLASS,
210
+ SETTING.FLEET_AGENT_DEFAULT_POD_DISTRIBUTION_BUDGET,
198
211
  ];
199
212
 
200
213
  /**
@@ -1,4 +1,4 @@
1
- import { CATTLE_PUBLIC_ENDPOINTS, UI_PROJECT_SECRET_COPY } from '@shell/config/labels-annotations';
1
+ import { CATTLE_PUBLIC_ENDPOINTS } from '@shell/config/labels-annotations';
2
2
  import { NODE as NODE_TYPE, NAMESPACE as NAMESPACE_TYPE } from '@shell/config/types';
3
3
  import { COLUMN_BREAKPOINTS } from '@shell/types/store/type-map';
4
4
 
@@ -55,6 +55,11 @@ export const NAME = {
55
55
  canBeVariable: true,
56
56
  };
57
57
 
58
+ export const PROJECT_NAMESPACES_NAME = {
59
+ ...NAME,
60
+ search: ['nameDisplay', 'projectNameDisplay'],
61
+ };
62
+
58
63
  export const LOGGING_OUTPUT_PROVIDERS = {
59
64
  name: 'logging-output-providers',
60
65
  labelKey: 'tableHeaders.loggingOutputProviders',
@@ -385,27 +390,17 @@ export const SECRET_DATA = {
385
390
  formatter: 'SecretData'
386
391
  };
387
392
 
388
- export const SECRET_CLONE = {
389
- name: 'secret-clone',
390
- labelKey: 'tableHeaders.secret.project-clone',
391
- tooltip: 'tableHeaders.secret.project-clone-tooltip',
392
- value: 'isProjectSecretCopy',
393
- sort: `metadata.annotations."${ UI_PROJECT_SECRET_COPY }"`,
394
- search: false,
395
- formatter: 'Checked',
396
- };
397
-
398
- export const SECRET_PROJECT_SCOPED = {
399
- name: 'secret-project-scoped',
400
- labelKey: 'tableHeaders.secret.project-scoped',
401
- tooltip: 'tableHeaders.secret.project-scoped-tooltip',
402
- value: 'clusterAndProjectLabel',
393
+ export const SECRET_ORIGIN = {
394
+ name: 'secret-origin',
395
+ labelKey: 'tableHeaders.secret.origin',
396
+ tooltip: 'tableHeaders.secret.originTooltip',
397
+ formatter: 'SecretOrigin',
403
398
  // Cannot _sort_ upstream secrets by if they are cluster scoped
404
399
  // https://github.com/rancher/rancher/issues/51001
405
400
  // metadata.labels[management.cattle.io/project-scoped-secret] - covers both cluster scoped AND clones
406
401
  // metadata.annotations[management.cattle.io/project-scoped-secret-copy]
407
402
  // sort: [`metadata.labels[${ UI_PROJECT_SECRET }]`, `metadata.annotations[${ UI_PROJECT_SECRET_COPY }]`],
408
- search: false,
403
+ search: false,
409
404
  };
410
405
 
411
406
  export const TARGET_KIND = {
@@ -1038,6 +1033,15 @@ export const SCOPE_NORMAN = {
1038
1033
  sort: ['clusterId'],
1039
1034
  };
1040
1035
 
1036
+ export const NORMAN_KEY_DEPRECATION = {
1037
+ name: 'isNormanKeyDeprecated',
1038
+ labelKey: 'tableHeaders.isLegacy',
1039
+ value: (row) => row.isDeprecated ? 'True' : undefined,
1040
+ sort: 'isDeprecated',
1041
+ align: 'left',
1042
+ dashIfEmpty: true,
1043
+ };
1044
+
1041
1045
  export const EXPIRES = {
1042
1046
  name: 'expires',
1043
1047
  value: 'expiresAt',
package/config/types.js CHANGED
@@ -269,6 +269,7 @@ export const EXT = {
269
269
  GROUP_MEMBERSHIP_REFRESH_REQUESTS: 'ext.cattle.io.groupmembershiprefreshrequest',
270
270
  PASSWORD_CHANGE_REQUESTS: 'ext.cattle.io.passwordchangerequest',
271
271
  KUBECONFIG: 'ext.cattle.io.kubeconfig',
272
+ TOKEN: 'ext.cattle.io.token',
272
273
  };
273
274
 
274
275
  export const CAPI = {
@@ -390,21 +391,35 @@ export const ADDRESSES = {
390
391
  export const DEFAULT_WORKSPACE = 'fleet-default';
391
392
 
392
393
  export const AUTH_TYPE = {
393
- _NONE: '_none',
394
- _BASIC: '_basic',
395
- _SSH: '_ssh',
396
- _S3: '_S3',
397
- _RKE: '_RKE',
394
+ _NONE: '_none',
395
+ _BASIC: '_basic',
396
+ _SSH: '_ssh',
397
+ _S3: '_S3',
398
+ _RKE: '_RKE',
399
+ _IMAGE_PULL_SECRET: '_IPS',
398
400
  };
399
401
 
400
402
  export const LOCAL_CLUSTER = 'local';
401
403
 
402
404
  export const CLUSTER_REPO_TYPES = {
403
- HELM_URL: 'helm-url',
404
- GIT_REPO: 'git-repo',
405
- OCI_URL: 'oci-url'
405
+ HELM_URL: 'helm-url',
406
+ GIT_REPO: 'git-repo',
407
+ OCI_URL: 'oci-url',
408
+ SUSE_APP_COLLECTION: 'suse-application-collection'
406
409
  };
407
410
 
411
+ /**
412
+ * The `generateName` prefix used when creating authentication secrets
413
+ * for SUSE App Collection repositories.
414
+ */
415
+ export const CLUSTER_REPO_APPCO_AUTH_GENERATE_NAME = 'clusterrepo-appco-auth-';
416
+
417
+ /**
418
+ * The `generateName` prefix used when creating authentication secrets
419
+ * for standard repositories.
420
+ */
421
+ export const CLUSTER_REPO_AUTH_GENERATE_NAME = 'clusterrepo-auth-';
422
+
408
423
  export const ZERO_TIME = '0001-01-01T00:00:00Z';
409
424
 
410
425
  export const DEFAULT_GRAFANA_STORAGE_SIZE = '10Gi';
@@ -6,7 +6,7 @@ import ResourceTabs from '@shell/components/form/ResourceTabs';
6
6
  import Tab from '@shell/components/Tabbed/Tab';
7
7
  import { MANAGEMENT, FLEET, SCHEMA } from '@shell/config/types';
8
8
  import { FLEET as FLEET_LABELS } from '@shell/config/labels-annotations';
9
- import { allHash } from 'utils/promise';
9
+ import { allHash } from '@shell/utils/promise';
10
10
 
11
11
  export default {
12
12
  name: 'FleetDetailCluster',
@@ -2,7 +2,7 @@
2
2
  import CreateEditView from '@shell/mixins/create-edit-view';
3
3
  import { NAMESPACE as NAMESPACE_COL } from '@shell/config/table-headers';
4
4
  import {
5
- POD, WORKLOAD_TYPES, SERVICE, INGRESS, NODE, NAMESPACE, WORKLOAD_TYPE_TO_KIND_MAPPING, METRICS_SUPPORTED_KINDS
5
+ POD, WORKLOAD_TYPES, SERVICE, INGRESS, NAMESPACE, WORKLOAD_TYPE_TO_KIND_MAPPING, METRICS_SUPPORTED_KINDS
6
6
  } from '@shell/config/types';
7
7
  import ResourceTable from '@shell/components/ResourceTable';
8
8
  import Tab from '@shell/components/Tabbed/Tab';
@@ -13,6 +13,7 @@ import DashboardMetrics from '@shell/components/DashboardMetrics';
13
13
  import { mapGetters } from 'vuex';
14
14
  import { allDashboardsExist } from '@shell/utils/grafana';
15
15
  import { PROJECT } from '@shell/config/labels-annotations';
16
+ import { fetchNodesForServiceTargets } from '@shell/models/service';
16
17
 
17
18
  const WORKLOAD_METRICS_DETAIL_URL = '/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy/d/rancher-workload-pods-1/rancher-workload-pods?orgId=1';
18
19
  const WORKLOAD_METRICS_SUMMARY_URL = '/api/v1/namespaces/cattle-monitoring-system/services/http:rancher-monitoring-grafana:80/proxy/d/rancher-workload-1/rancher-workload?orgId=1';
@@ -29,28 +30,23 @@ export default {
29
30
  mixins: [CreateEditView],
30
31
 
31
32
  async fetch() {
32
- let hasNodes = false;
33
-
34
- try {
35
- const inStore = this.$store.getters['currentStore']();
36
- const schema = this.$store.getters[`${ inStore }/schemaFor`](NODE);
37
-
38
- if (schema) {
39
- hasNodes = true;
40
- }
41
- } catch {}
42
-
43
33
  const hash = {
44
34
  allIngresses: this.$store.dispatch('cluster/findAll', { type: INGRESS }),
45
- // Nodes should be fetched because they may be referenced in the target
46
- // column of a service list item.
47
- allNodes: hasNodes ? this.$store.dispatch('cluster/findAll', { type: NODE }) : []
35
+ // Nodes should be fetched because they may be referenced in the target column of a service list item.
36
+ nodes: fetchNodesForServiceTargets({
37
+ $store: this.$store,
38
+ inStore: this.$store.getters['currentStore']()
39
+ })
48
40
  };
49
41
 
50
42
  if (this.podSchema) {
51
43
  hash.pods = this.value.fetchPods();
52
44
  }
53
45
 
46
+ if (this.serviceSchema) {
47
+ hash.servicesInNamespace = this.$store.dispatch('cluster/findAll', { type: SERVICE, opt: { namespaced: this.value.metadata.namespace } });
48
+ }
49
+
54
50
  if (this.value.type === WORKLOAD_TYPES.CRON_JOB) {
55
51
  hash.jobs = this.value.matchingJobs();
56
52
  }
@@ -88,7 +84,6 @@ export default {
88
84
  return {
89
85
  allIngresses: [],
90
86
  matchingIngresses: [],
91
- allNodes: [],
92
87
  WORKLOAD_METRICS_DETAIL_URL,
93
88
  WORKLOAD_METRICS_SUMMARY_URL,
94
89
  POD_PROJECT_METRICS_DETAIL_URL: '',
@@ -55,7 +55,7 @@ export default {
55
55
  try {
56
56
  await Promise.all(this.drivers.map(
57
57
  (driver) => this.$store.dispatch('rancher/request', {
58
- url: `v3/${ this.driverType }/${ escape(driver.id) }?action=deactivate`,
58
+ url: `v3/${ this.driverType }/${ encodeURIComponent(driver.id) }?action=deactivate`,
59
59
  method: 'POST'
60
60
  })
61
61
  ));
@@ -134,7 +134,7 @@ export default {
134
134
  this.waiting = false;
135
135
  this.close();
136
136
 
137
- await this.$store.dispatch('management/findAll', { type: this.resource, opt: { force: true } });
137
+ await this.$store.dispatch('management/findAll', { type: this.update.type, opt: { force: true } });
138
138
  }
139
139
  } catch (e) {}
140
140
 
@@ -0,0 +1,156 @@
1
+ <script>
2
+ import AsyncButton from '@shell/components/AsyncButton';
3
+ import { Card } from '@components/Card';
4
+
5
+ export default {
6
+ emits: ['close'],
7
+
8
+ components: {
9
+ Card,
10
+ AsyncButton,
11
+ },
12
+ props: {
13
+ warnings: {
14
+ type: Array,
15
+ default: () => []
16
+ },
17
+
18
+ isK3s: {
19
+ type: Boolean,
20
+ default: false
21
+ },
22
+
23
+ /**
24
+ * Callback to identify response of the prompt
25
+ */
26
+ confirm: {
27
+ type: Function,
28
+ default: () => { }
29
+ },
30
+
31
+ },
32
+
33
+ methods: {
34
+ close() {
35
+ this.confirm(false);
36
+ this.$emit('close');
37
+ },
38
+
39
+ async apply(buttonDone) {
40
+ this.applyErrors = [];
41
+ try {
42
+ this.confirm(true);
43
+ this.$emit('close');
44
+ } catch (err) {
45
+ console.error(err); // eslint-disable-line
46
+ buttonDone(false);
47
+ }
48
+ }
49
+ },
50
+ };
51
+ </script>
52
+
53
+ <template>
54
+ <Card
55
+ class="prompt-restore"
56
+ :show-highlight-border="false"
57
+ data-testid="ipv6-dialog"
58
+ >
59
+ <template #title>
60
+ <h4
61
+ v-clean-html="t('cluster.rke2.modal.ipv6Warning.title')"
62
+ class="text-default-text"
63
+ />
64
+ </template>
65
+
66
+ <template #body>
67
+ <div
68
+ class="pl-10 pr-10"
69
+ style="min-height: 50px;"
70
+ >
71
+ <t
72
+ k="cluster.rke2.modal.ipv6Warning.body"
73
+ raw
74
+ />
75
+ <t
76
+ :k="isK3s ? 'cluster.rke2.modal.ipv6Warning.readMoreK3s' : 'cluster.rke2.modal.ipv6Warning.readMoreRke2'"
77
+ raw
78
+ />
79
+ <div class="list-pretext">
80
+ <t
81
+ k="cluster.rke2.modal.ipv6Warning.verifySettings"
82
+ raw
83
+ />
84
+ </div>
85
+ <ul
86
+ data-testid="ipv6-dialog-reasons"
87
+ class="warning-list"
88
+ >
89
+ <li
90
+ v-for="warning in warnings"
91
+ :key="warning"
92
+ >
93
+ <t
94
+ :k="warning"
95
+ raw
96
+ />
97
+ </li>
98
+ </ul>
99
+ </div>
100
+ </template>
101
+
102
+ <template #actions>
103
+ <div class="bottom">
104
+ <div
105
+
106
+ class="buttons"
107
+ >
108
+ <button
109
+ data-testid="ipv6-dialog-cancel"
110
+ class="btn role-secondary mr-10"
111
+ @click="close"
112
+ >
113
+ {{ t('generic.cancel') }}
114
+ </button>
115
+
116
+ <AsyncButton
117
+ data-testid="ipv6-dialog-continue"
118
+ mode="continue"
119
+ action-color="role-primary"
120
+ @click="apply"
121
+ />
122
+ </div>
123
+ </div>
124
+ </template>
125
+ </Card>
126
+ </template>
127
+ <style lang='scss' scoped>
128
+ .prompt-restore {
129
+ margin: 0;
130
+ }
131
+ .bottom {
132
+ display: flex;
133
+ flex-direction: column;
134
+ flex: 1;
135
+ .banner {
136
+ margin-top: 0
137
+ }
138
+ .buttons {
139
+ display: flex;
140
+ justify-content: flex-end;
141
+ width: 100%;
142
+ }
143
+ }
144
+
145
+ .list-pretext {
146
+ margin-top: 16px;
147
+ }
148
+
149
+ .warning-list {
150
+ padding-inline-start: 24px;
151
+
152
+ & li {
153
+ margin-bottom: 8px;
154
+ }
155
+ }
156
+ </style>
@@ -26,7 +26,7 @@ export default {
26
26
  };
27
27
  },
28
28
  computed: {
29
- machinenName() {
29
+ machineName() {
30
30
  const name = this.resources.length > 0 ? this.resources[0]?.id?.split('/')[1] : '';
31
31
 
32
32
  return name;
@@ -81,7 +81,7 @@ export default {
81
81
  <template #body>
82
82
  <div class="pl-10 pr-10">
83
83
  <div>
84
- {{ t('promptRemove.attemptingToRemove', { type }) }} <b>{{ machinenName }}</b>
84
+ {{ t('promptScaleMachineDown.attemptingToScaleDown', { type }) }} <b>{{ machineName }}</b>
85
85
  </div>
86
86
  <div>
87
87
  <Checkbox
@@ -244,7 +244,7 @@ describe('view: fleet.cattle.io.gitrepo, GitHub password banner - should', () =>
244
244
  const wrapper = mount(GitRepoComponent, initGitRepo({ mode: _CREATE }, { spec: { repo: 'https://github.com/rancher/fleet-examples' } }));
245
245
 
246
246
  // Check computed properties
247
- expect(wrapper.vm.isGitHubDotComRepository).toBeTruthy();
247
+ expect(wrapper.vm.isGithubDotComRepository).toBeTruthy();
248
248
 
249
249
  // Set basic auth selection in tempCachedValues
250
250
  await wrapper.setData({ tempCachedValues: { clientSecretName: { selected: AUTH_TYPE._BASIC } } });
@@ -264,6 +264,7 @@ describe.each([
264
264
 
265
265
  wrapper.vm.pollingInterval = inputValue;
266
266
  wrapper.vm.updatePollingInterval(inputValue);
267
+ wrapper.vm.validatePollingInterval();
267
268
 
268
269
  await wrapper.vm.$nextTick();
269
270