mirror of
https://github.com/kemko/nomad.git
synced 2026-01-01 16:05:42 +03:00
* DHV UI init * /csi routes to /storage routes and a routeRedirector util (#25163) * /csi routes to /storage routes and a routeRedirector util * Tests and routes move csi/ to storage/ * Changelog added * [ui] Storage UI overhaul + Dynamic Host Volumes UI (#25226) * Storage index page and DHV model properties * Naive version of a storage overview page * Experimental fetch of alloc data dirs * Fetch ephemeral disks and static host volumes as an ember concurrency task and nice table stylings * Playing nice with section header labels to make eslint happy even though wcag was already cool with it * inlined the storage type explainers and reordered things, plus tooltips and keynav * Bones of a dynamic host volume individual page * Woooo dynamic host volume model, adapter, and serializer with embedded alloc relationships * Couple test fixes * async:false relationship for dhv.hasMany('alloc') to prevent a ton of xhr requests * DHV request type at index routemodel and better serialization * Pagination and searching and query params oh my * Test retrofits for csi volumes * Really fantastic flake gets fixed * DHV detail page acceptance test and a bunch of mirage hooks * Seed so that the actions test has a guaranteed task * removed ephemeral disk and static host volume manual scanning * CapacityBytes and capabilities table added to DHV detail page * Debugging actions flyout test * was becoming clear that faker.seed editing was causing havoc elsewhere so might as well not boil the ocean and just tell this test to do what I want it to * Post-create job gets taskCount instead of count * CSI volumes now get /csi route prefix at detail level * lazyclick method for unused keynav removed * keyboard nav and table-watcher for DHV added * Addressed PR comments, changed up capabilities table and id references, etc. * Capabilities table for DHV and ID in details header * Testfixes for pluginID and capabilities table on DHV page
68 lines
1.8 KiB
JavaScript
68 lines
1.8 KiB
JavaScript
/**
|
|
* Copyright (c) HashiCorp, Inc.
|
|
* SPDX-License-Identifier: BUSL-1.1
|
|
*/
|
|
|
|
// @ts-check
|
|
|
|
import { inject as service } from '@ember/service';
|
|
import RSVP from 'rsvp';
|
|
import Route from '@ember/routing/route';
|
|
import { collect } from '@ember/object/computed';
|
|
import { watchQuery, watchAll } from 'nomad-ui/utils/properties/watch';
|
|
import WithWatchers from 'nomad-ui/mixins/with-watchers';
|
|
import notifyForbidden from 'nomad-ui/utils/notify-forbidden';
|
|
import WithForbiddenState from 'nomad-ui/mixins/with-forbidden-state';
|
|
|
|
export default class IndexRoute extends Route.extend(
|
|
WithWatchers,
|
|
WithForbiddenState
|
|
) {
|
|
@service store;
|
|
|
|
queryParams = {
|
|
qpNamespace: {
|
|
refreshModel: true,
|
|
},
|
|
};
|
|
|
|
model(params) {
|
|
return RSVP.hash({
|
|
csiVolumes: this.store
|
|
.query('volume', { type: 'csi', namespace: params.qpNamespace })
|
|
.catch(notifyForbidden(this)),
|
|
namespaces: this.store.findAll('namespace'),
|
|
dynamicHostVolumes: this.store
|
|
.query('dynamic-host-volume', {
|
|
type: 'host',
|
|
namespace: params.qpNamespace,
|
|
})
|
|
.catch(notifyForbidden(this)),
|
|
});
|
|
}
|
|
|
|
startWatchers(controller) {
|
|
controller.set('namespacesWatch', this.watchNamespaces.perform());
|
|
controller.set(
|
|
'modelWatch',
|
|
this.watchVolumes.perform({
|
|
type: 'csi',
|
|
namespace: controller.qpNamespace,
|
|
})
|
|
);
|
|
controller.set(
|
|
'modelWatch',
|
|
this.watchDynamicHostVolumes.perform({
|
|
type: 'host',
|
|
namespace: controller.qpNamespace,
|
|
})
|
|
);
|
|
}
|
|
|
|
@watchQuery('volume') watchVolumes;
|
|
@watchQuery('dynamic-host-volume') watchDynamicHostVolumes;
|
|
@watchAll('namespace') watchNamespaces;
|
|
@collect('watchVolumes', 'watchNamespaces', 'watchDynamicHostVolumes')
|
|
watchers;
|
|
}
|