mirror of
https://github.com/kemko/nomad.git
synced 2026-01-02 16:35:44 +03:00
* Scaffolding actions (#18639) * Task-level actions for job submissions and retrieval * FIXME: Temporary workaround to get ember dev server to pass exec through to 4646 * Update api/tasks.go Co-authored-by: Tim Gross <tgross@hashicorp.com> * Update command/agent/job_endpoint.go Co-authored-by: Tim Gross <tgross@hashicorp.com> * Diff and copy implementations * Action structs get their own file, diff updates to behave like our other diffs * Test to observe actions changes in a version update * Tests migrated into structs/diff_test and modified with PR comments in mind * APIActionToSTructsAction now returns a new value * de-comment some plain parts, remove unused action lookup * unused param in action converter --------- Co-authored-by: Tim Gross <tgross@hashicorp.com> * New endpoint: job/:id/actions (#18690) * unused param in action converter * backing out of parse_job level and moved toward new endpoint level * Adds taskName and taskGroupName to actions at job level * Unmodified job mock actions tests * actionless job test * actionless job test * Multi group multi task actions test * HTTP method check for GET, cleaner errors in job_endpoint_test * decomment * Actions aggregated at job model level (#18733) * Removal of temporary fix to proxy to 4646 * Run Action websocket endpoint (#18760) * Working demo for review purposes * removal of cors passthru for websockets * Remove job_endpoint-specific ws handlers and aimed at existing alloc exec handlers instead * PR comments adressed, no need for taskGroup pass, better group and task lookups from alloc * early return in action validate and removed jobid from req args per PR comments * todo removal, we're checking later in the rpc * boolean style change on tty * Action CLI command (#18778) * Action command init and stuck-notes * Conditional reqpath to aim at Job action endpoint * De-logged * General CLI command cleanup, observe namespace, pass action as string, get random alloc w group adherence * tab and varname cleanup * Remove action param from Allocations().Exec calls * changelog * dont nil-check acl --------- Co-authored-by: Tim Gross <tgross@hashicorp.com>
55 lines
1.6 KiB
JavaScript
55 lines
1.6 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
// @ts-check
|
|
import Service from '@ember/service';
|
|
import config from 'nomad-ui/config/environment';
|
|
import { getOwner } from '@ember/application';
|
|
import { inject as service } from '@ember/service';
|
|
|
|
export default class SocketsService extends Service {
|
|
@service system;
|
|
|
|
getTaskStateSocket(taskState, command) {
|
|
const mirageEnabled =
|
|
config.environment !== 'production' &&
|
|
config['ember-cli-mirage'] &&
|
|
config['ember-cli-mirage'].enabled !== false;
|
|
|
|
if (mirageEnabled) {
|
|
return new Object({
|
|
messageDisplayed: false,
|
|
|
|
send(e) {
|
|
if (!this.messageDisplayed) {
|
|
this.messageDisplayed = true;
|
|
this.onmessage({
|
|
data: `{"stdout":{"data":"${btoa(
|
|
'unsupported in Mirage\n\r'
|
|
)}"}}`,
|
|
});
|
|
} else {
|
|
this.onmessage({ data: e.replace('stdin', 'stdout') });
|
|
}
|
|
},
|
|
});
|
|
} else {
|
|
const protocol = window.location.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
const applicationAdapter = getOwner(this).lookup('adapter:application');
|
|
const prefix = `${
|
|
applicationAdapter.host || window.location.host
|
|
}/${applicationAdapter.urlPrefix()}`;
|
|
const region = this.system.activeRegion;
|
|
|
|
return new WebSocket(
|
|
`${protocol}//${prefix}/client/allocation/${taskState.allocation.id}` +
|
|
`/exec?task=${taskState.name}&tty=true&ws_handshake=true` +
|
|
(region ? `®ion=${region}` : '') +
|
|
`&command=${encodeURIComponent(`["${command}"]`)}`
|
|
);
|
|
}
|
|
}
|
|
}
|