Icu 13895 create create new tags route and view (#2368)

* feat: 🎸 create canSetWorkerTags ability for workers

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 add create-tags route

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 update worker serializer for adding api_tags

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 add setApiTags method on worker model

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* style: 💄 update list-wrapper styles after hds upgrade

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 add create-tags component for workers

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 add creat-tags route and view

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 add acceptance tests for worker create-tags workflow

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 add test for worker tag creation

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 fix test setup for workers

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 add license headers and update setupTest import

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 fix normal serialize test for worker

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 create worker PKI type const

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 add comments to methods and actions

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* feat: 🎸 create Tag class to use in multiple places

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 move apiTags to route controller

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 move routeWillChange logic to route

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 routeWillChange logic updates

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 remove unused services

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* test: 💍 add missing controller tests

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 small update to API tags description

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 add tracked to Tag class

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 use willTransition vs routeWillChange event

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895

* refactor: 💡 use controllerFor in route

✅ Closes: https://hashicorp.atlassian.net/browse/ICU-13895
This commit is contained in:
Cameron Perera authored and cameronperera committed 2024-07-16 15:48:23 -05:00
1 parent 87f84e0c24
commit 4e57c863ab
27 files changed
+741 -32

No files matched your search

+4
View File
@@ -17,4 +17,8 @@ export default class WorkerAbility extends ModelAbility {
get canCreateWorkerLed() {
return this.hasAuthorizedCollectionAction('create:worker-led');
}
get canSetWorkerTags() {
return this.hasAuthorizedAction('set-worker-tags');
}
}
+14 -2
View File
@@ -6,6 +6,8 @@
import GeneratedWorkerModel from '../generated/models/worker';
import { attr } from '@ember-data/model';
export const TYPE_WORKER_PKI = 'pki';
export const TAG_TYPE_CONFIG = 'config';
export const TAG_TYPE_API = 'api';
@@ -26,7 +28,7 @@ export default class WorkerModel extends GeneratedWorkerModel {
* @type {boolean}
*/
get isPki() {
return this.type === 'pki';
return this.type === TYPE_WORKER_PKI;
}
/**
@@ -96,7 +98,6 @@ export default class WorkerModel extends GeneratedWorkerModel {
@attr({
description: 'The api tags set for the worker.\nOutput only.',
readOnly: true,
})
api_tags;
@@ -120,4 +121,15 @@ export default class WorkerModel extends GeneratedWorkerModel {
},
});
}
/**
* Method to set api tags on the worker.
* @param {object} apiTags
* @return {Promise}
*/
setApiTags(apiTags) {
return this.save({
adapterOptions: { method: 'set-worker-tags', apiTags },
});
}
}
+22 -1
View File
@@ -19,11 +19,19 @@ export default class WorkerSerializer extends ApplicationSerializer {
let serialized = super.serialize(...arguments);
const workerGeneratedAuthToken =
snapshot?.adapterOptions?.workerGeneratedAuthToken;
if (workerGeneratedAuthToken)
if (workerGeneratedAuthToken) {
serialized = this.serializeWithGeneratedToken(
snapshot,
workerGeneratedAuthToken,
);
}
const apiTags = snapshot?.adapterOptions?.apiTags;
if (apiTags) {
serialized = this.serializeWithApiTags(snapshot, apiTags);
} else {
// remove api_tags from payload if not set
delete serialized.api_tags;
}
return serialized;
}
@@ -39,4 +47,17 @@ export default class WorkerSerializer extends ApplicationSerializer {
worker_generated_auth_token: workerGeneratedAuthToken,
};
}
/**
* Returns a payload with api_tags and version serialized.
* @param {Snapshot} snapshot
* @param {object} apiTags
* @return {object}
*/
serializeWithApiTags(snapshot, apiTags) {
return {
version: snapshot.attr('version'),
api_tags: apiTags,
};
}
}