diff --git a/awx/ui_next/src/api/models/JobTemplates.js b/awx/ui_next/src/api/models/JobTemplates.js
index cec450ce0d..58060371df 100644
--- a/awx/ui_next/src/api/models/JobTemplates.js
+++ b/awx/ui_next/src/api/models/JobTemplates.js
@@ -13,7 +13,6 @@ class JobTemplates extends InstanceGroupsMixin(NotificationsMixin(Base)) {
this.disassociateLabel = this.disassociateLabel.bind(this);
this.readCredentials = this.readCredentials.bind(this);
this.readAccessList = this.readAccessList.bind(this);
- this.generateLabel = this.generateLabel.bind(this);
}
launch(id, data) {
@@ -24,8 +23,11 @@ class JobTemplates extends InstanceGroupsMixin(NotificationsMixin(Base)) {
return this.http.get(`${this.baseUrl}${id}/launch/`);
}
- associateLabel(id, label) {
- return this.http.post(`${this.baseUrl}${id}/labels/`, label);
+ associateLabel(id, label, orgId) {
+ return this.http.post(`${this.baseUrl}${id}/labels/`, {
+ name: label.name,
+ organization: orgId,
+ });
}
disassociateLabel(id, label) {
@@ -35,15 +37,10 @@ class JobTemplates extends InstanceGroupsMixin(NotificationsMixin(Base)) {
});
}
- generateLabel(id, label, orgId) {
- return this.http.post(`${this.baseUrl}${id}/labels/`, {
- name: label.name,
- organization: orgId,
- });
- }
-
readCredentials(id, params) {
- return this.http.get(`${this.baseUrl}${id}/credentials/`, { params });
+ return this.http.get(`${this.baseUrl}${id}/credentials/`, {
+ params,
+ });
}
associateCredentials(id, credentialId) {
@@ -60,7 +57,9 @@ class JobTemplates extends InstanceGroupsMixin(NotificationsMixin(Base)) {
}
readAccessList(id, params) {
- return this.http.get(`${this.baseUrl}${id}/access_list/`, { params });
+ return this.http.get(`${this.baseUrl}${id}/access_list/`, {
+ params,
+ });
}
}
diff --git a/awx/ui_next/src/screens/Template/JobTemplateAdd/JobTemplateAdd.jsx b/awx/ui_next/src/screens/Template/JobTemplateAdd/JobTemplateAdd.jsx
index f21887d483..f55d25bbdd 100644
--- a/awx/ui_next/src/screens/Template/JobTemplateAdd/JobTemplateAdd.jsx
+++ b/awx/ui_next/src/screens/Template/JobTemplateAdd/JobTemplateAdd.jsx
@@ -36,16 +36,10 @@ function JobTemplateAdd() {
}
function submitLabels(templateId, labels = [], organizationId) {
- const associationPromises = labels
- .filter(label => !label.isNew)
- .map(label => JobTemplatesAPI.associateLabel(templateId, label));
- const creationPromises = labels
- .filter(label => label.isNew)
- .map(label =>
- JobTemplatesAPI.generateLabel(templateId, label, organizationId)
- );
-
- return Promise.all([...associationPromises, ...creationPromises]);
+ const associationPromises = labels.map(label =>
+ JobTemplatesAPI.associateLabel(templateId, label, organizationId)
+ );
+ return Promise.all([...associationPromises]);
}
function submitInstanceGroups(templateId, addedGroups = []) {
diff --git a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.jsx b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.jsx
index 2893dd82c5..73d90a8a26 100644
--- a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.jsx
+++ b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.jsx
@@ -127,19 +127,13 @@ class JobTemplateEdit extends Component {
const disassociationPromises = removed.map(label =>
JobTemplatesAPI.disassociateLabel(template.id, label)
);
- const associationPromises = added
- .filter(label => !label.isNew)
- .map(label => JobTemplatesAPI.associateLabel(template.id, label));
- const creationPromises = added
- .filter(label => label.isNew)
- .map(label =>
- JobTemplatesAPI.generateLabel(template.id, label, organizationId)
- );
+ const associationPromises = added.map(label => {
+ return JobTemplatesAPI.associateLabel(template.id, label, organizationId);
+ });
const results = await Promise.all([
...disassociationPromises,
...associationPromises,
- ...creationPromises,
]);
return results;
}
diff --git a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
index 42fd375188..d00cc655a0 100644
--- a/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
+++ b/awx/ui_next/src/screens/Template/JobTemplateEdit/JobTemplateEdit.test.jsx
@@ -195,8 +195,8 @@ describe('', () => {
inventory: 1,
};
const labels = [
- { id: 3, name: 'Foo', isNew: true },
- { id: 4, name: 'Bar', isNew: true },
+ { id: 3, name: 'Foo' },
+ { id: 4, name: 'Bar' },
{ id: 5, name: 'Maple' },
{ id: 6, name: 'Tree' },
];
@@ -230,8 +230,7 @@ describe('', () => {
delete expected.type;
expect(JobTemplatesAPI.update).toHaveBeenCalledWith(1, expected);
expect(JobTemplatesAPI.disassociateLabel).toHaveBeenCalledTimes(2);
- expect(JobTemplatesAPI.associateLabel).toHaveBeenCalledTimes(2);
- expect(JobTemplatesAPI.generateLabel).toHaveBeenCalledTimes(2);
+ expect(JobTemplatesAPI.associateLabel).toHaveBeenCalledTimes(4);
});
test('should navigate to job template detail when cancel is clicked', async () => {
diff --git a/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx b/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
index 174116c9e6..2ffcc4b6c6 100644
--- a/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
+++ b/awx/ui_next/src/screens/Template/shared/LabelSelect.jsx
@@ -57,13 +57,26 @@ function LabelSelect({ value, placeholder, onChange, onError }) {