fix pep8 issues
This commit is contained in:
parent
a05b6f267f
commit
fb0deca7e0
akanda/quantum
db
extensions
plugins
test/functional
@ -49,8 +49,8 @@ class PortForward(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
|
||||
nullable=True)
|
||||
private_port = sa.Column(sa.Integer, nullable=True)
|
||||
port = orm.relationship(models_v2.Port,
|
||||
backref=orm.backref('forwards',
|
||||
cascade='all,delete'))
|
||||
backref=orm.backref('forwards',
|
||||
cascade='all,delete'))
|
||||
|
||||
@validates('name')
|
||||
def validate_name(self, key, name):
|
||||
@ -78,8 +78,7 @@ class PortForward(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
|
||||
return private_port
|
||||
|
||||
|
||||
class AddressGroup(model_base.BASEV2, models_v2.HasId,
|
||||
models_v2.HasTenant):
|
||||
class AddressGroup(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
|
||||
"""Represents AddressGroup extension"""
|
||||
|
||||
name = sa.Column(sa.String(255), nullable=False, primary_key=True)
|
||||
@ -91,8 +90,7 @@ class AddressGroup(model_base.BASEV2, models_v2.HasId,
|
||||
return name
|
||||
|
||||
|
||||
class AddressEntry(model_base.BASEV2, models_v2.HasId,
|
||||
models_v2.HasTenant):
|
||||
class AddressEntry(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
|
||||
"""Represents (part of) an Address extension"""
|
||||
__tablename__ = 'addressentries'
|
||||
|
||||
@ -126,14 +124,14 @@ class FilterRule(model_base.BASEV2, models_v2.HasId, models_v2.HasTenant):
|
||||
ip_version = sa.Column(sa.Integer, nullable=True)
|
||||
protocol = sa.Column(sa.String(5), default='', nullable=False)
|
||||
source_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('addressgroups.id', ondelete="CASCADE"),
|
||||
nullable=True)
|
||||
sa.String(36),
|
||||
sa.ForeignKey('addressgroups.id', ondelete="CASCADE"),
|
||||
nullable=True)
|
||||
source_port = sa.Column(sa.Integer, nullable=True)
|
||||
destination_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('addressgroups.id', ondelete="CASCADE"),
|
||||
nullable=True)
|
||||
sa.String(36),
|
||||
sa.ForeignKey('addressgroups.id', ondelete="CASCADE"),
|
||||
nullable=True)
|
||||
destination_port = sa.Column(sa.Integer, nullable=True)
|
||||
created_at = sa.Column(sa.DateTime, default=timeutils.utcnow,
|
||||
nullable=False)
|
||||
|
@ -75,16 +75,16 @@ class AddressEntryResource(_authzbase.ResourceDelegate):
|
||||
try:
|
||||
group = qry.one()
|
||||
except exc.NoResultFound:
|
||||
msg = ("Tenant %(tenant_id) does not have an address "
|
||||
"group with id %(group_id)s" %
|
||||
{'tenant_id': tenant_id,
|
||||
'group_id': body.get('group_id'),
|
||||
})
|
||||
msg = (
|
||||
"Tenant %(tenant_id) does not have an address "
|
||||
"group with id %(group_id)s" %
|
||||
{'tenant_id': tenant_id, 'group_id': body.get('group_id')}
|
||||
)
|
||||
raise q_exc.BadRequest(resource='addressentry', msg=msg)
|
||||
if group.name == 'Any':
|
||||
raise q_exc.PolicyNotAuthorized(
|
||||
action='modification of system address groups'
|
||||
)
|
||||
)
|
||||
if 'tenant_id' in body:
|
||||
del body['tenant_id']
|
||||
item = self.model(tenant_id=tenant_id, **body)
|
||||
@ -95,18 +95,18 @@ class AddressEntryResource(_authzbase.ResourceDelegate):
|
||||
if resource.group.name == 'Any':
|
||||
raise q_exc.PolicyNotAuthorized(
|
||||
action='modification of system address groups'
|
||||
)
|
||||
)
|
||||
return super(AddressEntryResource, self).update(
|
||||
context,
|
||||
resource,
|
||||
resource_dict,
|
||||
)
|
||||
)
|
||||
|
||||
def before_delete(self, resource):
|
||||
if resource.group.name == 'Any':
|
||||
raise q_exc.PolicyNotAuthorized(
|
||||
action='modification of system address groups'
|
||||
)
|
||||
)
|
||||
return super(AddressEntryResource, self).before_delete(resource)
|
||||
|
||||
|
||||
@ -132,9 +132,12 @@ class Addressentry(object):
|
||||
return "2012-08-02T16:00:00-05:00"
|
||||
|
||||
def get_resources(self):
|
||||
return [extensions.ResourceExtension(
|
||||
'dhaddressentry',
|
||||
_authzbase.create_extension(AddressEntryResource()))]
|
||||
return [
|
||||
extensions.ResourceExtension(
|
||||
'dhaddressentry',
|
||||
_authzbase.create_extension(AddressEntryResource())
|
||||
)
|
||||
]
|
||||
|
||||
def get_actions(self):
|
||||
return []
|
||||
|
@ -43,54 +43,58 @@ class AddressGroupResource(_authzbase.ResourceDelegate):
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
'entries': {'allow_post': False, 'allow_put': False,
|
||||
'is_visible': True}
|
||||
'is_visible': True}
|
||||
}
|
||||
|
||||
def make_entry_dict(self, addressentry):
|
||||
return {'id': addressentry['id'],
|
||||
'name': addressentry['name'],
|
||||
'group_id': addressentry['group_id'],
|
||||
'tenant_id': addressentry['tenant_id'],
|
||||
'cidr': addressentry['cidr']}
|
||||
return {
|
||||
'id': addressentry['id'],
|
||||
'name': addressentry['name'],
|
||||
'group_id': addressentry['group_id'],
|
||||
'tenant_id': addressentry['tenant_id'],
|
||||
'cidr': addressentry['cidr']
|
||||
}
|
||||
|
||||
def make_dict(self, addressgroup):
|
||||
"""
|
||||
Convert a address model object to a dictionary.
|
||||
"""
|
||||
res = {'id': addressgroup['id'],
|
||||
'name': addressgroup['name'],
|
||||
'tenant_id': addressgroup['tenant_id'],
|
||||
'entries': [self.make_entry_dict(e)
|
||||
for e in addressgroup['entries']]}
|
||||
res = {
|
||||
'id': addressgroup['id'],
|
||||
'name': addressgroup['name'],
|
||||
'tenant_id': addressgroup['tenant_id'],
|
||||
'entries': [self.make_entry_dict(e)
|
||||
for e in addressgroup['entries']]
|
||||
}
|
||||
return res
|
||||
|
||||
def create(self, context, tenant_id, body):
|
||||
if body.get('name', '').lower() == 'any':
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='creation of wildcard address groups'
|
||||
)
|
||||
)
|
||||
return super(AddressGroupResource, self).create(
|
||||
context,
|
||||
tenant_id,
|
||||
body,
|
||||
)
|
||||
)
|
||||
|
||||
def update(self, context, resource, resource_dict):
|
||||
if resource.name == 'Any':
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='modification of system address groups'
|
||||
)
|
||||
)
|
||||
return super(AddressGroupResource, self).update(
|
||||
context,
|
||||
resource,
|
||||
resource_dict,
|
||||
)
|
||||
)
|
||||
|
||||
def before_delete(self, resource):
|
||||
if resource.name == 'Any':
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='modification of system address groups'
|
||||
)
|
||||
)
|
||||
return super(AddressGroupResource, self).before_delete(resource)
|
||||
|
||||
_authzbase.register_quota('addressgroup', 'quota_addressgroup')
|
||||
|
@ -45,11 +45,11 @@ class PortaliasResource(_authzbase.ResourceDelegate):
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
'protocol': {'allow_post': True, 'allow_put': True,
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
'port': {'allow_post': True, 'allow_put': True,
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
'required_by_policy': True,
|
||||
'is_visible': True},
|
||||
|
||||
}
|
||||
|
||||
@ -70,7 +70,7 @@ class PortaliasResource(_authzbase.ResourceDelegate):
|
||||
# any of their own aliases with a zero port.
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='modification of system port aliases.'
|
||||
)
|
||||
)
|
||||
return super(PortaliasResource, self).before_delete(resource)
|
||||
|
||||
def update(self, context, resource, resource_dict):
|
||||
@ -79,7 +79,7 @@ class PortaliasResource(_authzbase.ResourceDelegate):
|
||||
# any of their own aliases with a zero port.
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='deletion of system port aliases.'
|
||||
)
|
||||
)
|
||||
return super(PortaliasResource, self).update(context,
|
||||
resource,
|
||||
resource_dict,
|
||||
@ -91,7 +91,7 @@ class PortaliasResource(_authzbase.ResourceDelegate):
|
||||
# any of their own aliases with a zero port.
|
||||
raise exceptions.PolicyNotAuthorized(
|
||||
action='creation of wildcard port aliases'
|
||||
)
|
||||
)
|
||||
return super(PortaliasResource, self).create(context,
|
||||
tenant_id,
|
||||
body
|
||||
|
@ -75,7 +75,7 @@ class PortforwardResource(_authzbase.ResourceDelegate):
|
||||
for ip in port['fixed_ips']],
|
||||
'device_id': port['device_id'],
|
||||
'device_owner': port['device_owner']
|
||||
}
|
||||
}
|
||||
|
||||
def make_dict(self, portforward):
|
||||
"""
|
||||
|
@ -23,7 +23,8 @@ akanda_opts = [
|
||||
cfg.IntOpt('akanda_ipv6_prefix_length',
|
||||
default=64,
|
||||
help='Default length of prefix to pre-assign'),
|
||||
cfg.ListOpt('akanda_allowed_cidr_ranges',
|
||||
cfg.ListOpt(
|
||||
'akanda_allowed_cidr_ranges',
|
||||
default=['10.0.0.8/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7'],
|
||||
help='List of allowed subnet cidrs for non-admin users')
|
||||
]
|
||||
@ -31,7 +32,6 @@ akanda_opts = [
|
||||
cfg.CONF.register_opts(akanda_opts)
|
||||
|
||||
|
||||
|
||||
class NVPQuantumPlugin(nvp.NvpPluginV2, l3_db.L3_NAT_db_mixin):
|
||||
supported_extension_aliases = (
|
||||
nvp.NvpPluginV2.supported_extension_aliases +
|
||||
@ -95,8 +95,8 @@ class NVPQuantumPlugin(nvp.NvpPluginV2, l3_db.L3_NAT_db_mixin):
|
||||
def update_subnet(self, context, id, subnet):
|
||||
old_gateway = self._get_subnet(context, id)['gateway_ip']
|
||||
retval = super(NVPQuantumPlugin, self).update_subnet(context,
|
||||
id,
|
||||
subnet)
|
||||
id,
|
||||
subnet)
|
||||
# update router ports to make sure gateway matches
|
||||
if old_gateway != retval['gateway_ip']:
|
||||
self._akanda_update_internal_gateway_port_ip(context, retval)
|
||||
@ -178,7 +178,7 @@ class NVPQuantumPlugin(nvp.NvpPluginV2, l3_db.L3_NAT_db_mixin):
|
||||
remaining = IPV6_ASSIGNMENT_ATTEMPTS
|
||||
|
||||
while remaining:
|
||||
remaining -=1
|
||||
remaining -= 1
|
||||
|
||||
candidate_cidr = subnet_generator.next()
|
||||
|
||||
@ -189,19 +189,21 @@ class NVPQuantumPlugin(nvp.NvpPluginV2, l3_db.L3_NAT_db_mixin):
|
||||
if not existing:
|
||||
create_args = {
|
||||
'network_id': network['id'],
|
||||
'name': '',
|
||||
'cidr': str(candidate_cidr),
|
||||
'ip_version': candidate_cidr.version,
|
||||
'enable_dhcp': False,
|
||||
'gateway_ip': attributes.ATTR_NOT_SPECIFIED,
|
||||
'dns_nameservers': attributes.ATTR_NOT_SPECIFIED,
|
||||
'host_routes': attributes.ATTR_NOT_SPECIFIED,
|
||||
'allocation_pools': attributes.ATTR_NOT_SPECIFIED}
|
||||
'name': '',
|
||||
'cidr': str(candidate_cidr),
|
||||
'ip_version': candidate_cidr.version,
|
||||
'enable_dhcp': False,
|
||||
'gateway_ip': attributes.ATTR_NOT_SPECIFIED,
|
||||
'dns_nameservers': attributes.ATTR_NOT_SPECIFIED,
|
||||
'host_routes': attributes.ATTR_NOT_SPECIFIED,
|
||||
'allocation_pools': attributes.ATTR_NOT_SPECIFIED
|
||||
}
|
||||
self.create_subnet(context, {'subnet': create_args})
|
||||
break
|
||||
else:
|
||||
LOG.error('Unable to generate a unique tenant subnet cidr')
|
||||
|
||||
|
||||
def _ipv6_subnet_generator(network_range, prefixlen):
|
||||
# coerce prefixlen to stay within bounds
|
||||
prefixlen = min(128, prefixlen)
|
||||
@ -216,13 +218,13 @@ def _ipv6_subnet_generator(network_range, prefixlen):
|
||||
'range prefixlen (/%s)' % (prefixlen, net.prefixlen))
|
||||
|
||||
rand = random.SystemRandom()
|
||||
max_range = 2**(prefixlen - net.prefixlen)
|
||||
max_range = 2 ** (prefixlen - net.prefixlen)
|
||||
|
||||
while True:
|
||||
rand_bits = rand.randint(0, max_range)
|
||||
|
||||
candidate_cidr = netaddr.IPNetwork(
|
||||
netaddr.IPAddress(net.value + (rand_bits << prefixlen)))
|
||||
netaddr.IPAddress(net.value + (rand_bits << prefixlen)))
|
||||
candidate_cidr.prefixlen = prefixlen
|
||||
|
||||
yield candidate_cidr
|
||||
|
@ -23,7 +23,8 @@ akanda_opts = [
|
||||
cfg.IntOpt('akanda_ipv6_prefix_length',
|
||||
default=64,
|
||||
help='Default length of prefix to pre-assign'),
|
||||
cfg.ListOpt('akanda_allowed_cidr_ranges',
|
||||
cfg.ListOpt(
|
||||
'akanda_allowed_cidr_ranges',
|
||||
default=['10.0.0.8/8', '172.16.0.0/12', '192.168.0.0/16', 'fc00::/7'],
|
||||
help='List of allowed subnet cidrs for non-admin users')
|
||||
]
|
||||
@ -41,7 +42,7 @@ DEFAULT_PORT_ALIASES = [
|
||||
('udp', 53, 'DNS'),
|
||||
('tcp', 80, 'HTTP'),
|
||||
('tcp', 443, 'HTTPS'),
|
||||
]
|
||||
]
|
||||
|
||||
# Provide a list of the default address entries
|
||||
# to be created for a tenant.
|
||||
@ -49,7 +50,7 @@ DEFAULT_PORT_ALIASES = [
|
||||
# a configuration file somewhere.
|
||||
DEFAULT_ADDRESS_GROUPS = [
|
||||
('Any', [('Any', '0.0.0.0/0')]),
|
||||
]
|
||||
]
|
||||
|
||||
|
||||
class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
@ -87,8 +88,8 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
break
|
||||
else:
|
||||
reason = ('Cannot create a subnet that is not within the '
|
||||
'allowed address ranges [%s].' %
|
||||
cfg.CONF.akanda_allowed_cidr_ranges)
|
||||
'allowed address ranges [%s].' %
|
||||
cfg.CONF.akanda_allowed_cidr_ranges)
|
||||
#FIXME(rods): enable internationalization for this message
|
||||
raise q_exc.AdminRequired(reason=reason)
|
||||
|
||||
@ -156,9 +157,11 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
port['fixed_ips'].append({'subnet_id': subnet['id'],
|
||||
'ip_address': subnet['gateway_ip']})
|
||||
|
||||
self.update_port(context.elevated(),
|
||||
port['id'],
|
||||
{'port': port})
|
||||
self.update_port(
|
||||
context.elevated(),
|
||||
port['id'],
|
||||
{'port': port}
|
||||
)
|
||||
return True
|
||||
|
||||
def _akanda_add_ipv6_subnet(self, context, network):
|
||||
@ -166,7 +169,8 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
try:
|
||||
subnet_generator = _ipv6_subnet_generator(
|
||||
cfg.CONF.akanda_ipv6_tenant_range,
|
||||
cfg.CONF.akanda_ipv6_prefix_length)
|
||||
cfg.CONF.akanda_ipv6_prefix_length
|
||||
)
|
||||
except:
|
||||
LOG.exception('Unable able to add tenant IPv6 subnet.')
|
||||
return
|
||||
@ -185,14 +189,15 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
if not existing:
|
||||
create_args = {
|
||||
'network_id': network['id'],
|
||||
'name': '',
|
||||
'cidr': str(candidate_cidr),
|
||||
'ip_version': candidate_cidr.version,
|
||||
'enable_dhcp': False,
|
||||
'gateway_ip': attributes.ATTR_NOT_SPECIFIED,
|
||||
'dns_nameservers': attributes.ATTR_NOT_SPECIFIED,
|
||||
'host_routes': attributes.ATTR_NOT_SPECIFIED,
|
||||
'allocation_pools': attributes.ATTR_NOT_SPECIFIED}
|
||||
'name': '',
|
||||
'cidr': str(candidate_cidr),
|
||||
'ip_version': candidate_cidr.version,
|
||||
'enable_dhcp': False,
|
||||
'gateway_ip': attributes.ATTR_NOT_SPECIFIED,
|
||||
'dns_nameservers': attributes.ATTR_NOT_SPECIFIED,
|
||||
'host_routes': attributes.ATTR_NOT_SPECIFIED,
|
||||
'allocation_pools': attributes.ATTR_NOT_SPECIFIED
|
||||
}
|
||||
self.create_subnet(context, {'subnet': create_args})
|
||||
break
|
||||
else:
|
||||
@ -204,10 +209,11 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
"""
|
||||
for protocol, port, name in DEFAULT_PORT_ALIASES:
|
||||
pa_q = context.session.query(akmodels.PortAlias)
|
||||
pa_q = pa_q.filter_by(tenant_id=context.tenant_id,
|
||||
port=port,
|
||||
protocol=protocol,
|
||||
)
|
||||
pa_q = pa_q.filter_by(
|
||||
tenant_id=context.tenant_id,
|
||||
port=port,
|
||||
protocol=protocol,
|
||||
)
|
||||
try:
|
||||
pa_q.one()
|
||||
except exc.NoResultFound:
|
||||
@ -217,7 +223,7 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
protocol=protocol,
|
||||
port=port,
|
||||
tenant_id=context.tenant_id,
|
||||
)
|
||||
)
|
||||
context.session.add(alias)
|
||||
LOG.debug('Created default port alias %s', alias.name)
|
||||
return
|
||||
@ -227,9 +233,10 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
"""
|
||||
for ag_name, entries in DEFAULT_ADDRESS_GROUPS:
|
||||
ag_q = context.session.query(akmodels.AddressGroup)
|
||||
ag_q = ag_q.filter_by(tenant_id=context.tenant_id,
|
||||
name=ag_name,
|
||||
)
|
||||
ag_q = ag_q.filter_by(
|
||||
tenant_id=context.tenant_id,
|
||||
name=ag_name,
|
||||
)
|
||||
try:
|
||||
address_group = ag_q.one()
|
||||
except exc.NoResultFound:
|
||||
@ -237,17 +244,18 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
address_group = akmodels.AddressGroup(
|
||||
name=ag_name,
|
||||
tenant_id=context.tenant_id,
|
||||
)
|
||||
)
|
||||
context.session.add(address_group)
|
||||
LOG.debug('Created default address group %s',
|
||||
address_group.name)
|
||||
|
||||
for entry_name, cidr in entries:
|
||||
entry_q = context.session.query(akmodels.AddressEntry)
|
||||
entry_q = entry_q.filter_by(group=address_group,
|
||||
name=entry_name,
|
||||
cidr=cidr,
|
||||
)
|
||||
entry_q = entry_q.filter_by(
|
||||
group=address_group,
|
||||
name=entry_name,
|
||||
cidr=cidr,
|
||||
)
|
||||
try:
|
||||
entry_q.one()
|
||||
except exc.NoResultFound:
|
||||
@ -257,7 +265,7 @@ class OVSQuantumPluginV2(ovs_quantum_plugin.OVSQuantumPluginV2):
|
||||
group=address_group,
|
||||
cidr=cidr,
|
||||
tenant_id=context.tenant_id,
|
||||
)
|
||||
)
|
||||
context.session.add(entry)
|
||||
LOG.debug(
|
||||
'Created default entry for %s in address group %s',
|
||||
@ -286,7 +294,8 @@ def _ipv6_subnet_generator(network_range, prefixlen):
|
||||
rand_bits = rand.randint(0, max_range)
|
||||
|
||||
candidate_cidr = netaddr.IPNetwork(
|
||||
netaddr.IPAddress(net.value + (rand_bits << prefixlen)))
|
||||
netaddr.IPAddress(net.value + (rand_bits << prefixlen))
|
||||
)
|
||||
candidate_cidr.prefixlen = prefixlen
|
||||
|
||||
yield candidate_cidr
|
||||
|
@ -144,7 +144,7 @@ if __name__ == '__main__':
|
||||
auth_url='http://localhost:5000/v2.0/',
|
||||
auth_strategy='keystone',
|
||||
auth_region='RegionOne')
|
||||
for lister, deleter, obj_type in [
|
||||
resources = [
|
||||
(c.list_portalias, c.delete_portalias, 'portalias'),
|
||||
(c.list_filterrules, c.delete_filterrule, 'filterrule'),
|
||||
(c.list_portforwards, c.delete_portforward, 'portforward'),
|
||||
@ -152,8 +152,9 @@ if __name__ == '__main__':
|
||||
(c.list_addressgroups, c.delete_addressgroup, 'addressgroup'),
|
||||
(c.list_ports, c.delete_port, 'port'),
|
||||
(c.list_subnets, c.delete_subnet, 'subnet'),
|
||||
(c.list_networks, c.delete_network, 'network'),
|
||||
]:
|
||||
(c.list_networks, c.delete_network, 'network')
|
||||
]
|
||||
for lister, deleter, obj_type in resources:
|
||||
print obj_type
|
||||
response = lister()
|
||||
data = response[iter(response).next()]
|
||||
|
@ -248,7 +248,7 @@ class SameUserTest(VisibilityTest, CanSeeTestCaseMixin):
|
||||
auth_url='http://localhost:5000/v2.0/',
|
||||
auth_strategy='keystone',
|
||||
auth_region='RegionOne',
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DifferentUserSameTenantTest(VisibilityTest, CanSeeTestCaseMixin):
|
||||
@ -264,7 +264,7 @@ class DifferentUserSameTenantTest(VisibilityTest, CanSeeTestCaseMixin):
|
||||
auth_url='http://localhost:5000/v2.0/',
|
||||
auth_strategy='keystone',
|
||||
auth_region='RegionOne',
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
class DifferentTenantTest(VisibilityTest):
|
||||
@ -280,7 +280,7 @@ class DifferentTenantTest(VisibilityTest):
|
||||
auth_url='http://localhost:5000/v2.0/',
|
||||
auth_strategy='keystone',
|
||||
auth_region='RegionOne',
|
||||
)
|
||||
)
|
||||
|
||||
def _check_one(self, one, lister):
|
||||
response = lister()
|
||||
|
Loading…
x
Reference in New Issue
Block a user