1# Copyright 2014 Blue Box Group, Inc. 2# All Rights Reserved 3# 4# Licensed under the Apache License, Version 2.0 (the "License"); you may 5# not use this file except in compliance with the License. You may obtain 6# a copy of the License at 7# 8# http://www.apache.org/licenses/LICENSE-2.0 9# 10# Unless required by applicable law or agreed to in writing, software 11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 13# License for the specific language governing permissions and limitations 14# under the License. 15# 16 17import sys 18 19from neutronclient.common import exceptions 20from neutronclient.neutron.v2_0.lb.v2 import listener 21from neutronclient.tests.unit import test_cli20 22 23 24class CLITestV20LbListenerJSON(test_cli20.CLITestV20Base): 25 26 def test_create_listener_with_loadbalancer(self): 27 # lbaas-listener-create with --loadbalancer 28 resource = 'listener' 29 cmd_resource = 'lbaas_listener' 30 cmd = listener.CreateListener(test_cli20.MyApp(sys.stdout), None) 31 my_id = 'my-id' 32 loadbalancer_id = 'loadbalancer' 33 protocol = 'TCP' 34 protocol_port = '80' 35 args = ['--protocol', protocol, '--protocol-port', protocol_port, 36 '--loadbalancer', loadbalancer_id] 37 position_names = ['protocol', 'protocol_port', 'loadbalancer_id'] 38 position_values = [protocol, protocol_port, loadbalancer_id, 39 True] 40 self._test_create_resource(resource, cmd, '', my_id, args, 41 position_names, position_values, 42 cmd_resource=cmd_resource) 43 44 def test_create_listener_with_default_pool(self): 45 # lbaas-listener-create with --default-pool and no --loadbalancer. 46 resource = 'listener' 47 cmd_resource = 'lbaas_listener' 48 cmd = listener.CreateListener(test_cli20.MyApp(sys.stdout), None) 49 my_id = 'my-id' 50 default_pool_id = 'default-pool' 51 protocol = 'TCP' 52 protocol_port = '80' 53 args = ['--protocol', protocol, '--protocol-port', protocol_port, 54 '--default-pool', default_pool_id] 55 position_names = ['protocol', 'protocol_port', 'default_pool_id'] 56 position_values = [protocol, protocol_port, default_pool_id, 57 True] 58 self._test_create_resource(resource, cmd, '', my_id, args, 59 position_names, position_values, 60 cmd_resource=cmd_resource) 61 62 def test_create_listener_with_no_loadbalancer_or_default_pool(self): 63 # lbaas-listener-create without --default-pool or --loadbalancer. 64 resource = 'listener' 65 cmd_resource = 'lbaas_listener' 66 cmd = listener.CreateListener(test_cli20.MyApp(sys.stdout), None) 67 my_id = 'my-id' 68 protocol = 'TCP' 69 protocol_port = '80' 70 args = ['--protocol', protocol, '--protocol-port', protocol_port] 71 position_names = ['protocol', 'protocol_port'] 72 position_values = [protocol, protocol_port, True] 73 self._test_create_resource(resource, cmd, '', my_id, args, 74 position_names, position_values, 75 cmd_resource=cmd_resource, 76 no_api_call=True, 77 expected_exception=exceptions.CommandError) 78 79 def test_create_listener_with_all_params(self): 80 # lbaas-listener-create with all params set. 81 resource = 'listener' 82 cmd_resource = 'lbaas_listener' 83 cmd = listener.CreateListener(test_cli20.MyApp(sys.stdout), None) 84 my_id = 'my-id' 85 loadbalancer = 'loadbalancer' 86 default_pool_id = 'default-pool' 87 protocol = 'TCP' 88 protocol_port = '80' 89 connection_limit = 10 90 def_tls_cont_ref = '11111' 91 args = ['--admin-state-down', 92 '--protocol', protocol, '--protocol-port', protocol_port, 93 '--loadbalancer', loadbalancer, 94 '--default-pool', default_pool_id, 95 '--default-tls-container-ref', def_tls_cont_ref, 96 '--sni-container-refs', '1111', '2222', '3333', 97 '--connection-limit', '10'] 98 position_names = ['admin_state_up', 99 'protocol', 'protocol_port', 'loadbalancer_id', 100 'default_pool_id', 101 'default_tls_container_ref', 'sni_container_refs', 102 'connection_limit'] 103 position_values = [False, protocol, protocol_port, loadbalancer, 104 default_pool_id, 105 def_tls_cont_ref, ['1111', '2222', '3333'], 106 connection_limit] 107 self._test_create_resource(resource, cmd, '', my_id, args, 108 position_names, position_values, 109 cmd_resource=cmd_resource) 110 111 def test_list_listeners(self): 112 # lbaas-listener-list. 113 resources = 'listeners' 114 cmd_resources = 'lbaas_listeners' 115 cmd = listener.ListListener(test_cli20.MyApp(sys.stdout), None) 116 self._test_list_resources(resources, cmd, True, 117 cmd_resources=cmd_resources) 118 119 def test_list_listeners_pagination(self): 120 # lbaas-listener-list with pagination. 121 resources = 'listeners' 122 cmd_resources = 'lbaas_listeners' 123 cmd = listener.ListListener(test_cli20.MyApp(sys.stdout), None) 124 self._test_list_resources_with_pagination(resources, cmd, 125 cmd_resources=cmd_resources) 126 127 def test_list_listeners_sort(self): 128 # lbaas-listener-list --sort-key id --sort-key asc. 129 resources = 'listeners' 130 cmd_resources = 'lbaas_listeners' 131 cmd = listener.ListListener(test_cli20.MyApp(sys.stdout), None) 132 self._test_list_resources(resources, cmd, True, 133 cmd_resources=cmd_resources) 134 135 def test_list_listeners_limit(self): 136 # lbaas-listener-list -P. 137 resources = 'listeners' 138 cmd_resources = 'lbaas_listeners' 139 cmd = listener.ListListener(test_cli20.MyApp(sys.stdout), None) 140 self._test_list_resources(resources, cmd, page_size=1000, 141 cmd_resources=cmd_resources) 142 143 def test_show_listener_id(self): 144 # lbaas-listener-show test_id. 145 resource = 'listener' 146 cmd_resource = 'lbaas_listener' 147 cmd = listener.ShowListener(test_cli20.MyApp(sys.stdout), None) 148 args = ['--fields', 'id', self.test_id] 149 self._test_show_resource(resource, cmd, self.test_id, args, ['id'], 150 cmd_resource=cmd_resource) 151 152 def test_show_listener_id_name(self): 153 # lbaas-listener-show. 154 resource = 'listener' 155 cmd_resource = 'lbaas_listener' 156 cmd = listener.ShowListener(test_cli20.MyApp(sys.stdout), None) 157 args = ['--fields', 'id', '--fields', 'name', self.test_id] 158 self._test_show_resource(resource, cmd, self.test_id, 159 args, ['id', 'name'], 160 cmd_resource=cmd_resource) 161 162 def _test_update_listener(self, args, expected_values): 163 resource = 'listener' 164 cmd_resource = 'lbaas_listener' 165 my_id = 'myid' 166 args.insert(0, my_id) 167 cmd = listener.UpdateListener(test_cli20.MyApp(sys.stdout), None) 168 self._test_update_resource(resource, cmd, my_id, 169 args, expected_values, 170 cmd_resource=cmd_resource) 171 172 def test_update_listener(self): 173 # lbaas-listener-update myid --name newname. 174 self._test_update_listener(['--name', 'newname'], 175 {'name': 'newname', }) 176 # lbaas-listener-update myid --description check. 177 self._test_update_listener(['--description', 'check'], 178 {'description': 'check', }) 179 # lbaas-listener-update myid --connection-limit -1 180 self._test_update_listener(['--connection-limit', '-1'], 181 {'connection_limit': -1, }) 182 # lbaas-listener-update myid --admin-state-up False. 183 self._test_update_listener(['--admin-state-up', 'False'], 184 {'admin_state_up': 'False', }) 185 186 def test_delete_listener(self): 187 # lbaas-listener-delete my-id. 188 resource = 'listener' 189 cmd_resource = 'lbaas_listener' 190 cmd = listener.DeleteListener(test_cli20.MyApp(sys.stdout), None) 191 my_id = 'my-id' 192 args = [my_id] 193 self._test_delete_resource(resource, cmd, my_id, args, 194 cmd_resource=cmd_resource) 195