Add support for network_interface attribute
For the nework_interface attribute the user can: - select a value for network_interface as part of enrolling a node - update its value as part of editing a node, - see its value in the node-details/overview page Change-Id: I6bdbd9e6596de3f7da3bbcf75b511e5bc54b781a Closes-Bug: #1648566
This commit is contained in:
parent
d6e5ab2ecb
commit
d97d4b4fa2
@ -24,7 +24,7 @@ from horizon.utils.memoized import memoized # noqa
|
|||||||
from openstack_dashboard.api import base
|
from openstack_dashboard.api import base
|
||||||
|
|
||||||
|
|
||||||
DEFAULT_IRONIC_API_VERSION = '1.19'
|
DEFAULT_IRONIC_API_VERSION = '1.20'
|
||||||
DEFAULT_INSECURE = False
|
DEFAULT_INSECURE = False
|
||||||
DEFAULT_CACERT = None
|
DEFAULT_CACERT = None
|
||||||
|
|
||||||
@ -141,14 +141,8 @@ def node_create(request, params):
|
|||||||
"""
|
"""
|
||||||
node_manager = ironicclient(request).node
|
node_manager = ironicclient(request).node
|
||||||
node = node_manager.create(**params)
|
node = node_manager.create(**params)
|
||||||
field_list = ['chassis_uuid',
|
return dict([(f, getattr(node, f, ''))
|
||||||
'driver',
|
for f in res_fields.NODE_DETAILED_RESOURCE.fields])
|
||||||
'driver_info',
|
|
||||||
'properties',
|
|
||||||
'extra',
|
|
||||||
'uuid',
|
|
||||||
'name']
|
|
||||||
return dict([(f, getattr(node, f, '')) for f in field_list])
|
|
||||||
|
|
||||||
|
|
||||||
def node_delete(request, node_id):
|
def node_delete(request, node_id):
|
||||||
@ -173,7 +167,9 @@ def node_update(request, node_id, patch):
|
|||||||
|
|
||||||
http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.node.html#ironicclient.v1.node.NodeManager.update
|
http://docs.openstack.org/developer/python-ironicclient/api/ironicclient.v1.node.html#ironicclient.v1.node.NodeManager.update
|
||||||
"""
|
"""
|
||||||
ironicclient(request).node.update(node_id, patch)
|
node = ironicclient(request).node.update(node_id, patch)
|
||||||
|
return dict([(f, getattr(node, f, ''))
|
||||||
|
for f in res_fields.NODE_DETAILED_RESOURCE.fields])
|
||||||
|
|
||||||
|
|
||||||
def node_validate(request, node_id):
|
def node_validate(request, node_id):
|
||||||
|
@ -76,7 +76,8 @@
|
|||||||
driver: null,
|
driver: null,
|
||||||
driver_info: {},
|
driver_info: {},
|
||||||
properties: {},
|
properties: {},
|
||||||
extra: {}
|
extra: {},
|
||||||
|
network_interface: null
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -53,6 +53,29 @@
|
|||||||
placeholder="{$ ::'A unique node name. Optional.' | translate $}"/>
|
placeholder="{$ ::'A unique node name. Optional.' | translate $}"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<!--network interface-->
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="network_interface"
|
||||||
|
class="control-label"
|
||||||
|
translate>
|
||||||
|
Network Interface
|
||||||
|
<span class="help-icon"
|
||||||
|
data-container="body"
|
||||||
|
title=""
|
||||||
|
data-toggle="tooltip"
|
||||||
|
data-original-title="{$ ::'Network interface used for switching between provisioning, tenant, and cleaning networks.' | translate $}">
|
||||||
|
<span class="fa fa-question-circle"></span>
|
||||||
|
</span>
|
||||||
|
</label>
|
||||||
|
<div>
|
||||||
|
<div class="btn-group">
|
||||||
|
<label class="btn btn-default"
|
||||||
|
ng-repeat="opt in ['noop', 'flat', 'neutron']"
|
||||||
|
ng-model="ctrl.node.network_interface"
|
||||||
|
uib-btn-radio="opt">{$ opt $}</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<!--node driver-->
|
<!--node driver-->
|
||||||
<div class="form-group required">
|
<div class="form-group required">
|
||||||
<label for="driver"
|
<label for="driver"
|
||||||
|
@ -78,6 +78,7 @@
|
|||||||
ctrl.baseNode = node;
|
ctrl.baseNode = node;
|
||||||
|
|
||||||
ctrl.node.name = node.name;
|
ctrl.node.name = node.name;
|
||||||
|
ctrl.node.network_interface = node.network_interface;
|
||||||
for (var i = 0; i < ctrl.drivers.length; i++) {
|
for (var i = 0; i < ctrl.drivers.length; i++) {
|
||||||
if (ctrl.drivers[i].name === node.driver) {
|
if (ctrl.drivers[i].name === node.driver) {
|
||||||
ctrl.selectedDriver = ctrl.drivers[i];
|
ctrl.selectedDriver = ctrl.drivers[i];
|
||||||
@ -110,21 +111,22 @@
|
|||||||
*/
|
*/
|
||||||
function buildPatch(sourceNode, targetNode) {
|
function buildPatch(sourceNode, targetNode) {
|
||||||
var patcher = new updatePatchService.UpdatePatch();
|
var patcher = new updatePatchService.UpdatePatch();
|
||||||
|
var PatchItem = function PatchItem(id, path) {
|
||||||
patcher.buildPatch(sourceNode.name, targetNode.name, "/name");
|
this.id = id;
|
||||||
patcher.buildPatch(sourceNode.driver, targetNode.driver, "/driver");
|
this.path = path;
|
||||||
patcher.buildPatch(sourceNode.properties,
|
};
|
||||||
targetNode.properties,
|
angular.forEach([new PatchItem("name", "/name"),
|
||||||
"/properties");
|
new PatchItem("network_interface", "/network_interface"),
|
||||||
patcher.buildPatch(sourceNode.extra,
|
new PatchItem("driver", "/driver"),
|
||||||
targetNode.extra,
|
new PatchItem("properties", "/properties"),
|
||||||
"/extra");
|
new PatchItem("extra", "/extra"),
|
||||||
patcher.buildPatch(sourceNode.driver_info,
|
new PatchItem("driver_info", "/driver_info"),
|
||||||
targetNode.driver_info,
|
new PatchItem("instance_info", "/instance_info")],
|
||||||
"/driver_info");
|
function(item) {
|
||||||
patcher.buildPatch(sourceNode.instance_info,
|
patcher.buildPatch(sourceNode[item.id],
|
||||||
targetNode.instance_info,
|
targetNode[item.id],
|
||||||
"/instance_info");
|
item.path);
|
||||||
|
});
|
||||||
|
|
||||||
return patcher.getPatch();
|
return patcher.getPatch();
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
<dl class="dl-horizontal">
|
<dl class="dl-horizontal">
|
||||||
<dt translate>Name</dt>
|
<dt translate>Name</dt>
|
||||||
<dd>{$ ctrl.node.name | noValue $}</dd>
|
<dd>{$ ctrl.node.name | noValue $}</dd>
|
||||||
|
<dt translate>Network Interface</dt>
|
||||||
|
<dd>{$ ctrl.node.network_interface $}</dd>
|
||||||
<dt translate>Maintenance</dt>
|
<dt translate>Maintenance</dt>
|
||||||
<dd>{$ ctrl.node.maintenance | yesno $}</dd>
|
<dd>{$ ctrl.node.maintenance | yesno $}</dd>
|
||||||
<dt translate>Maintenance Reason</dt>
|
<dt translate>Maintenance Reason</dt>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user