diff --git a/app/models/cloudcredential.js b/app/models/cloudcredential.js index 0a308ba52..91d3d849d 100644 --- a/app/models/cloudcredential.js +++ b/app/models/cloudcredential.js @@ -20,15 +20,18 @@ const cloudCredential = Resource.extend({ isDo: notEmpty('digitaloceancredentialConfig'), isLinode: notEmpty('linodecredentialConfig'), isOCI: notEmpty('ocicredentialConfig'), + isPNAP: notEmpty('pnapcredentialConfig'), isVMware: notEmpty('vmwarevspherecredentialConfig'), - displayType: computed('amazonec2credentialConfig', 'azurecredentialConfig', 'digitaloceancredentialConfig', 'linodecredentialConfig', 'ocicredentialConfig', 'vmwarevspherecredentialConfig', function() { + + displayType: computed('amazonec2credentialConfig', 'azurecredentialConfig', 'digitaloceancredentialConfig', 'linodecredentialConfig', 'ocicredentialConfig', 'pnapcredentialConfig', 'vmwarevspherecredentialConfig', function() { const { isAmazon, isAzure, isDo, isLinode, isOCI, + isPNAP, isVMware } = this; @@ -42,6 +45,8 @@ const cloudCredential = Resource.extend({ return 'Linode'; } else if (isOCI) { return 'OCI'; + } else if (isPNAP) { + return 'phoenixNAP'; } else if (isVMware) { return 'VMware vSphere'; } diff --git a/app/models/nodedriver.js b/app/models/nodedriver.js index 33408d32d..ea85c7544 100644 --- a/app/models/nodedriver.js +++ b/app/models/nodedriver.js @@ -4,7 +4,7 @@ import Resource from '@rancher/ember-api-store/models/resource'; import C from 'ui/utils/constants'; import { parseExternalId } from 'ui/utils/parse-externalid'; -export const BUILT_IN_UI = ['amazonec2', 'digitalocean', 'azure', 'exoscale', 'packet', 'rackspace', 'vmwarevsphere', 'aliyunecs', 'oci']; +export const BUILT_IN_UI = ['amazonec2', 'digitalocean', 'azure', 'exoscale', 'packet', 'pnap', 'rackspace', 'vmwarevsphere', 'aliyunecs', 'oci']; export const BUILT_IN_ICON_ONLY = ['openstack', 'otc']; function displayUrl(url) { diff --git a/app/styles/abstracts/_mixins.scss b/app/styles/abstracts/_mixins.scss index 2c0afe223..7539d770f 100755 --- a/app/styles/abstracts/_mixins.scss +++ b/app/styles/abstracts/_mixins.scss @@ -103,6 +103,10 @@ background-image: url('images/providers/packet.svg'); } +@mixin pnap { + background-image: url('images/providers/pnap.svg'); +} + @mixin rackspace { background-image: url('images/providers/rackspace.svg'); } diff --git a/app/styles/components/_catalog-box.scss b/app/styles/components/_catalog-box.scss index a6e2b2fc7..d77302460 100644 --- a/app/styles/components/_catalog-box.scss +++ b/app/styles/components/_catalog-box.scss @@ -199,6 +199,7 @@ $badge-partner: $warning; &.openstack { @include openstack; } &.other { @include other; } &.packet { @include packet; } + &.pnap { @include pnap; } &.rackspace { @include rackspace; } &.rancherdo { @include rancherdo;} &.vmwarevsphere { @include vmwarevsphere; } diff --git a/app/styles/pages/_host.scss b/app/styles/pages/_host.scss index a12ad5e28..641776974 100644 --- a/app/styles/pages/_host.scss +++ b/app/styles/pages/_host.scss @@ -56,6 +56,7 @@ &.oci { @include oci; } &.openstack { @include openstack; } &.packet { @include packet; } + &.pnap { @include pnap; } &.rackspace { @include rackspace; } &.vmwarevsphere { @include vmwarevsphere; } &.other { @include other; } 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 c83f7d262..2b725393a 100644 --- a/lib/global-admin/addon/components/cru-cloud-credential/component.js +++ b/lib/global-admin/addon/components/cru-cloud-credential/component.js @@ -33,6 +33,12 @@ const CRED_CONFIG_CHOICES = [ driver: 'oci', configField: 'ocicredentialConfig', }, + { + name: 'pnap', + displayName: 'phoenixNAP', + driver: 'pnap', + configField: 'pnapcredentialConfig', + }, { name: 'linode', displayName: 'Linode', @@ -110,7 +116,7 @@ export default Component.extend(ViewNewEdit, { }, }, - config: computed('cloudCredentialType', 'model.{amazonec2credentialConfig,azurecredentialConfig,digitaloceancredentialConfig,linodecredentialConfig,ocicredentialConfig,vmwarevspherecredentialConfig}', function() { + config: computed('cloudCredentialType', 'model.{amazonec2credentialConfig,azurecredentialConfig,digitaloceancredentialConfig,linodecredentialConfig,ocicredentialConfig,pnapcredentialConfig,vmwarevspherecredentialConfig}', function() { const { model } = this; const configField = this.getConfigField(); @@ -145,6 +151,7 @@ export default Component.extend(ViewNewEdit, { case 'linode': return 'modalAddCloudKey.saving.validating'; case 'oci': + case 'pnap': case 'azure': case 'vmware': default: diff --git a/lib/global-admin/addon/components/cru-cloud-credential/template.hbs b/lib/global-admin/addon/components/cru-cloud-credential/template.hbs index 0921846ed..1d3a41b25 100644 --- a/lib/global-admin/addon/components/cru-cloud-credential/template.hbs +++ b/lib/global-admin/addon/components/cru-cloud-credential/template.hbs @@ -258,6 +258,37 @@ + {{else if (eq cloudCredentialType "pnap")}} +
+ {{t "modalAddCloudKey.pnap.clientSecret.help" htmlSafe=true}} +
+