Move promenade config into the design context
This commit is contained in:
parent
ef2a1d597a
commit
3fcf90f8c7
@ -115,7 +115,7 @@ class Ingester(object):
|
||||
elif type(m) is node.BaremetalNode:
|
||||
design_data.add_baremetal_node(m)
|
||||
elif type(m) is prom.PromenadeConfig:
|
||||
design_state.post_promenade_part(m)
|
||||
design_data.add_promenade_config(m)
|
||||
design_state.put_design(design_data)
|
||||
return design_items
|
||||
else:
|
||||
|
@ -28,6 +28,7 @@ def register_all():
|
||||
__import__('drydock_provisioner.objects.hostprofile')
|
||||
__import__('drydock_provisioner.objects.hwprofile')
|
||||
__import__('drydock_provisioner.objects.site')
|
||||
__import__('drydock_provisioner.objects.promenade')
|
||||
|
||||
# Utility class for calculating inheritance
|
||||
|
||||
|
@ -12,8 +12,6 @@
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
from copy import deepcopy
|
||||
|
||||
from oslo_versionedobjects import fields as ovo_fields
|
||||
|
||||
import drydock_provisioner.objects as objects
|
||||
@ -43,3 +41,22 @@ class PromenadeConfig(base.DrydockPersistentObject, base.DrydockObject):
|
||||
|
||||
def get_name(self):
|
||||
return self.name
|
||||
|
||||
@base.DrydockObjectRegistry.register
|
||||
class PromenadeConfigList(base.DrydockObjectListBase, base.DrydockObject):
|
||||
|
||||
VERSION = '1.0'
|
||||
|
||||
fields = {
|
||||
'objects': ovo_fields.ListOfObjectsField('PromenadeConfig'),
|
||||
}
|
||||
|
||||
def select_for_target(target):
|
||||
"""
|
||||
Select all promenade configs destined for the target
|
||||
|
||||
:param string target: Target to search documents for
|
||||
"""
|
||||
|
||||
return [x for x in self.objects if x.target == target]
|
||||
|
||||
|
@ -126,6 +126,7 @@ class SiteDesign(base.DrydockPersistentObject, base.DrydockObject):
|
||||
'host_profiles': ovo_fields.ObjectField('HostProfileList', nullable=True),
|
||||
'hardware_profiles': ovo_fields.ObjectField('HardwareProfileList', nullable=True),
|
||||
'baremetal_nodes': ovo_fields.ObjectField('BaremetalNodeList', nullable=True),
|
||||
'prom_configs': ovo_fields.ObjectField('PromenadeConfigList', nullable=True),
|
||||
}
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
@ -231,6 +232,23 @@ class SiteDesign(base.DrydockPersistentObject, base.DrydockObject):
|
||||
raise DesignError("BaremetalNode %s not found in design state"
|
||||
% node_key)
|
||||
|
||||
def add_promenade_config(self, prom_conf):
|
||||
if self.prom_configs is None:
|
||||
self.prom_configs = objects.PromenadeConfigList()
|
||||
|
||||
self.prom_configs.append(prom_conf)
|
||||
|
||||
def get_promenade_configs(self):
|
||||
return self.prom_configs
|
||||
|
||||
def get_promenade_config(self, target_list):
|
||||
targeted_docs = []
|
||||
|
||||
for t in target_list:
|
||||
targeted_docs.extend(self.prom_configs.select_for_target(t))
|
||||
|
||||
return targeted_docs
|
||||
|
||||
def create(self, ctx, state_manager):
|
||||
self.created_at = datetime.datetime.now()
|
||||
self.created_by = ctx.user
|
||||
|
Loading…
x
Reference in New Issue
Block a user