def generate(self): config_dict = {} for topo_id, as_topo in self.args.topo_dicts.items(): ele_dict = defaultdict(list) for br_id, br_ele in as_topo["BorderRouters"].items(): ele_dict["BorderRouters"].append(prom_addr_br(br_id, br_ele, DEFAULT_BR_PROM_PORT)) for elem_id, elem in as_topo["BeaconService"].items(): prom_addr = prom_addr_infra(self.args.docker, elem_id, elem, BS_PROM_PORT) ele_dict["BeaconService"].append(prom_addr) for elem_id, elem in as_topo["PathService"].items(): prom_addr = prom_addr_infra(self.args.docker, elem_id, elem, PS_PROM_PORT) ele_dict["PathService"].append(prom_addr) for elem_id, elem in as_topo["CertificateService"].items(): prom_addr = prom_addr_infra(self.args.docker, elem_id, elem, CS_PROM_PORT) ele_dict["CertificateService"].append(prom_addr) if self.args.docker: host_dispatcher = prom_addr_dispatcher(self.args.docker, topo_id, self.args.networks, DISP_PROM_PORT, "") br_dispatcher = prom_addr_dispatcher(self.args.docker, topo_id, self.args.networks, DISP_PROM_PORT, "br") ele_dict["Dispatcher"] = [host_dispatcher, br_dispatcher] sd_prom_addr = prom_addr_sciond(self.args.docker, topo_id, self.args.networks, SCIOND_PROM_PORT) ele_dict["Sciond"].append(sd_prom_addr) config_dict[topo_id] = ele_dict self._write_config_files(config_dict) self._write_dc_file() self._write_disp_file()
def _ps_conf(self, topo_id, topo, base): image = 'path_py' if self.args.path_server == 'py' else 'path' raw_entry = { 'image': docker_image(self.args, image), 'depends_on': [ sciond_svc_name(topo_id), 'scion_disp_%s' % topo_id.file_fmt(), ], 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'volumes': self._std_vol(topo_id), 'command': [], } for k, v in topo.get("PathService", {}).items(): entry = copy.deepcopy(raw_entry) name = self.prefix + k entry['container_name'] = name entry['volumes'].append('%s:/share/conf:ro' % os.path.join(base, k)) if self.args.path_server == 'py': entry['command'].append('--spki_cache_dir=cache') entry['command'].append('--prom=%s' % prom_addr_infra(k, v, self.args.port_gen)) entry['command'].append('--sciond_path=%s' % get_default_sciond_path(ISD_AS(topo["ISD_AS"]))) entry['command'].append(k) entry['command'].append('conf') self.dc_conf['services']['scion_%s' % k] = entry
def _bs_conf(self, topo_id, topo, base): raw_entry = { 'image': docker_image(self.args, 'beacon_py'), 'depends_on': [ sciond_svc_name(topo_id), 'scion_disp_%s' % topo_id.file_fmt(), ], 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'network_mode': 'service:scion_disp_%s' % topo_id.file_fmt(), 'volumes': self._std_vol(topo_id), 'command': ['--spki_cache_dir=cache'] } for k, v in topo.get("BeaconService", {}).items(): entry = copy.deepcopy(raw_entry) name = self.prefix + k entry['container_name'] = name entry['volumes'].append('%s:/share/conf:ro' % os.path.join(base, k)) prom_addr = prom_addr_infra(self.args.docker, k, v, BS_PROM_PORT) entry['command'].append('--prom=%s' % prom_addr) entry['command'].append( '--sciond_path=%s' % get_default_sciond_path(ISD_AS(topo["ISD_AS"]))) entry['command'].append(k) entry['command'].append('conf') self.dc_conf['services']['scion_%s' % k] = entry
def _std_entries(self, topo, topo_key, cmd, base): entries = [] for elem_id, elem in topo.get(topo_key, {}).items(): conf_dir = os.path.join(base, elem_id) prom_addr = prom_addr_infra(elem_id, elem, self.args.port_gen) entries.append((elem_id, [cmd, "--prom", prom_addr, "--sciond_path", get_default_sciond_path(ISD_AS(topo["ISD_AS"])), elem_id, conf_dir])) return entries
def generate(self): config_dict = {} for topo_id, as_topo in self.args.topo_dicts.items(): ele_dict = defaultdict(list) for br_id, br_ele in as_topo["BorderRouters"].items(): ele_dict["BorderRouters"].append( prom_addr_br(br_id, br_ele, DEFAULT_BR_PROM_PORT)) for elem_id, elem in as_topo["BeaconService"].items(): ele_dict["BeaconService"].append( prom_addr_infra(elem_id, elem, BS_PROM_PORT)) for elem_id, elem in as_topo["PathService"].items(): ele_dict["PathService"].append( prom_addr_infra(elem_id, elem, PS_PROM_PORT)) for elem_id, elem in as_topo["CertificateService"].items(): ele_dict["CertificateService"].append( prom_addr_infra(elem_id, elem, CS_PROM_PORT)) config_dict[topo_id] = ele_dict self._write_config_files(config_dict)
def generate(self): config_dict = {} for topo_id, as_topo in self.args.topo_dicts.items(): ele_dict = defaultdict(list) for br_id, br_ele in as_topo["BorderRouters"].items(): ele_dict["BorderRouters"].append(prom_addr_br(br_id, br_ele, self.args.port_gen)) for svc_type in ["BeaconService", "PathService", "CertificateService"]: for elem_id, elem in as_topo[svc_type].items(): ele_dict[svc_type].append(prom_addr_infra(elem_id, elem, self.args.port_gen)) config_dict[topo_id] = ele_dict self._write_config_files(config_dict)
def _metrics_entry(self, name, infra_elem, base_port): prom_addr = prom_addr_infra(self.args.docker, name, infra_elem, base_port) return {'Prometheus': prom_addr}