Skip to content

Commit 326fff7

Browse files
authored
Merge pull request #152 from tzumainn/node-properties
Push up node resource_class/properties/traits to node/lease/offer APIs
2 parents bb1fbad + 2810ec6 commit 326fff7

File tree

18 files changed

+84
-34
lines changed

18 files changed

+84
-34
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ as specified above. Once you do so, add dummy nodes as follows:
177177
cat <<EOF > /tmp/nodes/1718
178178
{
179179
"project_owner_id": "project id of dummy node owner",
180-
"server_config": {
180+
"properties": {
181181
"new attribute XYZ": "This is just a sample list of free-form attributes used for describing a server.",
182182
"cpu_type": "Intel Xeon",
183183
"cores": 16,

esi_leap/api/controllers/v1/lease.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ class Lease(base.ESILEAPBase):
4646
resource_type = wsme.wsattr(wtypes.text)
4747
resource_uuid = wsme.wsattr(wtypes.text)
4848
resource_class = wsme.wsattr(wtypes.text)
49+
resource_properties = {wtypes.text: types.jsontype}
4950
resource = wsme.wsattr(wtypes.text, readonly=True)
5051
start_time = wsme.wsattr(datetime.datetime)
5152
fulfill_time = wsme.wsattr(datetime.datetime, readonly=True)
@@ -62,7 +63,8 @@ def __init__(self, **kwargs):
6263
for field in self.fields:
6364
setattr(self, field, kwargs.get(field, wtypes.Unset))
6465

65-
for attr in ('project', 'owner', 'resource', 'resource_class'):
66+
for attr in ('project', 'owner', 'resource', 'resource_class',
67+
'resource_properties'):
6668
setattr(self, attr, kwargs.get(attr, wtypes.Unset))
6769

6870

esi_leap/api/controllers/v1/node.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ class Node(base.ESILEAPBase):
3636
owner = wsme.wsattr(wtypes.text)
3737
maintenance = wsme.wsattr(wtypes.text)
3838
provision_state = wsme.wsattr(wtypes.text)
39+
properties = {wtypes.text: types.jsontype}
40+
resource_class = wsme.wsattr(wtypes.text)
3941
uuid = wsme.wsattr(wtypes.text)
4042
offer_uuid = wsme.wsattr(wtypes.text)
4143
lease_uuid = wsme.wsattr(wtypes.text)
@@ -46,7 +48,8 @@ class Node(base.ESILEAPBase):
4648
def __init__(self, **kwargs):
4749
self.fields = ('name', 'owner', 'uuid', 'offer_uuid', 'lease_uuid',
4850
'lessee', 'future_offers', 'future_leases',
49-
'provision_state', 'maintenance')
51+
'resource_class', 'provision_state', 'maintenance',
52+
'properties')
5053
for field in self.fields:
5154
setattr(self, field, kwargs.get(field, wtypes.Unset))
5255

@@ -103,6 +106,9 @@ def get_all(self):
103106

104107
n = Node(name=node.name, uuid=node.uuid,
105108
provision_state=node.provision_state,
109+
resource_class=node.resource_class,
110+
properties=ironic.get_condensed_properties(
111+
node.properties, node.traits),
106112
maintenance=str(node.maintenance),
107113
owner=keystone.get_project_name(node.owner, project_list),
108114
lessee=keystone.get_project_name(node.lessee,

esi_leap/api/controllers/v1/offer.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ class Offer(base.ESILEAPBase):
4848
resource_uuid = wsme.wsattr(wtypes.text, mandatory=True)
4949
resource = wsme.wsattr(wtypes.text, readonly=True)
5050
resource_class = wsme.wsattr(wtypes.text)
51+
resource_properties = {wtypes.text: types.jsontype}
5152
start_time = wsme.wsattr(datetime.datetime)
5253
end_time = wsme.wsattr(datetime.datetime)
5354
status = wsme.wsattr(wtypes.text, readonly=True)
@@ -62,7 +63,8 @@ def __init__(self, **kwargs):
6263
setattr(self, field, kwargs.get(field, wtypes.Unset))
6364

6465
for attr in ('availabilities', 'project', 'lessee',
65-
'resource', 'resource_class'):
66+
'resource', 'resource_class',
67+
'resource_properties'):
6668
setattr(self, attr, kwargs.get(attr, wtypes.Unset))
6769

6870

esi_leap/api/controllers/v1/utils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ def offer_get_dict_with_added_info(offer, project_list=None, node_list=None):
155155
o['lessee'] = keystone.get_project_name(offer.lessee_id, project_list)
156156
o['resource'] = resource.get_name(node_list)
157157
o['resource_class'] = resource.get_resource_class(node_list)
158+
o['resource_properties'] = resource.get_properties(node_list)
158159
return o
159160

160161

@@ -168,6 +169,7 @@ def lease_get_dict_with_added_info(lease, project_list=None, node_list=None):
168169
project_list)
169170
lease_dict['resource'] = resource.get_name(node_list)
170171
lease_dict['resource_class'] = resource.get_resource_class(node_list)
172+
lease_dict['resource_properties'] = resource.get_properties(node_list)
171173
return lease_dict
172174

173175

esi_leap/common/ironic.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,11 @@ def get_node(node_uuid, node_list=None):
5353
else:
5454
node = next((n for n in node_list if n.uuid == node_uuid), None)
5555
return node
56+
57+
58+
def get_condensed_properties(properties, traits):
59+
cp = properties.copy()
60+
cp.pop('lease_uuid', None)
61+
cp.pop('capabilities', None)
62+
cp['traits'] = traits
63+
return cp

esi_leap/objects/lease.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,9 @@ def __init__(self, lease, node):
100100
setattr(node, 'node_name', node.get_name())
101101
setattr(node, 'node_provision_state', node.get_node_provision_state())
102102
setattr(node, 'node_power_state', node.get_node_power_state())
103-
node_config = node.get_config().copy()
104-
node_config.pop('lease_uuid', None)
105-
setattr(node, 'node_properties', node_config)
103+
node_properties = node.get_properties().copy()
104+
node_properties.pop('lease_uuid', None)
105+
setattr(node, 'node_properties', node_properties)
106106

107107
self.populate_schema(lease=lease, node=node)
108108

esi_leap/resource_objects/base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ def get_resource_class(self, resource_list):
3333
"""Return resource's associated class, if any"""
3434

3535
@abc.abstractmethod
36-
def get_config(self):
37-
"""Return resource's associated config, if any"""
36+
def get_properties(self, resource_list):
37+
"""Return resource's associated properties, if any"""
3838

3939
@abc.abstractmethod
4040
def get_owner_project_id(self):

esi_leap/resource_objects/dummy_node.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ def get_resource_class(self, resource_list=None):
4747
err_msg='Error getting resource class',
4848
err_val=error.UNKNOWN['resource_class'])
4949

50-
def get_config(self):
51-
return self._get_node_attr('server_config', {},
52-
err_msg='Error getting resource config',
53-
err_val=error.UNKNOWN['config'])
50+
def get_properties(self, resource_list=None):
51+
return self._get_node_attr('properties', {},
52+
err_msg='Error getting resource properties',
53+
err_val=error.UNKNOWN['properties'])
5454

5555
def get_owner_project_id(self):
5656
return self._get_node_attr('project_owner_id', None,

esi_leap/resource_objects/error.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
'uuid': 'unknown-uuid',
1515
'name': 'unknown-name',
1616
'resource_class': 'unknown-class',
17-
'config': {},
17+
'properties': {},
1818
'owner_project_id': 'unknown-owner',
1919
'lease_uuid': 'unknown-lease',
2020
'lessee_project_id': 'unknown-lessee',

0 commit comments

Comments
 (0)