Change to use node resource_class
Currently, we use node_type property to link with the flavors, but ironic node's resource_class field just want to do such thing, so we can just change to use it instead of adding a new node property. Change-Id: I535606ce05299037a7bd5aacdcd7869ca5f855c4 Closes-Bug: #1695819
This commit is contained in:
parent
1eadb8e248
commit
deb70c7a63
|
@ -173,10 +173,10 @@ function create_flavor {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function update_ironic_node_type {
|
function update_ironic_node_resource_class {
|
||||||
ironic_nodes=$(openstack baremetal node list -c UUID -f value)
|
ironic_nodes=$(openstack baremetal node list -c UUID -f value)
|
||||||
for node in ${ironic_nodes};do
|
for node in ${ironic_nodes};do
|
||||||
openstack baremetal node set --property node_type=${MOGAN_DEFAULT_FLAVOR} ${node}
|
openstack --os-baremetal-api-version latest baremetal node set --resource-class ${MOGAN_DEFAULT_FLAVOR} ${node}
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -200,8 +200,8 @@ if is_service_enabled mogan; then
|
||||||
start_mogan
|
start_mogan
|
||||||
echo_summary "Creating flavor"
|
echo_summary "Creating flavor"
|
||||||
create_flavor
|
create_flavor
|
||||||
echo_summary "Updating ironic node properties"
|
echo_summary "Updating ironic node resource class"
|
||||||
update_ironic_node_type
|
update_ironic_node_resource_class
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$1" == "unstack" ]]; then
|
if [[ "$1" == "unstack" ]]; then
|
||||||
|
|
|
@ -156,7 +156,7 @@ def upgrade():
|
||||||
sa.Column('cpus', sa.Integer(), nullable=False),
|
sa.Column('cpus', sa.Integer(), nullable=False),
|
||||||
sa.Column('memory_mb', sa.Integer(), nullable=False),
|
sa.Column('memory_mb', sa.Integer(), nullable=False),
|
||||||
sa.Column('hypervisor_type', sa.String(length=255), nullable=False),
|
sa.Column('hypervisor_type', sa.String(length=255), nullable=False),
|
||||||
sa.Column('node_type', sa.String(length=255), nullable=False),
|
sa.Column('resource_class', sa.String(length=80), nullable=False),
|
||||||
sa.Column('availability_zone', sa.String(length=255), nullable=True),
|
sa.Column('availability_zone', sa.String(length=255), nullable=True),
|
||||||
sa.Column('node_uuid', sa.String(length=36), nullable=False),
|
sa.Column('node_uuid', sa.String(length=36), nullable=False),
|
||||||
sa.Column('extra_specs', sa.Text(), nullable=True),
|
sa.Column('extra_specs', sa.Text(), nullable=True),
|
||||||
|
|
|
@ -102,7 +102,7 @@ class ComputeNode(Base):
|
||||||
cpus = Column(Integer, nullable=False)
|
cpus = Column(Integer, nullable=False)
|
||||||
memory_mb = Column(Integer, nullable=False)
|
memory_mb = Column(Integer, nullable=False)
|
||||||
hypervisor_type = Column(String(255), nullable=False)
|
hypervisor_type = Column(String(255), nullable=False)
|
||||||
node_type = Column(String(255), nullable=False)
|
resource_class = Column(String(80), nullable=False)
|
||||||
availability_zone = Column(String(255), nullable=True)
|
availability_zone = Column(String(255), nullable=True)
|
||||||
node_uuid = Column(String(36), nullable=False)
|
node_uuid = Column(String(36), nullable=False)
|
||||||
extra_specs = Column(db_types.JsonEncodedDict)
|
extra_specs = Column(db_types.JsonEncodedDict)
|
||||||
|
|
|
@ -115,7 +115,6 @@ class IronicDriver(base_driver.BaseEngineDriver):
|
||||||
properties['capabilities'] = node.properties.get('capabilities')
|
properties['capabilities'] = node.properties.get('capabilities')
|
||||||
properties['availability_zone'] = \
|
properties['availability_zone'] = \
|
||||||
node.properties.get('availability_zone')
|
node.properties.get('availability_zone')
|
||||||
properties['node_type'] = node.properties.get('node_type')
|
|
||||||
return properties
|
return properties
|
||||||
|
|
||||||
def _node_resource(self, node):
|
def _node_resource(self, node):
|
||||||
|
@ -125,7 +124,6 @@ class IronicDriver(base_driver.BaseEngineDriver):
|
||||||
cpus = properties['cpus']
|
cpus = properties['cpus']
|
||||||
memory_mb = properties['memory_mb']
|
memory_mb = properties['memory_mb']
|
||||||
availability_zone = properties['availability_zone']
|
availability_zone = properties['availability_zone']
|
||||||
node_type = properties['node_type']
|
|
||||||
|
|
||||||
nodes_extra_specs = {}
|
nodes_extra_specs = {}
|
||||||
|
|
||||||
|
@ -148,7 +146,7 @@ class IronicDriver(base_driver.BaseEngineDriver):
|
||||||
'cpus': cpus,
|
'cpus': cpus,
|
||||||
'memory_mb': memory_mb,
|
'memory_mb': memory_mb,
|
||||||
'hypervisor_type': self._get_hypervisor_type(),
|
'hypervisor_type': self._get_hypervisor_type(),
|
||||||
'node_type': str(node_type),
|
'resource_class': str(node.resource_class),
|
||||||
'extra_specs': nodes_extra_specs,
|
'extra_specs': nodes_extra_specs,
|
||||||
'node_uuid': str(node.uuid),
|
'node_uuid': str(node.uuid),
|
||||||
'ports': node.ports,
|
'ports': node.ports,
|
||||||
|
|
|
@ -158,6 +158,8 @@ class EngineManager(base_manager.BaseEngineManager):
|
||||||
|
|
||||||
# Record compute nodes to db
|
# Record compute nodes to db
|
||||||
for uuid, node in nodes.items():
|
for uuid, node in nodes.items():
|
||||||
|
if node.get('resource_class') is None:
|
||||||
|
continue
|
||||||
# initialize the compute node object, creating it
|
# initialize the compute node object, creating it
|
||||||
# if it does not already exist.
|
# if it does not already exist.
|
||||||
self._init_compute_node(context, node)
|
self._init_compute_node(context, node)
|
||||||
|
|
|
@ -34,7 +34,7 @@ class ComputeNode(base.MoganObject, object_base.VersionedObjectDictCompat):
|
||||||
'cpus': object_fields.IntegerField(),
|
'cpus': object_fields.IntegerField(),
|
||||||
'memory_mb': object_fields.IntegerField(),
|
'memory_mb': object_fields.IntegerField(),
|
||||||
'hypervisor_type': object_fields.StringField(),
|
'hypervisor_type': object_fields.StringField(),
|
||||||
'node_type': object_fields.StringField(),
|
'resource_class': object_fields.StringField(),
|
||||||
'availability_zone': object_fields.StringField(nullable=True),
|
'availability_zone': object_fields.StringField(nullable=True),
|
||||||
'node_uuid': object_fields.UUIDField(read_only=True),
|
'node_uuid': object_fields.UUIDField(read_only=True),
|
||||||
'ports': object_fields.ObjectField('ComputePortList', nullable=True),
|
'ports': object_fields.ObjectField('ComputePortList', nullable=True),
|
||||||
|
@ -81,7 +81,7 @@ class ComputeNode(base.MoganObject, object_base.VersionedObjectDictCompat):
|
||||||
self.obj_reset_changes()
|
self.obj_reset_changes()
|
||||||
|
|
||||||
def update_from_driver(self, node):
|
def update_from_driver(self, node):
|
||||||
keys = ["cpus", "memory_mb", "hypervisor_type", "node_type",
|
keys = ["cpus", "memory_mb", "hypervisor_type", "resource_class",
|
||||||
"availability_zone", "node_uuid", "extra_specs"]
|
"availability_zone", "node_uuid", "extra_specs"]
|
||||||
for key in keys:
|
for key in keys:
|
||||||
if key in node:
|
if key in node:
|
||||||
|
|
|
@ -38,7 +38,7 @@ class NodeState(object):
|
||||||
self.capabilities = node.extra_specs
|
self.capabilities = node.extra_specs
|
||||||
self.availability_zone = node.availability_zone \
|
self.availability_zone = node.availability_zone \
|
||||||
or CONF.engine.default_availability_zone
|
or CONF.engine.default_availability_zone
|
||||||
self.flavor = node.node_type
|
self.flavor = node.resource_class
|
||||||
self.ports = node.ports
|
self.ports = node.ports
|
||||||
|
|
||||||
def consume_from_request(self, context):
|
def consume_from_request(self, context):
|
||||||
|
@ -46,7 +46,7 @@ class NodeState(object):
|
||||||
objects.ComputeNode.consume_node(context, self.node_uuid)
|
objects.ComputeNode.consume_node(context, self.node_uuid)
|
||||||
|
|
||||||
def __repr__(self):
|
def __repr__(self):
|
||||||
return "<Node:%s node_type:%s>" % (self.node_uuid, self.flavor)
|
return "<Node:%s resource_class:%s>" % (self.node_uuid, self.flavor)
|
||||||
|
|
||||||
|
|
||||||
class NodeManager(object):
|
class NodeManager(object):
|
||||||
|
|
|
@ -91,7 +91,7 @@ def get_test_compute_node(**kw):
|
||||||
'cpus': kw.get('cpus', 16),
|
'cpus': kw.get('cpus', 16),
|
||||||
'memory_mb': kw.get('memory_mb', 10240),
|
'memory_mb': kw.get('memory_mb', 10240),
|
||||||
'hypervisor_type': kw.get('hypervisor_type', 'ironic'),
|
'hypervisor_type': kw.get('hypervisor_type', 'ironic'),
|
||||||
'node_type': kw.get('node_type', 'gold'),
|
'resource_class': kw.get('resource_class', 'gold'),
|
||||||
'availability_zone': kw.get('availability_zone', 'test_az'),
|
'availability_zone': kw.get('availability_zone', 'test_az'),
|
||||||
'node_uuid': kw.get('node_uuid',
|
'node_uuid': kw.get('node_uuid',
|
||||||
'f978ef48-d4af-4dad-beec-e6174309bc71'),
|
'f978ef48-d4af-4dad-beec-e6174309bc71'),
|
||||||
|
|
|
@ -383,7 +383,7 @@ class _TestObject(object):
|
||||||
# The fingerprint values should only be changed if there is a version bump.
|
# The fingerprint values should only be changed if there is a version bump.
|
||||||
expected_object_fingerprints = {
|
expected_object_fingerprints = {
|
||||||
'Server': '1.0-f3ef6866ef8072b063014a2c49060c6d',
|
'Server': '1.0-f3ef6866ef8072b063014a2c49060c6d',
|
||||||
'ComputeNode': '1.0-36221253681d9acb88efe2a9113071c7',
|
'ComputeNode': '1.0-586e7eaadd4ec88a0506c4238ebdd7a5',
|
||||||
'ComputeNodeList': '1.0-33a2e1bb91ad4082f9f63429b77c1244',
|
'ComputeNodeList': '1.0-33a2e1bb91ad4082f9f63429b77c1244',
|
||||||
'ComputePort': '1.0-ca4c1817ad7324286813f2cfcdcf802e',
|
'ComputePort': '1.0-ca4c1817ad7324286813f2cfcdcf802e',
|
||||||
'ComputePortList': '1.0-33a2e1bb91ad4082f9f63429b77c1244',
|
'ComputePortList': '1.0-33a2e1bb91ad4082f9f63429b77c1244',
|
||||||
|
|
Loading…
Reference in New Issue