-
+
diff --git a/components/ResourceDetail/Masthead.vue b/components/ResourceDetail/Masthead.vue
index ab6de30022..7f7c07bbbd 100644
--- a/components/ResourceDetail/Masthead.vue
+++ b/components/ResourceDetail/Masthead.vue
@@ -66,7 +66,7 @@ export default {
parentRouteOverride: {
type: String,
default: null,
- }
+ },
},
computed: {
diff --git a/components/form/KeyValue.vue b/components/form/KeyValue.vue
index 6c09d6cf84..8b55978d8e 100644
--- a/components/form/KeyValue.vue
+++ b/components/form/KeyValue.vue
@@ -61,6 +61,11 @@ export default {
},
},
+ keyEditable: {
+ type: Boolean,
+ default: true,
+ },
+
// Offer a set of suggestions for the keys as a Select instead of Input
keyOptions: {
type: Array,
@@ -523,7 +528,7 @@ export default {
v-else
ref="key"
v-model="row[keyName]"
- :disabled="isView"
+ :disabled="isView || !keyEditable"
:placeholder="keyPlaceholder"
@input="queueUpdate"
@paste="onPaste(i, $event)"
diff --git a/components/nav/TopLevelMenu.vue b/components/nav/TopLevelMenu.vue
index 6b04d91d28..1cf16c8263 100644
--- a/components/nav/TopLevelMenu.vue
+++ b/components/nav/TopLevelMenu.vue
@@ -69,8 +69,10 @@ export default {
};
});
- if (this.clusterFilter.length > 0) {
- out = out.filter(item => item.label.indexOf(this.clusterFilter) === 0);
+ const search = (this.clusterFilter || '').toLowerCase();
+
+ if ( search ) {
+ out = out.filter(item => item.label.toLowerCase().includes(search));
}
const sorted = sortBy(out, ['ready:desc', 'label']);
diff --git a/config/product/manager.js b/config/product/manager.js
index 09329d4408..e52d784bec 100644
--- a/config/product/manager.js
+++ b/config/product/manager.js
@@ -1,5 +1,5 @@
import { AGE, NAME as NAME_COL, STATE } from '@/config/table-headers';
-import { CAPI } from '@/config/types';
+import { CAPI, NORMAN } from '@/config/types';
import { MULTI_CLUSTER } from '@/store/features';
import { DSL } from '@/store/type-map';
@@ -12,7 +12,8 @@ export function init(store) {
headers,
configureType,
virtualType,
- weightType
+ weightType,
+ weightGroup
} = DSL(store, NAME);
product({
@@ -24,8 +25,40 @@ export function init(store) {
showClusterSwitcher: false,
});
+ virtualType({
+ name: 'cloud-credentials',
+ label: 'Cloud Credentials',
+ group: 'Root',
+ namespaced: false,
+ icon: 'globe',
+ weight: 99,
+ route: { name: 'c-cluster-manager-cloudCredential' },
+ });
+
+ virtualType({
+ labelKey: 'legacy.psps',
+ name: 'pod-security-policies',
+ group: 'Root',
+ namespaced: false,
+ weight: 0,
+ icon: 'folder',
+ route: { name: 'c-cluster-manager-pages-page', params: { cluster: 'local', page: 'pod-security-policies' } },
+ exact: true
+ });
+
+ basicType([
+ CAPI.RANCHER_CLUSTER,
+ 'cloud-credentials',
+ 'drivers',
+ 'pod-security-policies'
+ ]);
+
configureType(CAPI.RANCHER_CLUSTER, { showListMasthead: false, namespaced: false });
+ // configureType(NORMAN.CLOUD_CREDENTIAL, { showListMasthead: false, namespaced: false });
weightType(CAPI.RANCHER_CLUSTER, 100, true);
+ configureType(NORMAN.CLOUD_CREDENTIAL, {
+ showState: false, showAge: false, canYaml: false
+ });
virtualType({
label: 'Drivers',
@@ -47,16 +80,6 @@ export function init(store) {
exact: true
});
- virtualType({
- label: 'Cloud Credentials',
- name: 'rke-cloud-credentials',
- group: 'Root',
- namespaced: false,
- icon: 'globe',
- route: { name: 'c-cluster-manager-pages-page', params: { cluster: 'local', page: 'cloud-credentials' } },
- exact: true
- });
-
virtualType({
label: 'Node Templates',
name: 'rke-node-templates',
@@ -69,7 +92,6 @@ export function init(store) {
basicType([
'rke-templates',
- 'rke-cloud-credentials',
'rke-node-templates'
], 'RKE1 Configuration');
@@ -77,40 +99,14 @@ export function init(store) {
weightType(CAPI.MACHINE_SET, 2, true);
weightType(CAPI.MACHINE, 1, true);
- virtualType({
- label: 'Cloud Credentials',
- group: 'Root',
- namespaced: false,
- icon: 'globe',
- name: 'secret',
- weight: 99,
- route: { name: 'c-cluster-manager-secret' },
- });
-
- basicType([
- CAPI.RANCHER_CLUSTER,
- 'secret',
- 'drivers',
- ]);
-
- virtualType({
- labelKey: 'legacy.psps',
- name: 'pod-security-policies',
- group: 'Root',
- namespaced: false,
- weight: 0,
- icon: 'folder',
- route: { name: 'c-cluster-manager-pages-page', params: { cluster: 'local', page: 'pod-security-policies' } },
- exact: true
- });
-
basicType([
CAPI.MACHINE_DEPLOYMENT,
CAPI.MACHINE_SET,
CAPI.MACHINE,
- 'pod-security-policies'
], 'Advanced');
+ weightGroup('Advanced', -1, true);
+
const MACHINE_SUMMARY = {
name: 'summary',
labelKey: 'tableHeaders.machines',
diff --git a/config/types.js b/config/types.js
index 75371cf063..1339e7bb31 100644
--- a/config/types.js
+++ b/config/types.js
@@ -16,6 +16,7 @@ export const NORMAN = {
ETCD_BACKUP: 'etcdbackup',
CLUSTER_TOKEN: 'clusterregistrationtoken',
CLUSTER_ROLE_TEMPLATE_BINDING: 'clusterRoleTemplateBinding',
+ CLOUD_CREDENTIAL: 'cloudcredential',
GROUP: 'group',
// Note - This allows access to node resources, not schema's or custom components (both are accessed via 'type' which clashes with kube node)
NODE: 'node',
diff --git a/edit/cloudcredential.vue b/edit/cloudcredential.vue
new file mode 100644
index 0000000000..3fc063b773
--- /dev/null
+++ b/edit/cloudcredential.vue
@@ -0,0 +1,243 @@
+
+
+
+
+
+
+
diff --git a/edit/provisioning.cattle.io.cluster/S3Config.vue b/edit/provisioning.cattle.io.cluster/S3Config.vue
index 159c3515d0..a1680a91ec 100644
--- a/edit/provisioning.cattle.io.cluster/S3Config.vue
+++ b/edit/provisioning.cattle.io.cluster/S3Config.vue
@@ -50,7 +50,9 @@ export default {
methods: {
update() {
- this.$emit('input', { ...this.config });
+ const out = { ...this.config };
+
+ this.$emit('input', out);
},
},
};
@@ -67,30 +69,31 @@ export default {
:allow-aws="true"
:namespace="namespace"
generate-name="etcd-backup-s3-"
+ @input="update"
/>
-
+
-
+