2438 Commits

Author SHA1 Message Date
Austin Culter
3ca728819b [ui] Prevent double-open for cmd+click on vars index links (#24316)
* Check for target on click to prevent double-opening cmd+clicked links on var index

* Create cl entry 24316

* Move the dont-open-twice logic into the variable-paths component
2024-10-29 15:50:09 -04:00
Phil Renaud
1f9b92f079 Fix an issue where variables index dropdown would appear underneath table headers (#24162) 2024-10-17 23:51:07 -04:00
Phil Renaud
ec53cccbc8 Adds an ellipsis and max width to profile nav token name (#24240) 2024-10-17 23:50:24 -04:00
Phil Renaud
3aaf6d8791 Upgrades Percy and Percy CLI (#24170) 2024-10-17 23:49:48 -04:00
Phil Renaud
dc45066ae7 [ui] Separate Diffs and Versions from the /versions endpoint as far as Ember is concerned (#24145)
* Separate Diffs and Versions from the /versions endpoint as far as Ember is concerned

* Back to async true

* Handle undefined-diffs case
2024-10-08 12:13:01 -04:00
Phil Renaud
2fc7544ff3 [ui] Modify variable access permissions for UI users with write in only certain namespaces (#24073)
* Modify variable access permissions for UI users with write in only certain namespaces

* Addressing some PR comments

* Variables index namespaces on * and ability checks are now namespaced

* Mistook Delete for Destroy, and update unit tests for mult-return allPaths
2024-10-02 16:02:40 -04:00
Phil Renaud
c07806e7fd Match styling from other page titles and get above z-index of the timeline (#24068) 2024-09-26 12:34:45 -04:00
Phil Renaud
e206993d49 Feature: Golden Versions (#24055)
* TaggedVersion information in structs, rather than job_endpoint (#23841)

* TaggedVersion information in structs, rather than job_endpoint

* Test for taggedVersion description length

* Some API plumbing

* Tag and Untag job versions (#23863)

* Tag and Untag at API level on down, but am I unblocking the wrong thing?

* Code and comment cleanup

* Unset methods generally now I stare long into the namespace abyss

* Namespace passes through with QueryOptions removed from a write requesting struct

* Comment and PR review cleanup

* Version back to VersionStr

* Generally consolidate unset logic into apply for version tagging

* Addressed some PR comments

* Auth check and RPC forwarding

* uint64 instead of pointer for job version after api layer and renamed copy

* job tag command split into apply and unset

* latest-version convenience handling moved to CLI command level

* CLI tests for tagging/untagging

* UI parts removed

* Add to job table when unsetting job tag on latest version

* Vestigial no more

* Compare versions by name and version number with the nomad history command (#23889)

* First pass at passing a tagname and/or diff version to plan/versions requests

* versions API now takes compare_to flags

* Job history command output can have tag names and descriptions

* compare_to to diff-tag and diff-version, plus adding flags to history command

* 0th version now shows a diff if a specific diff target is requested

* Addressing some PR comments

* Simplify the diff-appending part of jobVersions and hide None-type diffs from CLI

* Remove the diff-tag and diff-version parts of nomad job plan, with an eye toward making them a new top-level CLI command soon

* Version diff tests

* re-implement JobVersionByTagName

* Test mods and simplification

* Documentation for nomad job history additions

* Prevent pruning and reaping of TaggedVersion jobs (#23983)

tagged versions should not count against JobTrackedVersions
i.e. new job versions being inserted should not evict tagged versions

and GC should not delete a job if any of its versions are tagged

Co-authored-by: Daniel Bennett <dbennett@hashicorp.com>

---------

Co-authored-by: Daniel Bennett <dbennett@hashicorp.com>

* [ui] Version Tags on the job versions page (#24013)

* Timeline styles and their buttons modernized, and tags added

* styled but not yet functional version blocks

* Rough pass at edit/unedit UX

* Styles consolidated

* better UX around version tag crud, plus adapter and serializers

* Mirage and acceptance tests

* Modify percy to not show time-based things

---------

Co-authored-by: Daniel Bennett <dbennett@hashicorp.com>

* Job revert command and API endpoint can take a string version tag name (#24059)

* Job revert command and API endpoint can take a string version tag name

* RevertOpts as a signature-modified alternative to Revert()

* job revert CLI test

* Version pointers in endpoint tests

* Dont copy over the tag when a job is reverted to a version with a tag

* Convert tag name to version number at CLI level

* Client method for version lookup by tag

* No longer double-declaring client

* [ui] Add tag filter to the job versions page (#24064)

* Rough pass at the UI for version diff dropdown

* Cleanup and diff fetching via adapter method

* TaggedVersion now VersionTag (#24066)

---------

Co-authored-by: Daniel Bennett <dbennett@hashicorp.com>
2024-09-25 19:59:16 -04:00
Phil Renaud
e65767fbf0 [ui] Ember test suite upgraded (#24020)
* Ember test suite upgraded

* Switch up the order for the sake of testem

* Use the built-in ember test helper render for job editor rendering
2024-09-20 17:01:03 -04:00
Phil Renaud
483506873e Revert "Pin body-parser to resolve an outdated dep problem (#23954)" (#23970)
This reverts commit 51caca1a85.
2024-09-16 11:44:03 -04:00
Phil Renaud
51caca1a85 Pin body-parser to resolve an outdated dep problem (#23954) 2024-09-13 13:59:21 -04:00
Phil Renaud
c2bb18e167 Pin path-to-regexp with yarn1 syntax (#23955) 2024-09-13 13:51:29 -04:00
dependabot[bot]
f579b4add1 chore(deps): bump ws from 7.5.9 to 7.5.10 in /ui (#23368)
Bumps [ws](https://github.com/websockets/ws) from 7.5.9 to 7.5.10.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-13 10:05:28 -04:00
Phil Renaud
5fcec1f8cc [ui] Show "Scaled Down" as a valid job status when task groups' counts are set to zero (#23829)
* Scaled Down as a status

* Scaled Down as a steady-state job panel status as well

* Test for badge status and changelog
2024-08-19 13:45:19 -04:00
Phil Renaud
fbd8d62955 Check for target on click to prevent double-opening cmd+clicked links on jobs index (#23832) 2024-08-19 10:20:24 -04:00
Adrian Todorov
b1212bae59 Fix a Sentinel policy template (#23686)
Fix a multiline comment missing an opening `#`
2024-07-31 14:18:14 -04:00
Phil Renaud
08eab0045a [ui] Unescape csi/ in plugin GET requests (#23625)
* Unescape csi/ in plugin GET requests

* CSI de-prefixing no longer necessary in mirage mocked endpoint
2024-07-26 13:19:42 -04:00
Phil Renaud
5df6fe6a57 [ui] Pack metadata booleanified and added to the statuses endpoint (#23404)
* Pack metadata booleanified and added to the statuses endpoint

* Simplify job.IsPack declaration
2024-07-19 11:16:43 -04:00
Phil Renaud
75722ef93e Actions pass job id instead of job name (#23553) 2024-07-11 14:55:37 -04:00
Phil Renaud
370952e390 didUpdateAttributes manually called on modify (#23548) 2024-07-11 14:55:01 -04:00
Phil Renaud
0324e781d4 [ui] Global token CRUD in the web UI (#23506)
* First pass at global token creation and regional awareness at token fetch time

* Reset and refetch token when you switch region but stay in place

* Ugly and functional global token save

* Tests and log cleanup
2024-07-11 14:54:39 -04:00
Adrian Todorov
622995df42 fix link to point to Sentinel Enfrocement Levels (#23531) 2024-07-11 12:37:20 -04:00
Adrian Todorov
69d2eed808 Improve the restrict-images Sentinel policy template to only apply to Docker/Podman tasks and to handle version numbers starting with v (#23530) 2024-07-11 12:36:57 -04:00
Phil Renaud
6560a0ce02 [ui] Generalized namespace handling, generalized facet searching, node pools facet search (#23468)
* Generalized namespace handling, generalized facet searching, node pools facet search

* Testfixes for namespace facet on jobs list

* Filter or not, need to watch for * namespaces
2024-07-08 16:57:11 -04:00
Phil Renaud
7cf6332632 [ui] When a job is deleted in the background, wait until redirect before cache unload (#23492)
* Wait until the job page is moved-off before unloading the job from ember data cache

* handle transitionAborted error
2024-07-04 17:04:30 -04:00
Phil Renaud
bbd1bb3485 Read-based checks for viewing templates and write-based checks for saving them (#23458) 2024-06-28 17:30:56 -04:00
dependabot[bot]
fee2417e7c build(deps-dev): bump ember-cli-sass from 10.0.1 to 11.0.1 in /ui
Bumps [ember-cli-sass](https://github.com/adopted-ember-addons/ember-cli-sass) from 10.0.1 to 11.0.1.
- [Release notes](https://github.com/adopted-ember-addons/ember-cli-sass/releases)
- [Changelog](https://github.com/adopted-ember-addons/ember-cli-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/adopted-ember-addons/ember-cli-sass/commits/v11.0.1)

---
updated-dependencies:
- dependency-name: ember-cli-sass
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-06-28 20:42:36 +00:00
Phil Renaud
54aafa574d [ui] Jobs list should handle 502s and 504s gracefully (#23427)
* UI handles 502s and 504s gracefully

* Test and cleanup
2024-06-26 21:51:18 -04:00
Phil Renaud
81d4f364b1 [ui] Squashing Ember deprecations (#22424)
* Now that message is a gettable on the task-event model, no longer needs to be attrs-set at serializer

* xstate future-proofing default prop
2024-06-19 09:02:53 -04:00
Phil Renaud
b92afa5b4a [ui] Helios page headers added to the administration section (#23366)
* Helios page headers added to the administration section

* data-test-title mirage helper missed on policy page
2024-06-18 12:37:51 -04:00
Phil Renaud
5aad029ddb [ui] Dont show keyboard hints when a user is trying to take a screenshot (#23365)
* Dont show keyboard hints when a user is trying to take a screenshot

* Oh hey metaKey is its own special thing
2024-06-18 12:37:05 -04:00
Phil Renaud
8e589a9319 [ui] Add "stopped" as a valid status on jobs index/job detail (#23328)
* Stopped status passed through to the statuses endpoint and observed on job model and steady-state panel

* Status passed to statuses endpoint and test for FE model statuses
2024-06-14 23:33:00 -04:00
Phil Renaud
eacf47a484 [ui] Remove simulacral allocation stat in favor of live-updating one (#23306)
* Remove simulacral allocation stat in favor of live-updating one

* Tests remove dependency on job-summary as well
2024-06-14 09:23:31 -04:00
Phil Renaud
d34943435d [ui] Rework of node/job attributes/meta using PathTree (#23290)
* Rework of attributes using pathTree

* Pack meta reintroduced and made local

* attributes table test updated for new pathTree syntax

* removed flat import and extended the PathTree type signature to include prefix

* Slightly darken the is-faded text in tables
2024-06-12 14:28:17 -04:00
Phil Renaud
a933292897 Sanitize params input to alert a user when their scenario is invalid (#23261) 2024-06-07 11:12:21 -04:00
Phil Renaud
784ec507b8 Omit the current-time-displaying components during our visual diff tests (#22435) 2024-05-31 13:41:26 -04:00
Phil Renaud
ddfadca618 Checking for the type of event param before executing a lazy click (#22429) 2024-05-31 13:24:22 -04:00
Phil Renaud
014f5145dc Lockfile and bindata_assetfs recompiled on latest main (#22434) 2024-05-31 13:23:59 -04:00
Phil Renaud
36c2439503 [ui] Tests for Sentinel Policies (#22398)
* Tests for Sentinel Policies UI

* Further sentinel tests

* job allocations test reinstated
2024-05-31 10:38:54 -04:00
Phil Renaud
86ee56b8c5 [ui] Jobs index page badge for when a job has a paused task (#22392)
* Adds a badge on the jobs index page if any task within any allocation of a running job is currently paused

* Snapshot and acceptance tests for paused states

* Cleared yarn cache

* Remove MirageScenario from the test dependency chain

* Logging before toString

* Cardinal sin of time-based test execution

* Maybe weve been lucky for years and the clientStatus has always been running for this test by happenstance

* Back away from the time-based and toward the settled() approach
2024-05-30 21:18:35 -04:00
Phil Renaud
1412e65bbd [ui] Dropdowns on the jobs index page get a max-height and filtering (#20626)
* Adds a max-height to dropdowns lest they get any funny ideas

* Filter filtering
2024-05-29 21:01:57 -04:00
Phil Renaud
e09b29113c [ui] Helios and Power Select upgrades (#22328)
* Helios and Power Select upgrades

* Renamed namespaced contextual components
2024-05-29 17:00:56 -04:00
Phil Renaud
8a9d58ae8f Storybook scripts and references removed (#22232) 2024-05-29 16:34:26 -04:00
Phil Renaud
811b7e85f9 [ui] Better UX with filter expressions in the jobs index search box (#22100)
* Maintains rawSearchText separate from searchText

* Filter expression suggestions

* Now super-stops duelling queries on else-type error

* Filter suggestions and corrections

* Errorlink is now template standard and testfixes

* Mirage simulates healthy errors

* Test for bad filter expressions and snapshots
2024-05-22 23:39:37 -04:00
Phil Renaud
86c858cdc3 [ui] Sentinel Policies CRUD UI (#20483)
* Gallery allows picking stuff

* Small fixes

* added sentinel templates

* Can set enforcement level on policies

* Working on the interactive sentinel dev mode

* Very rough development flow on FE

* Changed position in gutter menu

* More sentinel stuff

* PR cleanup: removed testmode, removed unneeded mixins and deps

* Heliosification

* Index-level sentinel policy deletion and page title fixes

* Makes the Canaries sentinel policy real and then comments out the unfinished ones

* rename Access Control to Administration in prep for moving Sentinel Policies and Node Pool admin there

* Sentinel policies moved within the Administration section

* Mirage fixture for sentinel policy endpoints

* Description length check and 500 prevention

* Sync review PR feedback addressed, implied butons on radio cards

* Cull un-used sentinel policies

---------

Co-authored-by: Mike Nomitch <mail@mikenomitch.com>
2024-05-22 16:41:50 -04:00
Daniel Bennett
4415fabe7d jobspec: time based task execution (#22201)
this is the CE side of an Enterprise-only feature.
a job trying to use this in CE will fail to validate.

to enable daily-scheduled execution entirely client-side,
a job may now contain:

task "name" {
  schedule {
    cron {
      start    = "0 12 * * * *" # may not include "," or "/"
      end      = "0 16"         # partial cron, with only {minute} {hour}
      timezone = "EST"          # anything in your tzdb
    }
  }
...

and everything about the allocation will be placed as usual,
but if outside the specified schedule, the taskrunner will block
on the client, waiting on the schedule start, before proceeding
with the task driver execution, etc.

this includes a taksrunner hook, which watches for the end of
the schedule, at which point it will kill the task.

then, restarts-allowing, a new task will start and again block
waiting for start, and so on.

this also includes all the plumbing required to pipe API calls
through from command->api->agent->server->client, so that
tasks can be force-run, force-paused, or resume the schedule
on demand.
2024-05-22 15:40:25 -05:00
Phil Renaud
e8b77fcfa0 [ui] Jobspec UI block: Descriptions and Links (#18292)
* Hacky but shows links and desc

* markdown

* Small pre-test cleanup

* Test for UI description and link rendering

* JSON jobspec docs and variable example job get UI block

* Jobspec documentation for UI block

* Description and links moved into the Title component and made into Helios components

* Marked version upgrade

* Allow links without a description and max description to 1000 chars

* Node 18 for setup-js

* markdown sanitization

* Ui to UI and docs change

* Canonicalize, copy and diff for job.ui

* UI block added to testJob for structs testing

* diff test

* Remove redundant reset

* For readability, changing the receiving pointer of copied job variables

* TestUI endpiont conversion tests

* -require +must

* Nil check on Links

* JobUIConfig.Links as pointer

---------

Co-authored-by: Tim Gross <tgross@hashicorp.com>
2024-05-22 15:00:45 -04:00
Phil Renaud
6886edf033 Makes it so an empty state query blocks and changes the style to be more Nomadic (#20588) 2024-05-15 13:57:48 -04:00
Phil Renaud
8620fdca85 Adds the token name to the Profile link in the top nav (#20539) 2024-05-08 12:33:58 -04:00
Phil Renaud
16479af38d Jobs Index Page: Live Updates + Pagination (#20452)
* Hook and latch on the initial index

* Serialization and restart of controller and table

* de-log

* allocBlocks reimplemented at job model level

* totalAllocs doesnt mean on jobmodel what it did in steady.js

* Hamburgers to sausages

* Hacky way to bring new jobs back around and parent job handling in list view

* Getting closer to hook/latch

* Latch from update on hook from initialize, but fickle

* Note on multiple-watch problem

* Sensible monday morning comment removal

* use of abortController to handle transition and reset events

* Next token will now update when there's an on-page shift

* Very rough anti-jostle technique

* Demoable, now to move things out of route and into controller

* Into the controller, generally

* Smarter cancellations

* Reset abortController on index models run, and system/sysbatch jobs now have an improved groupCountSum computed property

* Prev Page reverse querying

* n+1th jobs existing will trigger nextToken/pagination display

* Start of a GET/POST statuses return

* Namespace fix

* Unblock tests

* Realizing to my small horror that this skipURLModification flag may be too heavy handed

* Lintfix

* Default liveupdates localStorage setting to true

* Pagination and index rethink

* Big uncoupling of watchable and url-append stuff

* Testfixes for region, search, and keyboard

* Job row class for test purposes

* Allocations in test now contain events

* Starting on the jobs list tests in earnest

* Forbidden state de-bubbling cleanup

* Job list page size fixes

* Facet/Search/Filter jobs list tests skipped

* Maybe it's the automatic mirage logging

* Unbreak task unit test

* Pre-sort sort

* styling for jobs list pagination and general PR cleanup

* moving from Job.ActiveDeploymentID to Job.LatestDeployment.ID

* modifyIndex-based pagination (#20350)

* modifyIndex-based pagination

* modifyIndex gets its own column and pagination compacted with icons

* A generic withPagination handler for mirage

* Some live-PR changes

* Pagination and button disabled tests

* Job update handling tests for jobs index

* assertion timeout in case of long setTimeouts

* assert.timeouts down to 500ms

* de-to-do

* Clarifying comment and test descriptions

* Bugfix: resizing your browser on the new jobs index page would make the viz grow forever (#20458)

* [ui] Searching and filtering options (#20459)

* Beginnings of a search box for filter expressions

* jobSearchBox integration test

* jobs list updateFilter initial test

* Basic jobs list filtering tests

* First attempt at side-by-side facets and search with a computed filter

* Weirdly close to an iterative approach but checked isnt tracked properly

* Big rework to make filter composition and decomposition work nicely with the url

* Namespace facet dropdown added

* NodePool facet dropdown added

* hdsFacet for future testing and basic namespace filtering test

* Namespace filter existence test

* Status filtering

* Node pool/dynamic facet test

* Test patchups

* Attempt at optimize test fix

* Allocation re-load on optimize page explainer

* The Big Un-Skip

* Post-PR-review cleanup

* todo-squashing

* [ui] Handle parent/child jobs with the paginated Jobs Index route (#20493)

* First pass at a non-watchQuery version

* Parameterized jobs get child fetching and jobs index status style for parent jobs

* Completed allocs vs Running allocs in a child-job context, and fix an issue where moving from parent to parent would not reset index

* Testfix and better handling empty-child-statuses-list

* Parent/child test case

* Dont show empty allocation-status bars for parent jobs with no children

* Splits Settings into 2 sections, sign-in/profile and user settings (#20535)

* Changelog
2024-05-06 17:09:37 -04:00