Esempio n. 1
0
    def get_components(self):
        """ Get the list of component_info objects

        Returns:
            A list of ComponentInfo proto-GI objects (rw-base.yang)
        """

        vcs_info = RwBaseYang.VcsInfo()
        response_xml = self.mgmt_proxy.get_from_xpath('/vcs/info')
        response_xml = response_xml[response_xml.index('<data'):]
        self.model.load_schema_ypbc(RwBaseYang.get_schema())

        try:
            vcs_info.from_xml_v2(self.model, response_xml)
        except Exception as e:
            raise ComponentInfoError(
                "Could not convert tasklet info XML response: {}".format(
                    str(e)))

        components = vcs_info.components.component_info
        if not components:
            raise ComponentInfoError(
                "No components returned from VcsInfo request.")

        return components
Esempio n. 2
0
    def print(self, xml):
        info = rwbase.VcsInfo()
        info.from_xml_v2(self._model, xml)

        root = None
        components = {}

        for component in info.components.component_info:
            if component.rwcomponent_parent is None:
                root = component
            components[component.instance_name] = component

        if root is None:
            raise ValueError('No root component found in the tasklet info tree')

        # Workaround RIFT-6621 - Keep track of the components we've already printed.
        printed = []
        self.print_components(root, printed, components)