From 6fcc74321753dcc637f078f0a4d7819b558fc298 Mon Sep 17 00:00:00 2001
From: hashicc <191911133+hashicc@users.noreply.github.com>
Date: Mon, 24 Nov 2025 16:37:11 -0500
Subject: [PATCH] =?UTF-8?q?chore:=20=F0=9F=A4=96=20use=20statically=20refe?=
=?UTF-8?q?renced=20components=20for=20host=20form=20(#3072)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
* chore: 🤖 use statically referenced components for host form
* Add missing copyright headers
---
ui/admin/app/components/form/host/index.hbs | 27 +++++++-------
ui/admin/app/components/form/host/index.js | 40 +++++++++++++++++++++
2 files changed, 52 insertions(+), 15 deletions(-)
create mode 100644 ui/admin/app/components/form/host/index.js
diff --git a/ui/admin/app/components/form/host/index.hbs b/ui/admin/app/components/form/host/index.hbs
index fcd7595be..11505c8da 100644
--- a/ui/admin/app/components/form/host/index.hbs
+++ b/ui/admin/app/components/form/host/index.hbs
@@ -4,20 +4,17 @@
}}
{{#if @model.compositeType}}
- {{component
- (concat 'form/host/' @model.compositeType)
- model=@model
- submit=@submit
- cancel=@cancel
- }}
+
{{else}}
- {{! create-and-add-host cancel route doesn't
-have a model and this else part is required to prevent
-erroring out here. This has been noted in the tech debt doc to further investigate }}
- {{component
- (concat 'form/host/' 'static')
- model=@model
- submit=@submit
- cancel=@cancel
- }}
+ {{! create-and-add-host cancel route doesn't have a model and this else part is required
+ to prevent erroring out here. This has been noted in the tech debt doc to further investigate }}
+
{{/if}}
\ No newline at end of file
diff --git a/ui/admin/app/components/form/host/index.js b/ui/admin/app/components/form/host/index.js
new file mode 100644
index 000000000..e03b7e970
--- /dev/null
+++ b/ui/admin/app/components/form/host/index.js
@@ -0,0 +1,40 @@
+/**
+ * Copyright (c) HashiCorp, Inc.
+ * SPDX-License-Identifier: BUSL-1.1
+ */
+
+import Component from '@glimmer/component';
+import { assert } from '@ember/debug';
+import {
+ TYPE_HOST_CATALOG_PLUGIN_AWS,
+ TYPE_HOST_CATALOG_PLUGIN_AZURE,
+ TYPE_HOST_CATALOG_PLUGIN_GCP,
+ TYPE_HOST_CATALOG_STATIC,
+} from 'api/models/host-catalog';
+import awsHostFormComponent from './aws';
+import azureHostFormComponent from './azure';
+import gcpHostFormComponent from './gcp';
+import staticHostFormComponent from './static';
+
+const modelCompositeTypeToComponent = {
+ [TYPE_HOST_CATALOG_PLUGIN_AWS]: awsHostFormComponent,
+ [TYPE_HOST_CATALOG_PLUGIN_AZURE]: azureHostFormComponent,
+ [TYPE_HOST_CATALOG_PLUGIN_GCP]: gcpHostFormComponent,
+ [TYPE_HOST_CATALOG_STATIC]: staticHostFormComponent,
+};
+
+export default class FormHostIndex extends Component {
+ /**
+ * Returns the host form component associated with the model's composite type
+ * @type {Component}
+ */
+ get hostFormComponent() {
+ const component =
+ modelCompositeTypeToComponent[this.args.model.compositeType];
+ assert(
+ `Mapped component must exist for host composite type: ${this.args.model.compositeType}`,
+ component,
+ );
+ return component;
+ }
+}