From 1998b16d5a12192cd113bd37587886dd23a0fbdc Mon Sep 17 00:00:00 2001 From: Scott Hussey Date: Wed, 18 Oct 2017 16:06:36 -0500 Subject: [PATCH] Additional fields in enquiry API Add the boot IP, power mgmt IP and power state of a node to the enquiry API payload Change-Id: Ie89d3f29ba2a88d3dafe99b251ebc4422c300450 --- drydock_provisioner/cli/node/commands.py | 4 ++-- drydock_provisioner/control/nodes.py | 3 ++- drydock_provisioner/drivers/node/maasdriver/models/machine.py | 2 ++ drydock_provisioner/drydock_client/session.py | 1 - 4 files changed, 6 insertions(+), 4 deletions(-) diff --git a/drydock_provisioner/cli/node/commands.py b/drydock_provisioner/cli/node/commands.py index b8e9242c..c4164991 100644 --- a/drydock_provisioner/cli/node/commands.py +++ b/drydock_provisioner/cli/node/commands.py @@ -37,10 +37,10 @@ def node_list(ctx, output='table'): if output == 'table': pt = PrettyTable() - pt.field_names = ['Node Name', 'Status', 'CPUs', 'Memory', 'PXE MAC'] + pt.field_names = ['Node Name', 'Status', 'CPUs', 'Memory', 'PXE MAC', 'Mgmt IP', 'IPMI IP', 'Power State'] for n in nodelist: - pt.add_row([n['hostname'], n['status_name'], n['cpu_count'], n['memory'], n['boot_mac']]) + pt.add_row([n['hostname'], n['status_name'], n['cpu_count'], n['memory'], n['boot_mac'], n['boot_ip'], n['power_address'], n['power_state']]) click.echo(pt) elif output == 'json': diff --git a/drydock_provisioner/control/nodes.py b/drydock_provisioner/control/nodes.py index b8785ad4..ad3ef7a0 100644 --- a/drydock_provisioner/control/nodes.py +++ b/drydock_provisioner/control/nodes.py @@ -38,7 +38,8 @@ class NodesResource(BaseResource): node_view = list() for m in machine_list: - node_view.append(dict(hostname=m.hostname, memory=m.memory, cpu_count=m.cpu_count, status_name=m.status_name, boot_mac=m.boot_mac)) + m.get_power_params() + node_view.append(dict(hostname=m.hostname, memory=m.memory, cpu_count=m.cpu_count, status_name=m.status_name, boot_mac=m.boot_mac, power_state=m.power_state, power_address=m.power_parameters.get('power_address'), boot_ip=m.boot_ip)) resp.body = json.dumps(node_view) resp.status = falcon.HTTP_200 diff --git a/drydock_provisioner/drivers/node/maasdriver/models/machine.py b/drydock_provisioner/drivers/node/maasdriver/models/machine.py index 0ed57883..d54dc688 100644 --- a/drydock_provisioner/drivers/node/maasdriver/models/machine.py +++ b/drydock_provisioner/drivers/node/maasdriver/models/machine.py @@ -38,6 +38,7 @@ class Machine(model_base.ResourceBase): 'tag_names', 'status_name', 'boot_mac', + 'boot_ip', 'owner_data', 'block_devices', 'volume_groups', @@ -334,6 +335,7 @@ class Machine(model_base.ResourceBase): if isinstance(obj_dict['boot_interface'], dict): refined_dict['boot_mac'] = obj_dict['boot_interface'][ 'mac_address'] + refined_dict['boot_ip'] = obj_dict['boot_interface']['links'][0]['ip_address'] i = cls(api_client, **refined_dict) return i diff --git a/drydock_provisioner/drydock_client/session.py b/drydock_provisioner/drydock_client/session.py index 10993f59..1f839434 100644 --- a/drydock_provisioner/drydock_client/session.py +++ b/drydock_provisioner/drydock_client/session.py @@ -99,7 +99,6 @@ class KeystoneClient(object): :param auth_info: Authentication info to use for building a token if a ``ks_sess`` is not specified :returns: The url string of the endpoint :rtype: str - :raises AppError: if the endpoint cannot be resolved """ if ks_sess is None: ks_sess = KeystoneClient.get_ks_session(**auth_info)