Esempio n. 1
0
    def test_build_agent_config(self):
        conf = self.useFixture(oslo_fixture.Config(cfg.CONF))
        conf.config(debug=False)
        conf.config(group="amphora_agent",
                    admin_log_targets='192.0.2.17:10514,192.51.100.4:10514')
        conf.config(group="amphora_agent",
                    tenant_log_targets='192.0.2.7:20514,192.51.100.9:20514')
        conf.config(group="amphora_agent",
                    log_protocol=lib_consts.PROTOCOL_UDP)
        conf.config(group="amphora_agent", log_retry_count=5)
        conf.config(group="amphora_agent", log_retry_interval=2)
        conf.config(group="amphora_agent", log_queue_size=10000)

        lj = logging_jinja_cfg.LoggingJinjaTemplater()
        expected_config = (
            u'local0.=info action(type="omfwd" target="192.0.2.7" '
            'port="20514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" )&action(type="omfwd" target="192.51.100.9" '
            'port="20514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" action.execOnlyWhenPreviousIsSuspended="on")\n'
            'local1.* action(type="omfwd" target="192.0.2.17" port="10514" '
            'protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" )&action(type="omfwd" target="192.51.100.4" '
            'port="10514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" action.execOnlyWhenPreviousIsSuspended="on")')

        logging_cfg = lj.build_logging_config()

        self.assertEqual(expected_config, logging_cfg)
Esempio n. 2
0
    def test_build_agent_config_disable_logs(self):
        conf = self.useFixture(oslo_fixture.Config(cfg.CONF))
        conf.config(debug=False)
        conf.config(group="amphora_agent", disable_local_log_storage=True)

        lj = logging_jinja_cfg.LoggingJinjaTemplater()
        expected_config = (u'*.* stop')

        logging_cfg = lj.build_logging_config()

        self.assertEqual(expected_config, logging_cfg)
Esempio n. 3
0
    def test_build_agent_config(self):
        lj = logging_jinja_cfg.LoggingJinjaTemplater()
        expected_config = (
            u'local0.=info action(type="omfwd" target="192.0.2.7" '
            'port="20514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" )&action(type="omfwd" target="192.51.100.9" '
            'port="20514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" action.execOnlyWhenPreviousIsSuspended="on")\n'
            'local1.* action(type="omfwd" target="192.0.2.17" port="10514" '
            'protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" )&action(type="omfwd" target="192.51.100.4" '
            'port="10514" protocol="UDP" action.resumeRetryCount="5" '
            'action.resumeInterval="2" queue.type="linkedList" '
            'queue.size="10000" action.execOnlyWhenPreviousIsSuspended="on")')

        logging_cfg = lj.build_logging_config()

        self.assertEqual(expected_config, logging_cfg)
Esempio n. 4
0
    def execute(self,
                amphora_id,
                config_drive_files=None,
                build_type_priority=constants.LB_CREATE_NORMAL_PRIORITY,
                server_group_id=None,
                ports=None,
                flavor=None,
                availability_zone=None):
        """Create an amphora

        :returns: an amphora
        """
        ports = ports or []
        network_ids = CONF.controller_worker.amp_boot_network_list[:]
        config_drive_files = config_drive_files or {}
        user_data = None
        LOG.debug("Compute create execute for amphora with id %s", amphora_id)

        user_data_config_drive = CONF.controller_worker.user_data_config_drive
        key_name = CONF.controller_worker.amp_ssh_key_name

        # Apply an Octavia flavor customizations
        if flavor:
            topology = flavor.get(constants.LOADBALANCER_TOPOLOGY,
                                  CONF.controller_worker.loadbalancer_topology)
            amp_compute_flavor = flavor.get(
                constants.COMPUTE_FLAVOR, CONF.controller_worker.amp_flavor_id)
        else:
            topology = CONF.controller_worker.loadbalancer_topology
            amp_compute_flavor = CONF.controller_worker.amp_flavor_id

        if availability_zone:
            amp_availability_zone = availability_zone.get(
                constants.COMPUTE_ZONE)
            amp_network = availability_zone.get(constants.MANAGEMENT_NETWORK)
            if amp_network:
                network_ids = [amp_network]
        else:
            amp_availability_zone = None
        try:
            if CONF.haproxy_amphora.build_rate_limit != -1:
                self.rate_limit.add_to_build_request_queue(
                    amphora_id, build_type_priority)

            agent_cfg = agent_jinja_cfg.AgentJinjaTemplater()
            config_drive_files['/etc/octavia/amphora-agent.conf'] = (
                agent_cfg.build_agent_config(amphora_id, topology))

            logging_cfg = logging_jinja_cfg.LoggingJinjaTemplater(
                CONF.amphora_agent.logging_template_override)
            config_drive_files['/etc/rsyslog.d/10-rsyslog.conf'] = (
                logging_cfg.build_logging_config())

            if user_data_config_drive:
                udtemplater = user_data_jinja_cfg.UserDataJinjaCfg()
                user_data = udtemplater.build_user_data_config(
                    config_drive_files)
                config_drive_files = None

            compute_id = self.compute.build(
                name="amphora-" + amphora_id,
                amphora_flavor=amp_compute_flavor,
                image_id=CONF.controller_worker.amp_image_id,
                image_tag=CONF.controller_worker.amp_image_tag,
                image_owner=CONF.controller_worker.amp_image_owner_id,
                key_name=key_name,
                sec_groups=CONF.controller_worker.amp_secgroup_list,
                network_ids=network_ids,
                port_ids=[port.id for port in ports],
                config_drive_files=config_drive_files,
                user_data=user_data,
                server_group_id=server_group_id,
                availability_zone=amp_availability_zone)

            LOG.debug("Server created with id: %s for amphora id: %s",
                      compute_id, amphora_id)
            return compute_id

        except Exception:
            LOG.exception("Compute create for amphora id: %s failed",
                          amphora_id)
            raise