def process_topology(self, old_top): """ Processes the sections returned by get_instances :param ConfigObj old_top: old topology as processed by :py:meth:`read_topology` :returns: tuple of dicts containing hypervisors, devices and artwork :rtype: tuple """ sections = self.get_sections(old_top) topo = LegacyTopology(sections, old_top) for instance in sorted(sections): if instance.startswith('vbox') or instance.startswith('qemu'): if instance.startswith('qemu') and \ 'qemupath' in old_top[instance]: topo.add_qemu_path(instance) for device in EXTRA_CONF: try: if isinstance(old_top[instance][device], dict): topo.add_conf_item(instance, device) old_top[instance].pop(device) except KeyError: pass for item in sorted(old_top[instance]): if isinstance(old_top[instance][item], dict): if item in MODEL_TRANSFORM: # A configuration item (topo.conf) topo.add_conf_item(instance, item) elif instance == 'GNS3-DATA' and \ (item.startswith('SHAPE') or item.startswith('NOTE') or item.startswith('PIXMAP')): # Item is an artwork item e.g. shapes and notes from # GNS3-DATA topo.add_artwork_item(instance, item) else: # It must be a physical item (topo.devices) topo.add_physical_item(instance, item) return topo.topology