- {{ item.Name }} |
+
+
+
+
+
+ {{ item.Name }}
+ |
{{ item.IP }} |
{{ item.Role }} |
diff --git a/app/extensions/storidge/components/nodes-datatable/storidgeNodesDatatable.js b/app/extensions/storidge/components/nodes-datatable/storidgeNodesDatatable.js
index 8fb01f9c4..f92cc29a1 100644
--- a/app/extensions/storidge/components/nodes-datatable/storidgeNodesDatatable.js
+++ b/app/extensions/storidge/components/nodes-datatable/storidgeNodesDatatable.js
@@ -7,6 +7,9 @@ angular.module('extension.storidge').component('storidgeNodesDatatable', {
dataset: '<',
tableKey: '@',
orderBy: '@',
- reverseOrder: '<'
+ reverseOrder: '<',
+ removeAction: '<',
+ cordonNodeAction: '<',
+ uncordonNodeAction: '<'
}
});
diff --git a/app/extensions/storidge/models/node.js b/app/extensions/storidge/models/node.js
index e7e46e054..cd20b6f0c 100644
--- a/app/extensions/storidge/models/node.js
+++ b/app/extensions/storidge/models/node.js
@@ -4,3 +4,27 @@ function StoridgeNodeModel(name, data) {
this.Role = data.role;
this.Status = data.status;
}
+
+function StoridgeNodeDetailedModel(name, properties) {
+ this.Name = name;
+ this.Domain = properties['domain:'];
+ this.DomainID = properties['domainID:'];
+ this.FreeBandwidth = properties['freeBandwidth:'];
+ this.FreeCapacity = properties['freeCapacity:'];
+ this.FreeIOPS = properties['freeIOPS:'];
+ this.Hdds = properties['hdds:'];
+ this.MetadataVersion = properties['metadataVersion:'];
+ this.Nodes = properties['nodes:'];
+ this.ProvisionedBandwidth = properties['provisionedBandwidth:'];
+ this.ProvisionedCapacity = properties['provisionedCapacity:'];
+ this.ProvisionedIOPS = properties['provisionedIOPS:'];
+ this.Ssds = properties['ssds:'];
+ this.Status = properties['status:'];
+ this.TotalBandwidth = properties['totalBandwidth:'];
+ this.TotalCapacity = properties['totalCapacity:'];
+ this.TotalIOPS = properties['totalIOPS:'];
+ this.UsedBandwidth = properties['usedBandwidth:'];
+ this.UsedCapacity = properties['usedCapacity:'];
+ this.UsedIOPS = properties['usedIOPS:'];
+ this.Vdisks = properties['vdisks:'];
+}
\ No newline at end of file
diff --git a/app/extensions/storidge/rest/storidge.js b/app/extensions/storidge/rest/storidge.js
index 86a5b70ee..d0a573417 100644
--- a/app/extensions/storidge/rest/storidge.js
+++ b/app/extensions/storidge/rest/storidge.js
@@ -10,7 +10,14 @@ angular.module('extension.storidge')
queryEvents: { method: 'GET', params: { resource: 'clusters', action: 'events' }, timeout: 4500, ignoreLoadingBar: true, isArray: true },
getVersion: { method: 'GET', params: { resource: 'clusters', action: 'version' } },
getInfo: { method: 'GET', params: { resource: 'clusters', action: 'info' }, timeout: 4500, ignoreLoadingBar: true },
+
queryNodes: { method: 'GET', params: { resource: 'nodes' } },
+ getNode: { method: 'GET', params: { resource: 'nodes', id: '@id' } },
+ addNode: { method: 'POST', params: { resource: 'nodes' } },
+ removeNode: { method: 'DELETE', params: { resource: 'nodes', id: '@id' } },
+ cordonNode: { method: 'POST', params : { resource: 'nodes', action:'cordon', id: '@id' } },
+ uncordonNode: { method: 'POST', params : { resource: 'nodes', action: 'uncordon', id:'@id' } },
+
queryProfiles: { method: 'GET', params: { resource: 'profiles' } },
getProfile: { method: 'GET', params: { resource: 'profiles' } },
createProfile: { method: 'POST', params: { resource: 'profiles' } },
@@ -19,7 +26,6 @@ angular.module('extension.storidge')
queryDrives: { method: 'GET', params: { resource: 'drives' } },
getDrive: { method: 'GET', params: { resource: 'drives', id: '@id' } },
addDrive: { method: 'POST', params: { resource: 'drives' } },
- removeDrive: { method: 'DELETE', params: { resource: 'drives', id: '@id' } },
- getNode: { method: 'GET', params: { resource: 'nodes', id: '@id' } }
+ removeDrive: { method: 'DELETE', params: { resource: 'drives', id: '@id' } }
});
}]);
diff --git a/app/extensions/storidge/services/nodeService.js b/app/extensions/storidge/services/nodeService.js
index 386748ffb..53f220367 100644
--- a/app/extensions/storidge/services/nodeService.js
+++ b/app/extensions/storidge/services/nodeService.js
@@ -20,11 +20,42 @@ angular.module('extension.storidge')
deferred.resolve(nodes);
})
.catch(function error(err) {
- deferred.reject({ msg: 'Unable to retrieve Storidge profiles', err: err });
+ deferred.reject({ msg: 'Unable to retrieve Storidge nodes', err: err });
});
return deferred.promise;
};
+ service.node = function (id) {
+ var deferred = $q.defer();
+
+ Storidge.getNode({id:id}).$promise
+ .then(function success(data) {
+ var node = new StoridgeNodeDetailedModel(data.name, data.properties);
+ deferred.resolve(node);
+ })
+ .catch(function error(err) {
+ deferred.reject({ msg: 'Unable to retrieve Storidge node', err: err });
+ });
+
+ return deferred.promise;
+ };
+
+ service.add = function () {
+ return Storidge.addNode().$promise;
+ };
+
+ service.cordon = function (id) {
+ return Storidge.cordonNode({id: id}).$promise;
+ };
+
+ service.uncordon = function (id) {
+ return Storidge.uncordonNode({id: id}).$promise;
+ };
+
+ service.remove = function (id) {
+ return Storidge.removeNode({id:id}).$promise;
+ };
+
return service;
}]);
diff --git a/app/extensions/storidge/views/cluster/cluster.html b/app/extensions/storidge/views/cluster/cluster.html
index 0adb52fa4..c68e6aca0 100644
--- a/app/extensions/storidge/views/cluster/cluster.html
+++ b/app/extensions/storidge/views/cluster/cluster.html
@@ -31,6 +31,23 @@
|