def create_as_obj(all_ases, as_credentials): as_objs = {} for _as in all_ases: isd_as = ISD_AS(_as) as_crd = as_credentials[_as] as_obj = AS_Object() as_obj.isd_id = isd_as.isd_str() as_obj.as_id = isd_as.as_str() # TRC/Cert trc_name = 'ISD%s-V1.trc' % isd_as.isd_str() cert_name = 'ISD%s-AS%s-V1.crt' % (isd_as.isd_str(), isd_as.as_file_fmt()) as_obj.trc = json.dumps(as_crd['certs'][trc_name]) as_obj.certificate = json.dumps(as_crd['certs'][cert_name]) # Keys keys = {} keys['sig_key'] = as_crd['keys']['as-sig.seed'] keys['enc_key'] = as_crd['keys']['as-decrypt.key'] keys['master0_as_key'] = as_crd['keys']['master0.key'] keys['master1_as_key'] = as_crd['keys']['master1.key'] as_obj.keys = keys # Core keys if 'core-sig.seed' in as_crd['keys']: core_keys = {} core_keys['core_sig_key'] = as_crd['keys']['core-sig.seed'] core_keys['online_key'] = as_crd['keys']['online-root.seed'] core_keys['offline_key'] = as_crd['keys']['offline-root.seed'] as_obj.core_keys = core_keys as_objs[_as] = as_obj return as_objs
def fill_router_info(self, router_dict): """ Update the router information in the database. (i.e., BorderRouter and BorderRouterAddress.) :param dict router_dict: topo_dict['BorderRouters'] """ for name, router in router_dict.items(): br_obj, _ = BorderRouter.objects.update_or_create(name=name, ad=self) router_addr = router['InternalAddrs']['IPv4'] addr_info = router_addr['PublicOverlay'] internal_public_obj, _ = BorderRouterAddress.objects.update_or_create( addr=addr_info['Addr'], l4port=addr_info['OverlayPort'], addr_type='IPv4', is_public=True, router=br_obj, ad=self) addr_info = router_addr.get('BindOverlay', None) if addr_info: internal_bound_obj, _ = BorderRouterAddress.objects.update_or_create( addr=addr_info['Addr'], l4port=addr_info['OverlayPort'], addr_type='IPv4', is_public=False, router=br_obj, ad=self) else: internal_bound_obj = None # TODO: we need to update the model: BorderRouterAddress should have also CtrlAddr, both should # have public + bind address. BorderRouterInterface should not have an index # But I don't find where we read this data for anything ! for if_id, intf in router["Interfaces"].items(): isd_as = ISD_AS(intf["ISD_AS"]) br_addr_obj = internal_public_obj br_inft_obj, _ = BorderRouterInterface.objects.update_or_create( addr=intf['PublicOverlay']['Addr'], l4port=intf['PublicOverlay']['OverlayPort'], remote_addr=intf['RemoteOverlay']['Addr'], remote_l4port=intf['RemoteOverlay']['OverlayPort'], internal_addr_idx=0, interface_id=if_id, bandwidth=intf['Bandwidth'], mtu=intf['MTU'], neighbor_isd_id=isd_as[0], neighbor_as_id=isd_as[1], neighbor_as_id_str=isd_as.as_str(), neighbor_type=intf["LinkTo"], router_addr=br_addr_obj, ad=self, bind_addr=intf['BindOverlay']['Addr'] if 'BindOverlay' in intf.keys() else None, bind_l4port=intf['BindOverlay']['OverlayPort'] if 'BindOverlay' in intf.keys() else None, )
def fill_router_info(self, router_dict): """ Update the router information in the database. (i.e., BorderRouter and BorderRouterAddress.) :param dict router_dict: topo_dict['BorderRouters'] """ for name, router in router_dict.items(): br_obj, _ = BorderRouter.objects.update_or_create(name=name, ad=self) router_addr = router['InternalAddrs']['IPv4'] addr_info = router_addr['PublicOverlay'] internal_public_obj, _ = BorderRouterAddress.objects.update_or_create( addr=addr_info['Addr'], l4port=addr_info['OverlayPort'], addr_type='IPv4', is_public=True, router=br_obj, ad=self ) addr_info = router_addr.get('BindOverlay', None) if addr_info: internal_bound_obj, _ = BorderRouterAddress.objects.update_or_create( addr=addr_info['Addr'], l4port=addr_info['OverlayPort'], addr_type='IPv4', is_public=False, router=br_obj, ad=self ) else: internal_bound_obj = None # TODO: we need to update the model: BorderRouterAddress should have also CtrlAddr, both should # have public + bind address. BorderRouterInterface should not have an index # But I don't find where we read this data for anything ! for if_id, intf in router["Interfaces"].items(): isd_as = ISD_AS(intf["ISD_AS"]) br_addr_obj = internal_public_obj br_inft_obj, _ = BorderRouterInterface.objects.update_or_create( addr=intf['PublicOverlay']['Addr'], l4port=intf['PublicOverlay']['OverlayPort'], remote_addr=intf['RemoteOverlay']['Addr'], remote_l4port=intf['RemoteOverlay']['OverlayPort'], internal_addr_idx=0, interface_id=if_id, bandwidth=intf['Bandwidth'], mtu=intf['MTU'], neighbor_isd_id=isd_as[0], neighbor_as_id=isd_as[1], neighbor_as_id_str=isd_as.as_str(), neighbor_type=intf["LinkTo"], router_addr=br_addr_obj, ad=self, bind_addr=intf['BindOverlay']['Addr'] if 'BindOverlay' in intf.keys() else None, bind_l4port=intf['BindOverlay']['OverlayPort'] if 'BindOverlay' in intf.keys() else None, )
def test(self): inst = ISD_AS() inst.isd_str = create_mock_full() inst.as_str = create_mock_full() # Call ntools.eq_(str(inst), "%s-%s" % (inst.isd_str.return_value, inst.as_str.return_value))
def _check(self, as_, s): inst = ISD_AS() inst._as = as_ # Call ntools.eq_(inst.as_str(), s)