예제 #1
0
    def compute_model_inheritance(self, site_design):
        """Compute inheritance of the design model.

        Given a fully populated Site model, compute the effective
        design by applying inheritance and references
        """
        node_failed = []

        try:
            nodes = site_design.baremetal_nodes
            for n in nodes or []:
                try:
                    n.compile_applied_model(
                        site_design, state_manager=self.state_manager)
                except Exception as ex:
                    node_failed.append(n)
                    self.logger.error(
                        "Failed to build applied model for node %s." % n.name)
            if node_failed:
                raise errors.DesignError(
                    "Failed to build applied model for %s" % ",".join(
                        [x.name for x in node_failed]))
        except AttributeError:
            self.logger.debug(
                "Model inheritance skipped, no node definitions in site design."
            )

        return
예제 #2
0
    def get_network_link(self, link_key):
        for l in self.network_links:
            if l.get_id() == link_key:
                return l

        raise errors.DesignError(
            "NetworkLink %s not found in design state" % link_key)
예제 #3
0
    def get_baremetal_node(self, node_key):
        for n in self.baremetal_nodes:
            if n.get_id() == node_key:
                return n

        raise errors.DesignError(
            "BaremetalNode %s not found in design state" % node_key)
예제 #4
0
    def get_hardware_profile(self, profile_key):
        for p in self.hardware_profiles:
            if p.get_id() == profile_key:
                return p

        raise errors.DesignError(
            "HardwareProfile %s not found in design state" % profile_key)
예제 #5
0
    def get_network(self, network_key):
        for n in self.networks:
            if n.get_id() == network_key:
                return n

        raise errors.DesignError(
            "Network %s not found in design state" % network_key)
예제 #6
0
파일: site.py 프로젝트: spyd3rweb/drydock
 def get_rack(self, rack_key):
     if self.racks:
         for r in self.racks:
             if r.get_id() == rack_key:
                 return r
     raise errors.DesignError("Rack %s not found in design state" %
                              rack_key)
예제 #7
0
    def add_baremetal_node(self, new_baremetal_node):
        if new_baremetal_node is None:
            raise errors.DesignError("Invalid BaremetalNode model")

        if self.baremetal_nodes is None:
            self.baremetal_nodes = objects.BaremetalNodeList()

        self.baremetal_nodes.append(new_baremetal_node)
예제 #8
0
    def add_hardware_profile(self, new_hardware_profile):
        if new_hardware_profile is None:
            raise errors.DesignError("Invalid HardwareProfile model")

        if self.hardware_profiles is None:
            self.hardware_profiles = objects.HardwareProfileList()

        self.hardware_profiles.append(new_hardware_profile)
예제 #9
0
    def add_rack(self, new_rack):
        if new_rack is None:
            raise errors.DesignError("Invalid Rack model")

        if self.racks is None:
            self.racks = objects.RackList()

        self.racks.append(new_rack)
예제 #10
0
    def add_network_link(self, new_network_link):
        if new_network_link is None:
            raise errors.DesignError("Invalid NetworkLink model")

        if self.network_links is None:
            self.network_links = objects.NetworkLinkList()

        self.network_links.append(new_network_link)
예제 #11
0
파일: site.py 프로젝트: spyd3rweb/drydock
    def get_host_profile(self, profile_key):
        if self.host_profiles:
            for p in self.host_profiles:
                if p.get_id() == profile_key:
                    return p

        raise errors.DesignError("HostProfile %s not found in design state" %
                                 profile_key)
예제 #12
0
    def get_bootaction(self, ba_key):
        """Select a boot action from this site design with the matchkey key.

        :param ba_key: Value should match the ``get_id()`` value of the BootAction returned
        """
        for ba in self.bootactions:
            if ba.get_id() == ba_key:
                return ba
        raise errors.DesignError(
            "BootAction %s not found in design state" % ba_key)