[AIM] External segment implementation

This change adds support for external-segment
and external-policy to the AIM-based GBP driver.
External-segments are implemented through Neutron
external networks (only explicit mode supported).
Association between L3-policy and external-segment
is handled by connecting a router between the
external-network and subnets within the L3policy.
External-policy policy-rule-set relationships also
translate into specific extension attributes of
these routers.

Change-Id: I3417bdadbd65e047fa2b1cf2bcaeedf5fa12503f
Signed-off-by: Amit Bose <amitbose@gmail.com>
This commit is contained in:
Amit Bose
2016-10-28 12:32:47 -07:00
parent a96dc50cc8
commit eb753f83d5
6 changed files with 781 additions and 69 deletions

View File

@@ -39,6 +39,26 @@ class HierarchicalContractsNotSupported(gpexc.GroupPolicyBadRequest):
message = _("Hierarchical contracts not supported by APIC driver.")
class MultipleExternalPoliciesForL3Policy(gpexc.GroupPolicyBadRequest):
message = _("Potential association of multiple external policies to "
"an L3 Policy.")
class SharedExternalPolicyUnsupported(gpexc.GroupPolicyBadRequest):
message = _("APIC mapping driver does not support sharing of "
"external policies.")
class OnlyOneL3PolicyIsAllowedPerExternalSegment(gpexc.GroupPolicyBadRequest):
message = _("Only one L3 Policy per ES is supported when NAT is disabled "
"on the ES.")
class OnlyOneAddressIsAllowedPerExternalSegment(gpexc.GroupPolicyBadRequest):
message = _("Only one ip address on each ES is supported on "
"APIC GBP driver.")
def get_filter_entries_for_policy_rule(context):
# forward_rules and reverse_rules is each a dict of filter_entries
# with each entry in the dict having the filter_entry name as the