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) {