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