diff --git a/ui/admin/app/components/form/worker/create-worker-led/index.hbs b/ui/admin/app/components/form/worker/create-worker-led/index.hbs index c85e573f9..5ed7d7fbc 100644 --- a/ui/admin/app/components/form/worker/create-worker-led/index.hbs +++ b/ui/admin/app/components/form/worker/create-worker-led/index.hbs @@ -41,7 +41,7 @@ placeholder='/home/ubuntu/boundary' /> - {{#if (feature-flag 'byow-pki-upstream')}} + {{#if (not (feature-flag 'byow-pki-hcp-cluster-id'))}} { - Object.entries(featureEditions).forEach( - ([key, edition]) => - (ENV.featureEditions[key] = { ...features, ...edition }) - ); - }; - if (environment === 'development') { // ENV.APP.LOG_RESOLVER = true; // ENV.APP.LOG_ACTIVE_GENERATION = true; @@ -174,10 +126,13 @@ module.exports = function (environment) { // Default edition in development ENV.selectedEdition = 'enterprise'; - enableFeaturesInAllEditions({ - // Show edition toggle in UI in development - 'dev-edition-toggle': true, - }); + features.enableFeaturesInAllEditions( + { + // Show edition toggle in UI in development + 'dev-edition-toggle': true, + }, + ENV + ); } if (environment === 'test') { diff --git a/ui/admin/config/features.js b/ui/admin/config/features.js new file mode 100644 index 000000000..cad1ab6d0 --- /dev/null +++ b/ui/admin/config/features.js @@ -0,0 +1,54 @@ +const EDITION = process.env.EDITION || 'oss'; // Default edition is OSS + +const selectedEdition = EDITION; + +// Base edition declares available features, disabled by default. +const baseEdition = { + byow: false, + 'byow-pki-hcp-cluster-id': false, + 'json-credentials': false, + 'ssh-target': false, + 'static-credentials': false, + 'target-worker-filters-v2': false, + 'target-worker-filters-v2-ingress': false, + 'target-worker-filters-v2-hcp': false, + 'target-network-address': false, + 'vault-worker-filter': false, +}; +// Editions maps edition keys to their associated featuresets. +const featureEditions = {}; +featureEditions.oss = { + ...baseEdition, + byow: true, + 'json-credentials': true, + 'static-credentials': true, + 'target-worker-filters-v2': true, + 'target-network-address': true, +}; +featureEditions.enterprise = { + ...featureEditions.oss, + 'ssh-target': true, + 'target-worker-filters-v2-ingress': true, + 'vault-worker-filter': true, +}; +featureEditions.hcp = { + ...featureEditions.enterprise, + 'byow-pki-hcp-cluster-id': true, + 'target-worker-filters-v2-hcp': true, +}; + +/** + * Takes a set of features and enables them in all editions. + * For use in development and testing only. + */ +const enableFeaturesInAllEditions = (features = {}, ENV) => { + Object.entries(featureEditions).forEach( + ([key, edition]) => (ENV.featureEditions[key] = { ...features, ...edition }) + ); +}; + +module.exports = { + featureEditions, + selectedEdition, + enableFeaturesInAllEditions, +}; diff --git a/ui/admin/tests/acceptance/workers/create-test.js b/ui/admin/tests/acceptance/workers/create-test.js index d62e3f5d0..7d98fe115 100644 --- a/ui/admin/tests/acceptance/workers/create-test.js +++ b/ui/admin/tests/acceptance/workers/create-test.js @@ -47,7 +47,6 @@ module('Acceptance | workers | create', function (hooks) { assert.expect(2); const featuresService = this.owner.lookup('service:features'); featuresService.enable('byow-pki-hcp-cluster-id'); - featuresService.disable('byow-pki-upstream'); await visit(newWorkerURL); const labels = findAll('label.rose-form-label'); assert.dom(labels[0]).hasText('Boundary Cluster ID'); @@ -58,7 +57,6 @@ module('Acceptance | workers | create', function (hooks) { assert.expect(2); const featuresService = this.owner.lookup('service:features'); featuresService.disable('byow-pki-hcp-cluster-id'); - featuresService.enable('byow-pki-upstream'); await visit(newWorkerURL); const labels = findAll('label.rose-form-label'); assert.dom(labels[0]).doesNotIncludeText('Boundary Cluster ID'); diff --git a/ui/admin/tests/integration/components/form/worker/create-worker-led-test.js b/ui/admin/tests/integration/components/form/worker/create-worker-led-test.js index f374c9960..46f9fcdfe 100644 --- a/ui/admin/tests/integration/components/form/worker/create-worker-led-test.js +++ b/ui/admin/tests/integration/components/form/worker/create-worker-led-test.js @@ -21,7 +21,6 @@ module( hooks.beforeEach(function () { const featuresService = this.owner.lookup('service:features'); featuresService.enable('byow-pki-hcp-cluster-id'); - featuresService.disable('byow-pki-upstream'); }); test('it correctly populates the cluster id for an hcp dev cluster', async function (assert) {