Exemple #1
0
 def start(self):
     # start the ovn-northd
     ovn_northd_cmd = [
         spawn.find_executable('ovn-northd'), '-vconsole:off',
         '--ovnnb-db=%s' % self.ovn_nb_db,
         '--ovnsb-db=%s' % self.ovn_sb_db, '--no-chdir',
         '--unixctl=%s' % self.unixctl_path,
         '--log-file=%s' % (self.log_file_path)
     ]
     if self.protocol == 'ssl':
         ovn_northd_cmd.append('--private-key=%s' % self.private_key)
         ovn_northd_cmd.append('--certificate=%s' % self.certificate)
         ovn_northd_cmd.append('--ca-cert=%s' % self.ca_cert)
     utils.create_process(ovn_northd_cmd)
Exemple #2
0
    def start(self):
        pki_done = False
        for ovsdb_process in self.ovsdb_server_processes:
            # create the db from the schema using ovsdb-tool
            ovsdb_tool_cmd = [
                spawn.find_executable('ovsdb-tool'), 'create',
                ovsdb_process['db_path'], ovsdb_process['schema_path']
            ]
            utils.execute(ovsdb_tool_cmd)

            # start the ovsdb-server
            ovsdb_server_cmd = [
                spawn.find_executable('ovsdb-server'), '-vconsole:off',
                '--log-file=%s' % (ovsdb_process['log_file_path']),
                '--remote=punix:%s' % (ovsdb_process['remote_path']),
                '--remote=%s' % (ovsdb_process['connection']),
                '--unixctl=%s' % (ovsdb_process['unixctl_path'])
            ]
            if ovsdb_process['protocol'] == 'ssl':
                if not pki_done:
                    pki_done = True
                    self._init_ovsdb_pki()
                ovsdb_server_cmd.append('--private-key=%s' % self.private_key)
                ovsdb_server_cmd.append('--certificate=%s' % self.certificate)
                ovsdb_server_cmd.append('--ca-cert=%s' % self.ca_cert)
            ovsdb_server_cmd.append(ovsdb_process['db_path'])
            obj, _ = utils.create_process(ovsdb_server_cmd)

            conn_cmd = [
                spawn.find_executable(ovsdb_process['ctl_cmd']),
                '--db=unix:%s' % ovsdb_process['remote_path'],
                'set-connection',
                'p%s:%s:%s' %
                (ovsdb_process['protocol'], ovsdb_process['remote_port'],
                 ovsdb_process['remote_ip']), '--', 'set', 'connection', '.',
                'inactivity_probe=60000'
            ]

            @tenacity.retry(wait=tenacity.wait_exponential(multiplier=0.1),
                            stop=tenacity.stop_after_delay(3),
                            reraise=True)
            def _set_connection():
                utils.execute(conn_cmd)

            @tenacity.retry(wait=tenacity.wait_exponential(multiplier=0.1),
                            stop=tenacity.stop_after_delay(10),
                            reraise=True)
            def get_ovsdb_remote_port_retry(pid):
                process = psutil.Process(pid)
                for connect in process.connections():
                    if connect.status == 'LISTEN':
                        return connect.laddr[1]
                raise Exception(_("Could not find LISTEN port."))

            if ovsdb_process['protocol'] != 'unix':
                _set_connection()
                ovsdb_process['remote_port'] = \
                    get_ovsdb_remote_port_retry(obj.pid)
Exemple #3
0
 def _spawn(self):
     """Spawn a process and its watchers."""
     self._kill_event = eventlet.event.Event()
     self._process, cmd = utils.create_process(self.cmd, root_helper=self.root_helper)
     self._watchers = []
     for reader in (self._read_stdout, self._read_stderr):
         # Pass the stop event directly to the greenthread to
         # ensure that assignment of a new event to the instance
         # attribute does not prevent the greenthread from using
         # the original event.
         watcher = eventlet.spawn(self._watch_process, reader, self._kill_event)
         self._watchers.append(watcher)
Exemple #4
0
def dnsmasq_local_service_supported():
    cmd = ['dnsmasq', '--test', '--local-service']
    env = {'LC_ALL': 'C'}
    obj, cmd = agent_utils.create_process(cmd, addl_env=env)
    _stdout, _stderr = obj.communicate()
    returncode = obj.returncode
    if returncode == 127:
        LOG.debug("Exception while checking dnsmasq version. "
                  "dnsmasq: No such file or directory")
        return False
    elif returncode == 1:
        return False
    return True
Exemple #5
0
def dnsmasq_local_service_supported():
    cmd = ['dnsmasq', '--test', '--local-service']
    env = {'LC_ALL': 'C'}
    obj, cmd = agent_utils.create_process(cmd, addl_env=env)
    _stdout, _stderr = obj.communicate()
    returncode = obj.returncode
    if returncode == 127:
        LOG.debug("Exception while checking dnsmasq version. "
                  "dnsmasq: No such file or directory")
        return False
    elif returncode == 1:
        return False
    return True
 def _spawn(self):
     """Spawn a process and its watchers."""
     self._kill_event = eventlet.event.Event()
     self._process, cmd = utils.create_process(self.cmd,
                                               run_as_root=self.run_as_root)
     self._watchers = []
     for reader in (self._read_stdout, self._read_stderr):
         # Pass the stop event directly to the greenthread to
         # ensure that assignment of a new event to the instance
         # attribute does not prevent the greenthread from using
         # the original event.
         watcher = eventlet.spawn(self._watch_process, reader,
                                  self._kill_event)
         self._watchers.append(watcher)
    def start(self):
        for ovsdb_process in self.ovsdb_server_processes:
            # create the db from the schema using ovsdb-tool
            ovsdb_tool_cmd = [
                spawn.find_executable('ovsdb-tool'), 'create',
                ovsdb_process['db_path'], ovsdb_process['schema_path']
            ]
            utils.execute(ovsdb_tool_cmd)

            # start the ovsdb-server
            ovsdb_server_cmd = [
                spawn.find_executable('ovsdb-server'), '-vconsole:off',
                '--log-file=%s' % (ovsdb_process['log_file_path']),
                '--remote=punix:%s' % (ovsdb_process['remote_path']),
                '--unixctl=%s' % (ovsdb_process['unixctl_path'])
            ]
            if ovsdb_process['protocol'] != 'unix':
                ovsdb_server_cmd.append(
                    '--remote=p%s:0:%s' %
                    (ovsdb_process['protocol'], ovsdb_process['remote_ip']))
            ovsdb_server_cmd.append(ovsdb_process['db_path'])
            obj, _ = utils.create_process(ovsdb_server_cmd)

            @tenacity.retry(wait=tenacity.wait_exponential(multiplier=0.1),
                            stop=tenacity.stop_after_delay(10),
                            reraise=True)
            def get_ovsdb_remote_port_retry(pid):
                process = psutil.Process(pid)
                for connect in process.connections():
                    if connect.status == 'LISTEN':
                        return connect.laddr[1]
                raise Exception(_("Could not find LISTEN port."))

            if ovsdb_process['protocol'] != 'unix':
                ovsdb_process['remote_port'] = \
                    get_ovsdb_remote_port_retry(obj.pid)