Add copy config to project/namespace and cluster config header

This commit is contained in:
Jordon 2021-09-30 10:13:05 -04:00 committed by Jordon Leach
parent 1d3f8c7b9e
commit 7b47c33776
4 changed files with 48 additions and 2 deletions

View File

@ -2743,6 +2743,7 @@ namespace:
enableAutoInjection: Enable Istio Auto Injection
disableAutoInjection: Disable Istio Auto Injection
move: Move
copy: Copy Config to Clipboard
resourceStates:
success: 'Active'
info: 'Transitioning'

View File

@ -277,6 +277,16 @@ export default {
>
<i class="icon icon-file icon-lg" />
</button>
<button
v-tooltip="t('nav.kubeconfig')"
:disabled="!kubeConfigEnabled"
type="button"
class="btn header-btn role-tertiary"
@click="currentCluster.copyKubeConfig()"
>
<i class="icon icon-copy icon-lg" />
</button>
</template>
<button

View File

@ -1,3 +1,4 @@
import Vue from 'vue';
import { CATALOG } from '@/config/labels-annotations';
import { NODE, FLEET, MANAGEMENT } from '@/config/types';
import { insertAt } from '@/utils/array';
@ -55,6 +56,14 @@ export default class MgmtCluster extends HybridModel {
enabled: this.$rootGetters['isRancher'],
});
insertAt(out, 2, {
action: 'copyKubeConfig',
label: this.t('namespace.copy'),
bulkable: false,
enabled: true,
icon: 'icon icon-copy',
});
return out;
}
@ -307,7 +316,16 @@ export default class MgmtCluster extends HybridModel {
const out = jsyaml.dump(obj);
downloadFile('kubeconfig.yaml', out, 'application/yaml');
}
};
},
copyKubeConfig() {
return async() => {
const config = await this.generateKubeConfig();
Vue.prototype.$copyText(config);
};
},
async fetchNodeMetrics() {
const nodes = await this.$dispatch('cluster/findAll', { type: NODE }, { root: true });

View File

@ -1,3 +1,4 @@
import Vue from 'vue';
import SYSTEM_NAMESPACES from '@/config/system-namespaces';
import { PROJECT, SYSTEM_NAMESPACE, ISTIO as ISTIO_LABELS, FLEET } from '@/config/labels-annotations';
import { ISTIO, MANAGEMENT } from '@/config/types';
@ -53,12 +54,28 @@ export default class Namespace extends SteveModel {
});
}
insertAt(out, 5, {
action: 'copy',
label: this.t('namespace.copy'),
bulkable: false,
enabled: true,
icon: 'icon icon-copy',
weight: 3,
});
return out;
}
move(resources = this) {
this.$dispatch('promptMove', resources);
}
};
},
copy() {
return (resource = this) => {
Vue.prototype.$copyText(JSON.stringify(resource));
};
},
get isSystem() {
if ( this.metadata?.annotations?.[SYSTEM_NAMESPACE] === 'true' ) {