summaryrefslogtreecommitdiff
path: root/tempest/api/network/admin/test_load_balancer_admin_actions.py
blob: 41f5caa993447ec6ae1c453ffaf69affa3f8015c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
# Copyright 2014 Mirantis.inc
# All Rights Reserved.
#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

from tempest_lib.common.utils import data_utils

from tempest.api.network import base
from tempest import test


class LoadBalancerAdminTestJSON(base.BaseAdminNetworkTest):
    """
    Test admin actions for load balancer.

    Create VIP for another tenant
    Create health monitor for another tenant
    """

    force_tenant_isolation = True

    @classmethod
    def skip_checks(cls):
        super(LoadBalancerAdminTestJSON, cls).skip_checks()
        if not test.is_extension_enabled('lbaas', 'network'):
            msg = "lbaas extension not enabled."
            raise cls.skipException(msg)

    @classmethod
    def setup_clients(cls):
        super(LoadBalancerAdminTestJSON, cls).setup_clients()
        cls.client = cls.manager.network_client

    @classmethod
    def resource_setup(cls):
        super(LoadBalancerAdminTestJSON, cls).resource_setup()
        cls.tenant_id = cls.os.credentials.tenant_id
        cls.network = cls.create_network()
        cls.subnet = cls.create_subnet(cls.network)
        cls.pool = cls.create_pool(data_utils.rand_name('pool-'),
                                   "ROUND_ROBIN", "HTTP", cls.subnet)

    @test.attr(type='smoke')
    @test.idempotent_id('6b0a20d8-4fcd-455e-b54f-ec4db5199518')
    def test_create_vip_as_admin_for_another_tenant(self):
        name = data_utils.rand_name('vip-')
        body = self.admin_client.create_pool(
            name=data_utils.rand_name('pool-'),
            lb_method="ROUND_ROBIN",
            protocol="HTTP",
            subnet_id=self.subnet['id'],
            tenant_id=self.tenant_id)
        pool = body['pool']
        self.addCleanup(self.admin_client.delete_pool, pool['id'])
        body = self.admin_client.create_vip(name=name,
                                            protocol="HTTP",
                                            protocol_port=80,
                                            subnet_id=self.subnet['id'],
                                            pool_id=pool['id'],
                                            tenant_id=self.tenant_id)
        vip = body['vip']
        self.addCleanup(self.admin_client.delete_vip, vip['id'])
        self.assertIsNotNone(vip['id'])
        self.assertEqual(self.tenant_id, vip['tenant_id'])
        body = self.client.show_vip(vip['id'])
        show_vip = body['vip']
        self.assertEqual(vip['id'], show_vip['id'])
        self.assertEqual(vip['name'], show_vip['name'])

    @test.attr(type='smoke')
    @test.idempotent_id('74552cfc-ab78-4fb6-825b-f67bca379921')
    def test_create_health_monitor_as_admin_for_another_tenant(self):
        body = (
            self.admin_client.create_health_monitor(delay=4,
                                                    max_retries=3,
                                                    type="TCP",
                                                    timeout=1,
                                                    tenant_id=self.tenant_id))
        health_monitor = body['health_monitor']
        self.addCleanup(self.admin_client.delete_health_monitor,
                        health_monitor['id'])
        self.assertIsNotNone(health_monitor['id'])
        self.assertEqual(self.tenant_id, health_monitor['tenant_id'])
        body = self.client.show_health_monitor(health_monitor['id'])
        show_health_monitor = body['health_monitor']
        self.assertEqual(health_monitor['id'], show_health_monitor['id'])

    @test.attr(type='smoke')
    @test.idempotent_id('266a192d-3c22-46c4-a8fb-802450301e82')
    def test_create_pool_from_admin_user_other_tenant(self):
        body = self.admin_client.create_pool(
            name=data_utils.rand_name('pool-'),
            lb_method="ROUND_ROBIN",
            protocol="HTTP",
            subnet_id=self.subnet['id'],
            tenant_id=self.tenant_id)
        pool = body['pool']
        self.addCleanup(self.admin_client.delete_pool, pool['id'])
        self.assertIsNotNone(pool['id'])
        self.assertEqual(self.tenant_id, pool['tenant_id'])

    @test.attr(type='smoke')
    @test.idempotent_id('158bb272-b9ed-4cfc-803c-661dac46f783')
    def test_create_member_from_admin_user_other_tenant(self):
        body = self.admin_client.create_member(address="10.0.9.47",
                                               protocol_port=80,
                                               pool_id=self.pool['id'],
                                               tenant_id=self.tenant_id)
        member = body['member']
        self.addCleanup(self.admin_client.delete_member, member['id'])
        self.assertIsNotNone(member['id'])
        self.assertEqual(self.tenant_id, member['tenant_id'])