Пример #1
0
    def test_config_backend_sections(self, mock_init, mock_details, mock_services, mock_routes, mock_vhosts):
        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {}
        mock_services.return_value = []
        mock_routes.return_value = {}
        mock_vhosts.return_value = []
        self.assertEqual({}, haproxy._config_backend_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {'HW': {'balance': "source",
                                            'virtual_host': "a.com",
                                            'health_check': "check"}}
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'},
                   {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]}
        mock_vhosts.return_value = [
            {'service_alias': 'HW', 'path': '', 'host': 'a.com', 'scheme': 'http', 'port': '80'}]
        self.assertEqual(OrderedDict([('backend SERVICE_HW', ['balance source',
                                                              'server HW_1 10.7.0.2:80 check',
                                                              'server HW_2 10.7.0.3:80 check'])]),
                         haproxy._config_backend_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {'HW': {'balance': "source",
                                            'health_check': "check"}}
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'},
                   {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]}
        mock_vhosts.return_value = []
        self.assertEqual({}, haproxy._config_backend_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        haproxy.require_default_route = True
        mock_details.return_value = {'HW': {'balance': "source",
                                            'health_check': "check"}}
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'},
                   {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]}
        mock_vhosts.return_value = []
        self.assertEqual(OrderedDict([('backend default_service', ['balance source',
                                                                   'server HW_1 10.7.0.2:80 check',
                                                                   'server HW_2 10.7.0.3:80 check'])]),
                         haproxy._config_backend_sections())
Пример #2
0
    def test_config_frontend_sections(self, mock_init, mock_details, mock_services, mock_routes, mock_vhosts):
        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {}
        mock_services.return_value = []
        mock_routes.return_value = {}
        mock_vhosts.return_value = []
        self.assertEqual({}, haproxy._config_frontend_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {'HW': {'balance': "source",
                                            'virtual_host': "a.com",
                                            'health_check': "check"}}
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'},
                   {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]}
        mock_vhosts.return_value = [
            {'service_alias': 'HW', 'path': '', 'host': 'a.com', 'scheme': 'http', 'port': '80'}]
        self.assertEqual(OrderedDict([('frontend port_80',
                                       ['bind :80',
                                        'reqadd X-Forwarded-Proto:\\ http',
                                        'maxconn 4096',
                                        'acl is_websocket hdr(Upgrade) -i WebSocket',
                                        'acl host_rule_1 hdr(host) -i a.com',
                                        'acl host_rule_1_port hdr(host) -i a.com:80',
                                        'use_backend SERVICE_HW if host_rule_1 or host_rule_1_port'])]),
                         haproxy._config_frontend_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {'HW': {'balance': "source",
                                            'health_check': "check"}}
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{'container_name': 'HW_1', 'proto': 'http', 'port': '80', 'addr': '10.7.0.2'},
                   {'container_name': 'HW_2', 'proto': 'http', 'port': '80', 'addr': '10.7.0.3'}]}
        mock_vhosts.return_value = []
        self.assertEqual(OrderedDict([('frontend default_port_80',
                                       ['bind :80',
                                        'reqadd X-Forwarded-Proto:\\ http',
                                        'maxconn 4096',
                                        'default_backend default_service'])]),
                         haproxy._config_frontend_sections())
Пример #3
0
    def test_config_ssl_certs(self, mock_init, mock_get_extra_ssl_certs, mock_save):
        haproxy = Haproxy()
        haproxy.specs = Specs()
        self.assertEqual("", haproxy._config_ssl_certs())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_get_extra_ssl_certs.return_value = ["cert"]
        Haproxy.cls_certs = []
        self.assertEqual("ssl crt /certs/", haproxy._config_ssl_certs())
        self.assertEqual(["cert"], Haproxy.cls_certs)
        self.assertTrue(haproxy.ssl_updated)

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_get_extra_ssl_certs.return_value = ["cert"]
        Haproxy.cls_certs = ["cert"]
        self.assertEqual("ssl crt /certs/", haproxy._config_ssl_certs())
        self.assertFalse(haproxy.ssl_updated)
Пример #4
0
    def test_config_ssl_certs(self, mock_init, mock_save):
        haproxy = Haproxy()
        haproxy.specs = Specs()
        self.assertEqual("", haproxy._config_ssl_cacerts())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        haproxycfg.DEFAULT_CA_CERT = "cacert"
        Haproxy.cls_certs = []
        self.assertEqual(" ca-file /cacerts/cert0.pem verify required", haproxy._config_ssl_cacerts())
        self.assertEqual(["cacert"], Haproxy.cls_ca_certs)
        self.assertTrue(haproxy.ssl_updated)

        haproxy = Haproxy()
        haproxy.specs = Specs()
        haproxycfg.DEFAULT_CA_CERT = "cacert"
        Haproxy.cls_certs = ["cacert"]
        self.assertEqual(" ca-file /cacerts/cert0.pem verify required", haproxy._config_ssl_cacerts())
        self.assertFalse(haproxy.ssl_updated)

        haproxycfg.DEFAULT_CA_CERT = config.DEFAULT_CA_CERT
Пример #5
0
    def test_config_tcp_sections(self, mock_init, mock_details, mock_services,
                                 mock_routes):
        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {}
        mock_services.return_value = []
        mock_routes.return_value = {}
        self.assertEqual({}, haproxy._config_tcp_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {
            'HW': {
                'tcp_ports': ['22'],
                'health_check': 'check'
            }
        }
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.3'
            }, {
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.3'
            }]
        }
        self.assertEqual(
            OrderedDict([('listen port_22', [
                'bind :22', 'mode tcp', 'server HW_1 10.7.0.2:22 check',
                'server HW_2 10.7.0.3:22 check'
            ])]), haproxy._config_tcp_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {
            'HW': {
                'tcp_ports': ['22', '33'],
                'health_check': 'check'
            }
        }
        mock_services.return_value = ["HW"]
        mock_routes.return_value = {
            'HW': [{
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.3'
            }, {
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.3'
            }]
        }
        self.assertEqual(
            OrderedDict([('listen port_33', [
                'bind :33', 'mode tcp', 'server HW_1 10.7.0.2:33 check',
                'server HW_2 10.7.0.3:33 check'
            ]),
                         ('listen port_22', [
                             'bind :22', 'mode tcp',
                             'server HW_1 10.7.0.2:22 check',
                             'server HW_2 10.7.0.3:22 check'
                         ])]), haproxy._config_tcp_sections())

        haproxy = Haproxy()
        haproxy.specs = Specs()
        mock_details.return_value = {
            'HW': {
                'tcp_ports': ['22', '33'],
                'health_check': 'check'
            },
            'WEB': {
                'tcp_ports': ['22', '44']
            }
        }
        mock_services.return_value = ["HW", "WEB"]
        mock_routes.return_value = {
            'HW': [{
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.3'
            }, {
                'container_name': 'HW_1',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.2'
            }, {
                'container_name': 'HW_2',
                'proto': 'tcp',
                'port': '33',
                'addr': '10.7.0.3'
            }],
            'WEB': [{
                'container_name': 'WEB_1',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.4'
            }, {
                'container_name': 'WEB_2',
                'proto': 'tcp',
                'port': '22',
                'addr': '10.7.0.5'
            }, {
                'container_name': 'WEB_1',
                'proto': 'tcp',
                'port': '44',
                'addr': '10.7.0.4'
            }, {
                'container_name': 'WEB_2',
                'proto': 'tcp',
                'port': '44',
                'addr': '10.7.0.5'
            }]
        }

        self.assertEqual(
            OrderedDict([
                ('listen port_33', [
                    'bind :33', 'mode tcp', 'server HW_1 10.7.0.2:33 check',
                    'server HW_2 10.7.0.3:33 check'
                ]),
                ('listen port_44', [
                    'bind :44', 'mode tcp',
                    'server WEB_1 10.7.0.4:44 check inter 2000 rise 2 fall 3',
                    'server WEB_2 10.7.0.5:44 check inter 2000 rise 2 fall 3'
                ]),
                ('listen port_22', [
                    'bind :22', 'mode tcp',
                    'server WEB_1 10.7.0.4:22 check inter 2000 rise 2 fall 3',
                    'server WEB_2 10.7.0.5:22 check inter 2000 rise 2 fall 3',
                    'server HW_1 10.7.0.2:22 check',
                    'server HW_2 10.7.0.3:22 check'
                ])
            ]), haproxy._config_tcp_sections())