示例#1
0
    def test_add_route_with_content(self, LoadBalancer):
        self.storage.store_binding("inst", "app.host.com")
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.consul_manager = mock.Mock()
        manager.add_route("inst", "/somewhere", None, "location /x { something; }")

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(binding_data, {
            "_id": "inst",
            "app_host": "app.host.com",
            "paths": [
                {
                    "path": "/",
                    "destination": "app.host.com",
                },
                {
                    "path": "/somewhere",
                    "destination": None,
                    "content": "location /x { something; }",
                }
            ]
        })
        manager.consul_manager.write_location.assert_called_with("inst", "/somewhere", destination=None,
                                                                 content="location /x { something; }")
示例#2
0
    def test_add_route_with_content(self, LoadBalancer):
        self.storage.store_binding("inst", "app.host.com")
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.consul_manager = mock.Mock()
        manager.add_route("inst", "/somewhere", None,
                          "location /x { something; }")

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(
            binding_data, {
                "_id":
                "inst",
                "app_host":
                "app.host.com",
                "paths": [{
                    "path": "/",
                    "destination": "app.host.com",
                }, {
                    "path": "/somewhere",
                    "destination": None,
                    "content": "location /x { something; }",
                }]
            })
        manager.consul_manager.write_location.assert_called_with(
            "inst",
            "/somewhere",
            destination=None,
            content="location /x { something; }")
示例#3
0
    def test_add_route_with_content(self, LoadBalancer, nginx):
        self.storage.store_binding('inst', 'app.host.com')
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.add_route('inst', '/somewhere', None, 'location /x { something; }')

        LoadBalancer.find.assert_called_with('inst')
        binding_data = self.storage.find_binding('inst')
        self.assertDictEqual(binding_data, {
            '_id': 'inst',
            'app_host': 'app.host.com',
            'paths': [
                {
                    'path': '/',
                    'destination': 'app.host.com',
                },
                {
                    'path': '/somewhere',
                    'destination': None,
                    'content': 'location /x { something; }',
                }
            ]
        })
        nginx_manager = nginx.NginxDAV.return_value
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[0].dns_name, '/somewhere', None, 'location /x { something; }')
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[1].dns_name, '/somewhere', None, 'location /x { something; }')
示例#4
0
 def test_bind_instance_with_route(self, LoadBalancer):
     lb = LoadBalancer.find.return_value
     lb.hosts = [mock.Mock(), mock.Mock()]
     lb.hosts[0].dns_name = "h1"
     lb.hosts[1].dns_name = "h2"
     manager = Manager(self.config)
     manager.consul_manager = mock.Mock()
     manager.add_route("x", "/somewhere", "my.other.host", None)
     manager.bind("x", "apphost.com")
     binding_data = self.storage.find_binding("x")
     self.assertDictEqual(
         binding_data, {
             "_id":
             "x",
             "app_host":
             "apphost.com",
             "paths": [{
                 "path": "/somewhere",
                 "destination": "my.other.host",
                 "content": None
             }, {
                 "path": "/",
                 "destination": "apphost.com"
             }]
         })
     LoadBalancer.find.assert_called_with("x")
     manager.consul_manager.write_location.assert_any_call(
         "x", "/somewhere", destination="my.other.host", content=None)
     manager.consul_manager.write_location.assert_any_call(
         "x", "/", destination="apphost.com")
示例#5
0
 def test_bind_instance_with_route(self, LoadBalancer, nginx):
     lb = LoadBalancer.find.return_value
     nginx_manager = nginx.NginxDAV.return_value
     lb.hosts = [mock.Mock(), mock.Mock()]
     lb.hosts[0].dns_name = 'h1'
     lb.hosts[1].dns_name = 'h2'
     manager = Manager(self.config)
     manager.add_route('x', '/somewhere', 'my.other.host', None)
     manager.bind('x', 'apphost.com')
     binding_data = self.storage.find_binding('x')
     self.assertDictEqual(binding_data, {
         '_id': 'x',
         'app_host': 'apphost.com',
         'paths': [
             {'path': '/somewhere', 'destination': 'my.other.host', 'content': None},
             {'path': '/', 'destination': 'apphost.com'}
         ]
     })
     LoadBalancer.find.assert_called_with('x')
     nginx_manager.update_binding.assert_any_call('h1', '/', 'apphost.com')
     nginx_manager.update_binding.assert_any_call('h2', '/', 'apphost.com')
     nginx_manager.update_binding.assert_any_call(
         'h1', '/somewhere', 'my.other.host', None)
     nginx_manager.update_binding.assert_any_call(
         'h2', '/somewhere', 'my.other.host', None)
示例#6
0
    def test_add_route_with_content(self, LoadBalancer, nginx):
        self.storage.store_binding("inst", "app.host.com")
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.add_route("inst", "/somewhere", None, "location /x { something; }")

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(binding_data, {
            "_id": "inst",
            "app_host": "app.host.com",
            "paths": [
                {
                    "path": "/",
                    "destination": "app.host.com",
                },
                {
                    "path": "/somewhere",
                    "destination": None,
                    "content": "location /x { something; }",
                }
            ]
        })
        nginx_manager = nginx.NginxDAV.return_value
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[0].dns_name, "/somewhere", None, "location /x { something; }")
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[1].dns_name, "/somewhere", None, "location /x { something; }")
示例#7
0
 def test_bind_instance_with_route(self, LoadBalancer):
     lb = LoadBalancer.find.return_value
     lb.hosts = [mock.Mock(), mock.Mock()]
     lb.hosts[0].dns_name = "h1"
     lb.hosts[1].dns_name = "h2"
     manager = Manager(self.config)
     manager.consul_manager = mock.Mock()
     manager.add_route("x", "/somewhere", "my.other.host", None)
     manager.bind("x", "apphost.com")
     binding_data = self.storage.find_binding("x")
     self.assertDictEqual(binding_data, {
         "_id": "x",
         "app_host": "apphost.com",
         "paths": [
             {"path": "/somewhere", "destination": "my.other.host", "content": None},
             {"path": "/", "destination": "apphost.com"}
         ]
     })
     LoadBalancer.find.assert_called_with("x")
     manager.consul_manager.write_location.assert_any_call("x", "/somewhere", destination="my.other.host",
                                                           content=None)
     manager.consul_manager.write_location.assert_any_call("x", "/", destination="apphost.com")
示例#8
0
    def test_add_route_no_binding_creates_one(self, LoadBalancer):
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.consul_manager = mock.Mock()
        manager.add_route("inst", "/somewhere", "my.other.host", None)

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(
            binding_data, {
                "_id":
                "inst",
                "paths": [{
                    "path": "/somewhere",
                    "destination": "my.other.host",
                    "content": None,
                }]
            })
        manager.consul_manager.write_location.assert_called_with(
            "inst", "/somewhere", destination="my.other.host", content=None)
示例#9
0
    def test_add_route_no_binding_creates_one(self, LoadBalancer):
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.consul_manager = mock.Mock()
        manager.add_route("inst", "/somewhere", "my.other.host", None)

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(binding_data, {
            "_id": "inst",
            "paths": [
                {
                    "path": "/somewhere",
                    "destination": "my.other.host",
                    "content": None,
                }
            ]
        })
        manager.consul_manager.write_location.assert_called_with("inst", "/somewhere",
                                                                 destination="my.other.host",
                                                                 content=None)
示例#10
0
    def test_add_route_no_binding_creates_one(self, LoadBalancer, nginx):
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.add_route('inst', '/somewhere', 'my.other.host', None)

        LoadBalancer.find.assert_called_with('inst')
        binding_data = self.storage.find_binding('inst')
        self.assertDictEqual(binding_data, {
            '_id': 'inst',
            'paths': [
                {
                    'path': '/somewhere',
                    'destination': 'my.other.host',
                    'content': None,
                }
            ]
        })
        nginx_manager = nginx.NginxDAV.return_value
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[0].dns_name, '/somewhere', 'my.other.host', None)
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[1].dns_name, '/somewhere', 'my.other.host', None)
示例#11
0
    def test_add_route_no_binding_creates_one(self, LoadBalancer, nginx):
        lb = LoadBalancer.find.return_value
        lb.hosts = [mock.Mock(), mock.Mock()]

        manager = Manager(self.config)
        manager.add_route("inst", "/somewhere", "my.other.host", None)

        LoadBalancer.find.assert_called_with("inst")
        binding_data = self.storage.find_binding("inst")
        self.assertDictEqual(binding_data, {
            "_id": "inst",
            "paths": [
                {
                    "path": "/somewhere",
                    "destination": "my.other.host",
                    "content": None,
                }
            ]
        })
        nginx_manager = nginx.NginxDAV.return_value
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[0].dns_name, "/somewhere", "my.other.host", None)
        nginx_manager.update_binding.assert_any_call(
            lb.hosts[1].dns_name, "/somewhere", "my.other.host", None)
示例#12
0
 def test_add_route_error_task_running(self):
     self.storage.store_task("inst")
     manager = Manager(self.config)
     with self.assertRaises(rpaas.tasks.NotReadyError):
         manager.add_route("inst", "/somewhere", "my.other.host", None)
示例#13
0
 def test_add_route_error_task_running(self):
     self.storage.store_task("inst")
     manager = Manager(self.config)
     with self.assertRaises(rpaas.tasks.NotReadyError):
         manager.add_route("inst", "/somewhere", "my.other.host", None)
示例#14
0
 def test_add_route_error_task_running(self):
     self.storage.store_task('inst')
     manager = Manager(self.config)
     with self.assertRaises(rpaas.manager.NotReadyError):
         manager.add_route('inst', '/somewhere', 'my.other.host', None)