Exemplo n.º 1
0
 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)]
     }
Exemplo n.º 2
0
 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
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
 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
Exemplo n.º 5
0
Arquivo: sig.py Projeto: shitz/scion
 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'],
     }
Exemplo n.º 6
0
 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
Exemplo n.º 7
0
 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
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
 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
Exemplo n.º 10
0
 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