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