def _spawn(self, loadbalancer, extra_cmd_args=()):
        conf_path = self._get_state_file_path(loadbalancer.id, 'haproxy.conf')
        sock_path = self._get_state_file_path(loadbalancer.id,
                                              'haproxy_stats.sock')
        user_group = self.conf.haproxy.user_group
        haproxy_base_dir = self._get_state_file_path(loadbalancer.id, '')
        jinja_cfg.save_config(conf_path, loadbalancer, sock_path, user_group,
                              haproxy_base_dir)

        def callback(pid_path):
            cmd = ['haproxy', '-f', conf_path, '-p', pid_path]
            cmd.extend(extra_cmd_args)
            return cmd

        pid_data = self._get_state_file_path(loadbalancer.id, 'haproxy.pid')
        pid_path = os.path.split(pid_data)[0]
        namespace = get_ns_name(loadbalancer.id)
        pm = external_process.ProcessManager(
            uuid=loadbalancer.id,
            default_cmd_callback=callback,
            namespace=namespace,
            service=HAPROXY_SERVICE_NAME,
            conf=self.conf,
            pids_path=pid_path,
            pid_file=pid_data,
            custom_reload_callback=callback if extra_cmd_args else None)
        if pm.active:
            pm.reload_cfg()
        else:
            pm.enable()
        self.process_monitor.register(uuid=loadbalancer.id,
                                      service_name=HAPROXY_SERVICE_NAME,
                                      monitored_process=pm)
        # remember deployed loadbalancer id
        self.deployed_loadbalancers[loadbalancer.id] = loadbalancer
Beispiel #2
0
 def test_save_config(self):
     with mock.patch('neutron_lbaas.drivers.haproxy.'
                     'jinja_cfg.render_loadbalancer_obj') as r_t, \
             mock.patch('neutron.common.utils.replace_file') as replace:
         r_t.return_value = 'fake_rendered_template'
         lb = mock.Mock()
         jinja_cfg.save_config('test_conf_path', lb, 'test_sock_path',
                               'nogroup', 'fake_state_path')
         r_t.assert_called_once_with(lb, 'nogroup', 'test_sock_path',
                                     'fake_state_path')
         replace.assert_called_once_with('test_conf_path',
                                         'fake_rendered_template')
 def test_save_config(self):
     with mock.patch('neutron_lbaas.drivers.haproxy.'
                     'jinja_cfg.render_loadbalancer_obj') as r_t, \
             mock.patch('neutron_lib.utils.file.replace_file') as replace:
         r_t.return_value = 'fake_rendered_template'
         lb = mock.Mock()
         jinja_cfg.save_config('test_conf_path', lb, 'test_sock_path',
                               'nogroup',
                               'fake_state_path')
         r_t.assert_called_once_with(lb,
                                     'nogroup',
                                     'test_sock_path',
                                     'fake_state_path')
         replace.assert_called_once_with('test_conf_path',
                                         'fake_rendered_template')
    def _spawn(self, loadbalancer, extra_cmd_args=()):
        namespace = get_ns_name(loadbalancer.id)
        conf_path = self._get_state_file_path(loadbalancer.id, 'haproxy.conf')
        pid_path = self._get_state_file_path(loadbalancer.id, 'haproxy.pid')
        sock_path = self._get_state_file_path(loadbalancer.id,
                                              'haproxy_stats.sock')
        user_group = self.conf.haproxy.user_group
        haproxy_base_dir = self._get_state_file_path(loadbalancer.id, '')
        jinja_cfg.save_config(conf_path, loadbalancer, sock_path, user_group,
                              haproxy_base_dir)
        cmd = ['haproxy', '-f', conf_path, '-p', pid_path]
        cmd.extend(extra_cmd_args)

        ns = ip_lib.IPWrapper(namespace=namespace)
        ns.netns.execute(cmd)

        # remember deployed loadbalancer id
        self.deployed_loadbalancers[loadbalancer.id] = loadbalancer
    def _spawn(self, loadbalancer, extra_cmd_args=()):
        namespace = get_ns_name(loadbalancer.id)
        conf_path = self._get_state_file_path(loadbalancer.id, 'haproxy.conf')
        pid_path = self._get_state_file_path(loadbalancer.id,
                                             'haproxy.pid')
        sock_path = self._get_state_file_path(loadbalancer.id,
                                              'haproxy_stats.sock')
        user_group = self.conf.haproxy.user_group
        haproxy_base_dir = self._get_state_file_path(loadbalancer.id, '')
        jinja_cfg.save_config(conf_path,
                              loadbalancer,
                              sock_path,
                              user_group,
                              haproxy_base_dir)
        cmd = ['haproxy', '-f', conf_path, '-p', pid_path]
        cmd.extend(extra_cmd_args)

        ns = ip_lib.IPWrapper(namespace=namespace)
        ns.netns.execute(cmd)

        # remember deployed loadbalancer id
        self.deployed_loadbalancers[loadbalancer.id] = loadbalancer
    def _spawn(self, loadbalancer, extra_cmd_args=()):
        conf_path = self._get_state_file_path(loadbalancer.id,
                                              'haproxy.conf')
        sock_path = self._get_state_file_path(loadbalancer.id,
                                              'haproxy_stats.sock')
        user_group = self.conf.haproxy.user_group
        haproxy_base_dir = self._get_state_file_path(loadbalancer.id, '')
        jinja_cfg.save_config(conf_path,
                              loadbalancer,
                              sock_path,
                              user_group,
                              haproxy_base_dir)

        def callback(pid_path):
            cmd = ['haproxy', '-f', conf_path, '-p', pid_path]
            cmd.extend(extra_cmd_args)
            return cmd

        pid_data = self._get_state_file_path(loadbalancer.id, 'haproxy.pid')
        pid_path = os.path.split(pid_data)[0]
        namespace = get_ns_name(loadbalancer.id)
        pm = external_process.ProcessManager(
            uuid=loadbalancer.id,
            default_cmd_callback=callback,
            namespace=namespace,
            service=HAPROXY_SERVICE_NAME,
            conf=self.conf,
            pids_path=pid_path,
            pid_file=pid_data,
            custom_reload_callback=callback if extra_cmd_args else None)
        if pm.active:
            pm.reload_cfg()
        else:
            pm.enable()
        self.process_monitor.register(uuid=loadbalancer.id,
                                      service_name=HAPROXY_SERVICE_NAME,
                                      monitored_process=pm)
        # remember deployed loadbalancer id
        self.deployed_loadbalancers[loadbalancer.id] = loadbalancer