diff --git a/ironic_ui/static/dashboard/admin/ironic/ironic.service.js b/ironic_ui/static/dashboard/admin/ironic/ironic.service.js
index 83eaaf9c..12198724 100755
--- a/ironic_ui/static/dashboard/admin/ironic/ironic.service.js
+++ b/ironic_ui/static/dashboard/admin/ironic/ironic.service.js
@@ -18,41 +18,6 @@
(function () {
'use strict';
- var provisionStateTransitionMatrix = {
- enroll: {
- manageable: 'manage'
- },
- manageable: {
- active: 'adopt',
- available: 'provide'
- },
- active: {
- available: 'deleted'
- },
- available: {
- active: 'active',
- manageable: 'manage'
- },
- 'adopt failed': {
- manageable: 'manage',
- active: 'adopt'
- },
- 'inspect failed': {
- manageable: 'manage'
- },
- 'clean failed': {
- manageable: 'manage'
- },
- 'deploy failed': {
- active: 'active',
- manageable: 'deleted'
- },
- error: {
- active: 'rebuild',
- manageable: 'deleted'
- }
- };
-
angular
.module('horizon.app.core.openstack-service-api')
.factory('horizon.app.core.openstack-service-api.ironic', ironicAPI);
@@ -82,7 +47,6 @@
getNode: getNode,
getNodes: getNodes,
getPortsWithNode: getPortsWithNode,
- getProvisionStateTransitionVerb: getProvisionStateTransitionVerb,
powerOffNode: powerOffNode,
powerOnNode: powerOnNode,
putNodeInMaintenanceMode: putNodeInMaintenanceMode,
@@ -447,25 +411,6 @@
toastService.add('error', interpolate(msg, [reason], false));
});
}
-
- /**
- * @description Get the verb used to transition a node from a source
- * provision-state to a target provision-state
- *
- * @param {string} sourceState – source state
- * @param {string} targetState – target state
- * @return {string} Verb used to transition from source to target state.
- * null if the requested transition is not allowed.
- */
- function getProvisionStateTransitionVerb(sourceState, targetState) {
- var verb = null;
- if (angular.isDefined(provisionStateTransitionMatrix[sourceState]) &&
- angular.isDefined(
- provisionStateTransitionMatrix[sourceState][targetState])) {
- verb = provisionStateTransitionMatrix[sourceState][targetState];
- }
- return verb;
- }
}
}());
diff --git a/ironic_ui/static/dashboard/admin/ironic/node-actions.service.js b/ironic_ui/static/dashboard/admin/ironic/node-actions.service.js
index d90af358..34ad4a3c 100755
--- a/ironic_ui/static/dashboard/admin/ironic/node-actions.service.js
+++ b/ironic_ui/static/dashboard/admin/ironic/node-actions.service.js
@@ -75,7 +75,6 @@
deleteNodes: deleteNodes,
deletePort: deletePort,
deletePorts: deletePorts,
- getProvisionStateTransitionVerb: getProvisionStateTransitionVerb,
powerOn: powerOn,
powerOff: powerOff,
powerOnAll: powerOnNodes,
@@ -207,10 +206,6 @@
ironic.setNodeProvisionState(args.node.uuid, args.verb);
}
- function getProvisionStateTransitionVerb(sourceState, targetState) {
- return ironic.getProvisionStateTransitionVerb(sourceState, targetState);
- }
-
function createPort(node) {
return createPortService.modal(node);
}
diff --git a/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.controller.js b/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.controller.js
index 00acd79f..d1d3e5ab 100755
--- a/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.controller.js
+++ b/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.controller.js
@@ -33,6 +33,7 @@
'horizon.dashboard.admin.ironic.basePath',
'horizon.dashboard.admin.ironic.edit-node.service',
'horizon.dashboard.admin.ironic.maintenance.service',
+ 'horizon.dashboard.admin.ironic.node-state-transition.service',
'horizon.dashboard.admin.ironic.validUuidPattern'
];
@@ -46,6 +47,7 @@
basePath,
editNodeService,
maintenanceService,
+ nodeStateTransitionService,
validUuidPattern) {
var ctrl = this;
var path = basePath + '/node-details/sections/';
@@ -67,6 +69,7 @@
ctrl.node = null;
ctrl.nodeValidation = {};
+ ctrl.nodeStateTransitions = [];
ctrl.ports = [];
ctrl.portsSrc = [];
ctrl.basePath = basePath;
@@ -121,6 +124,8 @@
var uuid = $location.absUrl().match(pattern)[2];
retrieveNode(uuid).then(function () {
+ ctrl.nodeStateTransitions =
+ nodeStateTransitionService.getTransitions(ctrl.node.provision_state);
retrievePorts(uuid);
ironic.validateNode(uuid).then(function(response) {
ctrl.nodeValidation = response.data;
diff --git a/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.html b/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.html
index 5dcb3b0b..473403ac 100644
--- a/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.html
+++ b/ironic_ui/static/dashboard/admin/ironic/node-details/node-details.html
@@ -32,18 +32,17 @@
disabled="!ctrl.node.maintenance">
{$ 'Maintenance off' | translate $}
-