Merge "pep8: Enable E125, E126, E128"
This commit is contained in:
commit
e49c5e5790
|
@ -155,10 +155,10 @@ class MidonetApiClient(base.MidonetClientBase):
|
|||
def create_ipsec_site_conn(self, context, ipsec_site_conn):
|
||||
self.api_cli.create_ipsec_site_conn(ipsec_site_conn)
|
||||
|
||||
def update_ipsec_site_conn(self, context, ipsec_site_conn_id,
|
||||
ipsec_site_conn):
|
||||
self.api_cli.update_ipsec_site_conn(ipsec_site_conn_id,
|
||||
ipsec_site_conn)
|
||||
def update_ipsec_site_conn(
|
||||
self, context, ipsec_site_conn_id, ipsec_site_conn):
|
||||
self.api_cli.update_ipsec_site_conn(
|
||||
ipsec_site_conn_id, ipsec_site_conn)
|
||||
|
||||
def delete_ipsec_site_conn(self, context, ipsec_site_conn_id):
|
||||
self.api_cli.delete_ipsec_site_conn(ipsec_site_conn_id)
|
||||
|
@ -197,9 +197,9 @@ class MidonetApiClient(base.MidonetClientBase):
|
|||
self.api_cli.delete_bgp_peer(bgp_peer_id)
|
||||
|
||||
def update_logging_resource_postcommit(
|
||||
self, logging_resource_id, logging_resource):
|
||||
self, logging_resource_id, logging_resource):
|
||||
self.api_cli.update_logging_resource(
|
||||
logging_resource_id, logging_resource)
|
||||
logging_resource_id, logging_resource)
|
||||
|
||||
def delete_logging_resource_postcommit(self, logging_resource_id):
|
||||
self.api_cli.delete_logging_resource(logging_resource_id)
|
||||
|
|
|
@ -273,8 +273,8 @@ class MidonetClientBase(object):
|
|||
def create_ipsec_site_conn(self, context, ipsec_site_conn):
|
||||
pass
|
||||
|
||||
def update_ipsec_site_conn(self, context, ipsec_site_conn_id,
|
||||
ipsec_site_conn):
|
||||
def update_ipsec_site_conn(
|
||||
self, context, ipsec_site_conn_id, ipsec_site_conn):
|
||||
pass
|
||||
|
||||
def delete_ipsec_site_conn(self, context, ipsec_site_conn_id):
|
||||
|
|
|
@ -49,7 +49,7 @@ class MidonetBgpDbMixin(bgp_db.BgpDbMixin):
|
|||
for port in ports:
|
||||
subnet_id = port['fixed_ips'][0]['subnet_id']
|
||||
cidr = core_plugin.get_subnet(
|
||||
context, subnet_id, fields=['cidr'])
|
||||
context, subnet_id, fields=['cidr'])
|
||||
if self._extract_valid_peer_ips(cidr['cidr'], peer_ips):
|
||||
nexthops.append(port['fixed_ips'][0]['ip_address'])
|
||||
dest_networks.append(cidr['cidr'])
|
||||
|
|
|
@ -43,13 +43,13 @@ class BgpSpeakerRouterInsertionDbMixin(object):
|
|||
try:
|
||||
with db_api.context_manager.writer.using(context):
|
||||
bgp_router_db = model.BgpSpeakerRouterAssociation(
|
||||
bgp_speaker_id=bgp_sp_id,
|
||||
router_id=r_id)
|
||||
bgp_speaker_id=bgp_sp_id,
|
||||
router_id=r_id)
|
||||
context.session.add(bgp_router_db)
|
||||
except db_exc.DBDuplicateEntry:
|
||||
raise l3.RouterInUse(
|
||||
router_id=r_id,
|
||||
reason='is already associated with bgp speaker')
|
||||
router_id=r_id,
|
||||
reason='is already associated with bgp speaker')
|
||||
except db_exc.DBReferenceError:
|
||||
raise l3.RouterNotFound(router_id=r_id)
|
||||
|
||||
|
@ -110,8 +110,7 @@ class BgpSpeakerRouterInsertionDbMixin(object):
|
|||
router_id = ports[0]['device_id']
|
||||
# If the router is already associated with bgp-speaker,
|
||||
# RouterInUse will be raised.
|
||||
self.set_router_for_bgp_speaker(
|
||||
context, bgp_sp_id, router_id)
|
||||
self.set_router_for_bgp_speaker(context, bgp_sp_id, router_id)
|
||||
|
||||
def _get_bgp_speakers_by_bgp_peer_binding(self, context, bgp_peer_id):
|
||||
with db_api.context_manager.reader.using(context):
|
||||
|
@ -124,7 +123,7 @@ class BgpSpeakerRouterInsertionDbMixin(object):
|
|||
def delete_bgp_speaker_router_insertion(self, context, bsp_id):
|
||||
with db_api.context_manager.writer.using(context):
|
||||
query = self._model_query(
|
||||
context, model.BgpSpeakerRouterAssociation)
|
||||
context, model.BgpSpeakerRouterAssociation)
|
||||
query.filter(
|
||||
model.BgpSpeakerRouterAssociation.bgp_speaker_id ==
|
||||
bsp_id).delete()
|
||||
|
@ -134,5 +133,5 @@ class BgpSpeakerRouterInsertionDbMixin(object):
|
|||
router_id = kwargs['router_id']
|
||||
context = kwargs.get('context')
|
||||
if self.get_bgp_speaker_associated_with_router(context, router_id):
|
||||
raise l3.RouterInUse(router_id=router_id,
|
||||
reason='is associated with bgp speaker')
|
||||
raise l3.RouterInUse(
|
||||
router_id=router_id, reason='is associated with bgp speaker')
|
||||
|
|
|
@ -24,9 +24,11 @@ class BgpSpeakerRouterAssociation(model_base.BASEV2):
|
|||
|
||||
__tablename__ = 'bgp_speaker_router_associations'
|
||||
|
||||
bgp_speaker_id = sa.Column(sa.String(36),
|
||||
bgp_speaker_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('bgp_speakers.id', ondelete="CASCADE"),
|
||||
nullable=False, primary_key=True)
|
||||
router_id = sa.Column(sa.String(36),
|
||||
router_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('routers.id', ondelete="CASCADE"),
|
||||
nullable=False, unique=True)
|
||||
|
|
|
@ -97,9 +97,9 @@ def _resource_id_column(foreign_key):
|
|||
def _gateway_device_relation(class_name, ref_key):
|
||||
relation = "GatewayDevice.id==" + class_name + ".device_id"
|
||||
return orm.relationship(
|
||||
GatewayDevice,
|
||||
backref=orm.backref(ref_key, cascade='delete', lazy='joined'),
|
||||
primaryjoin=relation)
|
||||
GatewayDevice,
|
||||
backref=orm.backref(ref_key, cascade='delete', lazy='joined'),
|
||||
primaryjoin=relation)
|
||||
|
||||
|
||||
class GatewayOverlayRouterDevice(GatewayVirtualDevice, model_base.BASEV2):
|
||||
|
@ -261,8 +261,8 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
res['management_port'] = None
|
||||
res['management_protocol'] = None
|
||||
res['resource_id'] = gw_dev_db.overlay_router[0]['resource_id']
|
||||
res['tunnel_ips'] = list(map(lambda n: n['tunnel_ip'],
|
||||
gw_dev_db.tunnel_ip_list))
|
||||
res['tunnel_ips'] = list(map(
|
||||
lambda n: n['tunnel_ip'], gw_dev_db.tunnel_ip_list))
|
||||
for item in gw_dev_db.mac_table_list:
|
||||
entry = {'id': item['id'],
|
||||
'mac_address': item['mac_address'],
|
||||
|
@ -302,8 +302,8 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
with context.session.begin(subtransactions=True):
|
||||
gw_dev_db = self._get_gateway_device(context, gw_dev_id)
|
||||
if data.get('tunnel_ips'):
|
||||
exist_ips = list(map(lambda n: n['tunnel_ip'],
|
||||
gw_dev_db.tunnel_ip_list))
|
||||
exist_ips = list(map(
|
||||
lambda n: n['tunnel_ip'], gw_dev_db.tunnel_ip_list))
|
||||
add_ips = set(data['tunnel_ips']) - set(exist_ips)
|
||||
delete_ips = set(exist_ips) - set(data['tunnel_ips'])
|
||||
if delete_ips:
|
||||
|
@ -328,7 +328,7 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
if not gw_dev['management_ip'] or not gw_dev['management_port']:
|
||||
raise gw_device_ext.HwVtepTypeInvalid(type=gw_dev['type'])
|
||||
if self._get_hw_vtep_from_management_ip(
|
||||
context, gw_dev['management_ip']):
|
||||
context, gw_dev['management_ip']):
|
||||
raise gw_device_ext.GatewayDeviceParamDuplicate(
|
||||
param_name='management_ip',
|
||||
param_value=gw_dev['management_ip'])
|
||||
|
@ -343,7 +343,7 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
raise gw_device_ext.ResourceNotFound(resource_id=router_id)
|
||||
|
||||
if self._get_gateway_device_from_resource(
|
||||
context, gw_device_ext.ROUTER_DEVICE_TYPE, router_id):
|
||||
context, gw_device_ext.ROUTER_DEVICE_TYPE, router_id):
|
||||
raise gw_device_ext.DeviceInUseByGatewayDevice(
|
||||
resource_id=router_id, resource_type='router')
|
||||
|
||||
|
@ -363,7 +363,7 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
raise gw_device_ext.ResourceNotFound(resource_id=network_id)
|
||||
|
||||
if self._get_gateway_device_from_resource(
|
||||
context, gw_device_ext.NETWORK_VLAN_TYPE, network_id):
|
||||
context, gw_device_ext.NETWORK_VLAN_TYPE, network_id):
|
||||
raise gw_device_ext.DeviceInUseByGatewayDevice(
|
||||
resource_id=network_id, resource_type='network')
|
||||
|
||||
|
@ -389,7 +389,8 @@ class GwDeviceDbMixin(gw_device_ext.GwDevicePluginBase,
|
|||
gw_dev['type'])
|
||||
|
||||
with context.session.begin(subtransactions=True):
|
||||
gw_dev_db = GatewayDevice(id=uuidutils.generate_uuid(),
|
||||
gw_dev_db = GatewayDevice(
|
||||
id=uuidutils.generate_uuid(),
|
||||
name=gw_dev['name'],
|
||||
type=(gw_dev['type'] or gw_device_ext.HW_VTEP_TYPE),
|
||||
tenant_id=tenant_id)
|
||||
|
|
|
@ -46,7 +46,7 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
# validate it in this method.
|
||||
super(MidonetL2GatewayMixin,
|
||||
self).validate_l2_gateway_connection_for_create(
|
||||
context, l2_gateway_connection)
|
||||
context, l2_gateway_connection)
|
||||
|
||||
# Validate l2 gateway existence before getting gateway device type
|
||||
gw_connection = l2_gateway_connection[self.connection_resource]
|
||||
|
@ -57,11 +57,11 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
if self._get_l2_gateway_connection_by_l2gw_id(
|
||||
context, gw_connection['l2_gateway_id']):
|
||||
raise exceptions.MidonetL2GatewayConnectionExists(
|
||||
l2_gateway_id=gw_connection['l2_gateway_id'])
|
||||
l2_gateway_id=gw_connection['l2_gateway_id'])
|
||||
|
||||
# Validate segmentation id range according to gateway device type
|
||||
gw_connection = l2_gateway_connection[
|
||||
constants.CONNECTION_RESOURCE_NAME]
|
||||
constants.CONNECTION_RESOURCE_NAME]
|
||||
seg_id = gw_connection.get(constants.SEG_ID)
|
||||
if seg_id:
|
||||
gw_type = self.get_gateway_device_type_from_l2gw(context, l2gw)
|
||||
|
@ -70,9 +70,9 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
def _get_l2_gateway_seg_id(self, context, l2_gw_id):
|
||||
seg_id = None
|
||||
l2_gw_dev = self.get_l2gateway_devices_by_gateway_id(
|
||||
context, l2_gw_id)
|
||||
context, l2_gw_id)
|
||||
interfaces = self.get_l2gateway_interfaces_by_device_id(
|
||||
context, l2_gw_dev[0]['id'])
|
||||
context, l2_gw_dev[0]['id'])
|
||||
if interfaces:
|
||||
seg_id = interfaces[0][constants.SEG_ID]
|
||||
return seg_id
|
||||
|
@ -83,7 +83,7 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
|
||||
def get_gateway_device_type_from_l2gw(self, context, l2gw):
|
||||
gw_id = (l2gw['devices'][0].get('device_id')) or (
|
||||
l2gw['devices'][0].get('device_name'))
|
||||
l2gw['devices'][0].get('device_name'))
|
||||
gw_db = (directory.get_plugin(midonet_const.GATEWAY_DEVICE).
|
||||
get_gateway_device(context, gw_id))
|
||||
return gw_db['type']
|
||||
|
@ -99,7 +99,7 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
device['device_name'] = device['device_id']
|
||||
if device.get(constants.SEG_ID):
|
||||
l2gw_midonet_validators.is_valid_segmentaion_id(
|
||||
gw['type'], device[constants.SEG_ID])
|
||||
gw['type'], device[constants.SEG_ID])
|
||||
device['interfaces'].append(
|
||||
{constants.SEG_ID: [str(device[constants.SEG_ID])]})
|
||||
return super(MidonetL2GatewayMixin, self).create_l2_gateway(
|
||||
|
@ -127,8 +127,8 @@ class MidonetL2GatewayMixin(l2gateway_db.L2GatewayMixin):
|
|||
|
||||
# Validate only network existence since l2_gateway existence is
|
||||
# validated in validate_l2_gateway_connection_for_create method.
|
||||
if not self._core_plugin.get_network(context,
|
||||
gw_connection['network_id']):
|
||||
if not self._core_plugin.get_network(
|
||||
context, gw_connection['network_id']):
|
||||
raise neutron_extensions.NetworkNotFound(
|
||||
net_id=gw_connection['network_id'])
|
||||
return super(MidonetL2GatewayMixin, self).create_l2_gateway_connection(
|
||||
|
|
|
@ -51,8 +51,9 @@ class MidonetL3DBMixin(l3_gwmode_db.L3_NAT_db_mixin):
|
|||
raise e.errors[0].error
|
||||
raise l3.RouterInUse(router_id=router_id, reason=e)
|
||||
|
||||
def get_router_for_floatingip(self, context, internal_port,
|
||||
internal_subnet, external_network_id):
|
||||
def get_router_for_floatingip(
|
||||
self, context, internal_port, internal_subnet,
|
||||
external_network_id):
|
||||
# REVISIT(yamamoto): These direct manipulation of core-plugin db
|
||||
# resources is not ideal.
|
||||
gw_port = orm.aliased(models_v2.Port, name="gw_port")
|
||||
|
@ -100,8 +101,10 @@ class MidonetL3DBMixin(l3_gwmode_db.L3_NAT_db_mixin):
|
|||
|
||||
def router_gw_port_has_floating_ips(self, context, router_id):
|
||||
router = self._get_router(context, router_id)
|
||||
return any([self._subnet_has_fip(context, router_id, ip['subnet_id'])
|
||||
for ip in router.gw_port['fixed_ips']])
|
||||
return any([
|
||||
self._subnet_has_fip(context, router_id, ip['subnet_id'])
|
||||
for ip in router.gw_port['fixed_ips']
|
||||
])
|
||||
|
||||
def find_next_hop_for_fip(self, context, floatingip_db):
|
||||
# Find a next-hop address for a route from the floating_network_id
|
||||
|
|
|
@ -36,7 +36,8 @@ class LoggingResourceDbMixin(log_res_ext.LoggingResourcePluginBase,
|
|||
"""Create a logging_resource"""
|
||||
log_res = logging_resource['logging_resource']
|
||||
with context.session.begin(subtransactions=True):
|
||||
log_res_db = model.LoggingResource(id=uuidutils.generate_uuid(),
|
||||
log_res_db = model.LoggingResource(
|
||||
id=uuidutils.generate_uuid(),
|
||||
name=log_res['name'],
|
||||
description=log_res['description'],
|
||||
tenant_id=log_res['tenant_id'],
|
||||
|
@ -57,13 +58,14 @@ class LoggingResourceDbMixin(log_res_ext.LoggingResourcePluginBase,
|
|||
marker_obj = self._get_marker_obj(context, 'logging_resource',
|
||||
limit, marker)
|
||||
|
||||
return self._get_collection(context,
|
||||
model.LoggingResource,
|
||||
self._make_logging_resource_dict,
|
||||
filters=filters, fields=fields,
|
||||
sorts=sorts,
|
||||
limit=limit, marker_obj=marker_obj,
|
||||
page_reverse=page_reverse)
|
||||
return self._get_collection(
|
||||
context,
|
||||
model.LoggingResource,
|
||||
self._make_logging_resource_dict,
|
||||
filters=filters, fields=fields,
|
||||
sorts=sorts,
|
||||
limit=limit, marker_obj=marker_obj,
|
||||
page_reverse=page_reverse)
|
||||
|
||||
@log_helpers.log_method_call
|
||||
def update_logging_resource(self, context, id, logging_resource):
|
||||
|
@ -161,7 +163,7 @@ class LoggingResourceDbMixin(log_res_ext.LoggingResourcePluginBase,
|
|||
def _logging_resource_has_logs(self, context, log_res_id):
|
||||
query = self._model_query(context, model.FirewallLog)
|
||||
return bool(query.filter(
|
||||
model.FirewallLog.logging_resource_id == log_res_id).all())
|
||||
model.FirewallLog.logging_resource_id == log_res_id).all())
|
||||
|
||||
def _get_firewall_log(self, context, id):
|
||||
try:
|
||||
|
@ -187,9 +189,13 @@ class LoggingResourceDbMixin(log_res_ext.LoggingResourcePluginBase,
|
|||
|
||||
def _extend_resource_specific_loggings(self, log_res_db, fields=None):
|
||||
# Currently, only firewall log is returned.
|
||||
return {'firewall_logs': [self._make_firewall_log_dict(
|
||||
f_log, fields) for f_log in log_res_db.firewall_logs
|
||||
if log_res_db.firewall_logs]}
|
||||
return {
|
||||
'firewall_logs': [
|
||||
self._make_firewall_log_dict(f_log, fields)
|
||||
for f_log in log_res_db.firewall_logs
|
||||
if log_res_db.firewall_logs
|
||||
]
|
||||
}
|
||||
|
||||
def _make_firewall_log_dict(self, f_log_db, fields=None):
|
||||
res = {'id': f_log_db['id'],
|
||||
|
|
|
@ -38,16 +38,16 @@ class FirewallLog(model_base.BASEV2, model_base.HasProjectNoIndex):
|
|||
__tablename__ = FIREWALL_LOGS
|
||||
|
||||
id = sa.Column(sa.String(36), primary_key=True)
|
||||
logging_resource_id = sa.Column(sa.String(36),
|
||||
sa.ForeignKey('midonet_logging_resources.id',
|
||||
ondelete="CASCADE"),
|
||||
nullable=False)
|
||||
logging_resource_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('midonet_logging_resources.id', ondelete="CASCADE"),
|
||||
nullable=False)
|
||||
description = sa.Column(sa.String(1024))
|
||||
fw_event = sa.Column(sa.String(length=255), nullable=False)
|
||||
firewall_id = sa.Column(sa.String(36),
|
||||
sa.ForeignKey('firewalls.id',
|
||||
ondelete="CASCADE"),
|
||||
nullable=False)
|
||||
firewall_id = sa.Column(
|
||||
sa.String(36),
|
||||
sa.ForeignKey('firewalls.id', ondelete="CASCADE"),
|
||||
nullable=False)
|
||||
logging_resource = orm.relationship(
|
||||
LoggingResource,
|
||||
backref=orm.backref('firewall_logs', cascade='delete', lazy='joined'),
|
||||
|
|
|
@ -36,8 +36,8 @@ neutron_milestone = [migration.MITAKA]
|
|||
|
||||
def upgrade():
|
||||
op.create_foreign_key(
|
||||
constraint_name=None,
|
||||
source_table='midonet_gateway_overlay_router_devices',
|
||||
referent_table='routers',
|
||||
local_cols=['resource_id'],
|
||||
remote_cols=['id'])
|
||||
constraint_name=None,
|
||||
source_table='midonet_gateway_overlay_router_devices',
|
||||
referent_table='routers',
|
||||
local_cols=['resource_id'],
|
||||
remote_cols=['id'])
|
||||
|
|
|
@ -29,12 +29,13 @@ import sqlalchemy as sa
|
|||
|
||||
|
||||
def upgrade():
|
||||
op.create_table('bgp_speaker_router_associations',
|
||||
op.create_table(
|
||||
'bgp_speaker_router_associations',
|
||||
sa.Column('bgp_speaker_id', sa.String(length=36), nullable=False),
|
||||
sa.Column('router_id', sa.String(length=36), nullable=False,
|
||||
unique=True),
|
||||
sa.ForeignKeyConstraint(['bgp_speaker_id'], ['bgp_speakers.id'],
|
||||
ondelete='CASCADE'),
|
||||
sa.ForeignKeyConstraint(['router_id'], ['routers.id'],
|
||||
ondelete='CASCADE'),
|
||||
sa.ForeignKeyConstraint(
|
||||
['bgp_speaker_id'], ['bgp_speakers.id'], ondelete='CASCADE'),
|
||||
sa.ForeignKeyConstraint(
|
||||
['router_id'], ['routers.id'], ondelete='CASCADE'),
|
||||
sa.PrimaryKeyConstraint('bgp_speaker_id'))
|
||||
|
|
|
@ -77,7 +77,8 @@ def log_calls(func):
|
|||
|
||||
|
||||
def check_alembic_versions(context):
|
||||
LOG.info('Checking Neutron alembic versions are in %s',
|
||||
LOG.info(
|
||||
'Checking Neutron alembic versions are in %s',
|
||||
_KNOWN_NEUTRON_ALEMBIC_VERSIONS)
|
||||
stmt = sql.select(
|
||||
[sql.column('version_num')]).select_from(sql.table('alembic_version'))
|
||||
|
@ -183,13 +184,13 @@ def migrate():
|
|||
segments = {}
|
||||
uplink_network_ids = [seg.network_id for seg in old_segments]
|
||||
for network_id in uplink_network_ids:
|
||||
segments[network_id] = add_segment(context,
|
||||
network_id=network_id, network_type="uplink")
|
||||
segments[network_id] = add_segment(
|
||||
context, network_id=network_id, network_type="uplink")
|
||||
networks = context.session.query(models_v2.Network).all()
|
||||
for net in networks:
|
||||
if net.id not in uplink_network_ids:
|
||||
segments[net.id] = add_segment(context,
|
||||
network_id=net.id, network_type="midonet")
|
||||
segments[net.id] = add_segment(
|
||||
context, network_id=net.id, network_type="midonet")
|
||||
|
||||
# Migrate port bindings
|
||||
# NOTE(yamamoto): Unlike midonet v2, ML2 has PortBinding rows
|
||||
|
@ -203,7 +204,8 @@ def migrate():
|
|||
for port in context.session.query(models_v2.Port).all():
|
||||
port_id = port.id
|
||||
if port_id in port_host:
|
||||
add_binding_bound(context, port_id, segments[port.network_id],
|
||||
add_binding_bound(
|
||||
context, port_id, segments[port.network_id],
|
||||
port_host[port_id], port_interface.get(port_id))
|
||||
else:
|
||||
add_binding_unbound(context, port_id)
|
||||
|
|
|
@ -152,8 +152,9 @@ RESOURCE_ATTRIBUTE_MAP = {
|
|||
'is_visible': True},
|
||||
'tenant_id': {'allow_post': True, 'allow_put': False,
|
||||
'required_by_policy': True,
|
||||
'validate': {'type:string':
|
||||
db_const.PROJECT_ID_FIELD_SIZE},
|
||||
'validate': {
|
||||
'type:string': db_const.PROJECT_ID_FIELD_SIZE
|
||||
},
|
||||
'is_visible': True},
|
||||
'management_ip': {'allow_post': True, 'allow_put': False,
|
||||
'default': None,
|
||||
|
@ -165,8 +166,8 @@ RESOURCE_ATTRIBUTE_MAP = {
|
|||
'management_protocol': {'allow_post': True, 'allow_put': False,
|
||||
'is_visible': True, 'default': None},
|
||||
'resource_id': {'allow_post': True, 'allow_put': False,
|
||||
'validate': {'type:string':
|
||||
db_const.DEVICE_ID_FIELD_SIZE},
|
||||
'validate': {
|
||||
'type:string': db_const.DEVICE_ID_FIELD_SIZE},
|
||||
'is_visible': True, 'required_by_policy': True,
|
||||
'default': ""},
|
||||
'tunnel_ips': {'allow_post': True, 'allow_put': True,
|
||||
|
@ -205,11 +206,13 @@ SUB_RESOURCE_ATTRIBUTE_MAP = {
|
|||
# 1. delete this definition if neutron core is modified.
|
||||
# 2. add DB column and remain this definition
|
||||
# if neutron core is not modified.
|
||||
'tenant_id': {'allow_post': True, 'allow_put': False,
|
||||
'required_by_policy': True,
|
||||
'validate': {'type:string':
|
||||
db_const.PROJECT_ID_FIELD_SIZE},
|
||||
'is_visible': False}}
|
||||
'tenant_id': {
|
||||
'allow_post': True,
|
||||
'allow_put': False,
|
||||
'required_by_policy': True,
|
||||
'validate': {'type:string': db_const.PROJECT_ID_FIELD_SIZE},
|
||||
'is_visible': False}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -297,8 +300,8 @@ class GwDevicePluginBase(object):
|
|||
|
||||
@abc.abstractmethod
|
||||
def get_gateway_devices(self, context, filters=None, fields=None,
|
||||
sorts=None, limit=None, marker=None,
|
||||
page_reverse=False):
|
||||
sorts=None, limit=None, marker=None,
|
||||
page_reverse=False):
|
||||
pass
|
||||
|
||||
@abc.abstractmethod
|
||||
|
|
|
@ -240,7 +240,7 @@ class MidonetPluginV2(plugin.MidonetMixinBase,
|
|||
s, net_db, ipam_sub = self._create_subnet_precommit(
|
||||
context, subnet)
|
||||
self.extension_manager.process_create_subnet(context,
|
||||
subnet['subnet'], s)
|
||||
subnet['subnet'], s)
|
||||
self.client.create_subnet_precommit(context, s)
|
||||
|
||||
# db base plugin post commit ops
|
||||
|
@ -278,7 +278,7 @@ class MidonetPluginV2(plugin.MidonetMixinBase,
|
|||
with db_api.context_manager.writer.using(context):
|
||||
s = super(MidonetPluginV2, self).update_subnet(context, id, subnet)
|
||||
self.extension_manager.process_update_subnet(context,
|
||||
subnet['subnet'], s)
|
||||
subnet['subnet'], s)
|
||||
# NOTE(yamamoto): Retrieve the db object to get the correct
|
||||
# revision
|
||||
context.session.flush()
|
||||
|
@ -483,7 +483,7 @@ class MidonetPluginV2(plugin.MidonetMixinBase,
|
|||
def create_security_group_rule_bulk(self, context, security_group_rules):
|
||||
return super(MidonetPluginV2,
|
||||
self).create_security_group_rule_bulk_native(
|
||||
context, security_group_rules)
|
||||
context, security_group_rules)
|
||||
|
||||
@staticmethod
|
||||
@resource_extend.extends([net_def.COLLECTION_NAME])
|
||||
|
|
|
@ -78,7 +78,7 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
# If the router is already associated with bgp-speaker,
|
||||
# RouterInUse will be raised.
|
||||
self.set_router_for_bgp_speaker(
|
||||
context, bgp_sp['id'], router_id)
|
||||
context, bgp_sp['id'], router_id)
|
||||
bgp_sp[m_const.LOGICAL_ROUTER] = router_id
|
||||
|
||||
return bgp_sp
|
||||
|
@ -87,35 +87,35 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
def delete_bgp_speaker(self, context, bgp_speaker_id):
|
||||
with db_api.context_manager.writer.using(context):
|
||||
bgp_sp = super(MidonetBgpPlugin, self).get_bgp_speaker(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
super(MidonetBgpPlugin, self).delete_bgp_speaker(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
# Plugin should call 'UPDATE' to clean up bgp-peers because
|
||||
# backend cannot handle excepting ID when 'DELETE' is called.
|
||||
self.client.update_bgp_speaker_precommit(
|
||||
context, bgp_speaker_id, bgp_sp)
|
||||
|
||||
self.client.update_bgp_speaker_postcommit(
|
||||
bgp_speaker_id, bgp_sp)
|
||||
bgp_speaker_id, bgp_sp)
|
||||
|
||||
@log_helpers.log_method_call
|
||||
def get_bgp_speakers(self, context, filters=None, fields=None,
|
||||
sorts=None, limit=None, marker=None,
|
||||
page_reverse=False):
|
||||
bgp_sp_list = super(MidonetBgpPlugin, self).get_bgp_speakers(
|
||||
context, filters, fields)
|
||||
context, filters, fields)
|
||||
for bgp_sp in bgp_sp_list:
|
||||
rt_id = self.get_router_associated_with_bgp_speaker(
|
||||
context, bgp_sp['id'])
|
||||
context, bgp_sp['id'])
|
||||
bgp_sp[m_const.LOGICAL_ROUTER] = rt_id
|
||||
return bgp_sp_list
|
||||
|
||||
@log_helpers.log_method_call
|
||||
def get_bgp_speaker(self, context, bgp_speaker_id, fields=None):
|
||||
bgp_sp = super(MidonetBgpPlugin, self).get_bgp_speaker(
|
||||
context, bgp_speaker_id, fields)
|
||||
context, bgp_speaker_id, fields)
|
||||
rt_id = self.get_router_associated_with_bgp_speaker(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
bgp_sp[m_const.LOGICAL_ROUTER] = rt_id
|
||||
return bgp_sp
|
||||
|
||||
|
@ -125,14 +125,14 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
# an error when dictionary without 'bgp_peer_id' key is specified.
|
||||
if not self._get_id_for(bgp_peer_info, 'bgp_peer_id'):
|
||||
raise nexception.BadRequest(
|
||||
resource=bgp.BGP_SPEAKER_RESOURCE_NAME,
|
||||
msg="bgp_peer_id must be specified")
|
||||
resource=bgp.BGP_SPEAKER_RESOURCE_NAME,
|
||||
msg="bgp_peer_id must be specified")
|
||||
with db_api.context_manager.writer.using(context):
|
||||
# In MidoNet, bgp-peer can be related to only one bgp-speaker.
|
||||
if self._get_bgp_speakers_by_bgp_peer_binding(
|
||||
context, bgp_peer_info['bgp_peer_id']):
|
||||
raise bsri.MidonetBgpPeerInUse(
|
||||
id=bgp_peer_info['bgp_peer_id'])
|
||||
id=bgp_peer_info['bgp_peer_id'])
|
||||
if not self.get_router_associated_with_bgp_speaker(
|
||||
context, bgp_speaker_id):
|
||||
# External network must be associated with the bgp speaker.
|
||||
|
@ -141,10 +141,10 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
context, bgp_speaker_id, bgp_peer_info)
|
||||
# get peer info for MidoNet
|
||||
bgp_peer = super(MidonetBgpPlugin, self).get_bgp_peer(
|
||||
context, info['bgp_peer_id'])
|
||||
context, info['bgp_peer_id'])
|
||||
# merge bgp_speaker information for MidoNet
|
||||
bgp_peer['bgp_speaker'] = self.get_bgp_speaker(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
self.client.create_bgp_peer_precommit(context, bgp_peer)
|
||||
|
||||
try:
|
||||
|
@ -157,7 +157,7 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
"err": ex})
|
||||
with excutils.save_and_reraise_exception():
|
||||
super(MidonetBgpPlugin, self).remove_bgp_peer(
|
||||
context, bgp_speaker_id, bgp_peer_info)
|
||||
context, bgp_speaker_id, bgp_peer_info)
|
||||
|
||||
return info
|
||||
|
||||
|
@ -188,7 +188,7 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
context, bgp_peer_id, bgp_peer)
|
||||
updated_bgp_peer = {'bgp_peer': bgp_peer}
|
||||
self.client.update_bgp_peer_precommit(
|
||||
context, bgp_peer_id, updated_bgp_peer)
|
||||
context, bgp_peer_id, updated_bgp_peer)
|
||||
|
||||
self.client.update_bgp_peer_postcommit(bgp_peer_id,
|
||||
updated_bgp_peer)
|
||||
|
@ -197,11 +197,11 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
@log_helpers.log_method_call
|
||||
def get_advertised_routes(self, context, bgp_speaker_id):
|
||||
rt_id = self.get_router_associated_with_bgp_speaker(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
|
||||
# figure out advertised routes from attached networks
|
||||
attached_routes = self.get_routes_from_attached_networks(
|
||||
context, bgp_speaker_id, rt_id)
|
||||
context, bgp_speaker_id, rt_id)
|
||||
|
||||
# prepare nexthops to change nexthop of extra
|
||||
# route to IP address of router port
|
||||
|
@ -209,7 +209,7 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
|
||||
# figure out advertised routes from extra routes
|
||||
extra_routes = self.get_routes_from_extra_routes(
|
||||
context, rt_id, nexthops)
|
||||
context, rt_id, nexthops)
|
||||
|
||||
routes = attached_routes + extra_routes
|
||||
info = ({'destination': x, 'next_hop': y} for x, y in routes)
|
||||
|
@ -231,9 +231,9 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
context, network_info['network_id']):
|
||||
raise bsri.NetworkTypeInvalid()
|
||||
info = super(MidonetBgpPlugin, self).add_gateway_network(
|
||||
context, bgp_speaker_id, network_info)
|
||||
context, bgp_speaker_id, network_info)
|
||||
self.set_router_for_bgp_speaker_by_network(
|
||||
context, bgp_speaker_id, network_info['network_id'])
|
||||
context, bgp_speaker_id, network_info['network_id'])
|
||||
|
||||
return info
|
||||
|
||||
|
@ -243,8 +243,8 @@ class MidonetBgpPlugin(bgp_db_midonet.MidonetBgpDbMixin,
|
|||
if self.get_bgp_peers_by_bgp_speaker(context, bgp_speaker_id):
|
||||
raise bsri.BgpSpeakerInUse(id=bgp_speaker_id)
|
||||
info = super(MidonetBgpPlugin, self).remove_gateway_network(
|
||||
context, bgp_speaker_id, network_info)
|
||||
context, bgp_speaker_id, network_info)
|
||||
self.delete_bgp_speaker_router_insertion(
|
||||
context, bgp_speaker_id)
|
||||
context, bgp_speaker_id)
|
||||
|
||||
return info
|
||||
|
|
|
@ -95,7 +95,8 @@ class MidonetGwDeviceServicePlugin(gateway_device_db.GwDeviceDbMixin):
|
|||
"device %(gw_id)s in Midonet:"
|
||||
"%(err)s"), {"gw_id": gw["id"], "err": ex})
|
||||
try:
|
||||
super(MidonetGwDeviceServicePlugin,
|
||||
super(
|
||||
MidonetGwDeviceServicePlugin,
|
||||
self).update_gateway_device(
|
||||
context, gw['id'], backup_body)
|
||||
except Exception:
|
||||
|
@ -120,7 +121,7 @@ class MidonetGwDeviceServicePlugin(gateway_device_db.GwDeviceDbMixin):
|
|||
|
||||
if gw_device.type == gateway_device.NETWORK_VLAN_TYPE:
|
||||
raise gateway_device.OperationRemoteMacEntryNotSupported(
|
||||
type=gateway_device.NETWORK_VLAN_TYPE)
|
||||
type=gateway_device.NETWORK_VLAN_TYPE)
|
||||
|
||||
with context.session.begin(subtransactions=True):
|
||||
rme = super(MidonetGwDeviceServicePlugin,
|
||||
|
|
|
@ -53,11 +53,12 @@ class MidonetL2GatewayPlugin(l2gw_plugin.L2GatewayPlugin,
|
|||
validate_gwdevice_list)
|
||||
val_type = validators._to_validation_type('l2gwdevice_list')
|
||||
validators.validators.pop(val_type, None)
|
||||
validators.add_validator(val_type,
|
||||
validators.add_validator(
|
||||
val_type,
|
||||
l2gw_midonet_validators.validate_gwdevice_list)
|
||||
l2gw_validators.validate_network_mapping_list = (
|
||||
l2gw_midonet_validators.
|
||||
validate_network_mapping_list_without_seg_id_validation)
|
||||
l2gw_midonet_validators.
|
||||
validate_network_mapping_list_without_seg_id_validation)
|
||||
neutron_extensions.append_api_extensions_path(l2gateway_ext.__path__)
|
||||
super(MidonetL2GatewayPlugin, self).__init__()
|
||||
|
||||
|
@ -90,7 +91,8 @@ class MidonetL2GatewayPlugin(l2gw_plugin.L2GatewayPlugin,
|
|||
self.validate_l2_gateway_connection_for_create(
|
||||
context, l2_gateway_connection)
|
||||
l2_gw_conn = (l2gw_db.MidonetL2GatewayMixin.
|
||||
create_l2_gateway_connection(self, context, l2_gateway_connection))
|
||||
create_l2_gateway_connection(
|
||||
self, context, l2_gateway_connection))
|
||||
|
||||
# Copy over the ID so that the MidoNet driver knows about it. ID is
|
||||
# necessary for MidoNet to process its translation.
|
||||
|
@ -104,8 +106,8 @@ class MidonetL2GatewayPlugin(l2gw_plugin.L2GatewayPlugin,
|
|||
except Exception as ex:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE("Failed to create a l2 gateway connection "
|
||||
"%(gw_conn_id)s in Midonet:%(err)s"),
|
||||
{"gw_conn_id": l2_gw_conn["id"], "err": ex})
|
||||
"%(gw_conn_id)s in Midonet:%(err)s"),
|
||||
{"gw_conn_id": l2_gw_conn["id"], "err": ex})
|
||||
try:
|
||||
l2gw_db.MidonetL2GatewayMixin.delete_l2_gateway_connection(
|
||||
self, context, l2_gw_conn["id"])
|
||||
|
|
|
@ -77,7 +77,7 @@ class MidonetL2gwDriver(service_drivers.L2gwDriver):
|
|||
self._validate_gw_connection(context, gw_conn_dict)
|
||||
if not gw_conn_dict[constants.SEG_ID]:
|
||||
seg_id = self.service_plugin._get_l2_gateway_seg_id(
|
||||
context, gw_conn_dict['l2_gateway_id'])
|
||||
context, gw_conn_dict['l2_gateway_id'])
|
||||
gw_conn_dict[constants.SEG_ID] = seg_id
|
||||
try:
|
||||
self.client.create_l2_gateway_connection(context,
|
||||
|
|
|
@ -144,16 +144,16 @@ class MidonetL3ServicePlugin(common_db_mixin.CommonDbMixin,
|
|||
self.client.update_router_postcommit(id, r)
|
||||
if r['status'] != m_const.ROUTER_STATUS_ACTIVE:
|
||||
data = {'router': {'status': m_const.ROUTER_STATUS_ACTIVE}}
|
||||
r = super(MidonetL3ServicePlugin,
|
||||
self).update_router(context, id, data)
|
||||
r = super(MidonetL3ServicePlugin, self).update_router(
|
||||
context, id, data)
|
||||
except Exception as ex:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE("Failed to update a router %(r_id)s in MidoNet: "
|
||||
"%(err)s"), {"r_id": id, "err": ex})
|
||||
try:
|
||||
data = {'router': {'status': m_const.ROUTER_STATUS_ERROR}}
|
||||
super(MidonetL3ServicePlugin,
|
||||
self).update_router(context, id, data)
|
||||
super(MidonetL3ServicePlugin, self).update_router(
|
||||
context, id, data)
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to update a router "
|
||||
"status %s"), id)
|
||||
|
@ -275,7 +275,7 @@ class MidonetL3ServicePlugin(common_db_mixin.CommonDbMixin,
|
|||
"%(err)s"), {"fip_id": id, "err": ex})
|
||||
try:
|
||||
self.update_floatingip_status(
|
||||
context, id, n_const.FLOATINGIP_STATUS_ERROR)
|
||||
context, id, n_const.FLOATINGIP_STATUS_ERROR)
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to update floating ip "
|
||||
"status %s"), id)
|
||||
|
|
|
@ -53,7 +53,7 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
@log_helpers.log_method_call
|
||||
def update_logging_resource(self, context, id, logging_resource):
|
||||
backup = self.get_logging_resource(
|
||||
context, id, fields=['name', 'description', 'enabled'])
|
||||
context, id, fields=['name', 'description', 'enabled'])
|
||||
backup_body = {'logging_resource': backup}
|
||||
with context.session.begin(subtransactions=True):
|
||||
has_logs = self._logging_resource_has_logs(context, id)
|
||||
|
@ -62,7 +62,7 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
self).update_logging_resource(context, id, logging_resource)
|
||||
if has_logs:
|
||||
self.client.update_logging_resource_precommit(
|
||||
context, id, log_res)
|
||||
context, id, log_res)
|
||||
|
||||
if not has_logs:
|
||||
return log_res
|
||||
|
@ -74,7 +74,8 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
"resource %(log_res_id)s in MidoNet: %(err)s"),
|
||||
{"log_res_id": log_res["id"], "err": ex})
|
||||
try:
|
||||
super(MidonetLoggingResourcePlugin,
|
||||
super(
|
||||
MidonetLoggingResourcePlugin,
|
||||
self).update_logging_resource(
|
||||
context, log_res['id'], backup_body)
|
||||
except Exception:
|
||||
|
@ -96,11 +97,12 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
firewall_log,
|
||||
logging_resource_id):
|
||||
with context.session.begin(subtransactions=True):
|
||||
f_log = super(MidonetLoggingResourcePlugin,
|
||||
self).create_logging_resource_firewall_log(
|
||||
context, firewall_log, logging_resource_id)
|
||||
f_log = super(
|
||||
MidonetLoggingResourcePlugin,
|
||||
self).create_logging_resource_firewall_log(
|
||||
context, firewall_log, logging_resource_id)
|
||||
f_log_info = self._make_info_for_midonet(
|
||||
context, f_log, logging_resource_id)
|
||||
context, f_log, logging_resource_id)
|
||||
self.client.create_firewall_log_precommit(context, f_log_info)
|
||||
|
||||
try:
|
||||
|
@ -112,9 +114,10 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
{"f_log_id": f_log["id"],
|
||||
"log_res_id": logging_resource_id, "err": ex})
|
||||
try:
|
||||
super(MidonetLoggingResourcePlugin,
|
||||
super(
|
||||
MidonetLoggingResourcePlugin,
|
||||
self).delete_logging_resource_firewall_log(
|
||||
context, f_log["id"], logging_resource_id)
|
||||
context, f_log["id"], logging_resource_id)
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to delete a "
|
||||
"firewall_log %s"), f_log["id"])
|
||||
|
@ -125,18 +128,17 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
def update_logging_resource_firewall_log(
|
||||
self, context, id, logging_resource_id, firewall_log):
|
||||
backup = self.get_logging_resource_firewall_log(
|
||||
context, id, logging_resource_id,
|
||||
fields=['fw_event', 'description'])
|
||||
context, id, logging_resource_id,
|
||||
fields=['fw_event', 'description'])
|
||||
backup_body = {'firewall_log': backup}
|
||||
with context.session.begin(subtransactions=True):
|
||||
f_log = super(
|
||||
MidonetLoggingResourcePlugin,
|
||||
self).update_logging_resource_firewall_log(
|
||||
context, id, logging_resource_id, firewall_log)
|
||||
context, id, logging_resource_id, firewall_log)
|
||||
f_log_info = self._make_info_for_midonet(
|
||||
context, f_log, logging_resource_id)
|
||||
self.client.update_firewall_log_precommit(
|
||||
context, id, f_log_info)
|
||||
context, f_log, logging_resource_id)
|
||||
self.client.update_firewall_log_precommit(context, id, f_log_info)
|
||||
|
||||
try:
|
||||
self.client.update_firewall_log_postcommit(id, f_log_info)
|
||||
|
@ -146,7 +148,8 @@ class MidonetLoggingResourcePlugin(log_res_db.LoggingResourceDbMixin):
|
|||
"%(f_log_id)s in Midonet:"
|
||||
"%(err)s"), {"f_log_id": f_log["id"], "err": ex})
|
||||
try:
|
||||
super(MidonetLoggingResourcePlugin,
|
||||
super(
|
||||
MidonetLoggingResourcePlugin,
|
||||
self).update_logging_resource_firewall_log(
|
||||
context, f_log['id'],
|
||||
logging_resource_id, backup_body)
|
||||
|
|
|
@ -33,8 +33,8 @@ LOG = logging.getLogger(__name__)
|
|||
# subscribe them for task-based api.
|
||||
class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
||||
def __init__(self, service_plugin):
|
||||
super(MidonetIPsecVPNDriver, self).__init__(service_plugin,
|
||||
ipsec_validator.IpsecVpnValidator(service_plugin))
|
||||
super(MidonetIPsecVPNDriver, self).__init__(
|
||||
service_plugin, ipsec_validator.IpsecVpnValidator(service_plugin))
|
||||
self.plugin = plugin.VPNPlugin()
|
||||
self.client = c_base.load_client(cfg.CONF.MIDONET)
|
||||
|
||||
|
@ -43,7 +43,7 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
|
||||
def create_vpnservice(self, context, vpnservice_dict):
|
||||
super(MidonetIPsecVPNDriver, self).create_vpnservice(
|
||||
context, vpnservice_dict)
|
||||
context, vpnservice_dict)
|
||||
try:
|
||||
self.client.create_vpn_service(context, vpnservice_dict)
|
||||
except Exception as ex:
|
||||
|
@ -53,7 +53,7 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
{"service_id": vpnservice_dict["id"], "err": ex})
|
||||
try:
|
||||
self.plugin.delete_vpnservice(
|
||||
context, vpnservice_dict['id'])
|
||||
context, vpnservice_dict['id'])
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to delete vpn_service %s"),
|
||||
vpnservice_dict['id'])
|
||||
|
@ -63,8 +63,8 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
|
||||
def update_vpnservice(self, context, old_vpnservice, vpnservice):
|
||||
try:
|
||||
self.client.update_vpn_service(context, vpnservice['id'],
|
||||
vpnservice)
|
||||
self.client.update_vpn_service(
|
||||
context, vpnservice['id'], vpnservice)
|
||||
except Exception as ex:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE("Failed to update a vpn_service %(service_id)s "
|
||||
|
@ -72,7 +72,7 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
{"service_id": vpnservice["id"], "err": ex})
|
||||
try:
|
||||
self.update_vpn_service_status(
|
||||
context, vpnservice['id'], const.ERROR)
|
||||
context, vpnservice['id'], const.ERROR)
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to update vpn_service status "
|
||||
"%s"),
|
||||
|
@ -87,7 +87,7 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
|
||||
def create_ipsec_site_connection(self, context, ipsec_site_connection):
|
||||
ipsec_site_conn_info = self.make_ipsec_site_connection_dict(
|
||||
context, ipsec_site_connection['id'])
|
||||
context, ipsec_site_connection['id'])
|
||||
try:
|
||||
self.client.create_ipsec_site_conn(context, ipsec_site_conn_info)
|
||||
except Exception as ex:
|
||||
|
@ -96,23 +96,23 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
"%(conn_id)s in MidoNet: %(err)s"),
|
||||
{"conn_id": ipsec_site_connection['id'], "err": ex})
|
||||
try:
|
||||
self.plugin.delete_ipsec_site_connection(context,
|
||||
ipsec_site_connection['id'])
|
||||
self.plugin.delete_ipsec_site_connection(
|
||||
context, ipsec_site_connection['id'])
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to delete ipsec_site_connection "
|
||||
"%s"),
|
||||
ipsec_site_connection['id'])
|
||||
|
||||
self.service_plugin.update_ipsec_site_conn_status(context,
|
||||
ipsec_site_connection['id'], const.ACTIVE)
|
||||
self.service_plugin.update_ipsec_site_conn_status(
|
||||
context, ipsec_site_connection['id'], const.ACTIVE)
|
||||
|
||||
def update_ipsec_site_connection(self, context, old_ipsec_site_connection,
|
||||
ipsec_site_connection):
|
||||
ipsec_site_conn_info = self.make_ipsec_site_connection_dict(
|
||||
context, ipsec_site_connection['id'])
|
||||
context, ipsec_site_connection['id'])
|
||||
try:
|
||||
self.client.update_ipsec_site_conn(context,
|
||||
ipsec_site_connection['id'], ipsec_site_conn_info)
|
||||
self.client.update_ipsec_site_conn(
|
||||
context, ipsec_site_connection['id'], ipsec_site_conn_info)
|
||||
except Exception as ex:
|
||||
with excutils.save_and_reraise_exception():
|
||||
LOG.error(_LE("Failed to update a ipsec_site_connection "
|
||||
|
@ -120,8 +120,8 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
{"service_id": ipsec_site_connection['id'],
|
||||
"err": ex})
|
||||
try:
|
||||
self.service_plugin.update_ipsec_site_conn_status(context,
|
||||
ipsec_site_connection['id'], const.ERROR)
|
||||
self.service_plugin.update_ipsec_site_conn_status(
|
||||
context, ipsec_site_connection['id'], const.ERROR)
|
||||
except Exception:
|
||||
LOG.exception(_LE("Failed to update ipsec_site_connection "
|
||||
"status %s"),
|
||||
|
@ -130,22 +130,22 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
def delete_ipsec_site_connection(self, context, ipsec_site_connection):
|
||||
try:
|
||||
self.client.delete_ipsec_site_conn(
|
||||
context, ipsec_site_connection['id'])
|
||||
context, ipsec_site_connection['id'])
|
||||
except Exception:
|
||||
LOG.error(_LE("Failed to delete ipsec_site_connection %s"),
|
||||
ipsec_site_connection['id'])
|
||||
|
||||
def make_ipsec_site_connection_dict(self, context, ipsec_site_conn_id):
|
||||
ipsec_site_conn = self.service_plugin._get_ipsec_site_connection(
|
||||
context, ipsec_site_conn_id)
|
||||
context, ipsec_site_conn_id)
|
||||
vpnservice = ipsec_site_conn.vpnservice
|
||||
|
||||
local_cidr_map = self.service_plugin._build_local_subnet_cidr_map(
|
||||
context)
|
||||
context)
|
||||
vpnservice_dict = self.make_vpnservice_dict(vpnservice, local_cidr_map)
|
||||
ipsec_site_conn_dict = list(filter(
|
||||
lambda conn: conn['id'] == ipsec_site_conn_id,
|
||||
vpnservice_dict['ipsec_site_connections']))[0]
|
||||
lambda conn: conn['id'] == ipsec_site_conn_id,
|
||||
vpnservice_dict['ipsec_site_connections']))[0]
|
||||
del ipsec_site_conn_dict['vpnservice']
|
||||
|
||||
return ipsec_site_conn_dict
|
||||
|
@ -153,9 +153,9 @@ class MidonetIPsecVPNDriver(base_ipsec.BaseIPsecVPNDriver):
|
|||
def update_vpn_service_status(self, context, vpnservice_id, status):
|
||||
# this method is used only for updating a vpn_service status
|
||||
self.service_plugin.update_status_by_agent(
|
||||
context,
|
||||
[{'id': vpnservice_id,
|
||||
'status': status,
|
||||
'updated_pending_status': True,
|
||||
'ipsec_site_connections': {}
|
||||
}])
|
||||
context,
|
||||
[{'id': vpnservice_id,
|
||||
'status': status,
|
||||
'updated_pending_status': True,
|
||||
'ipsec_site_connections': {}
|
||||
}])
|
||||
|
|
|
@ -134,7 +134,8 @@ class Bgp(BgpClientMixin, base.BaseTempestTestCase):
|
|||
enable_snat=False,
|
||||
project_id=cls.os_primary.network_client.tenant_id)
|
||||
network = cls.create_network(network_name='right-network')
|
||||
subnet = cls.create_subnet(network,
|
||||
subnet = cls.create_subnet(
|
||||
network,
|
||||
cidr=netaddr.IPNetwork('10.10.0.0/24'),
|
||||
name='right-subnet')
|
||||
cls.create_router_interface(router['id'], subnet['id'])
|
||||
|
@ -209,7 +210,8 @@ class Bgp(BgpClientMixin, base.BaseTempestTestCase):
|
|||
@decorators.idempotent_id('c1208ce2-c55f-4424-9035-25de83161d6f')
|
||||
def test_bgp(self):
|
||||
# RIGHT
|
||||
right_server = self._create_server(network=self._right_network,
|
||||
right_server = self._create_server(
|
||||
network=self._right_network,
|
||||
create_floating_ip=False)
|
||||
|
||||
# LEFT
|
||||
|
@ -219,9 +221,11 @@ class Bgp(BgpClientMixin, base.BaseTempestTestCase):
|
|||
pkey=self.keypair['private_key'])
|
||||
|
||||
# check LEFT -> RIGHT connectivity via BGP advertised routes
|
||||
self.check_remote_connectivity(ssh_client,
|
||||
self.check_remote_connectivity(
|
||||
ssh_client,
|
||||
right_server['port']['fixed_ips'][0]['ip_address'],
|
||||
should_succeed=False)
|
||||
self._setup_bgp()
|
||||
self.check_remote_connectivity(ssh_client,
|
||||
self.check_remote_connectivity(
|
||||
ssh_client,
|
||||
right_server['port']['fixed_ips'][0]['ip_address'])
|
||||
|
|
|
@ -66,7 +66,8 @@ class Fip64(base.BaseTempestTestCase):
|
|||
subnet_id=subnet_id,
|
||||
port_id=port_id)['floatingip']
|
||||
self.floating_ips.append(fip)
|
||||
self.assertEqual(self._fip_ip_version,
|
||||
self.assertEqual(
|
||||
self._fip_ip_version,
|
||||
netaddr.IPAddress(fip['floating_ip_address']).version)
|
||||
return fip
|
||||
|
||||
|
|
|
@ -54,14 +54,14 @@ class CLITestV20FirewallLogJSON(test_cli20.CLIExtTestV20Base):
|
|||
def _create_firewall_log(self, args, position_names,
|
||||
position_values, parent_id=None):
|
||||
cmd = _firewall_log.FirewallLogCreate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_create_resource(RESOURCE, cmd, None, FAKE_FIREWALL_LOG_ID,
|
||||
args, position_names, position_values,
|
||||
parent_id=parent_id)
|
||||
|
||||
def _update_firewall_log(self, args, values, parent_id=None):
|
||||
cmd = _firewall_log.FirewallLogUpdate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_update_ext_resource(RESOURCE, cmd, FAKE_FIREWALL_LOG_ID,
|
||||
args, values, parent_id=parent_id)
|
||||
|
||||
|
@ -112,7 +112,7 @@ class CLITestV20FirewallLogJSON(test_cli20.CLIExtTestV20Base):
|
|||
|
||||
def test_delete_firewall_log(self):
|
||||
cmd = _firewall_log.FirewallLogDelete(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = [FAKE_FIREWALL_LOG_ID, FAKE_LOGGING_RESOURCE_ID]
|
||||
self._test_delete_ext_resource(RESOURCE, cmd,
|
||||
FAKE_FIREWALL_LOG_ID, args,
|
||||
|
@ -120,14 +120,14 @@ class CLITestV20FirewallLogJSON(test_cli20.CLIExtTestV20Base):
|
|||
|
||||
def test_list_firewall_logs(self):
|
||||
cmd = _firewall_log.FirewallLogList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = [FAKE_LOGGING_RESOURCE_ID]
|
||||
self._test_list_resources(RESOURCES, cmd, base_args=args,
|
||||
parent_id=FAKE_LOGGING_RESOURCE_ID)
|
||||
|
||||
def test_show_firewall_log(self):
|
||||
cmd = _firewall_log.FirewallLogShow(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = [FAKE_FIREWALL_LOG_ID, FAKE_LOGGING_RESOURCE_ID]
|
||||
self._test_show_ext_resource(RESOURCE, cmd,
|
||||
FAKE_FIREWALL_LOG_ID, args,
|
||||
|
|
|
@ -47,16 +47,15 @@ class CLITestV20GatewayDeviceJSON(test_cli20.CLIExtTestV20Base):
|
|||
position_names, position_values):
|
||||
resource = 'gateway_device'
|
||||
cmd = _gateway_device.GatewayDeviceCreate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_create_resource(resource, cmd, name, 'myid',
|
||||
args, position_names, position_values)
|
||||
|
||||
def _update_gateway_device(self, args, values):
|
||||
resource = 'gateway_device'
|
||||
cmd = _gateway_device.GatewayDeviceUpdate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_update_resource(resource, cmd, 'myid',
|
||||
args, values)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_update_resource(resource, cmd, 'myid', args, values)
|
||||
|
||||
def test_create_gateway_device_for_hw_vtep_mandatory_params(self):
|
||||
name = 'hw-vtep-mandatory'
|
||||
|
@ -126,7 +125,7 @@ class CLITestV20GatewayDeviceJSON(test_cli20.CLIExtTestV20Base):
|
|||
position_names, position_values)
|
||||
|
||||
def test_create_gateway_device_for_network_vlan_with_mandatory_params(
|
||||
self):
|
||||
self):
|
||||
name = 'network_vlan-mandatory'
|
||||
gw_type = 'network_vlan'
|
||||
resource_id = 'my_network_id'
|
||||
|
@ -172,7 +171,7 @@ class CLITestV20GatewayDeviceJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_delete_gateway_device(self):
|
||||
resource = 'gateway_device'
|
||||
cmd = _gateway_device.GatewayDeviceDelete(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
my_id = 'my-id'
|
||||
args = [my_id]
|
||||
self._test_delete_resource(resource, cmd, my_id, args)
|
||||
|
@ -180,28 +179,29 @@ class CLITestV20GatewayDeviceJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_list_gateway_devices(self):
|
||||
resources = 'gateway_devices'
|
||||
cmd = _gateway_device.GatewayDeviceList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_list_resources(resources, cmd)
|
||||
|
||||
def test_list_gateway_devices_with_pagination(self):
|
||||
resources = 'gateway_devices'
|
||||
cmd = _gateway_device.GatewayDeviceList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_list_resources_with_pagination(resources, cmd)
|
||||
|
||||
def test_list_gateway_device_with_remote_mac_entries(self):
|
||||
resources = 'gateway_devices'
|
||||
cmd = _gateway_device.GatewayDeviceList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
rme = [{"segmentation_id": 100,
|
||||
"vtep_address": "192.168.100.1",
|
||||
"id": "remote_mac_entry_id1",
|
||||
"mac_address": "fa:16:3e:db:79:80"},
|
||||
{"segmentation_id": 100,
|
||||
"vtep_address": "192.168.100.50",
|
||||
"id": "remote_mac_entry_id1",
|
||||
"mac_address": "fa:16:3e:df:79:80"},
|
||||
]
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
rme = [
|
||||
{"segmentation_id": 100,
|
||||
"vtep_address": "192.168.100.1",
|
||||
"id": "remote_mac_entry_id1",
|
||||
"mac_address": "fa:16:3e:db:79:80"},
|
||||
{"segmentation_id": 100,
|
||||
"vtep_address": "192.168.100.50",
|
||||
"id": "remote_mac_entry_id1",
|
||||
"mac_address": "fa:16:3e:df:79:80"},
|
||||
]
|
||||
response = {'gateway_devices': [{"id": 'myid',
|
||||
"name": 'gw_device',
|
||||
"type": "router_vtep",
|
||||
|
@ -214,7 +214,7 @@ class CLITestV20GatewayDeviceJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_show_gateway_device(self):
|
||||
resource = 'gateway_device'
|
||||
cmd = _gateway_device.GatewayDeviceShow(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = ['--fields', 'id', '--fields', 'name', self.test_id]
|
||||
self._test_show_resource(resource, cmd, self.test_id, args,
|
||||
['id', 'name'])
|
||||
|
|
|
@ -38,8 +38,7 @@ class CLITestV20L2gatewayJSON(test_cli20.CLIExtTestV20Base):
|
|||
def _create_l2gateway(self, name, args,
|
||||
position_names, position_values):
|
||||
resource = 'l2_gateway'
|
||||
cmd = _l2_gateway.L2GatewayCreate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
cmd = _l2_gateway.L2GatewayCreate(test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_create_resource(resource, cmd, name, 'myid',
|
||||
args, position_names, position_values)
|
||||
|
||||
|
|
|
@ -55,16 +55,16 @@ class CLITestV20LoggingResourceJSON(test_cli20.CLIExtTestV20Base):
|
|||
self.assertDictContainsSubset(log_res_cmd, shell.COMMANDS['2.0'])
|
||||
|
||||
def _create_logging_resource(self, name, args,
|
||||
position_names, position_values):
|
||||
position_names, position_values):
|
||||
cmd = _logging_resource.LoggingResourceCreate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_create_resource(RESOURCE, cmd, name,
|
||||
FAKE_LOGGING_RESOURCE_ID,
|
||||
args, position_names, position_values)
|
||||
|
||||
def _update_logging_resource(self, args, values):
|
||||
cmd = _logging_resource.LoggingResourceUpdate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_update_resource(RESOURCE, cmd, FAKE_LOGGING_RESOURCE_ID,
|
||||
args, values)
|
||||
|
||||
|
@ -91,14 +91,14 @@ class CLITestV20LoggingResourceJSON(test_cli20.CLIExtTestV20Base):
|
|||
|
||||
def test_delete_logging_resource(self):
|
||||
cmd = _logging_resource.LoggingResourceDelete(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = [FAKE_LOGGING_RESOURCE_ID]
|
||||
self._test_delete_resource(RESOURCE, cmd,
|
||||
FAKE_LOGGING_RESOURCE_ID, args)
|
||||
|
||||
def test_list_logging_resources(self):
|
||||
cmd = _logging_resource.LoggingResourceList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_list_resources(RESOURCES, cmd)
|
||||
|
||||
def test_list_logging_resources_with_pagination(self):
|
||||
|
@ -108,7 +108,7 @@ class CLITestV20LoggingResourceJSON(test_cli20.CLIExtTestV20Base):
|
|||
|
||||
def test_list_logging_resource_with_firewall_logs(self):
|
||||
cmd = _logging_resource.LoggingResourceList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
fw_log = [{"firewall_id": FAKE_FIREWALL_ID1,
|
||||
"description": telr.FAKE_FW_LOG_DESC,
|
||||
"id": FAKE_FIREWALL_LOG_ID1,
|
||||
|
@ -118,17 +118,17 @@ class CLITestV20LoggingResourceJSON(test_cli20.CLIExtTestV20Base):
|
|||
"id": FAKE_FIREWALL_LOG_ID2,
|
||||
"fw_event": log_res_ext.FW_EVENT_DROP}]
|
||||
response = {'logging_resources': [
|
||||
{"id": FAKE_LOGGING_RESOURCE_ID,
|
||||
"name": telr.FAKE_LOG_RES_NAME,
|
||||
"enabled": str(telr.ENABLED_TRUE),
|
||||
"description": telr.FAKE_LOG_RES_DESC,
|
||||
"firewall_logs": fw_log}]}
|
||||
{"id": FAKE_LOGGING_RESOURCE_ID,
|
||||
"name": telr.FAKE_LOG_RES_NAME,
|
||||
"enabled": str(telr.ENABLED_TRUE),
|
||||
"description": telr.FAKE_LOG_RES_DESC,
|
||||
"firewall_logs": fw_log}]}
|
||||
args = ['-c', 'id', '-c', 'firewall_logs']
|
||||
self._test_list_columns(cmd, RESOURCES, response, args)
|
||||
|
||||
def test_show_logging_resource(self):
|
||||
cmd = _logging_resource.LoggingResourceShow(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
args = ['--fields', 'id', '--fields', 'name', self.test_id]
|
||||
self._test_show_resource(RESOURCE, cmd, self.test_id, args,
|
||||
['id', 'name'])
|
||||
|
|
|
@ -45,7 +45,7 @@ class CLITestV20RemoteMacEntryJSON(test_cli20.CLIExtTestV20Base):
|
|||
position_values, parent_id=None):
|
||||
resource = 'remote_mac_entry'
|
||||
cmd = _remote_mac_entry.RemoteMacEntryCreate(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
self._test_create_resource(resource, cmd, None, 'myid',
|
||||
args, position_names, position_values,
|
||||
parent_id=parent_id)
|
||||
|
@ -88,7 +88,7 @@ class CLITestV20RemoteMacEntryJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_delete_remote_mac_entry(self):
|
||||
resource = 'remote_mac_entry'
|
||||
cmd = _remote_mac_entry.RemoteMacEntryDelete(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
gw_device_id = 'my_gw_device'
|
||||
my_id = 'myid'
|
||||
args = [my_id, gw_device_id]
|
||||
|
@ -98,7 +98,7 @@ class CLITestV20RemoteMacEntryJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_list_remote_mac_entries(self):
|
||||
resources = 'remote_mac_entries'
|
||||
cmd = _remote_mac_entry.RemoteMacEntryList(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
gw_device_id = 'my_gw_device'
|
||||
args = [gw_device_id]
|
||||
self._test_list_resources(resources, cmd, base_args=args,
|
||||
|
@ -107,7 +107,7 @@ class CLITestV20RemoteMacEntryJSON(test_cli20.CLIExtTestV20Base):
|
|||
def test_show_remote_mac_entry(self):
|
||||
resource = 'remote_mac_entry'
|
||||
cmd = _remote_mac_entry.RemoteMacEntryShow(
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
test_cli20.MyApp(sys.stdout), None)
|
||||
gw_device_id = 'my_gw_device'
|
||||
my_id = 'myid'
|
||||
args = [my_id, gw_device_id]
|
||||
|
|
|
@ -77,7 +77,7 @@ class BgpTestCase(test_l3.L3NatTestCaseMixin,
|
|||
service_plugins = {'bgp_plugin_name': BGP_PLUGIN_KLASS}
|
||||
bgp_mgr = BgpTestExtensionManager()
|
||||
super(BgpTestCase, self).setUp(
|
||||
service_plugins=service_plugins, ext_mgr=bgp_mgr)
|
||||
service_plugins=service_plugins, ext_mgr=bgp_mgr)
|
||||
self.ext_api = test_ex.setup_extensions_middleware(bgp_mgr)
|
||||
self.bgp_plugin = bgp_plugin.MidonetBgpPlugin()
|
||||
|
||||
|
@ -116,7 +116,7 @@ class BgpTestCase(test_l3.L3NatTestCaseMixin,
|
|||
self._set_net_external(ext_net['network']['id'])
|
||||
self._ext_net_id = ext_net['network']['id']
|
||||
self._ext_subnet = self._make_subnet(self.fmt, ext_net, "100.65.0.1",
|
||||
'100.65.0.0/24')
|
||||
'100.65.0.0/24')
|
||||
self._ext_subnet_id = self._ext_subnet['subnet']['id']
|
||||
edge_router = self._make_router(self.fmt, uuidutils.generate_uuid(),
|
||||
'edge_router', True)
|
||||
|
|
|
@ -173,9 +173,8 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
'gateway_device_plugin_name': DB_GATEWAY_DEVICE_PLUGIN_KLASS}
|
||||
|
||||
gw_dev_mgr = GatewayDeviceTestExtensionManager()
|
||||
super(GatewayDeviceTestCase,
|
||||
self).setUp(service_plugins=service_plugins,
|
||||
ext_mgr=gw_dev_mgr)
|
||||
super(GatewayDeviceTestCase, self).setUp(
|
||||
service_plugins=service_plugins, ext_mgr=gw_dev_mgr)
|
||||
self.ext_api = test_ex.setup_extensions_middleware(gw_dev_mgr)
|
||||
|
||||
network = self._make_network(self.fmt, 'net1', True)
|
||||
|
@ -218,26 +217,27 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
'vtep_address': FAKE_VTEP_ADDRESS,
|
||||
'segmentation_id': FAKE_SEG_ID}
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
with self.remote_mac_entry(gw_dev['gateway_device']['id']) as rme:
|
||||
self.assertDictSupersetOf(expected, rme['remote_mac_entry'])
|
||||
|
||||
def test_create_remote_mac_on_network_vlan(self):
|
||||
with self.gateway_device_type_network_vlan(
|
||||
resource_id=self._network_id) as gw_dev:
|
||||
resource_id=self._network_id) as gw_dev:
|
||||
res = self._create_remote_mac_entry(gw_dev['gateway_device']['id'])
|
||||
self.deserialize(self.fmt, res)
|
||||
self.assertEqual(webob.exc.HTTPConflict.code, res.status_int)
|
||||
|
||||
def test_create_remote_mac_with_same_vtep_address(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
with self.remote_mac_entry(gw_dev['gateway_device']['id']):
|
||||
with self.remote_mac_entry(gw_dev['gateway_device']['id'],
|
||||
mac_address=FAKE_MAC_ADDRESS2):
|
||||
req = self.new_list_request('gw/gateway_devices/'
|
||||
+ gw_dev['gateway_device']['id']
|
||||
+ '/remote_mac_entries')
|
||||
req = self.new_list_request(
|
||||
'gw/gateway_devices/'
|
||||
+ gw_dev['gateway_device']['id']
|
||||
+ '/remote_mac_entries')
|
||||
res = self.deserialize(
|
||||
self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(len(res['remote_mac_entries']), 2)
|
||||
|
@ -280,10 +280,10 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
|
||||
def test_list_remote_mac_with_two_gateways(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev, \
|
||||
self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id_in_use,
|
||||
tunnel_ips=[FAKE_TUNNEL_IP2]) as gw_dev2:
|
||||
resource_id=self._router_id) as gw_dev, \
|
||||
self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id_in_use,
|
||||
tunnel_ips=[FAKE_TUNNEL_IP2]) as gw_dev2:
|
||||
with self.remote_mac_entry(gw_dev['gateway_device']['id']) as rme:
|
||||
req = self.new_list_request('gw/gateway_devices/'
|
||||
+ gw_dev['gateway_device']['id']
|
||||
|
@ -314,9 +314,9 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
def test_delete_remote_mac_with_wrong_gateway(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev, \
|
||||
self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id_in_use,
|
||||
tunnel_ips=[FAKE_TUNNEL_IP2]) as gw_dev2:
|
||||
self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id_in_use,
|
||||
tunnel_ips=[FAKE_TUNNEL_IP2]) as gw_dev2:
|
||||
with self.remote_mac_entry(gw_dev['gateway_device']['id']) as rme:
|
||||
req = self.new_delete_request('gw/gateway_devices/'
|
||||
+ gw_dev2['gateway_device']['id']
|
||||
|
@ -430,7 +430,8 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
req = self.new_list_request('gw/gateway_devices')
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual([],
|
||||
self.assertEqual(
|
||||
[],
|
||||
res['gateway_devices'][0]['remote_mac_entries'])
|
||||
|
||||
def _make_remote_mac_entry(self, gw_dev_id, mac_address=FAKE_MAC_ADDRESS,
|
||||
|
@ -506,8 +507,14 @@ class GatewayDeviceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
def test_update_gateway_device_with_multiple_tunnel_ips(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
data = {'gateway_device':
|
||||
{'tunnel_ips': [FAKE_TUNNEL_IP, FAKE_TUNNEL_IP2]}}
|
||||
data = {
|
||||
'gateway_device': {
|
||||
'tunnel_ips': [
|
||||
FAKE_TUNNEL_IP,
|
||||
FAKE_TUNNEL_IP2
|
||||
]
|
||||
}
|
||||
}
|
||||
gw_dev_req = self.new_update_request(
|
||||
'gw/gateway_devices',
|
||||
data,
|
||||
|
|
|
@ -43,12 +43,13 @@ MN_DRIVER_KLASS = ('midonet.neutron.services.l2gateway.service_drivers.'
|
|||
|
||||
|
||||
class MidonetL2GatewayTestExtensionManager(
|
||||
test_gw.GatewayDeviceTestExtensionManager, test_l3.L3TestExtensionManager):
|
||||
test_gw.GatewayDeviceTestExtensionManager,
|
||||
test_l3.L3TestExtensionManager):
|
||||
|
||||
def get_resources(self):
|
||||
res = super(MidonetL2GatewayTestExtensionManager, self).get_resources()
|
||||
return (res + l2gateway.L2gateway.get_resources() +
|
||||
l2gatewayconnection.L2gatewayconnection.get_resources())
|
||||
l2gatewayconnection.L2gatewayconnection.get_resources())
|
||||
|
||||
def get_actions(self):
|
||||
return []
|
||||
|
@ -83,12 +84,12 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
network = self._make_network(self.fmt, 'net1', True)
|
||||
self._network_id = network['network']['id']
|
||||
self._subnet = self._make_subnet(self.fmt, network, "10.0.0.1",
|
||||
'10.0.0.0/24')
|
||||
'10.0.0.0/24')
|
||||
self._subnet_id = self._subnet['subnet']['id']
|
||||
network2 = self._make_network(self.fmt, 'net2', True)
|
||||
self._network_id2 = network2['network']['id']
|
||||
self._subnet2 = self._make_subnet(self.fmt, network2, "20.0.0.1",
|
||||
'20.0.0.0/24')
|
||||
'20.0.0.0/24')
|
||||
self._subnet_id2 = self._subnet2['subnet']['id']
|
||||
router1 = self._make_router('json', uuidutils.generate_uuid(),
|
||||
'router1', True)
|
||||
|
@ -99,8 +100,8 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
|
||||
# for network_vlan gateway device setting
|
||||
res = self._create_network(self.fmt, 'gateway_network_vlan', True)
|
||||
self._vlan_network_id = self.deserialize(self.fmt, res)['network'][
|
||||
'id']
|
||||
self._vlan_network_id = self.deserialize(
|
||||
self.fmt, res)['network']['id']
|
||||
|
||||
def _create_l2_gateway(self, name=L2_GW_NAME, device_id="", device_id2="",
|
||||
seg_id=None):
|
||||
|
@ -123,7 +124,7 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
'tenant_id': uuidutils.generate_uuid(),
|
||||
'segmentation_id': segmentation_id}}
|
||||
l2_gw_conn_req = self.new_create_request('l2-gateway-connections',
|
||||
data, self.fmt)
|
||||
data, self.fmt)
|
||||
return l2_gw_conn_req.get_response(self.ext_api)
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
@ -158,10 +159,12 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
resource_id=self._router_id) as gw_dev:
|
||||
name = L2_GW_NAME
|
||||
device_id = gw_dev['gateway_device']['id']
|
||||
with self.l2_gateway(name=L2_GW_NAME,
|
||||
with self.l2_gateway(
|
||||
name=L2_GW_NAME,
|
||||
device_id=gw_dev['gateway_device']['id']) as l2_gw:
|
||||
self.assertEqual(name, l2_gw['l2_gateway']['name'])
|
||||
self.assertEqual(device_id,
|
||||
self.assertEqual(
|
||||
device_id,
|
||||
l2_gw['l2_gateway']['devices'][0]['device_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_vlan(self):
|
||||
|
@ -169,18 +172,20 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
resource_id=self._vlan_network_id) as gw_dev:
|
||||
name = L2_GW_NAME
|
||||
device_id = gw_dev['gateway_device']['id']
|
||||
with self.l2_gateway(name=L2_GW_NAME,
|
||||
with self.l2_gateway(
|
||||
name=L2_GW_NAME,
|
||||
device_id=gw_dev['gateway_device']['id']) as l2_gw:
|
||||
self.assertEqual(name, l2_gw['l2_gateway']['name'])
|
||||
self.assertEqual(device_id,
|
||||
self.assertEqual(
|
||||
device_id,
|
||||
l2_gw['l2_gateway']['devices'][0]['device_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_with_invalid_seg_id(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
res = self._create_l2_gateway(
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
seg_id=INVALID_VXLAN_ID)
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
seg_id=INVALID_VXLAN_ID)
|
||||
self.deserialize(self.fmt, res)
|
||||
self.assertEqual(webob.exc.HTTPBadRequest.code, res.status_int)
|
||||
|
||||
|
@ -188,8 +193,8 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
with self.gateway_device_type_network_vlan(
|
||||
resource_id=self._vlan_network_id) as gw_dev:
|
||||
res = self._create_l2_gateway(
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
seg_id=INVALID_VLAN_ID)
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
seg_id=INVALID_VLAN_ID)
|
||||
self.deserialize(self.fmt, res)
|
||||
self.assertEqual(webob.exc.HTTPBadRequest.code, res.status_int)
|
||||
|
||||
|
@ -208,13 +213,16 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
resource_id=self._router_id) as gw_dev:
|
||||
name = L2_GW_NAME
|
||||
device_id = gw_dev['gateway_device']['id']
|
||||
with self.l2_gateway(name=L2_GW_NAME,
|
||||
with self.l2_gateway(
|
||||
name=L2_GW_NAME,
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
segmentation_id=FAKE_SEG_ID_VXLAN) as l2_gw:
|
||||
self.assertEqual(name, l2_gw['l2_gateway']['name'])
|
||||
self.assertEqual(device_id,
|
||||
self.assertEqual(
|
||||
device_id,
|
||||
l2_gw['l2_gateway']['devices'][0]['device_id'])
|
||||
self.assertEqual(FAKE_SEG_ID_VXLAN,
|
||||
self.assertEqual(
|
||||
FAKE_SEG_ID_VXLAN,
|
||||
l2_gw['l2_gateway']['devices'][0]['segmentation_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_vlan_with_segmentation_id(self):
|
||||
|
@ -222,13 +230,16 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
resource_id=self._vlan_network_id) as gw_dev:
|
||||
name = L2_GW_NAME
|
||||
device_id = gw_dev['gateway_device']['id']
|
||||
with self.l2_gateway(name=L2_GW_NAME,
|
||||
with self.l2_gateway(
|
||||
name=L2_GW_NAME,
|
||||
device_id=gw_dev['gateway_device']['id'],
|
||||
segmentation_id=FAKE_SEG_ID) as l2_gw:
|
||||
self.assertEqual(name, l2_gw['l2_gateway']['name'])
|
||||
self.assertEqual(device_id,
|
||||
self.assertEqual(
|
||||
device_id,
|
||||
l2_gw['l2_gateway']['devices'][0]['device_id'])
|
||||
self.assertEqual(FAKE_SEG_ID,
|
||||
self.assertEqual(
|
||||
FAKE_SEG_ID,
|
||||
l2_gw['l2_gateway']['devices'][0]['segmentation_id'])
|
||||
|
||||
def test_delete_midonet_l2gateway(self):
|
||||
|
@ -291,11 +302,14 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
l2_gateway_id=l2_gw['l2_gateway']['id'],
|
||||
network_id=self._network_id,
|
||||
segmentation_id=str(FAKE_SEG_ID_VXLAN)) as l2_gw_con:
|
||||
self.assertEqual(self._network_id,
|
||||
self.assertEqual(
|
||||
self._network_id,
|
||||
l2_gw_con['l2_gateway_connection']['network_id'])
|
||||
self.assertEqual(l2_gw['l2_gateway']['id'],
|
||||
self.assertEqual(
|
||||
l2_gw['l2_gateway']['id'],
|
||||
l2_gw_con['l2_gateway_connection']['l2_gateway_id'])
|
||||
self.assertEqual(FAKE_SEG_ID_VXLAN,
|
||||
self.assertEqual(
|
||||
FAKE_SEG_ID_VXLAN,
|
||||
l2_gw_con['l2_gateway_connection']['segmentation_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_vlan_connection(self):
|
||||
|
@ -307,11 +321,14 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
with self.l2_gateway_connection(
|
||||
l2_gateway_id=l2_gw['l2_gateway']['id'],
|
||||
network_id=self._network_id) as l2_gw_con:
|
||||
self.assertEqual(self._network_id,
|
||||
self.assertEqual(
|
||||
self._network_id,
|
||||
l2_gw_con['l2_gateway_connection']['network_id'])
|
||||
self.assertEqual(l2_gw['l2_gateway']['id'],
|
||||
self.assertEqual(
|
||||
l2_gw['l2_gateway']['id'],
|
||||
l2_gw_con['l2_gateway_connection']['l2_gateway_id'])
|
||||
self.assertEqual(FAKE_SEG_ID,
|
||||
self.assertEqual(
|
||||
FAKE_SEG_ID,
|
||||
l2_gw_con['l2_gateway_connection']['segmentation_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_and_l2gateway_con_without_seg_id(self):
|
||||
|
@ -330,7 +347,7 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
|
||||
def test_create_midonet_l2gateway_connection_with_not_found_network(self):
|
||||
with self.gateway_device_type_router_vtep(
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
resource_id=self._router_id) as gw_dev:
|
||||
with self.l2_gateway(
|
||||
name=L2_GW_NAME,
|
||||
device_id=gw_dev['gateway_device']['id']) as l2_gw:
|
||||
|
@ -401,11 +418,14 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
l2_gateway_id=l2_gw['l2_gateway']['id'],
|
||||
network_id=self._network_id,
|
||||
segmentation_id='') as l2_gw_con:
|
||||
self.assertEqual(self._network_id,
|
||||
self.assertEqual(
|
||||
self._network_id,
|
||||
l2_gw_con['l2_gateway_connection']['network_id'])
|
||||
self.assertEqual(l2_gw['l2_gateway']['id'],
|
||||
self.assertEqual(
|
||||
l2_gw['l2_gateway']['id'],
|
||||
l2_gw_con['l2_gateway_connection']['l2_gateway_id'])
|
||||
self.assertEqual('',
|
||||
self.assertEqual(
|
||||
'',
|
||||
l2_gw_con['l2_gateway_connection']['segmentation_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_vlan_connection_with_l2gw_seg_id(self):
|
||||
|
@ -419,11 +439,14 @@ class MidonetL2GatewayTestCase(test_gw.GatewayDeviceTestCaseMixin,
|
|||
l2_gateway_id=l2_gw['l2_gateway']['id'],
|
||||
network_id=self._network_id,
|
||||
segmentation_id='') as l2_gw_con:
|
||||
self.assertEqual(self._network_id,
|
||||
self.assertEqual(
|
||||
self._network_id,
|
||||
l2_gw_con['l2_gateway_connection']['network_id'])
|
||||
self.assertEqual(l2_gw['l2_gateway']['id'],
|
||||
self.assertEqual(
|
||||
l2_gw['l2_gateway']['id'],
|
||||
l2_gw_con['l2_gateway_connection']['l2_gateway_id'])
|
||||
self.assertEqual('',
|
||||
self.assertEqual(
|
||||
'',
|
||||
l2_gw_con['l2_gateway_connection']['segmentation_id'])
|
||||
|
||||
def test_create_midonet_l2gateway_conn_error_delete_neutron_resouce(self):
|
||||
|
|
|
@ -67,9 +67,8 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
'fwaas_plugin_name': 'midonet_firewall'}
|
||||
|
||||
log_res_mgr = LoggingResourceTestExtensionManager()
|
||||
super(LoggingResourceTestCase,
|
||||
self).setUp(service_plugins=service_plugins,
|
||||
ext_mgr=log_res_mgr)
|
||||
super(LoggingResourceTestCase, self).setUp(
|
||||
service_plugins=service_plugins, ext_mgr=log_res_mgr)
|
||||
self.ext_api = test_ex.setup_extensions_middleware(log_res_mgr)
|
||||
|
||||
router1 = self._make_router(self.fmt, uuidutils.generate_uuid(),
|
||||
|
@ -125,7 +124,7 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
'description': desc,
|
||||
'enabled': enabled}}
|
||||
log_res_req = self.new_create_request('logging/logging_resources',
|
||||
data, self.fmt)
|
||||
data, self.fmt)
|
||||
return log_res_req.get_response(self.ext_api)
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
@ -287,20 +286,20 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
def test_create_firewall_log_diff_log_res_diff_tenant_same_firewall(self):
|
||||
with self.logging_resource() as log_res, \
|
||||
self.logging_resource(
|
||||
tenant_id=self._tenant_id2) as log_res2, \
|
||||
tenant_id=self._tenant_id2) as log_res2, \
|
||||
self.firewall_log(log_res['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1):
|
||||
res = self._create_firewall_log(
|
||||
log_res2['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1,
|
||||
tenant_id=self._tenant_id2)
|
||||
log_res2['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1,
|
||||
tenant_id=self._tenant_id2)
|
||||
self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)
|
||||
|
||||
def test_create_firewall_log_with_not_found_firewall(self):
|
||||
with self.logging_resource() as log_res:
|
||||
res = self._create_firewall_log(
|
||||
log_res['logging_resource']['id'],
|
||||
firewall_id=NOT_FOUND_FW_UUID)
|
||||
log_res['logging_resource']['id'],
|
||||
firewall_id=NOT_FOUND_FW_UUID)
|
||||
self.assertEqual(webob.exc.HTTPNotFound.code, res.status_int)
|
||||
|
||||
def test_create_firewall_log_in_same_log_res_with_same_firewall(self):
|
||||
|
@ -308,8 +307,8 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
self.firewall_log(log_res['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1):
|
||||
res = self._create_firewall_log(
|
||||
log_res['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1)
|
||||
log_res['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1)
|
||||
self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)
|
||||
|
||||
def test_create_firewall_log_in_diff_log_res_with_same_firewall(self):
|
||||
|
@ -318,8 +317,8 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
self.firewall_log(log_res['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1):
|
||||
res = self._create_firewall_log(
|
||||
log_res2['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1)
|
||||
log_res2['logging_resource']['id'],
|
||||
firewall_id=self._fw_id1)
|
||||
self.assertEqual(webob.exc.HTTPCreated.code, res.status_int)
|
||||
|
||||
def test_create_firewall_log_error_delete_neutron_resource(self):
|
||||
|
@ -411,7 +410,7 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
+ log_res['logging_resource']['id']
|
||||
+ '/firewall_logs')
|
||||
res = self.deserialize(
|
||||
self.fmt, req.get_response(self.ext_api))
|
||||
self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(2, len(res['firewall_logs']))
|
||||
|
||||
def test_delete_firewall_log(self):
|
||||
|
@ -442,7 +441,8 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
req = self.new_list_request('logging/logging_resources')
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual([],
|
||||
self.assertEqual(
|
||||
[],
|
||||
res['logging_resources'][0]['firewall_logs'])
|
||||
|
||||
def test_delete_firewall_with_firewall_log(self):
|
||||
|
@ -464,9 +464,10 @@ class LoggingResourceTestCase(test_l3.L3NatTestCaseMixin,
|
|||
def test_delete_firewall_with_multiple_firewall_logs(self):
|
||||
with self.logging_resource() as log_res1, \
|
||||
self.logging_resource(
|
||||
tenant_id=self._tenant_id2) as log_res2, \
|
||||
tenant_id=self._tenant_id2) as log_res2, \
|
||||
self.firewall(self._tenant_id) as fw, \
|
||||
self.firewall_log(log_res1['logging_resource']['id'],
|
||||
self.firewall_log(
|
||||
log_res1['logging_resource']['id'],
|
||||
firewall_id=fw['firewall']['id']) as f_log1, \
|
||||
self.firewall_log(log_res2['logging_resource']['id'],
|
||||
firewall_id=fw['firewall']['id'],
|
||||
|
|
|
@ -86,9 +86,13 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
|
||||
def _create_tap_flow(self, tap_service_id, source_port, direction,
|
||||
name=None, tenant_id=None):
|
||||
t_f = {'tap_flow': {'tap_service_id': tap_service_id,
|
||||
'source_port': source_port,
|
||||
'direction': direction}}
|
||||
t_f = {
|
||||
'tap_flow': {
|
||||
'tap_service_id': tap_service_id,
|
||||
'source_port': source_port,
|
||||
'direction': direction
|
||||
}
|
||||
}
|
||||
if name:
|
||||
t_f['tap_flow']['name'] = name
|
||||
if tenant_id:
|
||||
|
@ -135,7 +139,7 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
|
||||
def test_create_tap_service_error_delete_neutron_resource(self):
|
||||
self.client_mock.create_tap_service.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
Exception("Fake Error"))
|
||||
with self.port(tenant_id=TENANT1) as port:
|
||||
dist_port = port['port']
|
||||
res = self._create_tap_service(port_id=dist_port['id'],
|
||||
|
@ -160,7 +164,7 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
|
||||
def test_delete_tap_service_error_delete_neutron_resource(self):
|
||||
self.client_mock.delete_tap_service.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
Exception("Fake Error"))
|
||||
with self.port(tenant_id=TENANT1) as port:
|
||||
dist_port = port['port']
|
||||
with self.tap_service(port_id=dist_port['id']) as t_s:
|
||||
|
@ -177,7 +181,7 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
@contextlib.contextmanager
|
||||
def create_tap_service_and_tap_flow(self):
|
||||
with self.port(tenant_id=TENANT1) as port1, \
|
||||
self.port(tenant_id=TENANT1) as port2:
|
||||
self.port(tenant_id=TENANT1) as port2:
|
||||
dist_port = port1['port']
|
||||
source_port = port2['port']
|
||||
with self.tap_service(port_id=dist_port['id']) as t_s:
|
||||
|
@ -195,7 +199,7 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
|
||||
def test_create_tap_flow_error_delete_neutron_resource(self):
|
||||
self.client_mock.create_tap_flow.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
Exception("Fake Error"))
|
||||
with self.port(tenant_id=TENANT1) as port1, \
|
||||
self.port(tenant_id=TENANT1) as port2:
|
||||
dist_port = port1['port']
|
||||
|
@ -219,7 +223,7 @@ class TestMidonetTaasCase(test_mn.MidonetPluginV2TestCase):
|
|||
|
||||
def test_delete_tap_flow_error_delete_neutron_resource(self):
|
||||
self.client_mock.delete_tap_flow.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
Exception("Fake Error"))
|
||||
with self.create_tap_service_and_tap_flow() as tf:
|
||||
req = self.new_delete_request('tap_flows', tf['id'])
|
||||
res = req.get_response(self.ext_api)
|
||||
|
|
|
@ -67,14 +67,14 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_create_vpn_service(self):
|
||||
with self.vpnservice() as vpnservice:
|
||||
req = self.new_show_request('vpnservices',
|
||||
vpnservice['vpnservice']['id'])
|
||||
req = self.new_show_request(
|
||||
'vpnservices', vpnservice['vpnservice']['id'])
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(constants.ACTIVE, res['vpnservice']['status'])
|
||||
|
||||
def test_create_vpn_service_error_delete_neutron_resource(self):
|
||||
self.client_mock.create_vpn_service.side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
with self.subnet(cidr='10.2.0.0/24') as subnet, \
|
||||
self.router() as router:
|
||||
try:
|
||||
|
@ -101,7 +101,7 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_update_vpn_service_error_change_neutron_resource_status(self):
|
||||
self.client_mock.update_vpn_service.side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
with self.vpnservice() as vpnservice:
|
||||
data = {'vpnservice': {'name': 'vpnservice2'}}
|
||||
vpnservice_id = vpnservice['vpnservice']['id']
|
||||
|
@ -124,7 +124,7 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_delete_vpn_service_error_delete_neutron_resouce(self):
|
||||
self.client_mock.delete_vpn_service_side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
self.test_delete_vpnservice()
|
||||
# check the resouce deleted in Neutron DB
|
||||
req = self.new_list_request('vpnservices')
|
||||
|
@ -133,10 +133,12 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_create_ipsec_site_connection(self):
|
||||
with self.ipsec_site_connection() as ipsec_site_connection:
|
||||
req = self.new_show_request('ipsec-site-connections',
|
||||
req = self.new_show_request(
|
||||
'ipsec-site-connections',
|
||||
ipsec_site_connection['ipsec_site_connection']['id'])
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(constants.ACTIVE,
|
||||
self.assertEqual(
|
||||
constants.ACTIVE,
|
||||
res['ipsec_site_connection']['status'])
|
||||
|
||||
def test_create_two_ipsec_site_connections_one_vpnservice(self):
|
||||
|
@ -156,7 +158,7 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
for ipsec_site_connection in res['ipsec_site_connections']:
|
||||
# Check that the associated vpnservice is the correct one
|
||||
req = self.new_show_request(
|
||||
'vpnservices', ipsec_site_connection['vpnservice_id'])
|
||||
'vpnservices', ipsec_site_connection['vpnservice_id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual(vpnservice['vpnservice']['id'],
|
||||
|
@ -167,16 +169,17 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_create_ipsec_site_connection_error_delete_neutron_resouce(self):
|
||||
self.client_mock.create_ipsec_site_conn.side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
with self.vpnservice() as vpnservice, \
|
||||
self.ikepolicy() as ikepolicy, \
|
||||
self.ipsecpolicy() as ipsecpolicy:
|
||||
self._create_ipsec_site_connection(self.fmt, 'site_conn2',
|
||||
peer_cidrs='192.168.101.0/24',
|
||||
vpnservice_id=vpnservice['vpnservice']['id'],
|
||||
ikepolicy_id=ikepolicy['ikepolicy']['id'],
|
||||
ipsecpolicy_id=ipsecpolicy['ipsecpolicy']['id'],
|
||||
expected_res_status=500)
|
||||
self._create_ipsec_site_connection(
|
||||
self.fmt, 'site_conn2',
|
||||
peer_cidrs='192.168.101.0/24',
|
||||
vpnservice_id=vpnservice['vpnservice']['id'],
|
||||
ikepolicy_id=ikepolicy['ikepolicy']['id'],
|
||||
ipsecpolicy_id=ipsecpolicy['ipsecpolicy']['id'],
|
||||
expected_res_status=500)
|
||||
req = self.new_list_request('ipsec-site-connections')
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
self.assertFalse(res['ipsec_site_connections'])
|
||||
|
@ -185,9 +188,9 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
with self.ipsec_site_connection() as ipsec_site_connection:
|
||||
data = {'ipsec_site_connection': {'mtu': '1300'}}
|
||||
ipsec_site_conn_id = (
|
||||
ipsec_site_connection['ipsec_site_connection']['id'])
|
||||
req = self.new_update_request('ipsec-site-connections', data,
|
||||
ipsec_site_conn_id)
|
||||
ipsec_site_connection['ipsec_site_connection']['id'])
|
||||
req = self.new_update_request(
|
||||
'ipsec-site-connections', data, ipsec_site_conn_id)
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(1300, res['ipsec_site_connection']['mtu'])
|
||||
self.assertEqual(
|
||||
|
@ -196,35 +199,37 @@ class VPNTestCase(test_vpn_db.VPNTestMixin,
|
|||
|
||||
def test_update_ipsec_site_connection_error(self):
|
||||
self.client_mock.update_ipsec_site_conn.side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
with self.ipsec_site_connection() as ipsec_site_connection:
|
||||
data = {'ipsec_site_connection': {'mtu': '1300'}}
|
||||
ipsec_site_conn_id = (
|
||||
ipsec_site_connection['ipsec_site_connection']['id'])
|
||||
ipsec_site_connection['ipsec_site_connection']['id'])
|
||||
req = self.new_update_request('ipsec-site-connections', data,
|
||||
ipsec_site_conn_id)
|
||||
res = req.get_response(self.ext_api)
|
||||
self.assertEqual(500, res.status_int)
|
||||
|
||||
req = self.new_show_request('ipsec-site-connections',
|
||||
ipsec_site_conn_id)
|
||||
req = self.new_show_request(
|
||||
'ipsec-site-connections',
|
||||
ipsec_site_conn_id)
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
self.assertEqual(constants.ERROR,
|
||||
res['ipsec_site_connection']['status'])
|
||||
self.assertEqual(
|
||||
constants.ERROR,
|
||||
res['ipsec_site_connection']['status'])
|
||||
|
||||
def test_delete_ipsec_site_connection(self):
|
||||
with self.ipsec_site_connection(name="site_conn2",
|
||||
do_delete=False) as ipsec_site_connection:
|
||||
with self.ipsec_site_connection(
|
||||
name="site_conn2", do_delete=False) as ipsec_site_connection:
|
||||
ipsec_site_conn_id = \
|
||||
ipsec_site_connection['ipsec_site_connection']['id']
|
||||
req = self.new_delete_request('ipsec-site-connections',
|
||||
ipsec_site_conn_id)
|
||||
ipsec_site_connection['ipsec_site_connection']['id']
|
||||
req = self.new_delete_request(
|
||||
'ipsec-site-connections', ipsec_site_conn_id)
|
||||
res = req.get_response(self.ext_api)
|
||||
self.assertEqual(204, res.status_int)
|
||||
|
||||
def test_delete_ipsec_site_connection_error(self):
|
||||
self.client_mock.delete_ipsec_site_conn.side_effect = Exception(
|
||||
"Fake Error")
|
||||
"Fake Error")
|
||||
self.test_delete_ipsec_site_connection()
|
||||
req = self.new_list_request('ipsec-site-connections')
|
||||
res = self.deserialize(self.fmt, req.get_response(self.ext_api))
|
||||
|
|
|
@ -292,7 +292,7 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
'add_router_interface_postcommit',
|
||||
auto_spec=True,
|
||||
side_effect=_MyException), \
|
||||
testtools.ExpectedException(_MyException):
|
||||
testtools.ExpectedException(_MyException):
|
||||
l3_plugin.add_router_interface(ctx, router_id, interface_info)
|
||||
port2 = plugin.get_port(ctx, port_id)
|
||||
self.assertEqual(port_id, port2['id'])
|
||||
|
@ -301,8 +301,11 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.client_mock.update_floatingip_postcommit.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
with self.port() as p:
|
||||
private_sub = {'subnet': {'id':
|
||||
p['port']['fixed_ips'][0]['subnet_id']}}
|
||||
private_sub = {
|
||||
'subnet': {
|
||||
'id': p['port']['fixed_ips'][0]['subnet_id']
|
||||
}
|
||||
}
|
||||
with self.floatingip_no_assoc(private_sub) as fip:
|
||||
data = {'floatingip': {'port_id': p['port']['id']}}
|
||||
req = self.new_update_request('floatingips',
|
||||
|
@ -312,11 +315,12 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.assertEqual(exc.HTTPInternalServerError.code,
|
||||
res.status_int)
|
||||
req = self.new_show_request(
|
||||
'floatingips', fip['floatingip']['id'])
|
||||
'floatingips', fip['floatingip']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual(n_const.FLOATINGIP_STATUS_ERROR,
|
||||
res['floatingip']['status'])
|
||||
self.assertEqual(
|
||||
n_const.FLOATINGIP_STATUS_ERROR,
|
||||
res['floatingip']['status'])
|
||||
|
||||
def test_update_router_error_change_resource_status_to_error(self):
|
||||
self.client_mock.update_router_postcommit.side_effect = (
|
||||
|
@ -334,7 +338,7 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.assertEqual(exc.HTTPInternalServerError.code,
|
||||
res.status_int)
|
||||
req = self.new_show_request(
|
||||
'routers', r['router']['id'])
|
||||
'routers', r['router']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual('ERROR', res['router']['status'])
|
||||
|
@ -371,7 +375,7 @@ class TestMidonetProviderNet(MidonetPluginML2TestCase):
|
|||
def test_create_provider_net_with_bogus_type(self):
|
||||
# Create with a bogus network type
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type="random"):
|
||||
self.provider_net(net_type="random"):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_local(self):
|
||||
|
@ -381,27 +385,27 @@ class TestMidonetProviderNet(MidonetPluginML2TestCase):
|
|||
|
||||
def test_create_provider_net_with_flat(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_FLAT):
|
||||
self.provider_net(net_type=n_const.TYPE_FLAT):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_gre(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_GRE):
|
||||
self.provider_net(net_type=n_const.TYPE_GRE):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_vlan(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_VLAN):
|
||||
self.provider_net(net_type=n_const.TYPE_VLAN):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_vxlan(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_VXLAN):
|
||||
self.provider_net(net_type=n_const.TYPE_VXLAN):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_geneve(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_GENEVE):
|
||||
self.provider_net(net_type=n_const.TYPE_GENEVE):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_midonet(self):
|
||||
|
|
|
@ -136,43 +136,39 @@ class TestMidonetPortsV2(MidonetPluginV2TestCase,
|
|||
[{'ip_address': FAKE_IP,
|
||||
'subnet_id': sub['subnet']['id']}]}}
|
||||
req = self.new_update_request(
|
||||
'ports', data, port['port']['id'])
|
||||
'ports', data, port['port']['id'])
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(exc.HTTPInternalServerError.code,
|
||||
res.status_int)
|
||||
self.assertEqual(
|
||||
exc.HTTPInternalServerError.code, res.status_int)
|
||||
req = self.new_show_request('ports', port['port']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.api))
|
||||
self.assertEqual(n_const.PORT_STATUS_ERROR,
|
||||
res['port']['status'])
|
||||
res = self.deserialize(self.fmt, req.get_response(self.api))
|
||||
self.assertEqual(
|
||||
n_const.PORT_STATUS_ERROR,
|
||||
res['port']['status'])
|
||||
|
||||
def test_create_port_with_admin_state_up_false(self):
|
||||
with self.subnet(cidr=FAKE_CIDR) as sub:
|
||||
with self.port(subnet=sub,
|
||||
admin_state_up=False) as port:
|
||||
with self.port(subnet=sub, admin_state_up=False) as port:
|
||||
req = self.new_show_request('ports', port['port']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.api))
|
||||
self.assertEqual(n_const.PORT_STATUS_DOWN,
|
||||
res['port']['status'])
|
||||
res = self.deserialize(self.fmt, req.get_response(self.api))
|
||||
self.assertEqual(
|
||||
n_const.PORT_STATUS_DOWN, res['port']['status'])
|
||||
|
||||
def test_update_port_admin_state_up_to_false_and_true(self):
|
||||
with self.subnet(cidr=FAKE_CIDR) as sub:
|
||||
with self.port(subnet=sub) as port:
|
||||
data = {'port': {'admin_state_up': False}}
|
||||
req = self.new_update_request(
|
||||
'ports', data, port['port']['id'])
|
||||
'ports', data, port['port']['id'])
|
||||
res = req.get_response(self.api)
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.api))
|
||||
res = self.deserialize(self.fmt, req.get_response(self.api))
|
||||
self.assertEqual(n_const.PORT_STATUS_DOWN,
|
||||
res['port']['status'])
|
||||
data = {'port': {'admin_state_up': True}}
|
||||
req = self.new_update_request(
|
||||
'ports', data, port['port']['id'])
|
||||
'ports', data, port['port']['id'])
|
||||
res = req.get_response(self.api)
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.api))
|
||||
res = self.deserialize(self.fmt, req.get_response(self.api))
|
||||
self.assertEqual(n_const.PORT_STATUS_ACTIVE,
|
||||
res['port']['status'])
|
||||
|
||||
|
@ -183,20 +179,27 @@ class TestMidonetPortsV2(MidonetPluginV2TestCase,
|
|||
subnet=sub,
|
||||
device_owner=n_const.DEVICE_OWNER_ROUTER_INTF
|
||||
) as port:
|
||||
data = {'port': {'fixed_ips': [
|
||||
{'subnet_id': sub['subnet']['id'],
|
||||
'ip_address': updated_ip_address}
|
||||
]}}
|
||||
data = {
|
||||
'port': {
|
||||
'fixed_ips': [
|
||||
{
|
||||
'subnet_id': sub['subnet']['id'],
|
||||
'ip_address': updated_ip_address
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
req = self.new_update_request(
|
||||
'ports', data, port['port']['id'])
|
||||
'ports', data, port['port']['id'])
|
||||
res = req.get_response(self.api)
|
||||
self.assertEqual(200, res.status_int)
|
||||
|
||||
req = self.new_show_request('ports', port['port']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.api))
|
||||
self.assertEqual(updated_ip_address,
|
||||
res['port']['fixed_ips'][0]['ip_address'])
|
||||
res = self.deserialize(
|
||||
self.fmt, req.get_response(self.api))
|
||||
self.assertEqual(
|
||||
updated_ip_address,
|
||||
res['port']['fixed_ips'][0]['ip_address'])
|
||||
|
||||
|
||||
class TestMidonetPortBinding(MidonetPluginV2TestCase,
|
||||
|
@ -437,7 +440,7 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
'add_router_interface_postcommit',
|
||||
auto_spec=True,
|
||||
side_effect=_MyException), \
|
||||
testtools.ExpectedException(_MyException):
|
||||
testtools.ExpectedException(_MyException):
|
||||
l3_plugin.add_router_interface(ctx, router_id, interface_info)
|
||||
port2 = plugin.get_port(ctx, port_id)
|
||||
self.assertEqual(port_id, port2['id'])
|
||||
|
@ -446,8 +449,11 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.client_mock.update_floatingip_postcommit.side_effect = (
|
||||
Exception("Fake Error"))
|
||||
with self.port() as p:
|
||||
private_sub = {'subnet': {'id':
|
||||
p['port']['fixed_ips'][0]['subnet_id']}}
|
||||
private_sub = {
|
||||
'subnet': {
|
||||
'id': p['port']['fixed_ips'][0]['subnet_id']
|
||||
}
|
||||
}
|
||||
with self.floatingip_no_assoc(private_sub) as fip:
|
||||
data = {'floatingip': {'port_id': p['port']['id']}}
|
||||
req = self.new_update_request('floatingips',
|
||||
|
@ -457,11 +463,12 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.assertEqual(exc.HTTPInternalServerError.code,
|
||||
res.status_int)
|
||||
req = self.new_show_request(
|
||||
'floatingips', fip['floatingip']['id'])
|
||||
'floatingips', fip['floatingip']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual(n_const.FLOATINGIP_STATUS_ERROR,
|
||||
res['floatingip']['status'])
|
||||
self.assertEqual(
|
||||
n_const.FLOATINGIP_STATUS_ERROR,
|
||||
res['floatingip']['status'])
|
||||
|
||||
def test_update_router_error_change_resource_status_to_error(self):
|
||||
self.client_mock.update_router_postcommit.side_effect = (
|
||||
|
@ -479,7 +486,7 @@ class TestMidonetL3NatExtraRoute(test_ext_route.ExtraRouteDBIntTestCase,
|
|||
self.assertEqual(exc.HTTPInternalServerError.code,
|
||||
res.status_int)
|
||||
req = self.new_show_request(
|
||||
'routers', r['router']['id'])
|
||||
'routers', r['router']['id'])
|
||||
res = self.deserialize(self.fmt,
|
||||
req.get_response(self.ext_api))
|
||||
self.assertEqual('ERROR', res['router']['status'])
|
||||
|
@ -515,37 +522,37 @@ class TestMidonetProviderNet(MidonetPluginV2TestCase):
|
|||
def test_create_provider_net_with_bogus_type(self):
|
||||
# Create with a bogus network type
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type="random"):
|
||||
self.provider_net(net_type="random"):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_local(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_LOCAL):
|
||||
self.provider_net(net_type=n_const.TYPE_LOCAL):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_flat(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_FLAT):
|
||||
self.provider_net(net_type=n_const.TYPE_FLAT):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_gre(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_GRE):
|
||||
self.provider_net(net_type=n_const.TYPE_GRE):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_vlan(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_VLAN):
|
||||
self.provider_net(net_type=n_const.TYPE_VLAN):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_vxlan(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_VXLAN):
|
||||
self.provider_net(net_type=n_const.TYPE_VXLAN):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_geneve(self):
|
||||
with testtools.ExpectedException(exc.HTTPClientError), \
|
||||
self.provider_net(net_type=n_const.TYPE_GENEVE):
|
||||
self.provider_net(net_type=n_const.TYPE_GENEVE):
|
||||
pass
|
||||
|
||||
def test_create_provider_net_with_midonet(self):
|
||||
|
@ -639,11 +646,13 @@ class TestMidonetPortSecurityKludge(MidonetPluginV2TestCase):
|
|||
|
||||
@contextlib.contextmanager
|
||||
def _do_mock(self, plugin):
|
||||
port_mock = mock.patch.object(plugin,
|
||||
port_mock = mock.patch.object(
|
||||
plugin,
|
||||
'_process_port_port_security_create',
|
||||
auto_spec=True,
|
||||
return_value={})
|
||||
network_mock = mock.patch.object(plugin,
|
||||
network_mock = mock.patch.object(
|
||||
plugin,
|
||||
'_process_network_port_security_create',
|
||||
auto_spec=True,
|
||||
return_value={})
|
||||
|
|
|
@ -32,8 +32,8 @@ def add_common_paramaters_to_arguments(parser):
|
|||
|
||||
def _get_logging_resource_id(client, logging_resource_id_or_name):
|
||||
return loggingV20.find_resourceid_by_name_or_id(
|
||||
client, 'logging_resource',
|
||||
logging_resource_id_or_name)
|
||||
client, 'logging_resource',
|
||||
logging_resource_id_or_name)
|
||||
|
||||
|
||||
class FirewallLog(extension.NeutronClientExtension):
|
||||
|
|
5
tox.ini
5
tox.ini
|
@ -70,9 +70,6 @@ whitelist_externals = mkdir
|
|||
commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasenotes/source releasenotes/build/html
|
||||
|
||||
[flake8]
|
||||
# E125 continuation line does not distinguish itself from next logical line
|
||||
# E126 continuation line over-indented for hanging indent
|
||||
# E128 continuation line under-indented for visual indent
|
||||
# H404 multi line docstring should start with a summary
|
||||
# H405 multi line docstring summary not separated with an empty line
|
||||
# N341 _ from python builtins module is used. Use _ from midonet._i18n instead.
|
||||
|
@ -80,7 +77,7 @@ commands = sphinx-build -a -E -W -d releasenotes/build/doctrees -b html releasen
|
|||
# N530 direct neutron imports not allowed
|
||||
# TODO(ihrachys) -- reenable N537 when new neutron-lib release is available
|
||||
# N537 Log messages should not be translated
|
||||
ignore = E125,E126,E128,H404,H405,N530,N537
|
||||
ignore = H404,H405,N530,N537
|
||||
show-source = true
|
||||
exclude = ./.*,build,dist,rally-jobs/plugins
|
||||
import-order-style = pep8
|
||||
|
|
Loading…
Reference in New Issue