diff --git a/lib/global-admin/addon/components/cru-cloud-credential/component.js b/lib/global-admin/addon/components/cru-cloud-credential/component.js index 1a7a043bc..89cd1a5c6 100644 --- a/lib/global-admin/addon/components/cru-cloud-credential/component.js +++ b/lib/global-admin/addon/components/cru-cloud-credential/component.js @@ -13,58 +13,62 @@ import { isEmpty } from '@ember/utils'; const CRED_CONFIG_CHOICES = [ { - name: 'amazon', - displayName: 'Amazon', - driver: 'amazonec2', - configField: 'amazonec2credentialConfig', + name: 'amazon', + displayName: 'Amazon', + driver: 'amazonec2', + configField: 'amazonec2credentialConfig', + kontainerDriverId: 'amazonelasticcontainerservice' }, { - name: 'azure', - displayName: 'Azure', - driver: 'azure', - configField: 'azurecredentialConfig', + name: 'azure', + displayName: 'Azure', + driver: 'azure', + configField: 'azurecredentialConfig', + kontainerDriverId: 'azurekubernetesservice' }, { - name: 'digitalOcean', - displayName: 'Digital Ocean', - driver: 'digitalocean', - configField: 'digitaloceancredentialConfig', + name: 'digitalOcean', + displayName: 'Digital Ocean', + driver: 'digitalocean', + configField: 'digitaloceancredentialConfig', }, { - name: 'google', - displayName: 'Google', - driver: 'google', - configField: 'googlecredentialConfig', + name: 'google', + displayName: 'Google', + driver: 'google', + configField: 'googlecredentialConfig', + kontainerDriverId: 'googlekubernetesengine' }, { - name: 'harvester', - displayName: 'Harvester', - driver: 'harvester', - configField: 'harvestercredentialConfig', + name: 'harvester', + displayName: 'Harvester', + driver: 'harvester', + configField: 'harvestercredentialConfig', }, { - name: 'linode', - displayName: 'Linode', - driver: 'linode', - configField: 'linodecredentialConfig', + name: 'linode', + displayName: 'Linode', + driver: 'linode', + configField: 'linodecredentialConfig', + kontainerDriverId: 'linodekubernetesengine' }, { - name: 'oci', - displayName: 'OCI', - driver: 'oci', - configField: 'ocicredentialConfig', + name: 'oci', + displayName: 'OCI', + driver: 'oci', + configField: 'ocicredentialConfig', }, { - name: 'pnap', - displayName: 'phoenixNAP', - driver: 'pnap', - configField: 'pnapcredentialConfig', + name: 'pnap', + displayName: 'phoenixNAP', + driver: 'pnap', + configField: 'pnapcredentialConfig', }, { - name: 'vmware', - displayName: 'VMware vSphere', - driver: 'vmwarevsphere', - configField: 'vmwarevspherecredentialConfig', + name: 'vmware', + displayName: 'VMware vSphere', + driver: 'vmwarevsphere', + configField: 'vmwarevspherecredentialConfig', }, ] @@ -95,11 +99,12 @@ export default Component.extend(ViewNewEdit, { gkeProjectId: null, clusters: null, allNodeDrivers: null, + allKontainerDrivers: null, init() { this._super(...arguments); - let cloudCredentialType = 'amazon'; + let cloudCredentialType = ''; let model = null; const driverName = get(this, 'driverName') === 'aks' ? 'azure' : get(this, 'driverName'); @@ -122,6 +127,7 @@ export default Component.extend(ViewNewEdit, { } this.feetchNodeDriver(); + this.feetchKontainerDriver(); if (driverName === 'harvester' || cloudCredentialType === 'harvester') { this.fetchCluster(); @@ -197,7 +203,7 @@ export default Component.extend(ViewNewEdit, { return get(model, configField); }), - configChoices: computed('driverName', 'allNodeDrivers', function() { + configChoices: computed('driverName', 'allNodeDrivers', 'allKontainerDrivers', function() { if (get(this, 'driverName')) { // const { driverName } = this; const driverName = get(this, 'driverName') === 'aks' ? 'azure' : get(this, 'driverName'); @@ -214,9 +220,11 @@ export default Component.extend(ViewNewEdit, { return [match]; } else { - if (get(this, 'allNodeDrivers')) { + if (get(this, 'allNodeDrivers') && get(this, 'allKontainerDrivers')) { return (CRED_CONFIG_CHOICES.filter((N) => { - return (get(this, 'allNodeDrivers') || []).find((O) => O.id === N.driver && O.active === true) ? true : false; + const isActive = (get(this, 'allNodeDrivers') || []).find((O) => O.id === N.driver && O.active === true) || (get(this, 'allKontainerDrivers') || []).find((O) => O.id === N.kontainerDriverId && O.active === true); + + return isActive ? true : false; })).sortBy('displayName'); } else { return CRED_CONFIG_CHOICES.sortBy('displayName'); @@ -464,6 +472,12 @@ export default Component.extend(ViewNewEdit, { }); }, + feetchKontainerDriver() { + get(this, 'globalStore').findAll('kontainerDriver').then((allKontainerDrivers) => { + set(this, 'allKontainerDrivers', allKontainerDrivers); + }); + }, + fetchZones() { let credentials = null; let config = null;