/** * Copyright (c) HashiCorp, Inc. * SPDX-License-Identifier: MPL-2.0 */ import { get } from '@ember/object'; export default function generateExecUrl( router, { job, taskGroup, task, allocation } ) { const queryParams = {}; const namespace = get(job, 'namespace.name'); const region = get(job, 'region'); if (namespace) { queryParams.namespace = namespace; } if (region) { queryParams.region = region; } if (task) { const queryParamsOptions = { ...queryParams, }; if (allocation) { queryParamsOptions.allocation = get(allocation, 'shortId'); } return router.urlFor( 'exec.task-group.task', get(job, 'plainId'), get(taskGroup, 'name'), get(task, 'name'), { queryParams: queryParamsOptions, } ); } else if (taskGroup) { return router.urlFor( 'exec.task-group', get(job, 'plainId'), get(taskGroup, 'name'), { queryParams, } ); } else if (allocation) { if (get(allocation, 'taskGroup.tasks.length') === 1) { return router.urlFor( 'exec.task-group.task', get(job, 'plainId'), get(allocation, 'taskGroup.name'), get(allocation, 'taskGroup.tasks.firstObject.name'), { queryParams: { allocation: get(allocation, 'shortId'), ...queryParams, }, } ); } else { return router.urlFor( 'exec.task-group', get(job, 'plainId'), get(allocation, 'taskGroup.name'), { queryParams: { allocation: get(allocation, 'shortId'), ...queryParams, }, } ); } } else { return router.urlFor('exec', get(job, 'plainId'), { queryParams }); } }