def test_create_subnet_with_multiple_enable_dhcp(self): """Create subnet with multiple --enable-dhcp arguments passed.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' position_names = ['ip_version', 'network_id', 'cidr', 'enable_dhcp'] # enable_dhcp value is appended later inside the loop position_values = [4, netid, cidr] _ = 'UNUSED_MARKER' for tested_args, should_fail, pos_value in (([ '--enable-dhcp', '--enable-dhcp=True' ], False, True), ([ '--enable-dhcp', '--enable-dhcp=False' ], True, _), (['--enable-dhcp=False', '--enable-dhcp'], True, _), (['--enable-dhcp=True', '--enable-dhcp=False'], True, _), (['--enable-dhcp=False', '--enable-dhcp=True'], True, _)): args = tested_args + [netid, cidr] pos_values = position_values + [pos_value] self._test_create_resource_and_catch_command_error( tested_args, should_fail, resource, cmd, name, myid, args, position_names, pos_values)
def test_create_subnet_dns_nameservers(self): """Create subnet: --tenant-id tenantid <dns-nameservers> netid cidr. The <dns-nameservers> are --dns-nameserver 1.1.1.20 and --dns-nameserver 1.1.1.40 """ resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--dns-nameserver', '1.1.1.20', '--dns-nameserver', '1.1.1.40', netid, cidr ] position_names = [ 'ip_version', 'dns_nameservers', 'network_id', 'cidr' ] nameservers = ['1.1.1.20', '1.1.1.40'] position_values = [4, nameservers, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_host_routes(self): """Create subnet: --tenant-id tenantid <host_routes> netid cidr. The <host_routes> are --host-route destination=172.16.1.0/24,nexthop=1.1.1.20 and --host-route destination=172.17.7.0/24,nexthop=1.1.1.40 """ resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--host-route', 'destination=172.16.1.0/24,nexthop=1.1.1.20', '--host-route', 'destination=172.17.7.0/24,nexthop=1.1.1.40', netid, cidr ] position_names = ['ip_version', 'host_routes', 'network_id', 'cidr'] routes = [{ 'destination': '172.16.1.0/24', 'nexthop': '1.1.1.20' }, { 'destination': '172.17.7.0/24', 'nexthop': '1.1.1.40' }] position_values = [4, routes, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_merge_single_single(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--allocation-pool', 'start=1.1.1.10,end=1.1.1.20', netid, cidr, '--allocation-pool', 'start=1.1.1.30,end=1.1.1.40' ] position_names = [ 'ip_version', 'allocation_pools', 'network_id', 'cidr' ] pools = [{ 'start': '1.1.1.10', 'end': '1.1.1.20' }, { 'start': '1.1.1.30', 'end': '1.1.1.40' }] position_values = [4, pools, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_with_subnetpool_ipv6_and_ip_ver_ignored( self, mock_find_resource): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' args = [ '--tenant_id', 'tenantid', '--ip-version', '4', '--subnetpool', 'subnetpool_id', netid ] position_names = ['ip_version', 'network_id', 'subnetpool_id'] position_values = [6, netid, 'subnetpool_id'] mock_find_resource.return_value = { 'id': 'subnetpool_id', 'ip_version': 6 } self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid') mock_find_resource.assert_called_once_with(self.client, 'subnetpool', 'subnetpool_id')
def test_create_subnet_with_subnetpool_ipv6_and_ip_ver_ignored(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' args = [ '--tenant_id', 'tenantid', '--ip-version', '4', '--subnetpool', 'subnetpool_id', netid ] position_names = ['ip_version', 'network_id', 'subnetpool_id'] position_values = [6, netid, 'subnetpool_id'] self.mox.StubOutWithMock(neutronV20, 'find_resource_by_name_or_id') neutronV20.find_resource_by_name_or_id(self.client, 'subnetpool', 'subnetpool_id').AndReturn({ 'id': 'subnetpool_id', 'ip_version': 6 }) self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_with_subnetpool_ipv4_with_prefixlen(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' args = [ '--tenant_id', 'tenantid', '--ip-version', '4', '--ipv6-address-mode', 'slaac', '--subnetpool', 'subnetpool_id', '--prefixlen', '31', netid ] position_names = [ 'ip_version', 'ipv6_address_mode', 'network_id', 'subnetpool_id' ] position_values = [4, None, netid, 'subnetpool_id'] self.mox.StubOutWithMock(neutronV20, 'find_resource_by_name_or_id') neutronV20.find_resource_by_name_or_id(self.client, 'subnetpool', 'subnetpool_id').AndReturn({ 'id': 'subnetpool_id', 'ip_version': 4 }) self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid', no_api_call=True, expected_exception=exceptions.CommandError)
def test_create_subnet_with_ipv6_modes(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--ip-version', '6', '--ipv6-address-mode', 'slaac', '--ipv6-ra-mode', 'slaac', netid, cidr ] position_names = [ 'ip_version', 'ipv6_address_mode', 'ipv6_ra_mode', 'network_id', 'cidr' ] position_values = [6, 'slaac', 'slaac', netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_with_ipv6_address_mode_ipv4(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--ip-version', '4', '--ipv6-address-mode', 'slaac', netid, cidr ] position_names = [ 'ip_version', 'ipv6_address_mode', 'network_id', 'cidr' ] position_values = [4, None, netid, cidr] self.assertRaises(exceptions.CommandError, self._test_create_resource, resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_allocation_pool(self): """Create subnet: --tenant_id tenantid <allocation_pool> netid cidr. The <allocation_pool> is --allocation_pool start=1.1.1.10,end=1.1.1.20 """ resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--allocation_pool', 'start=1.1.1.10,end=1.1.1.20', netid, cidr ] position_names = [ 'ip_version', 'allocation_pools', 'network_id', 'cidr' ] pool = [{'start': '1.1.1.10', 'end': '1.1.1.20'}] position_values = [4, pool, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_with_subnetpool_ipv4_with_prefixlen( self, mock_find_resource): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' args = [ '--tenant_id', 'tenantid', '--ip-version', '4', '--ipv6-address-mode', 'slaac', '--subnetpool', 'subnetpool_id', '--prefixlen', '31', netid ] position_names = [ 'ip_version', 'ipv6_address_mode', 'network_id', 'subnetpool_id' ] position_values = [4, None, netid, 'subnetpool_id'] mock_find_resource.return_value = { 'id': 'subnetpool_id', 'ip_version': 4 } self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid', no_api_call=True, expected_exception=exceptions.CommandError) mock_find_resource.assert_called_once_with(self.client, 'subnetpool', 'subnetpool_id')
def test_create_subnet_with_no_gateway(self): """Create subnet: --no-gateway netid cidr.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' args = ['--no-gateway', netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, None] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values)
def test_create_subnet_tags(self): """Create subnet: netid cidr --tags a b.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [netid, cidr, '--tags', 'a', 'b'] position_names = ['ip_version', 'network_id', 'cidr'] position_values = [4, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tags=['a', 'b'])
def test_create_subnet_tenant(self): """Create subnet: --tenant_id tenantid netid cidr.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = ['--tenant_id', 'tenantid', netid, cidr] position_names = ['ip_version', 'network_id', 'cidr'] position_values = [4, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet(self): # Create subnet: --gateway gateway netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = '10.10.10.0/24' gateway = 'gatewayvalue' args = ['--gateway', gateway, netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, gateway] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values)
def test_create_subnet_with_bad_gateway_option(self): # Create sbunet: --no-gateway netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' gateway = 'gatewayvalue' args = ['--gateway', gateway, '--no-gateway', netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, None] self.assertRaises(SystemExit, self._test_create_resource, resource, cmd, name, myid, args, position_names, position_values)
def test_create_subnet_network_cidr_seperated(self): # For positional value, network_id and cidr can be separated. """Create subnet: --gateway gateway netid cidr.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = '10.10.10.0/24' gateway = 'gatewayvalue' args = [netid, '--gateway', gateway, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, gateway] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values)
def test_create_subnet_with_enable_and_disable_dhcp(self): """Create sbunet: --enable-dhcp and --disable-dhcp.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' args = ['--enable-dhcp', '--disable-dhcp', netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, None] try: self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values) except exceptions.CommandError: return self.fail('No exception for --enable-dhcp --disable-dhcp option')
def test_create_subnet_with_disable_dhcp(self): # Create subnet: --tenant-id tenantid --disable-dhcp netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = ['--tenant_id', 'tenantid', '--disable-dhcp', netid, cidr] position_names = ['ip_version', 'enable_dhcp', 'network_id', 'cidr'] position_values = [4, False, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')
def test_create_subnet_with_bad_gateway_option(self): """Create sbunet: --no-gateway netid cidr.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' gateway = 'gatewayvalue' args = ['--gateway', gateway, '--no-gateway', netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, None] try: self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values) except Exception: return self.fail('No exception for bad gateway option')
def test_create_subnet_with_ipv6_ra_mode_ipv4(self): resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = ['--tenant_id', 'tenantid', '--ip-version', '4', '--ipv6-ra-mode', 'slaac', netid, cidr] position_names = ['ip_version', 'ipv6_ra_mode', 'network_id', 'cidr'] position_values = [4, None, netid, cidr] self._test_create_resource( resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid', no_api_call=True, expected_exception=exceptions.CommandError)
def test_create_subnet_max_v4_cidr(self): """Create subnet: --gateway gateway netid cidr.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = '192.168.0.1/32' gateway = 'gatewayvalue' args = ['--gateway', gateway, netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, gateway] self.mox.StubOutWithMock(cmd.log, 'warning') cmd.log.warning(mox.IgnoreArg()) self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values) self.mox.VerifyAll() self.mox.UnsetStubs()
def test_create_subnet_max_v4_cidr(self): # Create subnet: --gateway gateway netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = '192.168.0.1/32' gateway = 'gatewayvalue' args = ['--gateway', gateway, netid, cidr] position_names = ['ip_version', 'network_id', 'cidr', 'gateway_ip'] position_values = [4, netid, cidr, gateway] with mock.patch.object(cmd.log, 'warning') as mock_warning: self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values) mock_warning.assert_called_once_with(mock.ANY, { 'ip': 4, 'cidr': '/32' })
def test_create_subnet_with_enable_and_disable_dhcp(self): """Create subnet: --enable-dhcp and --disable-dhcp.""" resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'cidrvalue' position_names = ['ip_version', 'network_id', 'cidr', 'enable_dhcp'] # enable_dhcp value is appended later inside the loop position_values = [4, netid, cidr] for enable_dhcp_arg, should_fail in (('--enable-dhcp=False', False), ('--enable-dhcp=True', True), ('--enable-dhcp', True)): tested_args = [enable_dhcp_arg, '--disable-dhcp'] args = tested_args + [netid, cidr] pos_values = position_values + [should_fail] self._test_create_resource_and_catch_command_error( tested_args, should_fail, resource, cmd, name, myid, args, position_names, pos_values)
def test_create_subnet_with_segment(self): # Create subnet: --segment segment netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = '10.10.10.0/24' segment = 'segment' args = ['--segment', segment, netid, cidr, '--description', 'cave'] position_names = ['ip_version', 'network_id', 'cidr', 'segment_id'] position_values = [4, netid, cidr, segment] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, description='cave')
def test_create_subnet_with_use_default_subnetpool(self): # Create subnet: --tenant-id tenantid --use-default-subnetpool \ # netid cidr. resource = 'subnet' cmd = subnet.CreateSubnet(test_cli20.MyApp(sys.stdout), None) name = 'myname' myid = 'myid' netid = 'netid' cidr = 'prefixvalue' args = [ '--tenant_id', 'tenantid', '--use-default-subnetpool', netid, cidr ] position_names = [ 'ip_version', 'use_default_subnetpool', 'network_id', 'cidr' ] position_values = [4, True, netid, cidr] self._test_create_resource(resource, cmd, name, myid, args, position_names, position_values, tenant_id='tenantid')