Commit graph

3297 commits

Author SHA1 Message Date
Graham Christensen bf5c76feb6 getEvals: order by the eval table's ID
I broke this when I added `me.` in f1e75c8bff

I added me. to disambiguate `id`, but:

* eval.id works on the per-build page
* me.id works on the other pages
* Just id works everywhere if I drop:

    , prefetch => { evaluationerror => [ ] },

  but this causes a query per row to collect the evaluationerror
  records later, this becomes significantly slow on non-trivial
  datasets.

Using evals->current_source_alias will use the correct alias
whether it is me or eval or something else.
2021-06-16 11:24:30 -04:00
Graham Christensen 2ac47e8013 Test that each page listing evals works
PR #860 caused a regression that broke some loads.
2021-06-16 11:22:40 -04:00
Graham Christensen 75855c202f
Merge pull request #972 from DeterminateSystems/prom
Prometheus Metrics for the Webserver
2021-06-11 09:16:15 -04:00
Graham Christensen 5700c351e8 Init a docs section for monitoring, document queue-runner-status and the prometheus metrics 2021-06-10 20:13:08 -04:00
Graham Christensen 71453dd341 Expose Prometheus metrics at /metrics
Exposes metrics:

* http_request_duration_seconds_bucket
* http_request_size_bytes_bucket
* http_response_size_bytes_bucket
* http_requests_total

with labels of action and controller to help identify popular
endpoints and their performance characteristics.
2021-06-10 20:02:42 -04:00
Graham Christensen db6bad108b Use PrometheusTinyShared 2021-06-10 17:47:11 -04:00
Graham Christensen 1652631b21 Prometheus: init Tiny, TinyShared 2021-06-10 17:47:11 -04:00
Graham Christensen c6670b805f init: HashSharedMem for Prometheus 2021-06-10 17:47:11 -04:00
Graham Christensen b1fcc0c25b init DataRandom perl package for Prometheus stats 2021-06-10 17:47:11 -04:00
Graham Christensen e04dc14d94
Merge pull request #969 from DeterminateSystems/builds-index-jobset-id
Builds: index on jobset_id, largely join by jobset_id
2021-06-01 17:59:39 -04:00
Graham Christensen 382ba590ad Drop unused query from GET Build. 2021-06-01 11:47:05 -04:00
Graham Christensen a9e4ede006 SQL: create better indexes for builds based on the jobset id
These are primarily used by the jobsetOverview renders.
2021-06-01 11:23:22 -04:00
Graham Christensen 719d0a6134 jobset overview: join jobsets to builds by jobset id 2021-06-01 11:19:33 -04:00
Graham Christensen 508d99d611 Join to builds via jobset_id when easy 2021-06-01 11:16:47 -04:00
Graham Christensen 5b6b8261fc
Merge pull request #968 from DeterminateSystems/unnecessary-declarative-field
Projects: don't respond with unnecessary declarative field
2021-05-24 19:21:00 -04:00
Cole Helbling 45ced33ab6
Projects: don't respond with unnecessary declarative field
If the project isn't declarative, who cares about it in the response? After
setting the `declfile` to an empty string, everything related to declarative-
ness is wiped out, anyways.
2021-05-24 15:26:34 -07:00
Eelco Dolstra cdba2b86c0
Merge pull request #967 from Ma27/hydra-system-users
Set `isSystemUser = true;` for each statically declared user
2021-05-24 16:09:15 +02:00
Maximilian Bosch 302f5e0de9
Set isSystemUser = true; for each statically declared user
This is needed to evaluate the module on 21.05.
2021-05-24 14:47:30 +02:00
Graham Christensen 3dc745de68
Merge pull request #964 from DeterminateSystems/fix-cascade
Jobsets: remove defunct Jobs relationship
2021-05-09 21:17:12 -04:00
Cole Helbling 7ba58ca3ea
Jobsets: remove defunct Jobs relationship
It appears the Jobs table was removed in
8adb433e3b, but the Jobsets schema was never
updated to reflect this. This relationship was added in
efa1f1d4fb, roughly 3 months prior.

Previously, one would see a message similar to the following logged when
deleting a jobset:

    17:38:23 hydra-server.1       | DBIx::Class::Relationship::CascadeActions::delete(): Skipping cascade delete on relationship 'jobs' - related resultsource 'Hydra::Schema::Jobs' is not registered with this schema at /home/vin/workspace/vcs/hydra/src/script/../lib/Hydra/Controller/Jobset.pm line 106
2021-05-09 17:52:48 -07:00
Graham Christensen 67b6f0d7ed
Merge pull request #962 from DeterminateSystems/del-.jobsets
Project: delete the `.jobsets` jobset if project is no longer declarative
2021-05-06 11:57:34 -04:00
Cole Helbling 588a3a774f
Project: add test for declarative->normal project transition
Also split into subtests.
2021-05-06 08:47:29 -07:00
Cole Helbling 6107040bf5
Project: clear decltype and declvalue when project is no longer declarative 2021-05-06 08:47:18 -07:00
Cole Helbling bd9c52dbd0
Project: delete the .jobsets jobset if project is no longer declarative
"No longer declarative" as defined by the "Edit project" page is an empty spec
file.
2021-05-05 14:03:51 -07:00
Graham Christensen bc8619af3f
Merge pull request #961 from DeterminateSystems/fix-959
lazy tabs: trigger the load event
2021-05-05 14:51:33 -04:00
Graham Christensen 6c1151b14a lazy tabs: trigger the load event
Something in the upgrade of Bootstrap and JQuery broke lazy tab loading.
I don't understand what is providing the tab behavior, how it should
work, or what the correct fix is.

I can tell you that this patch fixes the issue: when loading a tab
with a URL fragment deep-linking to a lazily loaded tab... it now
loads.

Close #959
2021-05-05 14:42:12 -04:00
Eelco Dolstra 886e6f85e4
Merge pull request #924 from hackworthltd/fix-flake-github-status
Fix GitHub status update for private flakes.
2021-05-03 16:24:51 +02:00
Graham Christensen 6e537671df
Merge pull request #954 from DeterminateSystems/projects-json-schema
Projects: use JSON in Schema
2021-05-02 21:35:04 -04:00
Cole Helbling f3947acfc4
Projects: use JSON in Schema 2021-05-02 18:25:37 -07:00
Graham Christensen 5520f4b7b6
Merge pull request #952 from DeterminateSystems/decl-api
Project: add declfile, decltype, declvalue to API
2021-05-02 20:51:27 -04:00
Cole Helbling ad13d13436
Project: add declfile, decltype, declvalue to API
This makes it possible to create declarative projects via a PUT request, and
also exposes the currently-configured values to GET requests.
2021-05-02 17:45:14 -07:00
Graham Christensen e9a06113c9
Merge pull request #951 from DeterminateSystems/delete-project
Fix deleting projects
2021-05-01 13:01:39 -04:00
Cole Helbling 7c9ed6b919
Project: fix DELETE route
This appears to have been broken in ac3e8a4a59,
which removed the `jobsetevals` column from the Projects schema, but didn't
update the Controller accordingly.

Fixes the test added in the previous commit.
2021-04-30 10:43:21 -07:00
Cole Helbling d0682c804d
api-test: test deleting a project
As of this commit, this test will fail, because the underlying cause hasn't been
fixed.
2021-04-30 10:42:38 -07:00
Graham Christensen 6047b1dd04
Merge pull request #948 from DeterminateSystems/known-inputs
Jobset: list known inputs in invalid input type response
2021-04-29 21:45:16 -04:00
Cole Helbling 14aff5678c
hydra-api: don't restrict input types
Plugins can add their own input types; we don't want to restrict this.
2021-04-29 18:19:44 -07:00
Cole Helbling 03d5a858a7
Jobset: list known inputs in invalid input type response 2021-04-29 18:19:44 -07:00
Graham Christensen 18d271655c
Merge pull request #945 from DeterminateSystems/fixup-ToJSON
Jobsets,JobsetInputs: use JSON
2021-04-29 08:38:45 -04:00
Graham Christensen 8492db033e Jobsets,JobsetInputs: use JSON 2021-04-29 08:32:47 -04:00
Graham Christensen ec288e6d88
Merge pull request #941 from DeterminateSystems/align-api
ToJSON: allow custom as_json function; JobsetInputs, Jobsets: update schema to align with the API
2021-04-29 07:57:39 -04:00
Cole Helbling f1dd5d202e Jobsets: update schema to align with the API
To further align with the API, we return custom JSON in order to display a
`visible` field rather than `hidden` -- a `PUT` request expects `visible`, while
a `GET` request returns `hidden`.

This also allows us to rename the `jobsetinputs` field to `inputs` for the same
reason: `PUT` expects `inputs`, while `GET` returns `jobsetinputs`.
2021-04-29 07:50:23 -04:00
Cole Helbling d23f431889 JobsetInputs: update schema to align with the API
`PUT /jobsets/{project-id}/{jobset-id}` expects a JSON object `inputs` which
maps a name to a name, a type, a value, and a boolean that enables emailing
responsible parties. However, `GET /jobsets/{project-id}/{jobset-id}` responds
with an object that doesn't contain a value, but does contain a jobsetinputalts
(which is old and should be unused).

This commit aligns the two by removing the old and unused `jobsetinputalts` from
the response and replaces it with `value`.
2021-04-29 07:50:23 -04:00
Cole Helbling fff0db10e3 ToJSON: allow custom as_json function
This allows us to modify what the API responds with, which in turn lets us unify
the OpenAPI specification and the actual API's responses.
2021-04-29 07:50:23 -04:00
Graham Christensen 29028258e3
Merge pull request #940 from regnat/test-with-remote-dest-store
Run the tests with a remote dest store
2021-04-29 07:27:42 -04:00
Graham Christensen e1a761194f
Merge pull request #943 from regnat/include-localhost-features
Cleanup the localhost-features test
2021-04-29 07:26:50 -04:00
regnat bf3e1cf77b Disable the remote dest store for the channel test
Looks like feature is only works when the destination store is the local
store
2021-04-29 07:24:20 +02:00
regnat 9c787e5e94 Document the use_external_destination_store test_init param 2021-04-29 07:24:20 +02:00
Théophane Hufschmitt 7af63658f1 tests: Make the external destination store optional
Co-authored-by: Graham Christensen <graham@grahamc.com>
2021-04-29 07:24:20 +02:00
regnat 305c27d3fb Move the default-machine-file test under queue-runner
Just a bit of housekeeping to keep the testsuite clean
2021-04-29 06:55:23 +02:00
regnat f61a13d2db Only add the Nix system feature to the test that requires it 2021-04-29 06:54:25 +02:00