diff --git a/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs b/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs index 180175c4d..b32e7ce38 100644 --- a/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs +++ b/lib/shared/addon/components/cluster-driver/driver-rke/template.hbs @@ -207,6 +207,7 @@ @clusterTemplateRevision={{model.clusterTemplateRevision}} @questions={{model.clusterTemplateRevision.questions}} @addOverride={{action "addOverride"}} + @model={{model}} /> diff --git a/lib/shared/addon/components/cru-cloud-provider/component.js b/lib/shared/addon/components/cru-cloud-provider/component.js index 91ab0e5e5..92263d861 100644 --- a/lib/shared/addon/components/cru-cloud-provider/component.js +++ b/lib/shared/addon/components/cru-cloud-provider/component.js @@ -229,6 +229,7 @@ export default Component.extend({ let selectedCloudProvider = get(this, 'selectedCloudProvider'); let cluster = get(this, 'cluster'); let config = get(cluster, 'rancherKubernetesEngineConfig') || set(cluster, 'rancherKubernetesEngineConfig', {}); + let harvesterCluster = {} switch (selectedCloudProvider) { case 'azure': @@ -269,6 +270,26 @@ export default Component.extend({ break; + case 'harvester': + harvesterCluster = this.getHarvesterCluster() + + set(config, 'cloudProvider', get(this, 'globalStore').createRecord({ + type: 'cloudProvider', + name: 'harvester', + })); + + set(this, 'configAnswers', nue); + + harvesterCluster.doAction('generateKubeconfig') + .then((obj) => { + set(config, 'cloudProvider.harvesterCloudProvider.cloudConfig', get(obj, 'config')) + }) + .catch((err) => { + this.get('growl').fromError('Error getting kubeconfig file', err); + }) + + break; + case 'external': set(config, 'cloudProvider', get(this, 'globalStore').createRecord({ @@ -299,5 +320,12 @@ export default Component.extend({ throw new Error('addOverride action is required!'); }, + getHarvesterCluster() { + const cloudCredentialId = get(this, 'model.nodeTemplates.firstObject.cloudCredentialId') + const cloudCredential = get(this, 'globalStore').getById('cloudCredential', cloudCredentialId) + const clusterId = get(cloudCredential, 'harvestercredentialConfig.clusterId') + const harvesterCluster = get(this, 'globalStore').getById('cluster', clusterId) + return harvesterCluster + }, }); diff --git a/lib/shared/addon/components/cru-cloud-provider/template.hbs b/lib/shared/addon/components/cru-cloud-provider/template.hbs index 587bb12d4..aff4a2103 100644 --- a/lib/shared/addon/components/cru-cloud-provider/template.hbs +++ b/lib/shared/addon/components/cru-cloud-provider/template.hbs @@ -96,7 +96,27 @@ {{/if}} {{/if}} - {{#if (and (not-eq driver "amazonec2") (not-eq driver "azure"))}} + + {{#if (eq driver "harvester")}} + {{#if (and applyClusterTemplate (eq selectedCloudProvider "harvester"))}} +
+ +
+ {{else if isCreateClusterOrClusterTemplate}} +
+ +
+ {{/if}} + {{/if}} + + {{#if (and (not-eq driver "amazonec2") (not-eq driver "azure") (not-eq driver "harvester"))}} {{#if (and applyClusterTemplate (eq selectedCloudProvider "generic"))}}