Backport of [ui] Preserve HCL2 on stop/start via the web UI into release/1.6.x (#18241)
This pull request was automerged via backport-assistant
This commit is contained in:
parent
d5e3b7c262
commit
bd3f52d0e7
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
ui: maintain HCL2 jobspec when using Start Job in the web ui
|
||||||
|
```
|
|
@ -71,10 +71,8 @@ export default class Title extends Component {
|
||||||
*/
|
*/
|
||||||
@task(function* (withNotifications = false) {
|
@task(function* (withNotifications = false) {
|
||||||
const job = this.job;
|
const job = this.job;
|
||||||
const definition = yield job.fetchRawDefinition();
|
const specification = yield job.fetchRawSpecification();
|
||||||
|
job.set('_newDefinition', specification.Source);
|
||||||
delete definition.Stop;
|
|
||||||
job.set('_newDefinition', JSON.stringify(definition));
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
yield job.parse();
|
yield job.parse();
|
||||||
|
|
|
@ -117,7 +117,7 @@ export default function () {
|
||||||
200,
|
200,
|
||||||
{},
|
{},
|
||||||
JSON.stringify({
|
JSON.stringify({
|
||||||
Source: 'the job source v0',
|
Source: `job "${req.params.id}" {`,
|
||||||
Format: 'hcl2',
|
Format: 'hcl2',
|
||||||
VariableFlags: { X: 'x', Y: '42', Z: 'true' },
|
VariableFlags: { X: 'x', Y: '42', Z: 'true' },
|
||||||
Variables: 'var file content',
|
Variables: 'var file content',
|
||||||
|
|
|
@ -32,17 +32,12 @@ export async function purgeJob() {
|
||||||
|
|
||||||
export function expectStartRequest(assert, server, job) {
|
export function expectStartRequest(assert, server, job) {
|
||||||
const expectedURL = jobURL(job);
|
const expectedURL = jobURL(job);
|
||||||
|
|
||||||
const request = server.pretender.handledRequests
|
const request = server.pretender.handledRequests
|
||||||
.filterBy('method', 'POST')
|
.filterBy('method', 'POST')
|
||||||
.find((req) => req.url === expectedURL);
|
.find((req) => req.url === expectedURL);
|
||||||
|
|
||||||
const requestPayload = JSON.parse(request.requestBody).Job;
|
|
||||||
|
|
||||||
assert.ok(request, 'POST URL was made correctly');
|
assert.ok(request, 'POST URL was made correctly');
|
||||||
assert.ok(
|
|
||||||
requestPayload.Stop == null,
|
|
||||||
'The Stop signal is not sent in the POST request'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function expectError(assert, title) {
|
export async function expectError(assert, title) {
|
||||||
|
|
|
@ -40,6 +40,7 @@ module('Integration | Component | job-page/periodic', function (hooks) {
|
||||||
this.server = startMirage();
|
this.server = startMirage();
|
||||||
this.server.create('namespace');
|
this.server.create('namespace');
|
||||||
this.server.create('node-pool');
|
this.server.create('node-pool');
|
||||||
|
this.server.create('node');
|
||||||
});
|
});
|
||||||
|
|
||||||
hooks.afterEach(function () {
|
hooks.afterEach(function () {
|
||||||
|
@ -194,7 +195,7 @@ module('Integration | Component | job-page/periodic', function (hooks) {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Starting a job sends a post request for the job using the current definition', async function (assert) {
|
test('Starting a job sends a post request for the job using the current definition', async function (assert) {
|
||||||
assert.expect(2);
|
assert.expect(1);
|
||||||
|
|
||||||
const mirageJob = this.server.create('job', 'periodic', {
|
const mirageJob = this.server.create('job', 'periodic', {
|
||||||
childrenCount: 0,
|
childrenCount: 0,
|
||||||
|
|
|
@ -32,6 +32,7 @@ module('Integration | Component | job-page/service', function (hooks) {
|
||||||
this.server = startMirage();
|
this.server = startMirage();
|
||||||
this.server.create('namespace');
|
this.server.create('namespace');
|
||||||
this.server.create('node-pool');
|
this.server.create('node-pool');
|
||||||
|
this.server.create('node');
|
||||||
});
|
});
|
||||||
|
|
||||||
hooks.afterEach(function () {
|
hooks.afterEach(function () {
|
||||||
|
@ -109,7 +110,7 @@ module('Integration | Component | job-page/service', function (hooks) {
|
||||||
});
|
});
|
||||||
|
|
||||||
test('Starting a job sends a post request for the job using the current definition', async function (assert) {
|
test('Starting a job sends a post request for the job using the current definition', async function (assert) {
|
||||||
assert.expect(2);
|
assert.expect(1);
|
||||||
|
|
||||||
const mirageJob = makeMirageJob(this.server, { status: 'dead' });
|
const mirageJob = makeMirageJob(this.server, { status: 'dead' });
|
||||||
await this.store.findAll('job');
|
await this.store.findAll('job');
|
||||||
|
@ -137,7 +138,6 @@ module('Integration | Component | job-page/service', function (hooks) {
|
||||||
await render(commonTemplate);
|
await render(commonTemplate);
|
||||||
|
|
||||||
await startJob();
|
await startJob();
|
||||||
|
|
||||||
await expectError(assert, 'Could Not Start Job');
|
await expectError(assert, 'Could Not Start Job');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue