Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[feat] Nomad Job Templates #15746

Merged
merged 16 commits into from
Feb 2, 2023
Merged

[feat] Nomad Job Templates #15746

merged 16 commits into from
Feb 2, 2023

Conversation

philrenaud
Copy link
Contributor

@philrenaud philrenaud commented Jan 10, 2023

Resolves #15545

Provides the concept of "job templates" for the purpose of helping new Nomad users learn different job types, and makes it more convenient to "templatize" jobs for future use.

Does a few things:

  • Opens up variables to be saved at nomad/job-templates/TEMPLATE_NAME. This can be most easily done through the UI but, since they are variables under the hood, can be done via API, CLI and Variables UI as well.
  • One saved there, they can be accessed via nomad job init by passing in a -template flag. So, if you save a variable at nomad/job-templates/foo, you can use nomad job init -template=foo to write that saved template to an example.nomad file.
  • Similarly, those templates become available within the UI "Run Job" flow in a convenient way. Anyone with job write capabilities can use templates, and anyone with "Write Variable" can further manage, modify, and remove templates.
  • Adds 4 "Default" job templates to the UI to help make different job types easier to understand for new users
  • Adds some general UI flows to make creating and saving job templates (variables beneath the hood) a lot easier.

Creating a new template:

image

Selecting from a template when running a job:

image

Managing templates:

image

philrenaud and others added 5 commits December 20, 2022 16:41
…es (#15570)

* Extend variables under the nomad path prefix to allow for job-templates

* Add job-templates to error message hinting
* chore: add

* test: component API

* ui: component template

* refact: remove  bc naming collission

* styles: remove SASS var causing conflicts
* Disallows variables at exactly nomad/job-templates

* idiomatic refactor
* Adding a string flag for templates on job init

* data-down actions-up version of a custom template editor within variable

* Dont force grid on job template editor

* list-templates flag started

* Correctly slice from end of path name

* Pre-review cleanup

* Variable form acceptance test for job template editing

* Some review cleanup

* List Job templates test

* Example from template test

* Using must.assertions instead of require etc
* ui: add new routes

* chore: update file directory

* ui: add choose template button

* test: button and page navigation

* refact: update var name

* ui: use `Button` component from `HDS` (#15607)

* ui: integrate  buttons

* refact: remove  helper

* ui: remove icons on non-tertiary buttons

* refact: update normalize method for key/value pairs (#15612)

* `revert`: `onCancel` for `JobDefinition`

The `onCancel` method isn't included in the component API for `JobEditor` and the primary cancel behavior exists outside of the component. With the exception of the `JobDefinition` page where we include this button in the top right of the component instead of next to the `Plan` button.

* style: increase button size

* style: keep lime green

* ui: select template (#15613)

* ui: deprecate unused component

* ui: deprecate tests

* ui: jobs.run.templates.index

* ui: update logic to handle templates

* refact: revert key/value changes

* style: padding for cards + buttons

* temp: fixtures for mirage testing

* Revert "refact: revert key/value changes"

This reverts commit 124e95d12140be38fc921f7e15243034092c4063.

* ui: guard template for unsaved job

* ui: handle reading template variable

* Revert "refact: update normalize method for key/value pairs (#15612)"

This reverts commit 6f5ffc9.

* revert: remove test fixtures

* revert: prettier problems

* refact: test doesnt need filter expression

* styling: button sizes and responsive cards

* refact: remove route guarding

* ui: update variable adapter

* refact: remove model editing behavior

* refact: model should query variables to populate editor

* ui: clear qp on exit

* refact: cleanup deprecated API

* refact: query all namespaces

* refact: deprecate action

* ui: rely on  collection

* refact: patch deprecate transition API

* refact: patch test to expect namespace qp

* styling: padding, conditionals

* ui: flashMessage on 404

* test: update for o(n+1) query
@github-actions
Copy link

github-actions bot commented Jan 10, 2023

Ember Test Audit comparison

main 78838f2 change
passes 1453 1463 +10
failures 0 0 0
flaky 0 0 0
duration 11m 52s 296ms 12m 29s 772ms +37s 476ms

* refact: remove unused code

* refact: add type safety

* test: select template flow

* test: add data-test attrs

* chore: remove dead code

* test: create new job flow

* ui: add create button

* ui: create job template

* refact: no need for wildcard

* refact:  record instead of delete

* styling: spacing

* ui: add error handling and form validation to job create template (#15767)

* ui: handle server side errors

* ui: show error to prevent duplicate

* refact: conditional namespace

* ui: save as template flow (#15787)

* bug:  patches failing tests associated with `pretender` (#15812)

* refact: update assertion

* refact: test set-up
@github-actions
Copy link

github-actions bot commented Jan 17, 2023

Ember Asset Size action

As of 78838f2

Files that got Bigger 🚨:

File raw gzip
nomad-ui.js +71.2 kB +9.75 kB
vendor.js +119 kB +15.3 kB
nomad-ui.css +115 kB +15 kB

Files that stayed the same size 🤷‍:

File raw gzip
vendor.css 0 B 0 B

* ui: manager list view

* test: edit flow

* refact: deprecate column-helper
* ui: manager list view

* refact: update title

* refact: update permissions

* ui: template edit page

* bug: typo

* refact: update toast messages

* bug:  clear selections on exit (#15827)

* bug:  clear controllers on exit

* test: mirage config changes (#15828)

* refact: deprecate column-helper

* style: update z-index for HDS

* Revert "style: update z-index for HDS"

This reverts commit d3d87ce.

* refact: update delete button

* refact: edit redirect

* refact: patch reactivity issues

* styling: fixed width

* refact: override defaults

* styling: edit text causing overflow

* styling:  add inline text

Co-authored-by: Phil Renaud <[email protected]>

* bug: edit `text` to `template`

Co-authored-by: Phil Renaud <[email protected]>

Co-authored-by: Phil Renaud <[email protected]>
* refact: edit names

* bug:  set correct ref to store

* chore: trim whitespace:

* test: delete flow
* Initialized default jobs

* More jobs scaffolded

* Better commenting on a couple example job specs

* Adapter doing the work

* fall back to epic config

* Label format helper and custom serialization logic

* Test updates to account for a never-empty state

* Test suite uses settled and maintain RecordArray in adapter return

* Updates to hello-world and variables example jobspecs

* Parameterized job gets optional payload output

* Formatting changes for param and service discovery job templates

* Multi-group service discovery job
* Basic test for default templates

* Percy snapshot for manage page
Copy link
Contributor

@ChaiWithJai ChaiWithJai left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Left some minor comments.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

☂️ Nomad Job Templates
2 participants