diff --git a/ui/app/controllers/nodes.js b/ui/app/controllers/clients.js
similarity index 100%
rename from ui/app/controllers/nodes.js
rename to ui/app/controllers/clients.js
diff --git a/ui/app/controllers/nodes/node.js b/ui/app/controllers/clients/client.js
similarity index 100%
rename from ui/app/controllers/nodes/node.js
rename to ui/app/controllers/clients/client.js
diff --git a/ui/app/controllers/nodes/index.js b/ui/app/controllers/clients/index.js
similarity index 82%
rename from ui/app/controllers/nodes/index.js
rename to ui/app/controllers/clients/index.js
index 4e3a2b7f67dd..eedb9ebe8dfd 100644
--- a/ui/app/controllers/nodes/index.js
+++ b/ui/app/controllers/clients/index.js
@@ -5,7 +5,7 @@ import Searchable from 'nomad-ui/mixins/searchable';
const { Controller, computed, inject } = Ember;
export default Controller.extend(Sortable, Searchable, {
- nodesController: inject.controller('nodes'),
+ clientsController: inject.controller('clients'),
nodes: computed.alias('model.nodes'),
agents: computed.alias('model.agents'),
@@ -29,11 +29,11 @@ export default Controller.extend(Sortable, Searchable, {
listToSearch: computed.alias('listSorted'),
sortedNodes: computed.alias('listSearched'),
- isForbidden: computed.alias('nodesController.isForbidden'),
+ isForbidden: computed.alias('clientsController.isForbidden'),
actions: {
gotoNode(node) {
- this.transitionToRoute('nodes.node', node);
+ this.transitionToRoute('clients.client', node);
},
},
});
diff --git a/ui/app/router.js b/ui/app/router.js
index c710a728504c..367e311e2b8a 100644
--- a/ui/app/router.js
+++ b/ui/app/router.js
@@ -16,8 +16,8 @@ Router.map(function() {
});
});
- this.route('nodes', function() {
- this.route('node', { path: '/:node_id' });
+ this.route('clients', function() {
+ this.route('client', { path: '/:node_id' });
});
this.route('servers', function() {
diff --git a/ui/app/routes/nodes.js b/ui/app/routes/clients.js
similarity index 100%
rename from ui/app/routes/nodes.js
rename to ui/app/routes/clients.js
diff --git a/ui/app/routes/nodes/node.js b/ui/app/routes/clients/client.js
similarity index 100%
rename from ui/app/routes/nodes/node.js
rename to ui/app/routes/clients/client.js
diff --git a/ui/app/templates/allocations/allocation.hbs b/ui/app/templates/allocations/allocation.hbs
index b95608750249..5d9a537900a6 100644
--- a/ui/app/templates/allocations/allocation.hbs
+++ b/ui/app/templates/allocations/allocation.hbs
@@ -2,7 +2,7 @@
Allocation {{model.name}}
For job {{#link-to "jobs.job" model.job (query-params jobNamespace=model.job.namespace.id)}}{{model.job.name}}{{/link-to}}
- on node {{#link-to "nodes.node" model.node}}{{model.node.shortId}}{{/link-to}}
+ on client {{#link-to "clients.client" model.node}}{{model.node.shortId}}{{/link-to}}
diff --git a/ui/app/templates/nodes.hbs b/ui/app/templates/clients.hbs
similarity index 100%
rename from ui/app/templates/nodes.hbs
rename to ui/app/templates/clients.hbs
diff --git a/ui/app/templates/nodes/node.hbs b/ui/app/templates/clients/client.hbs
similarity index 98%
rename from ui/app/templates/nodes/node.hbs
rename to ui/app/templates/clients/client.hbs
index 0b13a4920dbc..a4f10bd3a18a 100644
--- a/ui/app/templates/nodes/node.hbs
+++ b/ui/app/templates/clients/client.hbs
@@ -1,5 +1,5 @@
{{#global-header class="page-header"}}
- {{#link-to "nodes" class="breadcrumb"}}Nodes{{/link-to}}
+ {{#link-to "clients" class="breadcrumb"}}Clients{{/link-to}}
{{model.shortId}}
{{/global-header}}
{{#gutter-menu class="page-body"}}
diff --git a/ui/app/templates/nodes/index.hbs b/ui/app/templates/clients/index.hbs
similarity index 98%
rename from ui/app/templates/nodes/index.hbs
rename to ui/app/templates/clients/index.hbs
index 296caaf7bba2..b6f0c7275659 100644
--- a/ui/app/templates/nodes/index.hbs
+++ b/ui/app/templates/clients/index.hbs
@@ -1,5 +1,5 @@
{{#global-header class="page-header"}}
- Nodes
+ Clients
{{/global-header}}
{{#gutter-menu class="page-body"}}
@@ -8,7 +8,7 @@
{{else}}
{{#if nodes.length}}
-
{{search-box searchTerm=(mut searchTerm) placeholder="Search nodes..."}}
+
{{search-box searchTerm=(mut searchTerm) placeholder="Search clients..."}}
{{/if}}
{{#list-pagination
diff --git a/ui/app/templates/nodes/loading.hbs b/ui/app/templates/clients/loading.hbs
similarity index 95%
rename from ui/app/templates/nodes/loading.hbs
rename to ui/app/templates/clients/loading.hbs
index d247848fd0dc..7014a5a9d56f 100644
--- a/ui/app/templates/nodes/loading.hbs
+++ b/ui/app/templates/clients/loading.hbs
@@ -1,5 +1,5 @@
{{#global-header class="page-header"}}
- Nodes
+ Clients
{{/global-header}}
{{#gutter-menu class="page-body"}}
{{partial "partials/loading-spinner"}}
diff --git a/ui/app/templates/components/allocation-row.hbs b/ui/app/templates/components/allocation-row.hbs
index 5d3000e2ae5a..d61032cc3de2 100644
--- a/ui/app/templates/components/allocation-row.hbs
+++ b/ui/app/templates/components/allocation-row.hbs
@@ -10,7 +10,7 @@
{{#if (eq context "job")}}
{{allocation.jobVersion}} |
- {{#link-to "nodes.node" allocation.node}}{{allocation.node.shortId}}{{/link-to}} |
+ {{#link-to "clients.client" allocation.node}}{{allocation.node.shortId}}{{/link-to}} |
{{else if (eq context "node")}}
{{#if (or allocation.job.isPending allocation.job.isReloading)}}
diff --git a/ui/app/templates/components/client-node-row.hbs b/ui/app/templates/components/client-node-row.hbs
index 7eedfd4b5c77..b6eb25413dc9 100644
--- a/ui/app/templates/components/client-node-row.hbs
+++ b/ui/app/templates/components/client-node-row.hbs
@@ -1,4 +1,4 @@
- | {{#link-to "nodes.node" node.id class="is-primary"}}{{node.shortId}}{{/link-to}} |
+{{#link-to "clients.client" node.id class="is-primary"}}{{node.shortId}}{{/link-to}} |
{{node.name}} |
{{node.status}} |
{{node.address}} |
diff --git a/ui/app/templates/components/gutter-menu.hbs b/ui/app/templates/components/gutter-menu.hbs
index 43274d67d2ba..765b53ab9409 100644
--- a/ui/app/templates/components/gutter-menu.hbs
+++ b/ui/app/templates/components/gutter-menu.hbs
@@ -35,7 +35,7 @@
Cluster
diff --git a/ui/app/templates/jobs/job/task-group.hbs b/ui/app/templates/jobs/job/task-group.hbs
index 51c9dc48ac29..3d94ee812600 100644
--- a/ui/app/templates/jobs/job/task-group.hbs
+++ b/ui/app/templates/jobs/job/task-group.hbs
@@ -79,7 +79,7 @@
{{#t.sort-by prop="name"}}Name{{/t.sort-by}}
{{#t.sort-by prop="statusIndex"}}Status{{/t.sort-by}}
{{#t.sort-by prop="jobVersion"}}Version{{/t.sort-by}}
- {{#t.sort-by prop="node.shortId"}}Node{{/t.sort-by}}
+ {{#t.sort-by prop="node.shortId"}}Client{{/t.sort-by}}
CPU |
Memory |
{{/t.head}}
diff --git a/ui/tests/acceptance/allocation-detail-test.js b/ui/tests/acceptance/allocation-detail-test.js
index a310b8a86794..213ed47d2a4c 100644
--- a/ui/tests/acceptance/allocation-detail-test.js
+++ b/ui/tests/acceptance/allocation-detail-test.js
@@ -49,7 +49,7 @@ test('/allocation/:id should name the allocation and link to the corresponding j
});
andThen(() => {
- assert.equal(currentURL(), `/nodes/${node.id}`, 'Node link navigates to the node');
+ assert.equal(currentURL(), `/clients/${node.id}`, 'Client link navigates to the client');
});
});
diff --git a/ui/tests/acceptance/application-errors-test.js b/ui/tests/acceptance/application-errors-test.js
index 78373bd7ef7c..b5e2e636e475 100644
--- a/ui/tests/acceptance/application-errors-test.js
+++ b/ui/tests/acceptance/application-errors-test.js
@@ -13,7 +13,7 @@ moduleForAcceptance('Acceptance | application errors ', {
test('transitioning away from an error page resets the global error', function(assert) {
server.pretender.get('/v1/nodes', () => [500, {}, null]);
- visit('/nodes');
+ visit('/clients');
andThen(() => {
assert.ok(find('.error-message'), 'Application has errored');
diff --git a/ui/tests/acceptance/client-detail-test.js b/ui/tests/acceptance/client-detail-test.js
index 189b3bf92be8..993277b8e1b2 100644
--- a/ui/tests/acceptance/client-detail-test.js
+++ b/ui/tests/acceptance/client-detail-test.js
@@ -20,11 +20,11 @@ moduleForAcceptance('Acceptance | client detail', {
},
});
-test('/nodes/:id should have a breadrcumb trail linking back to nodes', function(assert) {
- visit(`/nodes/${node.id}`);
+test('/clients/:id should have a breadrcumb trail linking back to clients', function(assert) {
+ visit(`/clients/${node.id}`);
andThen(() => {
- assert.equal(findAll('.breadcrumb')[0].textContent, 'Nodes', 'First breadcrumb says nodes');
+ assert.equal(findAll('.breadcrumb')[0].textContent, 'Clients', 'First breadcrumb says clients');
assert.equal(
findAll('.breadcrumb')[1].textContent,
node.id.split('-')[0],
@@ -37,12 +37,12 @@ test('/nodes/:id should have a breadrcumb trail linking back to nodes', function
});
andThen(() => {
- assert.equal(currentURL(), '/nodes', 'First breadcrumb links back to nodes');
+ assert.equal(currentURL(), '/clients', 'First breadcrumb links back to clients');
});
});
-test('/nodes/:id should list immediate details for the node in the title', function(assert) {
- visit(`/nodes/${node.id}`);
+test('/clients/:id should list immediate details for the node in the title', function(assert) {
+ visit(`/clients/${node.id}`);
andThen(() => {
assert.ok(find('.title').textContent.includes(node.name), 'Title includes name');
@@ -54,8 +54,8 @@ test('/nodes/:id should list immediate details for the node in the title', funct
});
});
-test('/nodes/:id should list additional detail for the node below the title', function(assert) {
- visit(`/nodes/${node.id}`);
+test('/clients/:id should list additional detail for the node below the title', function(assert) {
+ visit(`/clients/${node.id}`);
andThen(() => {
assert.equal(
@@ -80,10 +80,10 @@ test('/nodes/:id should list additional detail for the node below the title', fu
});
});
-test('/nodes/:id should list all allocations on the node', function(assert) {
+test('/clients/:id should list all allocations on the node', function(assert) {
const allocationsCount = server.db.allocations.where({ nodeId: node.id }).length;
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
assert.equal(
@@ -110,7 +110,7 @@ test('each allocation should have high-level details for the allocation', functi
const cpuUsed = tasks.reduce((sum, task) => sum + task.Resources.CPU, 0);
const memoryUsed = tasks.reduce((sum, task) => sum + task.Resources.MemoryMB, 0);
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
const allocationRow = $(findAll('.allocations tbody tr')[0]);
@@ -199,10 +199,10 @@ test('each allocation should have high-level details for the allocation', functi
test('each allocation should show job information even if the job is incomplete and already in the store', function(
assert
) {
- // First, visit nodes to load the allocations for each visible node.
+ // First, visit clients to load the allocations for each visible node.
// Don't load the job belongsTo of the allocation! Leave it unfulfilled.
- visit('/nodes');
+ visit('/clients');
// Then, visit jobs to load all jobs, which should implicitly fulfill
// the job belongsTo of each allocation pointed at each job.
@@ -213,7 +213,7 @@ test('each allocation should show job information even if the job is incomplete
// present. This will require reloading the job, since task groups aren't a
// part of the jobs list response.
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
const allocationRow = $(findAll('.allocations tbody tr')[0]);
@@ -245,7 +245,7 @@ test('each allocation should link to the allocation detail page', function(asser
.sortBy('modifyIndex')
.reverse()[0];
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
click($('.allocations tbody tr:eq(0) td:eq(0) a').get(0));
@@ -261,7 +261,7 @@ test('each allocation should link to the allocation detail page', function(asser
});
test('each allocation should link to the job the allocation belongs to', function(assert) {
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
const allocation = server.db.allocations.where({ nodeId: node.id })[0];
const job = server.db.jobs.find(allocation.jobId);
@@ -279,8 +279,8 @@ test('each allocation should link to the job the allocation belongs to', functio
});
});
-test('/nodes/:id should list all attributes for the node', function(assert) {
- visit(`/nodes/${node.id}`);
+test('/clients/:id should list all attributes for the node', function(assert) {
+ visit(`/clients/${node.id}`);
andThen(() => {
assert.ok(find('.attributes-table'), 'Attributes table is on the page');
@@ -290,7 +290,7 @@ test('/nodes/:id should list all attributes for the node', function(assert) {
test('when the node is not found, an error message is shown, but the URL persists', function(
assert
) {
- visit('/nodes/not-a-real-node');
+ visit('/clients/not-a-real-node');
andThen(() => {
assert.equal(
@@ -298,7 +298,7 @@ test('when the node is not found, an error message is shown, but the URL persist
'/v1/node/not-a-real-node',
'A request to the non-existent node is made'
);
- assert.equal(currentURL(), '/nodes/not-a-real-node', 'The URL persists');
+ assert.equal(currentURL(), '/clients/not-a-real-node', 'The URL persists');
assert.ok(find('.error-message'), 'Error message is shown');
assert.equal(
find('.error-message .title').textContent,
diff --git a/ui/tests/acceptance/nodes-list-test.js b/ui/tests/acceptance/nodes-list-test.js
index 7a6bffdde497..c78d83b4bc63 100644
--- a/ui/tests/acceptance/nodes-list-test.js
+++ b/ui/tests/acceptance/nodes-list-test.js
@@ -12,9 +12,9 @@ function minimumSetup() {
server.createList('agent', 1);
}
-moduleForAcceptance('Acceptance | nodes list');
+moduleForAcceptance('Acceptance | clients list');
-test('/nodes should list one page of clients', function(assert) {
+test('/clients should list one page of clients', function(assert) {
// Make sure to make more nodes than 1 page to assert that pagination is working
const nodesCount = 10;
const pageSize = 8;
@@ -22,7 +22,7 @@ test('/nodes should list one page of clients', function(assert) {
server.createList('node', nodesCount);
server.createList('agent', 1);
- visit('/nodes');
+ visit('/clients');
andThen(() => {
assert.equal(findAll('.client-node-row').length, pageSize);
@@ -34,7 +34,7 @@ test('/nodes should list one page of clients', function(assert) {
assert.equal(
$(`.client-node-row:eq(${nodeNumber}) td:eq(0)`).text(),
sortedNodes[nodeNumber].id.split('-')[0],
- 'Nodes are ordered'
+ 'Clients are ordered'
);
}
});
@@ -44,7 +44,7 @@ test('each client record should show high-level info of the client', function(as
minimumSetup();
const node = server.db.nodes[0];
- visit('/nodes');
+ visit('/clients');
andThen(() => {
const nodeRow = $(findAll('.client-node-row')[0]);
@@ -65,20 +65,20 @@ test('each client should link to the client detail page', function(assert) {
minimumSetup();
const node = server.db.nodes[0];
- visit('/nodes');
+ visit('/clients');
andThen(() => {
click(findAll('.client-node-row')[0]);
});
andThen(() => {
- assert.equal(currentURL(), `/nodes/${node.id}`);
+ assert.equal(currentURL(), `/clients/${node.id}`);
});
});
test('when there are no clients, there is an empty message', function(assert) {
server.createList('agent', 1);
- visit('/nodes');
+ visit('/clients');
andThen(() => {
assert.ok(find('.empty-message'));
@@ -92,7 +92,7 @@ test('when there are clients, but no matches for a search term, there is an empt
server.createList('agent', 1);
server.create('node', { name: 'node' });
- visit('/nodes');
+ visit('/clients');
andThen(() => {
fillIn('.search-box input', 'client');
@@ -111,7 +111,7 @@ test('when accessing clients is forbidden, show a message with a link to the tok
server.create('node', { name: 'node' });
server.pretender.get('/v1/nodes', () => [403, {}, null]);
- visit('/nodes');
+ visit('/clients');
andThen(() => {
assert.equal(find('.empty-message-headline').textContent, 'Not Authorized');
diff --git a/ui/tests/acceptance/task-group-detail-test.js b/ui/tests/acceptance/task-group-detail-test.js
index e8f7e50919af..46de34968cbf 100644
--- a/ui/tests/acceptance/task-group-detail-test.js
+++ b/ui/tests/acceptance/task-group-detail-test.js
@@ -197,7 +197,7 @@ test('each allocation should show basic information about the allocation', funct
click(allocationRow.find('td:eq(5) a').get(0));
andThen(() => {
- assert.equal(currentURL(), `/nodes/${allocation.nodeId}`, 'Node links to node page');
+ assert.equal(currentURL(), `/clients/${allocation.nodeId}`, 'Node links to node page');
});
});
diff --git a/ui/tests/acceptance/token-test.js b/ui/tests/acceptance/token-test.js
index d32d38b991c1..2e62bd9e14d5 100644
--- a/ui/tests/acceptance/token-test.js
+++ b/ui/tests/acceptance/token-test.js
@@ -43,7 +43,7 @@ skip('the X-Nomad-Token header gets sent with requests once it is set', function
let requestPosition = 0;
visit(`/jobs/${job.id}`);
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
assert.ok(server.pretender.handledRequests.length > 1, 'Requests have been made');
@@ -62,7 +62,7 @@ skip('the X-Nomad-Token header gets sent with requests once it is set', function
});
visit(`/jobs/${job.id}`);
- visit(`/nodes/${node.id}`);
+ visit(`/clients/${node.id}`);
andThen(() => {
const newRequests = server.pretender.handledRequests.slice(requestPosition);
diff --git a/website/source/assets/images/guide-ui-client-detail.png b/website/source/assets/images/guide-ui-client-detail.png
index 5b37c9f2041f..915e568ea35b 100644
Binary files a/website/source/assets/images/guide-ui-client-detail.png and b/website/source/assets/images/guide-ui-client-detail.png differ
diff --git a/website/source/assets/images/guide-ui-clients-list.png b/website/source/assets/images/guide-ui-clients-list.png
index 51d379095bf7..e7340cdfa046 100644
Binary files a/website/source/assets/images/guide-ui-clients-list.png and b/website/source/assets/images/guide-ui-clients-list.png differ
diff --git a/website/source/assets/images/guide-ui-server-detail.png b/website/source/assets/images/guide-ui-server-detail.png
index cf94ec4c9461..e6149e4bc554 100644
Binary files a/website/source/assets/images/guide-ui-server-detail.png and b/website/source/assets/images/guide-ui-server-detail.png differ