Move promenade config into the design context

This commit is contained in:
Scott Hussey 2017-07-05 21:17:30 -05:00
parent ef2a1d597a
commit 3fcf90f8c7
5 changed files with 40 additions and 4 deletions

View File

@ -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:

View File

@ -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

View File

@ -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]

View File

@ -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