def _sig_dc_conf(self, topo_id, base): self.dc_conf['services']['scion_sig_%s' % topo_id.file_fmt()] = { 'image': 'scion_sig_acceptance:latest', 'container_name': 'scion_%ssig_%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': [ 'scion_disp_sig_%s' % topo_id.file_fmt(), sciond_svc_name(topo_id) ], 'cap_add': ['NET_ADMIN'], 'privileged': True, 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'volumes': [ *DOCKER_USR_VOL, self._disp_vol(topo_id), 'vol_scion_%ssciond_%s:/run/shm/sciond:rw' % (self.prefix, topo_id.file_fmt()), '/dev/net/tun:/dev/net/tun', '%s/sig%s:/share/conf' % (base, topo_id.file_fmt()), self._logs_vol() ], 'network_mode': 'service:scion_disp_sig_%s' % topo_id.file_fmt(), 'command': [remote_nets(self.args.networks, topo_id)] }
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 _sciond_conf(self, topo_id, base): name = sciond_svc_name(topo_id) image = 'sciond_py' if self.args.sciond == 'py' else 'sciond' entry = { 'image': docker_image(self.args, image), 'container_name': '%ssd%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': [ 'scion_disp_%s' % topo_id.file_fmt() ], 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'volumes': [ *self._std_vol(topo_id), '%s:/share/conf:ro' % os.path.join(base, 'endhost'), ], } if self.args.sciond == 'py': entry['command'] = [ '--api-addr=%s' % os.path.join(SCIOND_API_SOCKDIR, "%s.sock" % name), '--log_dir=logs', '--spki_cache_dir=cache', sciond_name(topo_id), 'conf' ] self.dc_conf['services'][name] = 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 _sig_dc_conf(self, topo_id, base): setup_name = 'scion_sig_setup_%s' % topo_id.file_fmt() disp_id = 'scion_disp_sig_%s' % topo_id.file_fmt() self.dc_conf['services'][setup_name] = { 'image': 'tester:latest', 'depends_on': [disp_id], 'entrypoint': './sig_setup.sh', 'privileged': True, 'network_mode': 'service:%s' % disp_id, } self.dc_conf['services']['scion_sig_%s' % topo_id.file_fmt()] = { 'image': 'posix-gateway:latest', 'container_name': 'scion_%ssig_%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': [ disp_id, sciond_svc_name(topo_id), setup_name, ], 'environment': { 'SCION_EXPERIMENTAL_GATEWAY_PATH_UPDATE_INTERVAL': '1s', }, 'cap_add': ['NET_ADMIN'], 'user': self.user, 'volumes': [ self._disp_vol(topo_id), '/dev/net/tun:/dev/net/tun', '%s:/share/conf' % base, ], 'network_mode': 'service:%s' % disp_id, 'command': ['--config', '/share/conf/sig.toml'], }
def _cs_conf(self, topo_id, topo, base): image = 'cert_py' if self.args.cert_server == 'py' else 'cert' 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, }, 'network_mode': 'service:scion_disp_%s' % topo_id.file_fmt(), 'volumes': self._std_vol(topo_id), 'command': [] } for k, v in topo.get("CertificateService", {}).items(): entry = copy.deepcopy(raw_entry) entry['container_name'] = self.prefix + k entry['volumes'].append('%s:/share/conf:ro' % os.path.join(base, k)) if self.args.cert_server == 'py': sciond = get_default_sciond_path(ISD_AS(topo["ISD_AS"])) entry['command'].append('--spki_cache_dir=cache') entry['command'].append('--prom=[0.0.0.0]:%s' % CS_PROM_PORT) entry['command'].append('--sciond_path=%s' % sciond) entry['command'].append(k) entry['command'].append('conf') self.dc_conf['services']['scion_%s' % k] = entry
def _sciond_conf(self, topo_id, base): name = sciond_svc_name(topo_id) net = self.elem_networks["sd" + topo_id.file_fmt()][0] ipv = 'ipv4' if ipv not in net: ipv = 'ipv6' ip = str(net[ipv]) disp_id = 'cs%s-1' % topo_id.file_fmt() entry = { 'image': docker_image(self.args, 'sciond'), 'container_name': '%ssd%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': [ 'scion_disp_%s' % disp_id ], 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'volumes': [ *DOCKER_USR_VOL, self._disp_vol(disp_id), self._cache_vol(), self._logs_vol(), self._certs_vol(), '%s:/share/conf:ro' % os.path.join(base, 'endhost'), ], 'networks': { self.bridges[net['net']]: {'%s_address' % ipv: ip} } } self.dc_conf['services'][name] = entry
def _sciond_conf(self, topo_id, base): name = sciond_svc_name(topo_id) net = self.elem_networks["sd" + topo_id.file_fmt()][0] ipv = 'ipv4' if ipv not in net: ipv = 'ipv6' ip = str(net[ipv]) disp_id = 'cs%s-1' % topo_id.file_fmt() entry = { 'extra_hosts': ['jaeger:%s' % docker_host(self.args.docker)], 'image': docker_image(self.args, 'daemon'), 'container_name': '%ssd%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': ['scion_disp_%s' % disp_id], 'user': self.user, 'volumes': [ self._disp_vol(disp_id), self._cache_vol(), self._certs_vol(), '%s:/share/conf:ro' % base ], 'networks': { self.bridges[net['net']]: { '%s_address' % ipv: ip } }, 'command': ['--config', '/share/conf/sd.toml'], } self.dc_conf['services'][name] = entry
def _bs_conf(self, topo_id, topo, base): raw_entry = { 'image': docker_image(self.args, 'beacon'), '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': [] } for k, v in topo.get("BeaconService", {}).items(): entry = copy.deepcopy(raw_entry) entry['container_name'] = self.prefix + k entry['volumes'].append('%s:/share/conf:ro' % os.path.join(base, k)) self.dc_conf['services']['scion_%s' % k] = entry
def _sciond_conf(self, topo_id, base): name = sciond_svc_name(topo_id) net = self.elem_networks["sd" + topo_id.file_fmt()][0] ip = str(net['ipv4']) entry = { 'image': docker_image(self.args, 'sciond'), 'container_name': '%ssd%s' % (self.prefix, topo_id.file_fmt()), 'depends_on': [ 'scion_disp_%s' % topo_id.file_fmt() ], 'environment': { 'SU_EXEC_USERSPEC': self.user_spec, }, 'volumes': [ *self._std_vol(topo_id), '%s:/share/conf:ro' % os.path.join(base, 'endhost'), ], 'networks': { self.bridges[net['net']]: {'ipv4_address': ip} } } self.dc_conf['services'][name] = entry