def test__init__default(self, mock_wrap, mock_clients):
     context = lbaas_context.Lbaas(self.get_context())
     self.assertEqual(
         context.config["pool"]["lb_method"],
         lbaas_context.Lbaas.DEFAULT_CONFIG["pool"]["lb_method"])
     self.assertEqual(
         context.config["pool"]["protocol"],
         lbaas_context.Lbaas.DEFAULT_CONFIG["pool"]["protocol"])
     self.assertEqual(context.config["lbaas_version"],
                      lbaas_context.Lbaas.DEFAULT_CONFIG["lbaas_version"])
    def test_setup_with_lbaas_version_not_one(self, mock_clients, mock_wrap):
        mock_create = mock.Mock(side_effect=lambda t, **kw: t + "-net")
        mock_wrap.return_value = mock.Mock(create_v1_pool=mock_create)
        fake_args = {"lbaas_version": 2}

        lb_context = lbaas_context.Lbaas(self.get_context(**fake_args))
        lb_context._iterate_per_tenants = mock.MagicMock(
            return_value=[("bar_user", "bar_tenant")])
        net_wrapper = mock_wrap(mock_clients.return_value)
        net_wrapper.supports_extension.return_value = (True, None)
        self.assertRaises(NotImplementedError, lb_context.setup)
    def test_setup_with_lbaas(self, mock_clients, mock_wrap):
        foo_net = {
            "id": "foo_net",
            "tenant_id": "foo_tenant",
            "subnets": ["foo_subnet"],
            "lb_pools": [{
                "pool": {
                    "id": "foo_pool",
                    "tenant_id": "foo_tenant"
                }
            }]
        }
        bar_net = {
            "id": "bar_net",
            "tenant_id": "bar_tenant",
            "subnets": ["bar_subnet"],
            "lb_pools": [{
                "pool": {
                    "id": "bar_pool",
                    "tenant_id": "bar_tenant"
                }
            }]
        }
        expected_net = [bar_net, foo_net]
        mock_create = mock.Mock(
            side_effect=lambda t, s, **kw:
            {"pool": {
                "id": str(t.split("_")[0]) + "_pool",
                "tenant_id": t
            }})
        actual_net = []
        mock_wrap.return_value = mock.Mock(create_v1_pool=mock_create)
        net_wrapper = mock_wrap(mock_clients.return_value)
        net_wrapper.supports_extension.return_value = (True, None)
        fake_args = {"lbaas_version": 1}

        lb_context = lbaas_context.Lbaas(self.get_context(**fake_args))
        lb_context._iterate_per_tenants = mock.MagicMock(
            return_value=[("foo_user", "foo_tenant"), ("bar_user",
                                                       "bar_tenant")])

        lb_context.setup()

        lb_context._iterate_per_tenants.assert_called_once_with()
        net_wrapper.supports_extension.assert_called_once_with("lbaas")
        for tenant_id, tenant_ctx in (sorted(
                lb_context.context["tenants"].items())):
            for network in tenant_ctx["networks"]:
                actual_net.append(network)
        self.assertEqual(expected_net, actual_net)
 def test_cleanup_lbaas_version_not_one(self, mock_wrap, mock_clients):
     fakeargs = {"lbaas_version": 2}
     net_wrapper = mock_wrap(mock_clients.return_value)
     lb_context = lbaas_context.Lbaas(self.get_context(**fakeargs))
     for tenant_id, tenant_ctx in lb_context.context["tenants"].items():
         resultant_pool = {
             "pool": {
                 "id": str(tenant_id.split("_")[0]) + "_pool"
             }
         }
         for network in (
                 lb_context.context["tenants"][tenant_id]["networks"]):
             network.setdefault("lb_pools", []).append(resultant_pool)
     lb_context.cleanup()
     assert not net_wrapper.delete_v1_pool.called
    def test_setup_with_no_lbaas(self, mock_clients, mock_wrap):
        mock_create = mock.Mock(side_effect=lambda t, **kw: t + "-net")
        mock_wrap.return_value = mock.Mock(create_v1_pool=mock_create)
        fake_args = {"lbaas_version": 1}
        lb_context = lbaas_context.Lbaas(self.get_context(**fake_args))
        net_wrapper = mock_wrap(mock_clients.return_value)
        net_wrapper.supports_extension.return_value = (False, None)

        lb_context._iterate_per_tenants = mock.MagicMock(
            return_value=[("bar_user", "bar_tenant")])
        lb_context.setup()

        lb_context._iterate_per_tenants.assert_not_called()
        net_wrapper.supports_extension.assert_called_once_with("lbaas")
        assert not net_wrapper.create_v1_pool.called
 def test_cleanup(self, mock_wrap, mock_clients):
     net_wrapper = mock_wrap(mock_clients.return_value)
     lb_context = lbaas_context.Lbaas(self.get_context())
     expected_pools = []
     for tenant_id, tenant_ctx in lb_context.context["tenants"].items():
         resultant_pool = {
             "pool": {
                 "id": str(tenant_id.split("_")[0]) + "_pool"
             }
         }
         expected_pools.append(resultant_pool)
         for network in (
                 lb_context.context["tenants"][tenant_id]["networks"]):
             network.setdefault("lb_pools", []).append(resultant_pool)
     lb_context.cleanup()
     net_wrapper.delete_v1_pool.assert_has_calls(
         [mock.call(pool["pool"]["id"]) for pool in expected_pools])
 def test__init__explicit(self, mock_wrap, mock_clients):
     context = lbaas_context.Lbaas(
         self.get_context(pool={"lb_method": "LEAST_CONNECTIONS"}))
     self.assertEqual(context.config["pool"]["lb_method"],
                      "LEAST_CONNECTIONS")