From: Martin Sunal Date: Mon, 7 Dec 2015 10:24:11 +0000 (+0100) Subject: Bug 4724 added containers to tenant X-Git-Tag: release/beryllium~50 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=a34cd6130c54bba6fba21d72c5f3292c67949d10;p=groupbasedpolicy.git Bug 4724 added containers to tenant Change-Id: Ibec940580f8ef9f741cdc4b4adf3f01bbf477e51 Signed-off-by: Martin Sunal --- diff --git a/demos/gbpsfc-env/demo-asymmetric-chain/rest.py b/demos/gbpsfc-env/demo-asymmetric-chain/rest.py index 8042637d7..6a41d89d4 100644 --- a/demos/gbpsfc-env/demo-asymmetric-chain/rest.py +++ b/demos/gbpsfc-env/demo-asymmetric-chain/rest.py @@ -237,206 +237,210 @@ def get_service_function_paths_data(): def get_tenant_data(): return { - "tenant": [ - { - "id": "tenant-dobre", - "l2-flood-domain": [ - { - "id": "flood-domain-1", - "parent": "bridge-domain1" - }, - { - "id": "flood-domain-2", - "parent": "bridge-domain1" - } - ], - "name": "DockerTenant", - "l3-context": [ + "tenant": [ { - "id": "l3-context-vrf-red" - } - ], - "l2-bridge-domain": [ - { - "id": "bridge-domain1", - "parent": "l3-context-vrf-red" - } - ], - "subnet": [ - { - "id": "subnet-10.0.36.0/24", - "virtual-router-ip": "10.0.36.1", - "parent": "flood-domain-2", - "ip-prefix": "10.0.36.1/24" - }, - { - "id": "subnet-10.0.35.0/24", - "virtual-router-ip": "10.0.35.1", - "parent": "flood-domain-1", - "ip-prefix": "10.0.35.1/24" - } - ], - "endpoint-group": [ - { - "id": "webservers", - "name" : "webservers", - "provider-named-selector": [ - { - "name": "webservers-clients-icmp-http-contract", - "contract": [ - "icmp-http-contract" - ] - } - ] - }, - { - "id": "clients", - "name" : "clients", - "consumer-named-selector": [ - { - "name": "webservers-clients-icmp-http-contract", - "contract": [ - "icmp-http-contract" - ] - } - ] - } - ], - "subject-feature-instances": { - "classifier-instance": [ - { - "name": "icmp", - "classifier-definition-id": "Classifier-IP-Protocol", - "parameter-value": [ + "id": "tenant-dobre", + "name": "DockerTenant", + "forwarding-context": { + "l2-flood-domain": [ { - "name": "proto", - "int-value": 1 + "id": "flood-domain-1", + "parent": "bridge-domain1" + }, + { + "id": "flood-domain-2", + "parent": "bridge-domain1" } - ] - }, - { - "name": "http-dest", - "classifier-definition-id": "Classifier-L4", - "parameter-value": [ + ], + "l3-context": [ { - "int-value": "6", - "name": "proto" - }, + "id": "l3-context-vrf-red" + } + ], + "l2-bridge-domain": [ { - "int-value": "80", - "name": "destport" + "id": "bridge-domain1", + "parent": "l3-context-vrf-red" } - ] - }, - { - "name": "http-src", - "classifier-definition-id": "Classifier-L4", - "parameter-value": [ + ], + "subnet": [ { - "int-value": "6", - "name": "proto" + "id": "subnet-10.0.36.0/24", + "virtual-router-ip": "10.0.36.1", + "parent": "flood-domain-2", + "ip-prefix": "10.0.36.1/24" }, { - "int-value": "80", - "name": "sourceport" + "id": "subnet-10.0.35.0/24", + "virtual-router-ip": "10.0.35.1", + "parent": "flood-domain-1", + "ip-prefix": "10.0.35.1/24" } ] - } - ], - "action-instance": [ - { - "name": "chain1", - "action-definition-id": "Action-Chain", - "parameter-value": [ + }, + "policy": { + "endpoint-group": [ { - "name": "sfc-chain-name", - "string-value": "SFCGBP" + "id": "webservers", + "name": "webservers", + "provider-named-selector": [ + { + "name": "webservers-clients-icmp-http-contract", + "contract": [ + "icmp-http-contract" + ] + } + ] + }, + { + "id": "clients", + "name": "clients", + "consumer-named-selector": [ + { + "name": "webservers-clients-icmp-http-contract", + "contract": [ + "icmp-http-contract" + ] + } + ] } - ] - }, - { - "name": "allow1", - "action-definition-id": "Action-Allow" - } - ] - }, - "contract": [ - { - "id": "icmp-http-contract", - "subject": [ - { - "name": "icmp-subject", - "rule": [ + ], + "subject-feature-instances": { + "classifier-instance": [ { - "name": "allow-icmp-rule", - "order" : 0, - "classifier-ref": [ + "name": "icmp", + "classifier-definition-id": "Classifier-IP-Protocol", + "parameter-value": [ { - "name": "icmp", - "instance-name" : "icmp" - } - ], - "action-ref": [ - { - "name": "allow1", - "order": 0 + "name": "proto", + "int-value": 1 } ] - } - ] - }, - { - "name": "http-subject", - "rule": [ + }, { - "name": "http-chain-rule", - "classifier-ref": [ + "name": "http-dest", + "classifier-definition-id": "Classifier-L4", + "parameter-value": [ { - "name": "http-dest", - "instance-name" : "http-dest", - "direction": "in" - } - ], - "action-ref": [ + "int-value": "6", + "name": "proto" + }, { - "name": "chain1", - "order": 0 + "int-value": "80", + "name": "destport" } ] }, { - "name": "http-out-rule", - "classifier-ref": [ + "name": "http-src", + "classifier-definition-id": "Classifier-L4", + "parameter-value": [ + { + "int-value": "6", + "name": "proto" + }, { - "name": "http-src", - "instance-name" : "http-src", - "direction": "out" + "int-value": "80", + "name": "sourceport" } - ], - "action-ref": [ + ] + } + ], + "action-instance": [ + { + "name": "chain1", + "action-definition-id": "Action-Chain", + "parameter-value": [ { - "name": "allow1", - "order": 0 + "name": "sfc-chain-name", + "string-value": "SFCGBP" } ] + }, + { + "name": "allow1", + "action-definition-id": "Action-Allow" } ] - } - ], - "clause": [ - { - "name": "icmp-http-clause", - "subject-refs": [ - "icmp-subject", - "http-subject" - ] - } - ] + }, + "contract": [ + { + "id": "icmp-http-contract", + "subject": [ + { + "name": "icmp-subject", + "rule": [ + { + "name": "allow-icmp-rule", + "order": 0, + "classifier-ref": [ + { + "name": "icmp", + "instance-name": "icmp" + } + ], + "action-ref": [ + { + "name": "allow1", + "order": 0 + } + ] + } + ] + }, + { + "name": "http-subject", + "rule": [ + { + "name": "http-chain-rule", + "classifier-ref": [ + { + "name": "http-dest", + "instance-name": "http-dest", + "direction": "in" + } + ], + "action-ref": [ + { + "name": "chain1", + "order": 0 + } + ] + }, + { + "name": "http-out-rule", + "classifier-ref": [ + { + "name": "http-src", + "instance-name": "http-src", + "direction": "out" + } + ], + "action-ref": [ + { + "name": "allow1", + "order": 0 + } + ] + } + ] + } + ], + "clause": [ + { + "name": "icmp-http-clause", + "subject-refs": [ + "icmp-subject", + "http-subject" + ] + } + ] + } + ] + } } ] - } - ] -} + } # Main definition - constants diff --git a/demos/gbpsfc-env/demo-gbp1/rest.py b/demos/gbpsfc-env/demo-gbp1/rest.py index 9b5ef3277..b0188ae1d 100644 --- a/demos/gbpsfc-env/demo-gbp1/rest.py +++ b/demos/gbpsfc-env/demo-gbp1/rest.py @@ -57,184 +57,186 @@ def post(host, port, uri, data, debug=False): def get_tenant_data(): return { - "policy:tenant": { - "contract": [ - { + "policy:tenant": { + "id": "tenant-dobre", + "name": "GBPPOC", + "forwarding-context": { + "l2-bridge-domain": [ + { + "id": "bridge-domain1", + "parent": "l3-context-vrf-red" + } + ], + "l2-flood-domain": [ + { + "id": "flood-domain-1", + "parent": "bridge-domain1" + }, + { + "id": "flood-domain1", + "parent": "bridge-domain1" + } + ], + "l3-context": [ + { + "id": "l3-context-vrf-red" + } + ], + "subnet": [ + { + "id": "subnet-10.0.35.0/24", + "ip-prefix": "10.0.35.1/24", + "parent": "flood-domain-1", + "virtual-router-ip": "10.0.35.1" + }, + { + "id": "subnet-10.0.36.0/24", + "ip-prefix": "10.0.36.1/24", + "parent": "flood-domain1", + "virtual-router-ip": "10.0.36.1" + } + ] + }, + "policy": { + "contract": [ + { "clause": [ - { - "name": "allow-http-clause", - "subject-refs": [ - "allow-http-subject", - "allow-icmp-subject" - ] - } - ], - "id": "icmp-http-contract", + { + "name": "allow-http-clause", + "subject-refs": [ + "allow-http-subject", + "allow-icmp-subject" + ] + } + ], + "id": "icmp-http-contract", "subject": [ - { - "name": "allow-http-subject", - "rule": [ - { - "classifier-ref": [ - { - "direction": "in", - "name": "http-dest", - "instance-name" : "http-dest", - }, - { - "direction": "out", - "name": "http-src", - "instance-name" : "http-src" - } - ], - "action-ref": [ + { + "name": "allow-http-subject", + "rule": [ { - "name": "allow1", - "order": 0 + "classifier-ref": [ + { + "direction": "in", + "name": "http-dest", + "instance-name": "http-dest" + }, + { + "direction": "out", + "name": "http-src", + "instance-name": "http-src" + } + ], + "action-ref": [ + { + "name": "allow1", + "order": 0 + } + ], + "name": "allow-http-rule" } - ], - - "name": "allow-http-rule" - } - ] - }, - { - "name": "allow-icmp-subject", - "rule": [ - { - "classifier-ref": [ - { - "name": "icmp", - "instance-name" : "icmp" - } - ], - "action-ref": [ + ] + }, + { + "name": "allow-icmp-subject", + "rule": [ { - "name": "allow1", - "order": 0 + "classifier-ref": [ + { + "name": "icmp", + "instance-name": "icmp" + } + ], + "action-ref": [ + { + "name": "allow1", + "order": 0 + } + ], + "name": "allow-icmp-rule" } - ], - - "name": "allow-icmp-rule" - } - ] - } + ] + } ] - } - ], - "endpoint-group": [ - { + } + ], + "endpoint-group": [ + { "consumer-named-selector": [ - { - "contract": [ - "icmp-http-contract" - ], - "name": "webservers-clients-icmp-http-contract" - } - ], - "id": "clients", + { + "contract": [ + "icmp-http-contract" + ], + "name": "webservers-clients-icmp-http-contract" + } + ], + "id": "clients", "provider-named-selector": [] - }, - { - "consumer-named-selector": [], - "id": "webservers", + }, + { + "consumer-named-selector": [], + "id": "webservers", "provider-named-selector": [ + { + "contract": [ + "icmp-http-contract" + ], + "name": "webservers-clients-icmp-http-contract" + } + ] + } + ], + "subject-feature-instances": { + "classifier-instance": [ + { + "classifier-definition-id": "Classifier-L4", + "name": "http-dest", + "parameter-value": [ + { + "int-value": "6", + "name": "proto" + }, { - "contract": [ - "icmp-http-contract" - ], - "name": "webservers-clients-icmp-http-contract" + "int-value": "80", + "name": "destport" } - ] - } - ], - "id": "tenant-dobre", - "l2-bridge-domain": [ - { - "id": "bridge-domain1", - "parent": "l3-context-vrf-red" - } - ], - "l2-flood-domain": [ - { - "id": "flood-domain-1", - "parent": "bridge-domain1" - }, - { - "id": "flood-domain1", - "parent": "bridge-domain1" - } - ], - "l3-context": [ - { - "id": "l3-context-vrf-red" - } - ], - "name": "GBPPOC", - "subject-feature-instances": { - "classifier-instance": [ + ] + }, { - "classifier-definition-id": "Classifier-L4", - "name": "http-dest", - "parameter-value": [ - { - "int-value": "6", - "name": "proto" - }, - { - "int-value": "80", - "name": "destport" - } - ] - }, + "classifier-definition-id": "Classifier-L4", + "name": "http-src", + "parameter-value": [ + { + "int-value": "6", + "name": "proto" + }, + { + "int-value": "80", + "name": "sourceport" + } + ] + }, { - "classifier-definition-id": "Classifier-L4", - "name": "http-src", - "parameter-value": [ - { - "int-value": "6", - "name": "proto" - }, - { - "int-value": "80", - "name": "sourceport" - } - ] - }, + "classifier-definition-id": "Classifier-IP-Protocol", + "name": "icmp", + "parameter-value": [ + { + "int-value": "1", + "name": "proto" + } + ] + } + ], + "action-instance": [ { - "classifier-definition-id": "Classifier-IP-Protocol", - "name": "icmp", - "parameter-value": [ - { - "int-value": "1", - "name": "proto" - } - ] + "name": "allow1", + "action-definition-id": "Action-Allow" } - ], - "action-instance": [ - { - "name": "allow1", - "action-definition-id": "Action-Allow" + ] } - ] - }, - "subnet": [ - { - "id": "subnet-10.0.35.0/24", - "ip-prefix": "10.0.35.1/24", - "parent": "flood-domain-1", - "virtual-router-ip": "10.0.35.1" - }, - { - "id": "subnet-10.0.36.0/24", - "ip-prefix": "10.0.36.1/24", - "parent": "flood-domain1", - "virtual-router-ip": "10.0.36.1" - } - ] + } + } } - } # Main definition - constants diff --git a/demos/gbpsfc-env/demo-symmetric-chain/rest.py b/demos/gbpsfc-env/demo-symmetric-chain/rest.py index 5eb35bc7f..17d98670b 100644 --- a/demos/gbpsfc-env/demo-symmetric-chain/rest.py +++ b/demos/gbpsfc-env/demo-symmetric-chain/rest.py @@ -239,207 +239,210 @@ def get_service_function_paths_data(): def get_tenant_data(): return { - "tenant": [ - { - "id": "tenant-dobre", - "l2-flood-domain": [ - { - "id": "flood-domain-1", - "parent": "bridge-domain1" - }, - { - "id": "flood-domain-2", - "parent": "bridge-domain1" - } - ], - "name": "DockerTenant", - "l3-context": [ - { - "id": "l3-context-vrf-red" - } - ], - "l2-bridge-domain": [ - { - "id": "bridge-domain1", - "parent": "l3-context-vrf-red" - } - ], - "subnet": [ - { - "id": "subnet-10.0.36.0/24", - "virtual-router-ip": "10.0.36.1", - "parent": "flood-domain-2", - "ip-prefix": "10.0.36.1/24" - }, - { - "id": "subnet-10.0.35.0/24", - "virtual-router-ip": "10.0.35.1", - "parent": "flood-domain-1", - "ip-prefix": "10.0.35.1/24" - } - ], - "endpoint-group": [ - { - "id": "webservers", - "name" : "webservers", - "provider-named-selector": [ - { - "name": "webservers-clients-icmp-http-contract", - "contract": [ - "icmp-http-contract" - ] - } - ] - }, + "tenant": [ { - "id": "clients", - "name" : "clients", - "consumer-named-selector": [ - { - "name": "webservers-clients-icmp-http-contract", - "contract": [ - "icmp-http-contract" - ] - } - ] - } - ], - "subject-feature-instances": { - "classifier-instance": [ - { - "name": "icmp", - "classifier-definition-id": "Classifier-IP-Protocol", - "parameter-value": [ + "id": "tenant-dobre", + "name": "DockerTenant", + "forwarding-context": { + "l2-flood-domain": [ { - "name": "proto", - "int-value": 1 + "id": "flood-domain-1", + "parent": "bridge-domain1" + }, + { + "id": "flood-domain-2", + "parent": "bridge-domain1" } - ] - }, - { - "name": "http-dest", - "classifier-definition-id": "Classifier-L4", - "parameter-value": [ + ], + "l3-context": [ { - "int-value": "6", - "name": "proto" - }, + "id": "l3-context-vrf-red" + } + ], + "l2-bridge-domain": [ { - "int-value": "80", - "name": "destport" + "id": "bridge-domain1", + "parent": "l3-context-vrf-red" } - ] - }, - { - "name": "http-src", - "classifier-definition-id": "Classifier-L4", - "parameter-value": [ + ], + "subnet": [ { - "int-value": "6", - "name": "proto" + "id": "subnet-10.0.36.0/24", + "virtual-router-ip": "10.0.36.1", + "parent": "flood-domain-2", + "ip-prefix": "10.0.36.1/24" }, { - "int-value": "80", - "name": "sourceport" + "id": "subnet-10.0.35.0/24", + "virtual-router-ip": "10.0.35.1", + "parent": "flood-domain-1", + "ip-prefix": "10.0.35.1/24" } ] - } - ], - "action-instance": [ - { - "name": "chain1", - "action-definition-id": "Action-Chain", - "parameter-value": [ + }, + "policy": { + "endpoint-group": [ { - "name": "sfc-chain-name", - "string-value": "SFCGBP" + "id": "webservers", + "name": "webservers", + "provider-named-selector": [ + { + "name": "webservers-clients-icmp-http-contract", + "contract": [ + "icmp-http-contract" + ] + } + ] + }, + { + "id": "clients", + "name": "clients", + "consumer-named-selector": [ + { + "name": "webservers-clients-icmp-http-contract", + "contract": [ + "icmp-http-contract" + ] + } + ] } - ] - }, - { - "name": "allow1", - "action-definition-id": "Action-Allow" - } - ] - }, - "contract": [ - { - "id": "icmp-http-contract", - "subject": [ - { - "name": "icmp-subject", - "rule": [ + ], + "subject-feature-instances": { + "classifier-instance": [ { - "name": "allow-icmp-rule", - "order" : 0, - "classifier-ref": [ - { - "name": "icmp", - "instance-name" : "icmp" - } - ], - "action-ref": [ + "name": "icmp", + "classifier-definition-id": "Classifier-IP-Protocol", + "parameter-value": [ { - "name": "allow1", - "order": 0 + "name": "proto", + "int-value": 1 } ] - } - - ] - }, - { - "name": "http-subject", - "rule": [ + }, { - "name": "http-chain-rule-in", - "classifier-ref": [ + "name": "http-dest", + "classifier-definition-id": "Classifier-L4", + "parameter-value": [ { - "name" : "http-dest", - "instance-name": "http-dest", - "direction": "in" - } - ], - "action-ref": [ + "int-value": "6", + "name": "proto" + }, { - "name": "chain1", - "order": 0 + "int-value": "80", + "name": "destport" } ] }, { - "name": "http-chain-rule-out", - "classifier-ref": [ + "name": "http-src", + "classifier-definition-id": "Classifier-L4", + "parameter-value": [ + { + "int-value": "6", + "name": "proto" + }, { - "name" : "http-src", - "instance-name": "http-src", - "direction": "out" + "int-value": "80", + "name": "sourceport" } - ], - "action-ref": [ + ] + } + ], + "action-instance": [ + { + "name": "chain1", + "action-definition-id": "Action-Chain", + "parameter-value": [ { - "name": "chain1", - "order": 0 + "name": "sfc-chain-name", + "string-value": "SFCGBP" } ] + }, + { + "name": "allow1", + "action-definition-id": "Action-Allow" } ] - } - ], - "clause": [ - { - "name": "icmp-http-clause", - "subject-refs": [ - "icmp-subject", - "http-subject" - ] - } - ] + }, + "contract": [ + { + "id": "icmp-http-contract", + "subject": [ + { + "name": "icmp-subject", + "rule": [ + { + "name": "allow-icmp-rule", + "order": 0, + "classifier-ref": [ + { + "name": "icmp", + "instance-name": "icmp" + } + ], + "action-ref": [ + { + "name": "allow1", + "order": 0 + } + ] + } + ] + }, + { + "name": "http-subject", + "rule": [ + { + "name": "http-chain-rule-in", + "classifier-ref": [ + { + "name": "http-dest", + "instance-name": "http-dest", + "direction": "in" + } + ], + "action-ref": [ + { + "name": "chain1", + "order": 0 + } + ] + }, + { + "name": "http-chain-rule-out", + "classifier-ref": [ + { + "name": "http-src", + "instance-name": "http-src", + "direction": "out" + } + ], + "action-ref": [ + { + "name": "chain1", + "order": 0 + } + ] + } + ] + } + ], + "clause": [ + { + "name": "icmp-http-clause", + "subject-refs": [ + "icmp-subject", + "http-subject" + ] + } + ] + } + ] + } } ] - } - ] -} + } # Main definition - constants diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java index c59bdd9a6..dfffe21b3 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/api/PolicyValidatorRegistrar.java @@ -10,8 +10,8 @@ package org.opendaylight.groupbasedpolicy.api; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public interface PolicyValidatorRegistrar { diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/IndexedTenant.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/IndexedTenant.java index 44dfcfe0d..bed1133ac 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/IndexedTenant.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/IndexedTenant.java @@ -24,15 +24,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.NetworkDomain; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import com.google.common.base.Function; import com.google.common.collect.Collections2; @@ -57,61 +59,70 @@ public class IndexedTenant { private final Map actions = new HashMap<>(); private final Map> subnetMap = new HashMap<>(); - + public IndexedTenant(Tenant tenant) { - super(); this.tenant = tenant; this.hashCode = tenant.hashCode(); - - if (tenant.getEndpointGroup() != null) { - for (EndpointGroup eg : tenant.getEndpointGroup()) { + if (tenant.getPolicy() != null) { + processPolicy(tenant.getPolicy()); + } + if (tenant.getForwardingContext() != null) { + processForwardingContext(tenant.getForwardingContext()); + } + } + + private void processPolicy(Policy policy) { + if (policy.getEndpointGroup() != null) { + for (EndpointGroup eg : policy.getEndpointGroup()) { endpointGroups.put(eg.getId(), eg); } } - if (tenant.getContract() != null) { - for (Contract c : tenant.getContract()) { + if (policy.getContract() != null) { + for (Contract c : policy.getContract()) { contracts.put(c.getId(), c); } } - if (tenant.getL3Context() != null) { - for (L3Context c : tenant.getL3Context()) { + if (policy.getSubjectFeatureInstances() != null) { + SubjectFeatureInstances sfi = policy.getSubjectFeatureInstances(); + if (sfi.getClassifierInstance() != null) { + for (ClassifierInstance ci : sfi.getClassifierInstance()) { + classifiers.put(ci.getName(), ci); + } + } + if (sfi.getActionInstance() != null) { + for (ActionInstance action : sfi.getActionInstance()) { + actions.put(action.getName(), action); + } + } + } + } + + private void processForwardingContext(ForwardingContext fwCtx) { + if (fwCtx.getL3Context() != null) { + for (L3Context c : fwCtx.getL3Context()) { networkDomains.put(c.getId().getValue(), c); } } - if (tenant.getL2BridgeDomain() != null) { - for (L2BridgeDomain c : tenant.getL2BridgeDomain()) { + if (fwCtx.getL2BridgeDomain() != null) { + for (L2BridgeDomain c : fwCtx.getL2BridgeDomain()) { networkDomains.put(c.getId().getValue(), c); } } - if (tenant.getL2FloodDomain() != null) { - for (L2FloodDomain c : tenant.getL2FloodDomain()) { + if (fwCtx.getL2FloodDomain() != null) { + for (L2FloodDomain c : fwCtx.getL2FloodDomain()) { networkDomains.put(c.getId().getValue(), c); } } - if (tenant.getSubnet() != null) { - for (Subnet s : tenant.getSubnet()) { + if (fwCtx.getSubnet() != null) { + for (Subnet s : fwCtx.getSubnet()) { networkDomains.put(s.getId().getValue(), s); Set sset = subnetMap.get(s.getParent().getValue()); if (sset == null) { - subnetMap.put(s.getParent().getValue(), - sset = new HashSet()); + subnetMap.put(s.getParent().getValue(), sset = new HashSet()); } sset.add(s.getId()); } } - if (tenant.getSubjectFeatureInstances() != null) { - SubjectFeatureInstances sfi = tenant.getSubjectFeatureInstances(); - if (sfi.getClassifierInstance() != null) { - for (ClassifierInstance ci : sfi.getClassifierInstance()) { - classifiers.put(ci.getName(), ci); - } - } - if (sfi.getActionInstance() != null) { - for (ActionInstance action : sfi.getActionInstance()) { - actions.put(action.getName(), action); - } - } - } } /** diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/Policy.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/Policy.java index f9bdc0ebf..e3facede8 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/Policy.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/Policy.java @@ -22,7 +22,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; import com.google.common.collect.ImmutableTable; import com.google.common.collect.Table; diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/RuleGroup.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/RuleGroup.java index 4d231ad21..5da5c669a 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/RuleGroup.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/dto/RuleGroup.java @@ -15,8 +15,8 @@ import javax.annotation.concurrent.Immutable; import org.opendaylight.groupbasedpolicy.util.TenantUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; import com.google.common.collect.ComparisonChain; import com.google.common.collect.Ordering; diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java index bf4387f6d..573bf024c 100755 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolver.java @@ -40,9 +40,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.ResolvedPolicies; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.ResolvedPoliciesBuilder; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -213,8 +213,8 @@ public class PolicyResolver implements PolicyValidatorRegistrar, AutoCloseable { } LOG.debug("Resolving of tenant inheritance and policy triggered by a change in tenant {}", tenantId); Tenant t = InheritanceUtils.resolveTenant(result.get()); - SubjectFeatureInstances subjectFeatureInstances = t.getSubjectFeatureInstances(); - if (subjectFeatureInstances != null) { + if (t.getPolicy() != null && t.getPolicy().getSubjectFeatureInstances() != null) { + SubjectFeatureInstances subjectFeatureInstances = t.getPolicy().getSubjectFeatureInstances(); // TODO log and remove invalid action instances if (actionInstancesAreValid(subjectFeatureInstances.getActionInstance()) && classifierInstancesAreValid(subjectFeatureInstances.getClassifierInstance())) { diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/sf/ClassifierInstanceValidator.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/sf/ClassifierInstanceValidator.java index 47c2d78a6..d54d46c55 100755 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/sf/ClassifierInstanceValidator.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/sf/ClassifierInstanceValidator.java @@ -18,7 +18,7 @@ import java.util.Set; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ParameterName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.parameter.value.RangeValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.ParameterType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.Int; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.has.parameters.type.parameter.type.Range; diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/ContractResolverUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/ContractResolverUtils.java index 965734cb0..f6b08a2aa 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/ContractResolverUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/ContractResolverUtils.java @@ -22,13 +22,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.ProviderSelectionRelator; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.QualityMatcher; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; import com.google.common.collect.HashBasedTable; import com.google.common.collect.Table; @@ -58,9 +59,11 @@ class ContractResolverUtils { Table> contractMatches, Tenant tenant) { // For each endpoint group, match consumer selectors // against contracts to get a set of matching consumer selectors - if (tenant.getEndpointGroup() == null) + Policy policy = tenant.getPolicy(); + if (policy == null || policy.getEndpointGroup() == null) { return; - for (EndpointGroup group : tenant.getEndpointGroup()) { + } + for (EndpointGroup group : policy.getEndpointGroup()) { List r = matchConsumerContracts(tenant, group); for (ConsumerContractMatch ccm : r) { List cms = consumerMatches.get(tenant.getId(), ccm.contract.getId()); @@ -74,7 +77,7 @@ class ContractResolverUtils { // Match provider selectors, and check each match for a corresponding // consumer selector match. - for (EndpointGroup group : tenant.getEndpointGroup()) { + for (EndpointGroup group : policy.getEndpointGroup()) { List matches = matchProviderContracts(tenant, group, consumerMatches); for (ContractMatch cm : matches) { EgKey consumerKey = new EgKey(cm.consumerTenant.getId(), cm.consumer.getId()); @@ -93,15 +96,21 @@ class ContractResolverUtils { private static List matchConsumerContracts(Tenant tenant, EndpointGroup consumer) { List matches = new ArrayList<>(); + Policy policy = tenant.getPolicy(); + if (policy == null || policy.getContract() == null) { + return matches; + } if (consumer.getConsumerNamedSelector() != null) { for (ConsumerNamedSelector cns : consumer.getConsumerNamedSelector()) { - if (cns.getContract() == null) + if (cns.getContract() == null) { continue; + } for (ContractId contractId : cns.getContract()) { Contract contract = TenantUtils.findContract(tenant, contractId); - if (contract == null) + if (contract == null) { continue; + } matches.add(new ConsumerContractMatch(tenant, contract, tenant, consumer, cns)); @@ -110,11 +119,10 @@ class ContractResolverUtils { } if (consumer.getConsumerTargetSelector() != null) { for (ConsumerTargetSelector cts : consumer.getConsumerTargetSelector()) { - if (tenant.getContract() == null) - continue; - for (Contract contract : tenant.getContract()) { - if (contract.getTarget() == null) + for (Contract contract : policy.getContract()) { + if (contract.getTarget() == null) { continue; + } for (Target t : contract.getTarget()) { boolean match = true; if (cts.getQualityMatcher() != null) { @@ -150,10 +158,15 @@ class ContractResolverUtils { private static List matchProviderContracts(Tenant tenant, EndpointGroup provider, Table> consumerMatches) { List matches = new ArrayList<>(); + Policy policy = tenant.getPolicy(); + if (policy == null || policy.getContract() == null) { + return matches; + } if (provider.getProviderNamedSelector() != null) { for (ProviderNamedSelector pns : provider.getProviderNamedSelector()) { - if (pns.getContract() == null) + if (pns.getContract() == null) { continue; + } for (ContractId contractId : pns.getContract()) { Contract c = TenantUtils.findContract(tenant, contractId); if (c == null) @@ -165,9 +178,7 @@ class ContractResolverUtils { } if (provider.getProviderTargetSelector() != null) { for (ProviderTargetSelector pts : provider.getProviderTargetSelector()) { - if (tenant.getContract() == null) - continue; - for (Contract c : tenant.getContract()) { + for (Contract c : policy.getContract()) { if (c.getTarget() == null) continue; for (Target t : c.getTarget()) { @@ -196,8 +207,9 @@ class ContractResolverUtils { List cMatches, Tenant tenant, EndpointGroup provider, ProviderSelectionRelator relator) { - if (cMatches == null) + if (cMatches == null) { return; + } for (ConsumerContractMatch cMatch : cMatches) { matches.add(new ContractMatch(cMatch, tenant, provider, relator)); } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/IidFactory.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/IidFactory.java index 4f417f104..95d49509a 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/IidFactory.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/IidFactory.java @@ -43,33 +43,35 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ClassifierDefinitionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstanceKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.RendererName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.Renderers; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.Renderer; @@ -97,6 +99,7 @@ public class IidFactory { public static InstanceIdentifier endpointGroupIid(TenantId tenantId, EndpointGroupId epgId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(EndpointGroup.class, new EndpointGroupKey(epgId)) .build(); } @@ -104,6 +107,7 @@ public class IidFactory { public static InstanceIdentifier contractIid(TenantId tenantId, ContractId contractId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(Contract.class, new ContractKey(contractId)) .build(); } @@ -112,6 +116,7 @@ public class IidFactory { SubjectName subjectName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(Contract.class, new ContractKey(contractId)) .child(Subject.class, new SubjectKey(subjectName)) .build(); @@ -121,6 +126,7 @@ public class IidFactory { EndpointGroupId epgId, SelectorName providerSelectorName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(EndpointGroup.class, new EndpointGroupKey(epgId)) .child(ProviderNamedSelector.class, new ProviderNamedSelectorKey(providerSelectorName)) .build(); @@ -130,6 +136,7 @@ public class IidFactory { EndpointGroupId epgId, SelectorName consumerSelectorName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(EndpointGroup.class, new EndpointGroupKey(epgId)) .child(ConsumerNamedSelector.class, new ConsumerNamedSelectorKey(consumerSelectorName)) .build(); @@ -138,6 +145,7 @@ public class IidFactory { public static InstanceIdentifier clauseIid(TenantId tenantId, ContractId contractId, ClauseName clauseName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(Contract.class, new ContractKey(contractId)) .child(Clause.class, new ClauseKey(clauseName)) .build(); @@ -147,6 +155,7 @@ public class IidFactory { RuleName ruleName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(Contract.class, new ContractKey(contractId)) .child(Subject.class, new SubjectKey(subjectName)) .child(Rule.class, new RuleKey(ruleName)) @@ -156,6 +165,7 @@ public class IidFactory { public static InstanceIdentifier actionInstanceIid(TenantId tenantId, ActionName actionName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(SubjectFeatureInstances.class) .child(ActionInstance.class, new ActionInstanceKey(actionName)) .build(); @@ -165,6 +175,7 @@ public class IidFactory { ClassifierName classifierName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(SubjectFeatureInstances.class) .child(ClassifierInstance.class, new ClassifierInstanceKey(classifierName)) .build(); @@ -187,6 +198,7 @@ public class IidFactory { SubjectName subjectName, RuleName ruleName, ClassifierName classifierRefName) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(Policy.class) .child(Contract.class, new ContractKey(contractId)) .child(Subject.class, new SubjectKey(subjectName)) .child(Rule.class, new RuleKey(ruleName)) @@ -197,6 +209,7 @@ public class IidFactory { public static InstanceIdentifier l2FloodDomainIid(TenantId tenantId, L2FloodDomainId l2FloodDomainId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(ForwardingContext.class) .child(L2FloodDomain.class, new L2FloodDomainKey(l2FloodDomainId)) .build(); } @@ -205,6 +218,7 @@ public class IidFactory { L2BridgeDomainId l2BridgeDomainId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(ForwardingContext.class) .child(L2BridgeDomain.class, new L2BridgeDomainKey(l2BridgeDomainId)) .build(); } @@ -212,6 +226,7 @@ public class IidFactory { public static InstanceIdentifier l3ContextIid(TenantId tenantId, L3ContextId l3ContextId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(ForwardingContext.class) .child(L3Context.class, new L3ContextKey(l3ContextId)) .build(); } @@ -254,6 +269,7 @@ public class IidFactory { public static InstanceIdentifier subnetIid(TenantId tenantId, SubnetId subnetId) { return InstanceIdentifier.builder(Tenants.class) .child(Tenant.class, new TenantKey(tenantId)) + .child(ForwardingContext.class) .child(Subnet.class, new SubnetKey(subnetId)) .build(); } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/InheritanceUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/InheritanceUtils.java index 3d1dff851..5bf27a6a2 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/InheritanceUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/InheritanceUtils.java @@ -44,43 +44,46 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQuality; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.TargetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.GroupIdentificationConstraints; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelectorBuilder; - +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.TargetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.GroupIdentificationConstraints; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelectorBuilder; + +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; /** @@ -105,37 +108,40 @@ public class InheritanceUtils { * @param unresolvedTenant * the {@link Tenant} unresolved tenant to resolve * @return the fully-resolved {@link Tenant} + * @throws NullPointerException if parameter {@code unresolvedTenant} is {@code null} */ public static Tenant resolveTenant(Tenant unresolvedTenant) { + Preconditions.checkNotNull(unresolvedTenant); HashMap resolvedEgs = new HashMap<>(); HashMap resolvedContracts = new HashMap<>(); + TenantBuilder resolvedTenantBuilder = new TenantBuilder().setId(unresolvedTenant.getId()) + .setName(unresolvedTenant.getName()) + .setDescription(unresolvedTenant.getDescription()); - if (unresolvedTenant.getEndpointGroup() != null) { - for (EndpointGroup eg : unresolvedTenant.getEndpointGroup()) { - resolveEndpointGroup(unresolvedTenant, eg, resolvedEgs); + Policy unresolvedPolicy = unresolvedTenant.getPolicy(); + if (unresolvedPolicy != null) { + if (unresolvedPolicy.getEndpointGroup() != null) { + for (EndpointGroup eg : unresolvedPolicy.getEndpointGroup()) { + resolveEndpointGroup(unresolvedTenant, eg, resolvedEgs); + } } - } - if (unresolvedTenant.getContract() != null) { - for (Contract c : unresolvedTenant.getContract()) { - resolveContract(unresolvedTenant, c, resolvedContracts); + if (unresolvedPolicy.getContract() != null) { + for (Contract c : unresolvedPolicy.getContract()) { + resolveContract(unresolvedTenant, c, resolvedContracts); + } } + resolvedTenantBuilder + .setPolicy(new PolicyBuilder().setEndpointGroup(ImmutableList.copyOf(resolvedEgs.values())) + .setContract(ImmutableList.copyOf(resolvedContracts.values())) + .setContractRef(unresolvedPolicy.getContractRef()) + .setSubjectFeatureInstances(unresolvedPolicy.getSubjectFeatureInstances()) + .build()); } // XXX TODO - inherit from common tenant - return new TenantBuilder() - .setId(unresolvedTenant.getId()) - .setName(unresolvedTenant.getName()) - .setDescription(unresolvedTenant.getDescription()) - .setEndpointGroup(ImmutableList.copyOf(resolvedEgs.values())) - .setContract(ImmutableList.copyOf(resolvedContracts.values())) - .setContractRef(unresolvedTenant.getContractRef()) - .setSubjectFeatureInstances(unresolvedTenant.getSubjectFeatureInstances()) - .setL3Context(unresolvedTenant.getL3Context()) - .setL2BridgeDomain(unresolvedTenant.getL2BridgeDomain()) - .setL2FloodDomain(unresolvedTenant.getL2FloodDomain()) - .setSubnet(unresolvedTenant.getSubnet()) - .build(); + resolvedTenantBuilder.setForwardingContext(unresolvedTenant.getForwardingContext()); + return resolvedTenantBuilder.build(); } // **************** @@ -767,7 +773,7 @@ public class InheritanceUtils { if (unresolvedClause.getProviderMatchers() != null) { ProviderMatchers pms = unresolvedClause.getProviderMatchers(); - org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.GroupIdentificationConstraints groupIdentificationConstraintsProvider = pms + org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.GroupIdentificationConstraints groupIdentificationConstraintsProvider = pms .getGroupIdentificationConstraints(); if (groupIdentificationConstraintsProvider instanceof GroupCapabilityConstraintCase) { resolveCapabilityMatcher( diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/MatcherUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/MatcherUtils.java index 47cd8cf7a..1a5e641a9 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/MatcherUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/MatcherUtils.java @@ -35,11 +35,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.requirements.Requirement; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.QualityMatcher; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQuality; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; /** * Utilities related to matchers and labels diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/PolicyInfoUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/PolicyInfoUtils.java index 35c57aee7..94e2c6780 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/PolicyInfoUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/PolicyInfoUtils.java @@ -29,9 +29,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.L3EndpointIdentificationConstraintsBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.Action; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.ActionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.actions.ActionKey; @@ -205,7 +205,11 @@ public class PolicyInfoUtils { } private static ClassifierInstance readClassifierInstance(Tenant tenant, ClassifierName instanceName) { - for (ClassifierInstance instance : tenant.getSubjectFeatureInstances().getClassifierInstance()) { + if (tenant.getPolicy() == null || tenant.getPolicy().getSubjectFeatureInstances() == null + || tenant.getPolicy().getSubjectFeatureInstances().getClassifierInstance() == null) { + return null; + } + for (ClassifierInstance instance : tenant.getPolicy().getSubjectFeatureInstances().getClassifierInstance()) { if (instance.getName().equals(instanceName)) { return instance; } @@ -214,7 +218,11 @@ public class PolicyInfoUtils { } private static ActionInstance readActionInstance(Tenant tenant, ActionName instanceName) { - for (ActionInstance instance : tenant.getSubjectFeatureInstances().getActionInstance()) { + if (tenant.getPolicy() == null || tenant.getPolicy().getSubjectFeatureInstances() == null + || tenant.getPolicy().getSubjectFeatureInstances().getActionInstance() == null) { + return null; + } + for (ActionInstance instance : tenant.getPolicy().getSubjectFeatureInstances().getActionInstance()) { if (instance.getName().equals(instanceName)) { return instance; } diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/SubjectResolverUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/SubjectResolverUtils.java index c6ba80d4e..117c7bcab 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/SubjectResolverUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/SubjectResolverUtils.java @@ -28,14 +28,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.condition.matchers.ConditionMatcher; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.conditions.Condition; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.GroupIdentificationConstraints; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.GroupIdentificationConstraints; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; import com.google.common.collect.HashBasedTable; import com.google.common.collect.ImmutableSet; @@ -143,7 +143,7 @@ class SubjectResolverUtils { } } if (clause.getProviderMatchers() != null) { - org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.GroupIdentificationConstraints groupIdentificationConstraintsProvider = clause + org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.GroupIdentificationConstraints groupIdentificationConstraintsProvider = clause .getProviderMatchers().getGroupIdentificationConstraints(); if (groupIdentificationConstraintsProvider instanceof GroupCapabilityConstraintCase) { List capMatchers = ((GroupCapabilityConstraintCase) groupIdentificationConstraintsProvider) diff --git a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/TenantUtils.java b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/TenantUtils.java index 89ea41ed7..34aaa9fcf 100644 --- a/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/TenantUtils.java +++ b/groupbasedpolicy/src/main/java/org/opendaylight/groupbasedpolicy/util/TenantUtils.java @@ -21,16 +21,16 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.Tenants; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import com.google.common.collect.ComparisonChain; @@ -88,7 +88,7 @@ public class TenantUtils { public static InstanceIdentifier tenantIid(TenantId tenantId) { return tenantIid(new TenantKey(tenantId)); } - + /** * Find a contract with a specified ID within a tenant * @param tenant the {@link Tenant} to search @@ -97,8 +97,8 @@ public class TenantUtils { */ public static Contract findContract(Tenant tenant, ContractId contractId) { - if (tenant.getContract() != null) { - for (Contract c : tenant.getContract()) { + if (tenant.getPolicy() != null && tenant.getPolicy().getContract() != null) { + for (Contract c : tenant.getPolicy().getContract()) { if (contractId.equals(c.getId())) { return c; } @@ -160,7 +160,7 @@ public class TenantUtils { } return null; } - + /** * Find an endpoint group with a specified ID within a tenant * @param tenant the {@link Tenant} to search @@ -169,8 +169,8 @@ public class TenantUtils { */ public static EndpointGroup findEndpointGroup(Tenant tenant, EndpointGroupId egId) { - if (tenant.getEndpointGroup() != null) { - for (EndpointGroup eg : tenant.getEndpointGroup()) { + if (tenant.getPolicy() != null && tenant.getPolicy().getEndpointGroup() != null) { + for (EndpointGroup eg : tenant.getPolicy().getEndpointGroup()) { if (egId.equals(eg.getId())) { return eg; } @@ -195,7 +195,7 @@ public class TenantUtils { } return null; } - + /** * Find a consumer target selector in an endpoint group * @param eg the {@link EndpointGroup} to search @@ -229,7 +229,7 @@ public class TenantUtils { } return null; } - + /** * Find a provider target selector in an endpoint group * @param eg the {@link EndpointGroup} to search @@ -245,5 +245,5 @@ public class TenantUtils { } } return null; - } + } } diff --git a/groupbasedpolicy/src/main/yang/model/policy.yang b/groupbasedpolicy/src/main/yang/model/policy.yang index a9b90bc57..2830fc39e 100755 --- a/groupbasedpolicy/src/main/yang/model/policy.yang +++ b/groupbasedpolicy/src/main/yang/model/policy.yang @@ -12,11 +12,8 @@ module policy { namespace "urn:opendaylight:groupbasedpolicy:policy"; prefix "gbp-policy"; - import gbp-common {prefix gbp-common;} - import ietf-inet-types { - prefix inet; - revision-date 2010-09-24; - } + import gbp-common { prefix gbp-common; revision-date 2014-04-21; } + import ietf-inet-types { prefix inet; revision-date 2010-09-24; } description "This module defines the group-based policy configuration @@ -354,7 +351,7 @@ module policy { leaf-list contract { description "Specific contracts to select."; type leafref { - path "/tenants/tenant/contract/id"; + path "/tenants/tenant/policy/contract/id"; } } } @@ -504,7 +501,7 @@ module policy { leaf instance-name { description "The name of the classifier instance"; type leafref { - path "/tenants/tenant/subject-feature-instances/classifier-instance/name"; + path "/tenants/tenant/policy/subject-feature-instances/classifier-instance/name"; } mandatory true; } @@ -549,7 +546,7 @@ module policy { leaf name { description "The name of the action instance"; type leafref { - path "/tenants/tenant/subject-feature-instances/action-instance/name"; + path "/tenants/tenant/policy/subject-feature-instances/action-instance/name"; } mandatory true; } @@ -747,697 +744,699 @@ module policy { // Network domains // *************** - list l3-context { - description - "A layer 3 context represents a namespace for layer 3 - addresses. It represents a domain inside which endpoints - can communicate with requiring any address translation."; - - key "id"; - uses forwarding-context; - - leaf id { + container forwarding-context { + list l3-context { description - "A unique ID for the layer 3 context"; - type gbp-common:l3-context-id; - } - } + "A layer 3 context represents a namespace for layer 3 + addresses. It represents a domain inside which endpoints + can communicate with requiring any address translation."; - list l2-bridge-domain { - description - "A layer 2 bridge domain represents a domain in which - layer 2 communication is possible when allowed by policy."; - key "id"; - uses l2-context; - - leaf id { - description "A unique ID for the bridge domain"; - type gbp-common:l2-bridge-domain-id; + key "id"; + uses forwarding-context; + + leaf id { + description + "A unique ID for the layer 3 context"; + type gbp-common:l3-context-id; + } } - leaf parent { + list l2-bridge-domain { description - "The layer 3 context that contains this bridge domain"; - type leafref { - path "/tenants/tenant/l3-context/id"; + "A layer 2 bridge domain represents a domain in which + layer 2 communication is possible when allowed by policy."; + key "id"; + uses l2-context; + + leaf id { + description "A unique ID for the bridge domain"; + type gbp-common:l2-bridge-domain-id; } - } - } - list l2-flood-domain { - description - "A layer 2 flood domain represents a domain in which - layer 2 broadcast and multicast is allowed."; - key "id"; - uses l2-context; - - leaf id { - description "A unique ID for the flood domain"; - type gbp-common:l2-flood-domain-id; + leaf parent { + description + "The layer 3 context that contains this bridge domain"; + type leafref { + path "/tenants/tenant/forwarding-context/l3-context/id"; + } + } } - leaf parent { + list l2-flood-domain { description - "The bridge domain that contains this flood domain"; - type leafref { - path "/tenants/tenant/l2-bridge-domain/id"; + "A layer 2 flood domain represents a domain in which + layer 2 broadcast and multicast is allowed."; + key "id"; + uses l2-context; + + leaf id { + description "A unique ID for the flood domain"; + type gbp-common:l2-flood-domain-id; } - } - } - list subnet { - description - "An IP subnet associated with a layer 2 or layer 3 - context."; - key "id"; - uses network-domain; - - leaf id { - description "A unique ID for the subnet"; - type gbp-common:subnet-id; + leaf parent { + description + "The bridge domain that contains this flood domain"; + type leafref { + path "/tenants/tenant/forwarding-context/l2-bridge-domain/id"; + } + } } - leaf parent { + list subnet { description - "The forwarding context that contains this subnet"; - type gbp-common:context-id; - } + "An IP subnet associated with a layer 2 or layer 3 + context."; + key "id"; + uses network-domain; + + leaf id { + description "A unique ID for the subnet"; + type gbp-common:subnet-id; + } - leaf ip-prefix { - description "The IP prefix that defines the subnet"; - type inet:ip-prefix; - } - leaf virtual-router-ip { - description - "IP address to use for a virtual gateway router - for the subnet, if desired."; - type inet:ip-address; - } - list gateways { - description - "External gateways for subnets we serve, - includes prefixes for static routing"; - key "gateway"; - leaf gateway { + leaf parent { + description + "The forwarding context that contains this subnet"; + type gbp-common:context-id; + } + + leaf ip-prefix { + description "The IP prefix that defines the subnet"; + type inet:ip-prefix; + } + leaf virtual-router-ip { + description + "IP address to use for a virtual gateway router + for the subnet, if desired."; type inet:ip-address; } - list prefixes { - key "prefix"; - leaf prefix { - type inet:ip-prefix; + list gateways { + description + "External gateways for subnets we serve, + includes prefixes for static routing"; + key "gateway"; + leaf gateway { + type inet:ip-address; + } + list prefixes { + key "prefix"; + leaf prefix { + type inet:ip-prefix; + } } } - } } - // *************** - // Endpoint groups - // *************** + container policy { - list endpoint-group { - description - "Endpoint groups are sets of endpoints that share a - common set of policies. Endpoint groups are - matched to contracts using selectors, contracts - determine which endpoints can communicate and in - what way. - - Endpoint groups have both requirements and - capabilities, which represent specific pieces of - functionality that are exposed at the boundary of - those groups. Requirements represent some - specific functionality that is needed for the - endpoints in the endpoint group to function. - Correspondingly, capabilities are pieces of - functionality that the endpoints in the endpoint - group can provide to other endpoints. - - Contracts can be selected through either a named - selector, which matches specific contracts by - name, or by a target selector which will match - contracts by matching its list of qualities to - the list of qualities for a target on the - contract. The contract selectors choose which - contracts are in scope. Note that requirements - and capabilities are not used when choosing which - contracts are in scope; these are used to - determine how a contract will be interpreted. - - There are two broad category of selectors: - provider selectors and consumer selectors. The - provider selectors allow selecting contracts that - allow the endpoint group to expose its - capabilities. The consumer selectors allow - selecting contracts which allow the endpoint - group to meet its requirements."; - - key "id"; - - leaf id { - mandatory true; - type gbp-common:endpoint-group-id; - } + // *************** + // Endpoint groups + // *************** - leaf name { + list endpoint-group { description - "A user-visible name for the endpoint group"; - type gbp-common:name; - } - leaf description { - description - "A human-readable description for the endpoint - group."; - type gbp-common:description; - } - uses has-requirements; - uses has-capabilities; + "Endpoint groups are sets of endpoints that share a + common set of policies. Endpoint groups are + matched to contracts using selectors, contracts + determine which endpoints can communicate and in + what way. + + Endpoint groups have both requirements and + capabilities, which represent specific pieces of + functionality that are exposed at the boundary of + those groups. Requirements represent some + specific functionality that is needed for the + endpoints in the endpoint group to function. + Correspondingly, capabilities are pieces of + functionality that the endpoints in the endpoint + group can provide to other endpoints. + + Contracts can be selected through either a named + selector, which matches specific contracts by + name, or by a target selector which will match + contracts by matching its list of qualities to + the list of qualities for a target on the + contract. The contract selectors choose which + contracts are in scope. Note that requirements + and capabilities are not used when choosing which + contracts are in scope; these are used to + determine how a contract will be interpreted. + + There are two broad category of selectors: + provider selectors and consumer selectors. The + provider selectors allow selecting contracts that + allow the endpoint group to expose its + capabilities. The consumer selectors allow + selecting contracts which allow the endpoint + group to meet its requirements."; + + key "id"; + + leaf id { + mandatory true; + type gbp-common:endpoint-group-id; + } - leaf intra-group-policy { - description - "Governs how traffic within the endpoint group - should be handled."; - default allow; - type enumeration { - enum allow { - description - "Traffic between two endpoints in the group - is always allowed"; - } - enum require-contract { - description - "Traffic between two endpoints in the group - is allowed only when a contract exists to - allow it explicitly"; - } + leaf name { + description + "A user-visible name for the endpoint group"; + type gbp-common:name; } - } + leaf description { + description + "A human-readable description for the endpoint + group."; + type gbp-common:description; + } + uses has-requirements; + uses has-capabilities; - list consumer-named-selector { - description - "Consumer named selectors are named selectors - that select contracts to meet the - requirements of the endpoint group. - - The consumer named selector selects a - contract based on the name of the contract. - Once the contract is selected, the - requirements are used to select specific - subjects within that contract."; - - key "name"; - uses named-selector; - uses consumer-selection-relator; - } + leaf intra-group-policy { + description + "Governs how traffic within the endpoint group + should be handled."; + default allow; + type enumeration { + enum allow { + description + "Traffic between two endpoints in the group + is always allowed"; + } + enum require-contract { + description + "Traffic between two endpoints in the group + is allowed only when a contract exists to + allow it explicitly"; + } + } + } - list provider-named-selector { - description - "Provider named selectors are named selectors - that select contracts to provide capabilties - to other endpoint group. - - The provider named selector selects a - contract based on the name of the contract. - Once the contract is selected, the capabilies - are used to select specific subjects within - that contract."; - - key "name"; - uses named-selector; - uses provider-selection-relator; - } + list consumer-named-selector { + description + "Consumer named selectors are named selectors + that select contracts to meet the + requirements of the endpoint group. - list consumer-target-selector { - description - "Consumer target selectors are target selectors - that select contracts to meet the requirements - of the endpoint group. - - The consumer target selector selects a - contract using the quality matchers to match - against the qualities specified on the - contract targets. Once the contract is - selected, the requirements are used to select - specific subjects within that contract."; - - key "name"; - uses target-selector; - uses consumer-selection-relator; - } + The consumer named selector selects a + contract based on the name of the contract. + Once the contract is selected, the + requirements are used to select specific + subjects within that contract."; - list provider-target-selector { - description - "Provider target selectors are target selectors - that select contracts to provide capabilties - to other endpoint group. - - The provider target selector selects a - contract using the quality matchers to match - against the qualities specified on the - contract targets. Once the contract is - selected, the capabilities are used to select - specific subjects within that contract."; - - key "name"; - uses target-selector; - uses provider-selection-relator; - } + key "name"; + uses named-selector; + uses consumer-selection-relator; + } - leaf network-domain { - description - "The network domain associated with this endpoint - group. The network domain controls which endpoints - are addressible by the endpoints in the group."; - type gbp-common:network-domain-id; - } + list provider-named-selector { + description + "Provider named selectors are named selectors + that select contracts to provide capabilties + to other endpoint group. - leaf parent { - description - "Parent endpoint group from which we inherit"; + The provider named selector selects a + contract based on the name of the contract. + Once the contract is selected, the capabilies + are used to select specific subjects within + that contract."; - type leafref { - path "/tenants/tenant/endpoint-group/id"; + key "name"; + uses named-selector; + uses provider-selection-relator; } - } - } - list external-implicit-group { - description - "."; + list consumer-target-selector { + description + "Consumer target selectors are target selectors + that select contracts to meet the requirements + of the endpoint group. - key "id"; + The consumer target selector selects a + contract using the quality matchers to match + against the qualities specified on the + contract targets. Once the contract is + selected, the requirements are used to select + specific subjects within that contract."; - leaf id { - mandatory true; - type gbp-common:endpoint-group-id; - } - // Fields to be determined and completed before Code Freeze + key "name"; + uses target-selector; + uses consumer-selection-relator; + } - } - // ************************* - // Subject feature instances - // ************************* + list provider-target-selector { + description + "Provider target selectors are target selectors + that select contracts to provide capabilties + to other endpoint group. - container subject-feature-instances { - description - "Contains instances of subject features. Subject - feature instances reference a subject feature - definition but fill in the required parameters so - that they can be easily references elsewhere."; + The provider target selector selects a + contract using the quality matchers to match + against the qualities specified on the + contract targets. Once the contract is + selected, the capabilities are used to select + specific subjects within that contract."; - list classifier-instance { - description "XXX"; + key "name"; + uses target-selector; + uses provider-selection-relator; + } - key "name"; - leaf name { - description "A name for the classifier instance"; - type gbp-common:classifier-name; - mandatory true; + leaf network-domain { + description + "The network domain associated with this endpoint + group. The network domain controls which endpoints + are addressible by the endpoints in the group."; + type gbp-common:network-domain-id; } - leaf classifier-definition-id { + + leaf parent { + description + "Parent endpoint group from which we inherit"; + type leafref { - path "/subject-feature-definitions/classifier-definition/id"; + path "/tenants/tenant/policy/endpoint-group/id"; } } - uses subject-feature-instance; } - list action-instance { - description "XXX"; + list external-implicit-group { + description + "."; + + key "id"; - key "name"; - leaf name { - description "A name for the action instance"; - type gbp-common:action-name; + leaf id { mandatory true; + type gbp-common:endpoint-group-id; } - leaf action-definition-id { - type leafref { - path "/subject-feature-definitions/action-definition/id"; - } - } - uses subject-feature-instance; - } - } + // Fields to be determined and completed before Code Freeze - // ********* - // Contracts - // ********* - - list contract { - description - "Contracts contain a set of subjects that describe - the communication allowed between endpoints in - endpoint groups. Contracts are matched to endpoint - groups by selectors."; - - key "id"; - leaf id { - description "A unique ID for the contract"; - type gbp-common:contract-id; - mandatory true; } + // ************************* + // Subject feature instances + // ************************* - leaf description { + container subject-feature-instances { description - "A human-readable description for the contract."; - type gbp-common:description; - } + "Contains instances of subject features. Subject + feature instances reference a subject feature + definition but fill in the required parameters so + that they can be easily references elsewhere."; - // ******* - // Relator - // ******* + list classifier-instance { + description "XXX"; - uses has-qualities; + key "name"; + leaf name { + description "A name for the classifier instance"; + type gbp-common:classifier-name; + mandatory true; + } + leaf classifier-definition-id { + type leafref { + path "/subject-feature-definitions/classifier-definition/id"; + } + } + uses subject-feature-instance; + } - list target { - description - "Targets on a contract allow grouping sets of qualities - together, as well as providing a namespace for - the qualities that are matched."; + list action-instance { + description "XXX"; - key "name"; - leaf name { - description - "The name for this target. This can also be used - by quality matchers as a namespace for qualities."; - type gbp-common:target-name; - mandatory true; + key "name"; + leaf name { + description "A name for the action instance"; + type gbp-common:action-name; + mandatory true; + } + leaf action-definition-id { + type leafref { + path "/subject-feature-definitions/action-definition/id"; + } + } + uses subject-feature-instance; } - - uses relator; - uses has-qualities; } - // ******************** - // Clauses and subjects - // ******************** + // ********* + // Contracts + // ********* - list subject { + list contract { description - "Subjects define rules to allow traffic to flow - between endpoints in different endpoint - groups. No communication is allowed unless a - subject allows that communication. - - After a contract has been selected, clauses - in that contract match against the - requirements, capabilities, and conditions - that apply to the endpoints or endpoint - groups that are participating in the - contract. Clauses that match each point to a - subject which then becomes active. - - An active subject can then apply its rules to - the traffic between the endpoints."; - - key "name"; - leaf name { - description "A name for the subject"; - type gbp-common:subject-name; + "Contracts contain a set of subjects that describe + the communication allowed between endpoints in + endpoint groups. Contracts are matched to endpoint + groups by selectors."; + + key "id"; + leaf id { + description "A unique ID for the contract"; + type gbp-common:contract-id; mandatory true; } - list rule { + leaf description { + description + "A human-readable description for the contract."; + type gbp-common:description; + } + + // ******* + // Relator + // ******* + + uses has-qualities; + + list target { description - "A rule is applied to traffic between - endpoints in different endpoint groups. - Rules match against the traffic using - classifiers, and then apply actions to - the traffic for matching rules. - - Rules are applied in order according to - their order parameter. Only the first - matching rule will apply. When multiple - subjects are active, the order on each - subject will determine which subjects are - applied first, and all their rules will - take effect before the rules of any - subjects with a higher order value. When - subjects have the same order value, then - they will apply in lexicographic order by - subject name."; + "Targets on a contract allow grouping sets of qualities + together, as well as providing a namespace for + the qualities that are matched."; key "name"; leaf name { - description "A name for the rule"; - type gbp-common:rule-name; + description + "The name for this target. This can also be used + by quality matchers as a namespace for qualities."; + type gbp-common:target-name; mandatory true; } - uses has-classifier-refs; - uses has-action-refs; - uses has-order; + uses relator; + uses has-qualities; } - uses has-order; - } + // ******************** + // Clauses and subjects + // ******************** - list clause { - description - "Clauses are used to determine which subjects are - active once a contract is selected using the - contract selectors. - - Clauses are activated by matching against - requirements on the consumer endpoint group, - capabilities on the provider endpoint group, and - conditions on the individual endpoints in the - endpoint group."; - key "name"; - leaf name { - type gbp-common:clause-name; - mandatory true; + list subject { + description + "Subjects define rules to allow traffic to flow + between endpoints in different endpoint + groups. No communication is allowed unless a + subject allows that communication. + + After a contract has been selected, clauses + in that contract match against the + requirements, capabilities, and conditions + that apply to the endpoints or endpoint + groups that are participating in the + contract. Clauses that match each point to a + subject which then becomes active. + + An active subject can then apply its rules to + the traffic between the endpoints."; + + key "name"; + leaf name { + description "A name for the subject"; + type gbp-common:subject-name; + mandatory true; + } + + list rule { + description + "A rule is applied to traffic between + endpoints in different endpoint groups. + Rules match against the traffic using + classifiers, and then apply actions to + the traffic for matching rules. + + Rules are applied in order according to + their order parameter. Only the first + matching rule will apply. When multiple + subjects are active, the order on each + subject will determine which subjects are + applied first, and all their rules will + take effect before the rules of any + subjects with a higher order value. When + subjects have the same order value, then + they will apply in lexicographic order by + subject name."; + + key "name"; + leaf name { + description "A name for the rule"; + type gbp-common:rule-name; + mandatory true; + } + + uses has-classifier-refs; + uses has-action-refs; + uses has-order; + } + + uses has-order; } - // ******** - // Matchers - // ******** - container consumer-matchers { + list clause { description - "Matchers that apply to the consumer endpoint - group."; - - // GIC mutually OR'd within role - choice group-identification-constraints { - description "Returns Groups which match, MUTALLY OR within role. Must be Either/Or"; + "Clauses are used to determine which subjects are + active once a contract is selected using the + contract selectors. + + Clauses are activated by matching against + requirements on the consumer endpoint group, + capabilities on the provider endpoint group, and + conditions on the individual endpoints in the + endpoint group."; + key "name"; + leaf name { + type gbp-common:clause-name; + mandatory true; + } + // ******** + // Matchers + // ******** - case group-name-constraint-case { - list group-name-constraint { - key endpoint-group-name; - leaf endpoint-group-name { - type gbp-common:name; + container consumer-matchers { + description + "Matchers that apply to the consumer endpoint + group."; + + // GIC mutually OR'd within role + choice group-identification-constraints { + description "Returns Groups which match, MUTALLY OR within role. Must be Either/Or"; + + case group-name-constraint-case { + list group-name-constraint { + key endpoint-group-name; + leaf endpoint-group-name { + type gbp-common:name; + } } } - } - case group-requirement-constraint-case { - list requirement-matcher { - description - "Match against requirements in the consumer - endpoint group."; - - key "name"; - leaf name { + case group-requirement-constraint-case { + list requirement-matcher { description - "A name for the requirement matcher"; - type gbp-common:requirement-matcher-name; - mandatory true; - } + "Match against requirements in the consumer + endpoint group."; - uses matcher; - list matcher-requirement { - description - "A matcher requirement is a - requirement with a selector name - field used in requirement - matchers. The name of the - matcher requirement matches - against requirements in endpoint - groups."; - - key name; - uses requirement-base; - - leaf selector-namespace { + key "name"; + leaf name { + description + "A name for the requirement matcher"; + type gbp-common:requirement-matcher-name; + mandatory true; + } + + uses matcher; + list matcher-requirement { description - "The name of the selector to - match. This allows us to - specify that we want to match - only requirements scoped to a - particular selector name. - - This parameter is optional; - if not specified, use an - inherited selector namespace - if it exists, or match - against any selector name."; - - type gbp-common:selector-name; + "A matcher requirement is a + requirement with a selector name + field used in requirement + matchers. The name of the + matcher requirement matches + against requirements in endpoint + groups."; + + key name; + uses requirement-base; + + leaf selector-namespace { + description + "The name of the selector to + match. This allows us to + specify that we want to match + only requirements scoped to a + particular selector name. + + This parameter is optional; + if not specified, use an + inherited selector namespace + if it exists, or match + against any selector name."; + + type gbp-common:selector-name; + } } } } - } - case group-any-case { - container group-any { + case group-any-case { + container group-any { - description - "A presence container stating that, if this exists, - the role matcher will match on any group."; - presence "This matches any group"; + description + "A presence container stating that, if this exists, + the role matcher will match on any group."; + presence "This matches any group"; + } } } - } + uses has-condition-matchers; + uses has-endpoint-identification-constraints; + } - uses has-condition-matchers; - - uses has-endpoint-identification-constraints; - } - - container provider-matchers { - description - "Matchers that apply to the provider endpoint - group"; - - // GIC mutually OR'd within role - choice group-identification-constraints { - description "Returns Groups which match, MUTALLY OR within role. Must be Either/Or"; - - case group-name-constraint-case { - list group-name-constraint { - key endpoint-group-name; - leaf endpoint-group-name { - type gbp-common:name; + container provider-matchers { + description + "Matchers that apply to the provider endpoint + group"; + + // GIC mutually OR'd within role + choice group-identification-constraints { + description "Returns Groups which match, MUTALLY OR within role. Must be Either/Or"; + + case group-name-constraint-case { + list group-name-constraint { + key endpoint-group-name; + leaf endpoint-group-name { + type gbp-common:name; + } } } - } - case group-capability-constraint-case { - list capability-matcher { - description - "Match against capabilities in the provider - endpoint group."; - - key "name"; - leaf name { + case group-capability-constraint-case { + list capability-matcher { description - "A name for the capability matcher"; - type gbp-common:capability-matcher-name; - mandatory true; - } + "Match against capabilities in the provider + endpoint group."; - uses matcher; + key "name"; + leaf name { + description + "A name for the capability matcher"; + type gbp-common:capability-matcher-name; + mandatory true; + } - list matcher-capability { - description - "A matcher capability is a - capability with a selector - name field used in capability - mat chers. The name of the - matcher capability matches - against capabilities in - endpoint groups."; - - key name; - uses capability-base; - - leaf selector-namespace { + uses matcher; + + list matcher-capability { description - "The name of the selector to - match. This allows us to - specify that we want to match - only capabilities scoped to a - particular selector name. - - This parameter is optional; - if not specified, use an - inherited selector namespace - if it exists, or match - against any selector name."; - - type gbp-common:selector-name; + "A matcher capability is a + capability with a selector + name field used in capability + mat chers. The name of the + matcher capability matches + against capabilities in + endpoint groups."; + + key name; + uses capability-base; + + leaf selector-namespace { + description + "The name of the selector to + match. This allows us to + specify that we want to match + only capabilities scoped to a + particular selector name. + + This parameter is optional; + if not specified, use an + inherited selector namespace + if it exists, or match + against any selector name."; + + type gbp-common:selector-name; + } } } } - } - case group-any-case { - container group-any { - presence "any"; + case group-any-case { + container group-any { + presence "any"; + } } } - } - uses has-condition-matchers; + uses has-condition-matchers; - uses has-endpoint-identification-constraints; - } + uses has-endpoint-identification-constraints; + } - container any-matchers { - description - "Matchers that apply to either provider endpoint group or consumer endpoint group."; - // TODO fill this out, may need additional groupings so as to not confuse capability or requirement. - } + container any-matchers { + description + "Matchers that apply to either provider endpoint group or consumer endpoint group."; + // TODO fill this out, may need additional groupings so as to not confuse capability or requirement. + } - // ****************** - // Subject References - // ****************** + // ****************** + // Subject References + // ****************** - leaf-list subject-refs { - description - "The subjects that will be activated if this - clause matches."; + leaf-list subject-refs { + description + "The subjects that will be activated if this + clause matches."; - type leafref { - path "/tenants/tenant/contract/subject/name"; + type leafref { + path "/tenants/tenant/policy/contract/subject/name"; + } } } - } - // *********** - // Inheritance - // *********** + // *********** + // Inheritance + // *********** - leaf parent { - description "Parent contract from which we inherit"; + leaf parent { + description "Parent contract from which we inherit"; - type leafref { - path "/tenants/tenant/contract/id"; + type leafref { + path "/tenants/tenant/policy/contract/id"; + } } } - } - list contract-ref { - description - "Contract references allow forming contracts - between endpoint groups in different tenants. - Once the contract reference is created, it is - then possible to match against the contract using - selectors as though it were a local tenant. - - Endpoint groups in the local tenant can serve - only as consumers of the contract. Once the - contract is matched, consumer matchers will apply - to requirements and conditions in the local - tenant, and provider matchers will apply against - capabilities and conditions in the referenced - tenant."; - - key contract-id; - - leaf tenant-id { + list contract-ref { description - "The tenant ID of the tenant containing the - contract."; - type leafref { - path "/tenants/tenant/id"; + "Contract references allow forming contracts + between endpoint groups in different tenants. + Once the contract reference is created, it is + then possible to match against the contract using + selectors as though it were a local tenant. + + Endpoint groups in the local tenant can serve + only as consumers of the contract. Once the + contract is matched, consumer matchers will apply + to requirements and conditions in the local + tenant, and provider matchers will apply against + capabilities and conditions in the referenced + tenant."; + + key contract-id; + + leaf tenant-id { + description + "The tenant ID of the tenant containing the + contract."; + type leafref { + path "/tenants/tenant/id"; + } } - } - leaf contract-id { - description "The contract ID of the contract."; + leaf contract-id { + description "The contract ID of the contract."; - type leafref { - path "/tenants/tenant/contract/id"; + type leafref { + path "/tenants/tenant/policy/contract/id"; + } } } } diff --git a/groupbasedpolicy/src/main/yang/renderermanager/resolved-policy.yang b/groupbasedpolicy/src/main/yang/renderermanager/resolved-policy.yang index ef543bf9e..4e9775cd5 100644 --- a/groupbasedpolicy/src/main/yang/renderermanager/resolved-policy.yang +++ b/groupbasedpolicy/src/main/yang/renderermanager/resolved-policy.yang @@ -187,11 +187,19 @@ module resolved-policy { container resolved-policies { config false; list resolved-policy { - description "Policies between consumer endpoint groups and provider - endpoint groups"; - key "consumer-tenant-id consumer-epg-id provider-tenant-id provider-epg-id"; - uses has-consumer-epg-key; - uses has-provider-epg-key; + description "Policies between consumer endpoint groups and provider + endpoint groups"; + key "consumer-tenant-id consumer-epg-id provider-tenant-id provider-epg-id"; + uses has-consumer-epg-key; + uses has-provider-epg-key; + + leaf external-implicit-group { + description "If present, denotes which EPG in key is an external implicit group."; + type enumeration { + enum consumer-epg; + enum provider-epg; + } + } list policy-rule-group-with-endpoint-constraints { description "The policy rule groups that apply to a single pair of endpoint diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java index 155f3f30d..a80182980 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/endpoint/EndPointRpcRegistryTest.java @@ -20,8 +20,8 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration; -import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; +import org.opendaylight.groupbasedpolicy.api.EpRendererAugmentation; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv4Address; diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/IndexedTenantTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/IndexedTenantTest.java index 0fece90e6..7efbe1a1f 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/IndexedTenantTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/IndexedTenantTest.java @@ -33,29 +33,38 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import com.google.common.collect.ImmutableList; public class IndexedTenantTest { private Tenant tenant; + private Policy policy; + private ForwardingContext fwCtx; @Before public void before() { tenant = mock(Tenant.class); + policy = mock(Policy.class); + fwCtx = mock(ForwardingContext.class); + when(tenant.getPolicy()).thenReturn(policy); + when(tenant.getForwardingContext()).thenReturn(fwCtx); } @Test @@ -71,10 +80,12 @@ public class IndexedTenantTest { L2FloodDomain fd = new L2FloodDomainBuilder().setParent(bdid).setId(fdid).build(); Subnet s = new SubnetBuilder().setParent(fdid).setId(sid).build(); Subnet s2 = new SubnetBuilder().setParent(bdid).setId(sid2).build(); - Tenant t = new TenantBuilder().setSubnet(ImmutableList.of(s, s2)) - .setL2BridgeDomain(ImmutableList.of(bd)) - .setL3Context(ImmutableList.of(l3c)) - .setL2FloodDomain(ImmutableList.of(fd)) + Tenant t = new TenantBuilder() + .setForwardingContext(new ForwardingContextBuilder().setSubnet(ImmutableList.of(s, s2)) + .setL2BridgeDomain(ImmutableList.of(bd)) + .setL3Context(ImmutableList.of(l3c)) + .setL2FloodDomain(ImmutableList.of(fd)) + .build()) .build(); IndexedTenant it = new IndexedTenant(t); @@ -91,19 +102,19 @@ public class IndexedTenantTest { public void constructorTest() { EndpointGroup eg = mock(EndpointGroup.class); List egList = Arrays.asList(eg); - when(tenant.getEndpointGroup()).thenReturn(egList); + when(policy.getEndpointGroup()).thenReturn(egList); EndpointGroupId egId = mock(EndpointGroupId.class); when(eg.getId()).thenReturn(egId); Contract contract = mock(Contract.class); List contractList = Arrays.asList(contract); - when(tenant.getContract()).thenReturn(contractList); + when(policy.getContract()).thenReturn(contractList); ContractId contractId = mock(ContractId.class); when(contract.getId()).thenReturn(contractId); L3Context l3Context = mock(L3Context.class); List l3ContextList = Arrays.asList(l3Context); - when(tenant.getL3Context()).thenReturn(l3ContextList); + when(fwCtx.getL3Context()).thenReturn(l3ContextList); L3ContextId l3ContextId = mock(L3ContextId.class); when(l3Context.getId()).thenReturn(l3ContextId); String l3ContextValue = "contextID"; @@ -111,7 +122,7 @@ public class IndexedTenantTest { L2BridgeDomain l2BridgeDomain = mock(L2BridgeDomain.class); List l2BridgeDomainList = Arrays.asList(l2BridgeDomain); - when(tenant.getL2BridgeDomain()).thenReturn(l2BridgeDomainList); + when(fwCtx.getL2BridgeDomain()).thenReturn(l2BridgeDomainList); L2BridgeDomainId l2BridgeDomainId = mock(L2BridgeDomainId.class); when(l2BridgeDomain.getId()).thenReturn(l2BridgeDomainId); String l2BridgeDomainIdValue = "bridgeDomainID"; @@ -119,7 +130,7 @@ public class IndexedTenantTest { L2FloodDomain l2FloodDomain = mock(L2FloodDomain.class); List l2FloodDomainList = Arrays.asList(l2FloodDomain); - when(tenant.getL2FloodDomain()).thenReturn(l2FloodDomainList); + when(fwCtx.getL2FloodDomain()).thenReturn(l2FloodDomainList); L2FloodDomainId l2FloodDomainId = mock(L2FloodDomainId.class); when(l2FloodDomain.getId()).thenReturn(l2FloodDomainId); String cValue = "floodDomainID"; @@ -127,7 +138,7 @@ public class IndexedTenantTest { Subnet subnet = mock(Subnet.class); List subnetList = Arrays.asList(subnet); - when(tenant.getSubnet()).thenReturn(subnetList); + when(fwCtx.getSubnet()).thenReturn(subnetList); SubnetId subnetId = mock(SubnetId.class); when(subnet.getId()).thenReturn(subnetId); String subnetIdValue = "subnetID"; @@ -138,7 +149,7 @@ public class IndexedTenantTest { when(sParent.getValue()).thenReturn(sParentValue); SubjectFeatureInstances sfi = mock(SubjectFeatureInstances.class); - when(tenant.getSubjectFeatureInstances()).thenReturn(sfi); + when(policy.getSubjectFeatureInstances()).thenReturn(sfi); ClassifierInstance ci = mock(ClassifierInstance.class); List ciList = Arrays.asList(ci); @@ -167,13 +178,13 @@ public class IndexedTenantTest { @Test public void constructorTestNullValues() { - when(tenant.getL3Context()).thenReturn(null); - when(tenant.getL2BridgeDomain()).thenReturn(null); - when(tenant.getL2FloodDomain()).thenReturn(null); - when(tenant.getSubnet()).thenReturn(null); + when(fwCtx.getL3Context()).thenReturn(null); + when(fwCtx.getL2BridgeDomain()).thenReturn(null); + when(fwCtx.getL2FloodDomain()).thenReturn(null); + when(fwCtx.getSubnet()).thenReturn(null); SubjectFeatureInstances sfi = mock(SubjectFeatureInstances.class); - when(tenant.getSubjectFeatureInstances()).thenReturn(sfi); + when(policy.getSubjectFeatureInstances()).thenReturn(sfi); when(sfi.getClassifierInstance()).thenReturn(null); when(sfi.getActionInstance()).thenReturn(null); diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/InheritanceUtilsTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/InheritanceUtilsTest.java index 8e6afbf9c..011160157 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/InheritanceUtilsTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/InheritanceUtilsTest.java @@ -64,38 +64,39 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQualityBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.TargetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.TargetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCase; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelectorBuilder; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -533,16 +534,16 @@ public class InheritanceUtilsTest { // ******* TenantId tenantId1 = new TenantId("0ac5d219-979c-4cca-8f90-83b69bc414ad"); - Tenant tenant1 = new TenantBuilder() - .setId(tenantId1) - .setEndpointGroup(ImmutableList.of(eg1, eg2)) - .setContract(ImmutableList.of(contract1, contract2,contract3)) + Tenant tenant1 = new TenantBuilder().setId(tenantId1) + .setPolicy(new PolicyBuilder().setEndpointGroup(ImmutableList.of(eg1, eg2)) + .setContract(ImmutableList.of(contract1, contract2, contract3)) + .build()) .build(); - Tenant malformed = new TenantBuilder() - .setId(new TenantId("b26e6b18-8e74-4062-a7d2-e8437132030d")) - .setContract(ImmutableList.of(cloop1, cloop2, cselfloop, corphan)) - .setEndpointGroup(ImmutableList.of(egloop1, egloop2, egselfloop, egorphan)) + Tenant malformed = new TenantBuilder().setId(new TenantId("b26e6b18-8e74-4062-a7d2-e8437132030d")) + .setPolicy(new PolicyBuilder().setContract(ImmutableList.of(cloop1, cloop2, cselfloop, corphan)) + .setEndpointGroup(ImmutableList.of(egloop1, egloop2, egselfloop, egorphan)) + .build()) .build(); // **************** diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/MatcherUtilsTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/MatcherUtilsTest.java index 02dfcd8ba..8a4df7f69 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/MatcherUtilsTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/MatcherUtilsTest.java @@ -29,24 +29,24 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.QualityMatcherBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQuality; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQualityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.TargetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.TargetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirement; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapability; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelectorBuilder; import com.google.common.collect.ImmutableList; diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java index 0b8eed9fe..30ea18547 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/PolicyResolverUtilsTest.java @@ -23,13 +23,13 @@ import org.opendaylight.groupbasedpolicy.util.PolicyResolverUtils; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; import com.google.common.collect.Table; @@ -41,16 +41,19 @@ public class PolicyResolverUtilsTest { HashSet tenants = new HashSet(); tenants.add(indexedTenant); Tenant tenant = mock(Tenant.class); + org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy policy = + mock(org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy.class); + when(tenant.getPolicy()).thenReturn(policy); when(indexedTenant.getTenant()).thenReturn(tenant); EndpointGroup endpointGroup = mock(EndpointGroup.class); - when(tenant.getEndpointGroup()).thenReturn(Arrays.asList(endpointGroup)); + when(policy.getEndpointGroup()).thenReturn(Arrays.asList(endpointGroup)); ConsumerNamedSelector cns = mock(ConsumerNamedSelector.class); when(endpointGroup.getConsumerNamedSelector()).thenReturn(Arrays.asList(cns)); ContractId contractId = mock(ContractId.class); when(cns.getContract()).thenReturn(Arrays.asList(contractId)); Contract contract = mock(Contract.class); - when(tenant.getContract()).thenReturn(Arrays.asList(contract)); + when(policy.getContract()).thenReturn(Arrays.asList(contract)); when(contract.getId()).thenReturn(contractId); TenantId tenantId = mock(TenantId.class); when(tenant.getId()).thenReturn(tenantId); diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/RuleGroupTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/RuleGroupTest.java index 445a8155e..216bccae0 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/RuleGroupTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver/RuleGroupTest.java @@ -12,8 +12,8 @@ import org.junit.Test; import org.opendaylight.groupbasedpolicy.dto.RuleGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; public class RuleGroupTest { diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/IidFactoryTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/IidFactoryTest.java index b3604cc72..ef11a29cc 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/IidFactoryTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/IidFactoryTest.java @@ -36,19 +36,19 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointL3Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; public class IidFactoryTest { diff --git a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/PolicyResolutionTest.java b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/PolicyResolutionTest.java index 2c2ee0a38..2cc305b8b 100644 --- a/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/PolicyResolutionTest.java +++ b/groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/util/PolicyResolutionTest.java @@ -58,36 +58,37 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.target.selector.quality.matcher.MatcherQualityBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Target; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.TargetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerTargetSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Target; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.TargetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.GroupRequirementConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.RequirementMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.consumer.matchers.group.identification.constraints.group.requirement.constraint._case.requirement.matcher.MatcherRequirementBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.GroupCapabilityConstraintCaseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcher; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.CapabilityMatcherBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.provider.matchers.group.identification.constraints.group.capability.constraint._case.capability.matcher.MatcherCapabilityBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerTargetSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderTargetSelectorBuilder; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; @@ -227,21 +228,23 @@ public class PolicyResolutionTest { .build(); Tenant tenant1 = new TenantBuilder().setId(new TenantId("144b9aec-ef06-44f1-a50c-2fe5be456feb")) - .setContract(ImmutableList.of(contract1, contract2)) - .setEndpointGroup(ImmutableList.of(eg1, eg2)) + .setPolicy(new PolicyBuilder().setContract(ImmutableList.of(contract1, contract2)) + .setEndpointGroup(ImmutableList.of(eg1, eg2)) + .build()) .build(); Tenant tenant2 = new TenantBuilder().setId(new TenantId("138a2bc3-d3cb-4588-ad7a-63c9f19ce3e5")) - .setContract(ImmutableList.of(contract1, contract2)) - .setEndpointGroup(ImmutableList.of(eg1, eg2, eg3)) + .setPolicy(new PolicyBuilder().setContract(ImmutableList.of(contract1, contract2)) + .setEndpointGroup(ImmutableList.of(eg1, eg2, eg3)) + .build()) .build(); Tenant tenant3 = new TenantBuilder().setId(new TenantId("d1feede4-c31f-4232-ace2-93fcd065af1d")) - .setContract(ImmutableList.of(contract1, contract2)) - .setEndpointGroup(ImmutableList.of(eg4, eg5)) + .setPolicy(new PolicyBuilder().setContract(ImmutableList.of(contract1, contract2)) + .setEndpointGroup(ImmutableList.of(eg4, eg5)) + .build()) .build(); Tenant tenant0 = new TenantBuilder().build(); - Tenant tenant00 = new TenantBuilder().setContract(ImmutableList.of(contract0, contract00)) - .setEndpointGroup(ImmutableList.of(eg0)) - .build(); + Tenant tenant00 = new TenantBuilder().setPolicy(new PolicyBuilder() + .setContract(ImmutableList.of(contract0, contract00)).setEndpointGroup(ImmutableList.of(eg0)).build()).build(); public void verifyMatches(List contrids, List contrtids, List matches) { HashSet v = new HashSet<>(); diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClient.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClient.java index 93e231d69..0ac5cf05e 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClient.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClient.java @@ -15,10 +15,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; import com.google.common.base.Preconditions; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkService.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkService.java index a6852bc67..1a6a633ae 100755 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkService.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkService.java @@ -22,8 +22,6 @@ import org.opendaylight.groupbasedpolicy.api.sf.IpProtoClassifierDefinition; import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.Utils; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.EtherTypeClassifier; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.L4Classifier; import org.opendaylight.groupbasedpolicy.util.IidFactory; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName; @@ -46,27 +44,27 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraintBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/Router.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/Router.java index 0c0616b49..2c8389f1f 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/Router.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/Router.java @@ -42,27 +42,27 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraintBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java index db00f2dbc..1439150b5 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronNetworkAware.java @@ -37,14 +37,14 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gb import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.external.networks.by.l2.flood.domains.ExternalNetworkByL2FloodDomainBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.mappings.network.mappings.NetworkMapping; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.mappings.network.mappings.NetworkMappingBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java index 56f7c87f3..f647032f4 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronPortAware.java @@ -82,7 +82,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gb import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.EndpointLocation.LocationType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContextInputBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.opendaylight.yangtools.yang.common.RpcResult; import org.slf4j.Logger; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronRouterAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronRouterAware.java index e77afb031..b1af45a5e 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronRouterAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronRouterAware.java @@ -52,13 +52,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.unregister.endpoint.input.L3; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.unregister.endpoint.input.L3Builder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.mapper.rev150223.mappings.network.mappings.NetworkMapping; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java index 9793efea3..25af8b489 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/NeutronSubnetAware.java @@ -28,8 +28,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubnetId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.neutron.gbp.mapper.rev150513.mappings.neutron.by.gbp.mappings.external.networks.by.l2.flood.domains.ExternalNetworkByL2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAware.java index ae05df544..02e03cb44 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAware.java @@ -29,9 +29,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAware.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAware.java index fab92740b..5f6885c38 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAware.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAware.java @@ -31,13 +31,13 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoder.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoder.java index ad63fcb25..ea3550dab 100755 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoder.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoder.java @@ -20,7 +20,6 @@ import org.opendaylight.groupbasedpolicy.api.sf.IpProtoClassifierDefinition; import org.opendaylight.groupbasedpolicy.api.sf.L4ClassifierDefinition; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NeutronUtils; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.Utils; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf.EtherTypeClassifier; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpPrefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName; @@ -41,12 +40,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.parameter.value.RangeValueBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRule.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRule.java index 8abe476e6..1aa77f4a1 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRule.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRule.java @@ -13,9 +13,9 @@ import javax.annotation.concurrent.Immutable; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContract.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContract.java index 394c7b27b..4cd013ad4 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContract.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContract.java @@ -15,12 +15,12 @@ import javax.annotation.concurrent.Immutable; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Description; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtils.java b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtils.java index 163897821..9ce5f647c 100644 --- a/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtils.java +++ b/neutron-mapper/src/main/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtils.java @@ -25,11 +25,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRefBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceBuilder; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClientTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClientTest.java index 35e4a599a..819c083d8 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClientTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkClientTest.java @@ -2,8 +2,6 @@ package org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure; import static org.junit.Assert.assertNotNull; -import java.util.concurrent.ExecutionException; - import org.junit.Rule; import org.junit.Test; import org.junit.rules.ExpectedException; @@ -13,8 +11,8 @@ import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorKey; public class NetworkClientTest extends GbpDataBrokerTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkServiceTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkServiceTest.java index 0fcd02762..625c1f81c 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkServiceTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/NetworkServiceTest.java @@ -17,7 +17,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public class NetworkServiceTest extends GbpDataBrokerTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/RouterTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/RouterTest.java index 6dbf4f6c4..38039f9cf 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/RouterTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/infrastructure/RouterTest.java @@ -5,7 +5,6 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import java.util.Set; -import java.util.concurrent.ExecutionException; import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; @@ -18,7 +17,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Ipv6Prefix; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SubjectName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public class RouterTest extends GbpDataBrokerTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAwareDataStoreTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAwareDataStoreTest.java index 2e25bc296..f9d1c7eb5 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAwareDataStoreTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/group/NeutronSecurityGroupAwareDataStoreTest.java @@ -15,9 +15,9 @@ import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NeutronUtils; import org.opendaylight.neutron.spi.NeutronSecurityGroup; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; import com.google.common.base.Optional; import com.google.common.collect.ImmutableList; diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareDataStoreTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareDataStoreTest.java index 86bb17629..c16b79620 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareDataStoreTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareDataStoreTest.java @@ -7,12 +7,11 @@ import org.junit.Test; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.group.NeutronSecurityGroupAware; import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.group.SecGroupDao; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.ConfigDataStoreReader; +import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert; -import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.MappingUtils; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NeutronUtils; import org.opendaylight.groupbasedpolicy.util.IidFactory; @@ -21,8 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import com.google.common.base.Optional; import com.google.common.collect.ImmutableSet; diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareTest.java index ad9ca3fb4..53c9560b3 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/NeutronSecurityRuleAwareTest.java @@ -14,7 +14,7 @@ import org.opendaylight.groupbasedpolicy.neutron.mapper.test.GbpDataBrokerTest; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; public class NeutronSecurityRuleAwareTest extends GbpDataBrokerTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoderTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoderTest.java index 69c8d223f..8060bc9b0 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoderTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SecRuleEntityDecoderTest.java @@ -29,9 +29,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.endpoint.identification.constraints.endpoint.identification.constraints.l3.endpoint.identification.constraints.PrefixConstraint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.parameter.value.RangeValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchers; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchers; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public class SecRuleEntityDecoderTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRuleTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRuleTest.java index 38ced30bd..e78b9dcf1 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRuleTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleClassifierRuleTest.java @@ -4,14 +4,13 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.Test; - import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NeutronUtils; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public class SingleClassifierRuleTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContractTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContractTest.java index 5fa3ad60e..4510c816c 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContractTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/mapping/rule/SingleRuleContractTest.java @@ -4,18 +4,17 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import org.junit.Test; -import org.opendaylight.groupbasedpolicy.neutron.mapper.mapping.rule.SingleRuleContract; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.NeutronEntityFactory; import org.opendaylight.groupbasedpolicy.neutron.mapper.test.PolicyAssert; import org.opendaylight.groupbasedpolicy.neutron.mapper.util.NeutronUtils; import org.opendaylight.neutron.spi.NeutronSecurityRule; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Description; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; public class SingleRuleContractTest { diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/ConfigDataStoreReader.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/ConfigDataStoreReader.java index 820b1fe37..2f306d3c8 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/ConfigDataStoreReader.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/ConfigDataStoreReader.java @@ -13,12 +13,12 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.SelectorName; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; import com.google.common.base.Optional; diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/PolicyAssert.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/PolicyAssert.java index eafec5ec7..6b8752eb9 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/PolicyAssert.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/test/PolicyAssert.java @@ -25,16 +25,17 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Clause; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelector; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Clause; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import com.google.common.base.Optional; import com.google.common.base.Preconditions; @@ -74,11 +75,16 @@ public final class PolicyAssert { public static void assertContractCount(DataBroker dataBroker, String tenantId, int expectedCount) throws Exception { Optional tenant = ConfigDataStoreReader.readTenant(dataBroker, tenantId); assertTrue(tenant.isPresent()); - List contracts = tenant.get().getContract(); - if (contracts != null) { - assertEquals(expectedCount, tenant.get().getContract().size()); - } else { + Policy policy = tenant.get().getPolicy(); + if (policy == null) { assertEquals(expectedCount, 0); + } else { + List contracts = policy.getContract(); + if (contracts != null) { + assertEquals(expectedCount, policy.getContract().size()); + } else { + assertEquals(expectedCount, 0); + } } } @@ -148,11 +154,16 @@ public final class PolicyAssert { throws Exception { Optional tenant = ConfigDataStoreReader.readTenant(dataBroker, tenantId); assertTrue(tenant.isPresent()); - List endpointGroups = tenant.get().getEndpointGroup(); - if (endpointGroups != null) { - assertEquals(expectedCount, endpointGroups.size()); - } else { + Policy policy = tenant.get().getPolicy(); + if (policy == null) { assertEquals(expectedCount, 0); + } else { + List endpointGroups = policy.getEndpointGroup(); + if (endpointGroups != null) { + assertEquals(expectedCount, endpointGroups.size()); + } else { + assertEquals(expectedCount, 0); + } } } diff --git a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtilsTest.java b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtilsTest.java index 03a7b325a..25633f1c3 100644 --- a/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtilsTest.java +++ b/neutron-mapper/src/test/java/org/opendaylight/groupbasedpolicy/neutron/mapper/util/MappingUtilsTest.java @@ -22,15 +22,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.L3ContextId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Name; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextKey; public class MappingUtilsTest extends GbpDataBrokerTest { diff --git a/renderers/ofoverlay/pom.xml b/renderers/ofoverlay/pom.xml index b774aeec5..b0a48315d 100755 --- a/renderers/ofoverlay/pom.xml +++ b/renderers/ofoverlay/pom.xml @@ -66,7 +66,6 @@ org.opendaylight.controller sal-binding-broker-impl - ${mdsal.version} test-jar test @@ -80,28 +79,6 @@ in the test directory aren't packaged in bundles, and instead of keeping separate copies, we just copy the file(s) needed in order to run the test). --> - - maven-resources-plugin - - - copy-resources - - validate - - copy-resources - - - src/test/java/org/opendaylight/groupbasedpolicy/resolver - - - ../../groupbasedpolicy/src/test/java/org/opendaylight/groupbasedpolicy/resolver - true - - - - - - org.apache.felix maven-bundle-plugin @@ -109,7 +86,6 @@ - org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sf, org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.* diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManager.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManager.java index 708e6367a..78cfc8405 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManager.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManager.java @@ -43,8 +43,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinitionKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstances; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Policy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstances; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -123,6 +124,7 @@ public class SfcManager implements AutoCloseable, DataChangeListener { allActionInstancesIid = InstanceIdentifier.builder(Tenants.class) .child(Tenant.class) + .child(Policy.class) .child(SubjectFeatureInstances.class) .child(ActionInstance.class) .build(); diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java index c881db5bd..3fc2a00e6 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/arp/ArpTasker.java @@ -75,9 +75,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay. import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3Context; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfig; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.ExternalInterfaces; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeRef; diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManager.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManager.java index 724bc3521..1bd972f5f 100644 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManager.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManager.java @@ -59,8 +59,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay. import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayL3Nat; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.napt.translations.fields.napt.translations.NaptTranslation; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.slf4j.Logger; diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapper.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapper.java index 4286b51b9..51f7c2cd6 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapper.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapper.java @@ -83,8 +83,9 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.EndpointLocation.LocationType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Subnet; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.Subnet; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetDestinationBuilder; @@ -1137,11 +1138,11 @@ public class DestinationMapper extends FlowTable { return null; } - List subnets = tenantInfo.get().getSubnet(); - if (subnets == null) { + ForwardingContext fwCtx = tenantInfo.get().getForwardingContext(); + if (fwCtx == null || fwCtx.getSubnet() == null) { return new HashSet<>(); } - return new HashSet<>(subnets); + return new HashSet<>(fwCtx.getSubnet()); } // Need a method to get subnets for EPs attached to the node locally diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OrdinalFactory.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OrdinalFactory.java index 9754bd5d0..875e74f51 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OrdinalFactory.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OrdinalFactory.java @@ -25,10 +25,10 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.UniqueId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomain; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3Context; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcer.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcer.java index 152666395..1d2b9f8c0 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcer.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcer.java @@ -57,11 +57,11 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.action.refs.ActionRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup.IntraGroupPolicy; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup.IntraGroupPolicy; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Layer3Match; diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/Action.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/Action.java index 224d53a6e..d3760eac7 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/Action.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/Action.java @@ -20,8 +20,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.action.definition.SupportedParameterValues; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; /** * Represent an action definition, and provide tools for generating diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/AllowAction.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/AllowAction.java index 4b547d4ef..6ee11c20b 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/AllowAction.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/AllowAction.java @@ -25,7 +25,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.action.definition.SupportedParameterValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.openflowjava.nx.match.rev140421.NxmNxReg7; diff --git a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainAction.java b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainAction.java index e02cc0288..ffe6e3cf6 100755 --- a/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainAction.java +++ b/renderers/ofoverlay/src/main/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainAction.java @@ -28,11 +28,6 @@ import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcIidFacto import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcNshHeader; import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcNshHeader.SfcNshHeaderBuilder; import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.flow.PolicyEnforcer.PolicyPair; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcIidFactory; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcNshHeader; -import org.opendaylight.groupbasedpolicy.renderer.ofoverlay.sfcutils.SfcNshHeader.SfcNshHeaderBuilder; -import org.opendaylight.groupbasedpolicy.util.DataStoreHelper; import org.opendaylight.sfc.provider.api.SfcProviderRenderedPathAPI; import org.opendaylight.sfc.provider.api.SfcProviderServiceChainAPI; import org.opendaylight.sfc.provider.api.SfcProviderServicePathAPI; @@ -53,7 +48,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.definitions.ActionDefinition; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValue; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.action.definition.SupportedParameterValues; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.renderer.rev151103.renderers.renderer.capabilities.supported.action.definition.SupportedParameterValuesBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManagerTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManagerTest.java index c45ef9e50..3a17c3187 100644 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManagerTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/SfcManagerTest.java @@ -27,7 +27,7 @@ import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataCh import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.DataObject; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManagerTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManagerTest.java index 629c95d78..70af322c7 100644 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManagerTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/endpoint/EndpointManagerTest.java @@ -71,7 +71,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay. import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.napt.translations.fields.NaptTranslations; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.napt.translations.fields.napt.translations.NaptTranslation; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomain; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContext; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomain; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yangtools.concepts.ListenerRegistration; @@ -571,11 +572,13 @@ public class EndpointManagerTest { Optional optional = mock(Optional.class); when(checkedFuture.checkedGet()).thenReturn(optional); Tenant tenant = mock(Tenant.class); + ForwardingContext fwCtx = mock(ForwardingContext.class); + when(tenant.getForwardingContext()).thenReturn(fwCtx); when(optional.isPresent()).thenReturn(true); when(optional.get()).thenReturn(tenant); L2BridgeDomain l2BridgeDomain = mock(L2BridgeDomain.class); - when(tenant.getL2BridgeDomain()).thenReturn(Collections.singletonList(l2BridgeDomain)); + when(fwCtx.getL2BridgeDomain()).thenReturn(Collections.singletonList(l2BridgeDomain)); L2BridgeDomainId l2BridgeDomainId = mock(L2BridgeDomainId.class); when(l2BridgeDomain.getId()).thenReturn(l2BridgeDomainId); String l2bdValue = UUID.randomUUID().toString(); diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapperTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapperTest.java index adba97c38..817585cb9 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapperTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/DestinationMapperTest.java @@ -50,7 +50,8 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.EndpointBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.TunnelBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match; @@ -289,8 +290,8 @@ public class DestinationMapperTest extends FlowTableTest { endpointManager.addEndpoint(remoteEp); - ctx.addTenant(baseTenant().setContract( - ImmutableList. of(baseContract(null).build())).build()); + ctx.addTenant(baseTenant().setPolicy(new PolicyBuilder(baseTenant().getPolicy()).setContract( + ImmutableList. of(baseContract(null).build())).build()).build()); verifyDMap(remoteEp, localEp); } @@ -304,8 +305,8 @@ public class DestinationMapperTest extends FlowTableTest { .build(); endpointManager.addEndpoint(remoteEp); - ctx.addTenant(baseTenant().setContract( - ImmutableList. of(baseContract(null).build())).build()); + ctx.addTenant(baseTenant().setPolicy(new PolicyBuilder(baseTenant().getPolicy()).setContract( + ImmutableList. of(baseContract(null).build())).build()).build()); verifyDMap(remoteEp, localEp); } diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTableTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTableTest.java index bd3a7ee4e..75080e0b6 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTableTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/GroupTableTest.java @@ -47,7 +47,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OfTableTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OfTableTest.java index 405b78b1b..13bf77133 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OfTableTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/OfTableTest.java @@ -46,22 +46,24 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.classifier.refs.ClassifierRefBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.subject.feature.instance.ParameterValueBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroupBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2BridgeDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L2FloodDomainBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.L3ContextBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubjectFeatureInstancesBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.SubnetBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.SubjectBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ConsumerNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.endpoint.group.ProviderNamedSelectorBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstanceBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ClassifierInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ForwardingContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2BridgeDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L2FloodDomainBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.L3ContextBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.forwarding.context.SubnetBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroupBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.SubjectFeatureInstancesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.SubjectBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ConsumerNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.endpoint.group.ProviderNamedSelectorBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstanceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ClassifierInstanceBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; @@ -104,91 +106,81 @@ public class OfTableTest { } protected TenantBuilder baseTenant() { - return new TenantBuilder() - .setId(tid) - .setEndpointGroup(ImmutableList.of(new EndpointGroupBuilder() - .setId(eg) - .setNetworkDomain(sub) - .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder() - .setName(new SelectorName("cns1")) - .setContract(ImmutableList.of(cid)) - .build())) - .build(), - new EndpointGroupBuilder() - .setId(eg2) - .setNetworkDomain(sub2) - .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder() - .setName(new SelectorName("pns1")) - .setContract(ImmutableList.of(cid)) - .build())) - .build())) - .setL3Context(ImmutableList.of(new L3ContextBuilder() - .setId(l3c) - .build())) - .setL2BridgeDomain(ImmutableList.of(new L2BridgeDomainBuilder() - .setId(bd) - .setParent(l3c) - .build())) - .setL2FloodDomain(ImmutableList.of(new L2FloodDomainBuilder() - .setId(fd) - .setParent(bd) - .build())) - .setSubnet(ImmutableList.of(new SubnetBuilder() - .setId(sub2) - .setParent(fd) - .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24"))) - .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1"))) - .build(), - new SubnetBuilder() - .setId(sub) - .setParent(fd) - .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24"))) - .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1"))) - .build(), - new SubnetBuilder() - .setId(sub3) - .setParent(bd) - .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24"))) - .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1"))) - .build())) - .setSubjectFeatureInstances(new SubjectFeatureInstancesBuilder() - .setClassifierInstance(ImmutableList.of(new ClassifierInstanceBuilder() - .setName(new ClassifierName("tcp_dst_80")) - .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId()) - .setParameterValue(ImmutableList.of(new ParameterValueBuilder() - .setName(new ParameterName("destport")) - .setIntValue(Long.valueOf(80)) - .build(), - new ParameterValueBuilder() - .setName(new ParameterName("proto")) - .setIntValue(Long.valueOf(6)) - .build())) - .build(), - new ClassifierInstanceBuilder() - .setName(new ClassifierName("tcp_src_80")) - .setClassifierDefinitionId(Classifier.L4_CL.getId()) - .setParameterValue(ImmutableList.of(new ParameterValueBuilder() - .setName(new ParameterName("sourceport")) - .setIntValue(Long.valueOf(80)) - .build(), - new ParameterValueBuilder() - .setName(new ParameterName("proto")) - .setIntValue(Long.valueOf(6)) - .build())) - .build(), - new ClassifierInstanceBuilder() - .setName(new ClassifierName("ether_type")) - .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId()) - .setParameterValue(ImmutableList.of(new ParameterValueBuilder() - .setName(new ParameterName("ethertype")) - .setIntValue(Long.valueOf(FlowUtils.IPv4)) - .build())) - .build())) - .setActionInstance(ImmutableList.of(new ActionInstanceBuilder() - .setName(new ActionName("allow")) - .setActionDefinitionId(new AllowAction().getId()) - .build())) - .build()); + return new TenantBuilder().setId(tid) + .setPolicy(new PolicyBuilder() + .setEndpointGroup(ImmutableList.of( + new EndpointGroupBuilder().setId(eg) + .setNetworkDomain(sub) + .setConsumerNamedSelector(ImmutableList.of(new ConsumerNamedSelectorBuilder() + .setName(new SelectorName("cns1")).setContract(ImmutableList.of(cid)).build())) + .build(), + new EndpointGroupBuilder().setId(eg2) + .setNetworkDomain(sub2) + .setProviderNamedSelector(ImmutableList.of(new ProviderNamedSelectorBuilder() + .setName(new SelectorName("pns1")).setContract(ImmutableList.of(cid)).build())) + .build())) + .setSubjectFeatureInstances( + new SubjectFeatureInstancesBuilder() + .setClassifierInstance( + ImmutableList + .of(new ClassifierInstanceBuilder().setName(new ClassifierName("tcp_dst_80")) + .setClassifierDefinitionId(L4ClassifierDefinition.DEFINITION.getId()) + .setParameterValue(ImmutableList.of( + new ParameterValueBuilder().setName(new ParameterName("destport")) + .setIntValue(Long.valueOf(80)) + .build(), + new ParameterValueBuilder().setName(new ParameterName("proto")) + .setIntValue(Long.valueOf(6)) + .build())) + .build(), new ClassifierInstanceBuilder() + .setName(new ClassifierName("tcp_src_80")) + .setClassifierDefinitionId(Classifier.L4_CL.getId()) + .setParameterValue(ImmutableList.of( + new ParameterValueBuilder() + .setName(new ParameterName("sourceport")) + .setIntValue(Long.valueOf(80)) + .build(), + new ParameterValueBuilder().setName(new ParameterName("proto")) + .setIntValue(Long.valueOf(6)) + .build())) + .build(), + new ClassifierInstanceBuilder() + .setName(new ClassifierName("ether_type")) + .setClassifierDefinitionId(Classifier.ETHER_TYPE_CL.getId()) + .setParameterValue(ImmutableList.of(new ParameterValueBuilder() + .setName(new ParameterName("ethertype")) + .setIntValue(Long.valueOf(FlowUtils.IPv4)) + .build())) + .build())) + .setActionInstance( + ImmutableList.of(new ActionInstanceBuilder().setName(new ActionName("allow")) + .setActionDefinitionId(new AllowAction().getId()) + .build())) + .build()) + .build()) + .setForwardingContext( + new ForwardingContextBuilder() + .setL3Context(ImmutableList.of(new L3ContextBuilder().setId(l3c).build())) + .setL2BridgeDomain( + ImmutableList.of(new L2BridgeDomainBuilder().setId(bd).setParent(l3c).build())) + .setL2FloodDomain(ImmutableList.of(new L2FloodDomainBuilder().setId(fd).setParent(bd).build())) + .setSubnet(ImmutableList.of( + new SubnetBuilder().setId(sub2) + .setParent(fd) + .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.1.0/24"))) + .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.1.1"))) + .build(), + new SubnetBuilder().setId(sub) + .setParent(fd) + .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.0.0/24"))) + .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.0.1"))) + .build(), + new SubnetBuilder().setId(sub3) + .setParent(bd) + .setIpPrefix(new IpPrefix(new Ipv4Prefix("10.0.2.0/24"))) + .setVirtualRouterIp(new IpAddress(new Ipv4Address("10.0.2.1"))) + .build())) + .build()); } protected ContractBuilder baseContract(List subjects) { diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcerTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcerTest.java index 583762cc0..360b19275 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcerTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/PolicyEnforcerTest.java @@ -55,14 +55,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.conditions.Condition; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.has.conditions.ConditionBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.Contract; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.ContractBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.ClauseBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.Subject; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ConsumerMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.clause.ProviderMatchersBuilder; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.RuleBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.PolicyBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.Contract; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.ContractBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.ClauseBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.Subject; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ConsumerMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.clause.ProviderMatchersBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.RuleBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch; @@ -121,8 +122,8 @@ public class PolicyEnforcerTest extends FlowTableTest { endpointManager.addEndpoint(ep1); Endpoint ep2 = localEP().setMacAddress(new MacAddress("00:00:00:00:00:02")).build(); endpointManager.addEndpoint(ep2); - ctx.addTenant(baseTenant().setContract(ImmutableList.of(baseContract(null).build())) - .build()); + ctx.addTenant(baseTenant().setPolicy(new PolicyBuilder(baseTenant().getPolicy()) + .setContract(ImmutableList.of(baseContract(null).build())).build()).build()); OfWriter fm = dosync(null); assertNotEquals(0, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_POLICY_ENFORCER()) @@ -196,8 +197,8 @@ public class PolicyEnforcerTest extends FlowTableTest { endpointManager.addEndpoint(ep1); Endpoint ep2 = localEP().setMacAddress(new MacAddress("00:00:00:00:00:02")).setEndpointGroup(eg2).build(); endpointManager.addEndpoint(ep2); - ctx.addTenant(baseTenant().setContract(ImmutableList.of(baseContract(subjects).build())) - .build()); + ctx.addTenant(baseTenant().setPolicy(new PolicyBuilder(baseTenant().getPolicy()) + .setContract(ImmutableList.of(baseContract(subjects).build())).build()).build()); OfWriter fm = dosync(null); assertNotEquals(0, fm.getTableForNode(nodeId, ctx.getPolicyManager().getTABLEID_POLICY_ENFORCER()) @@ -260,7 +261,7 @@ public class PolicyEnforcerTest extends FlowTableTest { .build(); endpointManager.addEndpoint(ep2); - TenantBuilder tb = baseTenant().setContract( + TenantBuilder tb = baseTenant().setPolicy(new PolicyBuilder(baseTenant().getPolicy()).setContract( ImmutableList.of(new ContractBuilder().setId(cid) .setSubject(ImmutableList.of(baseSubject(Direction.Out).build())) .setClause( @@ -281,7 +282,7 @@ public class PolicyEnforcerTest extends FlowTableTest { .setMatchType(MatchType.All) .build())).build()) .build())) - .build())); + .build())).build()); ctx.addTenant(tb.build()); PolicyInfo policy = ctx.getCurrentPolicy(); diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/SourceMapperTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/SourceMapperTest.java index 59aef635f..a5d6e8bc8 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/SourceMapperTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/flow/SourceMapperTest.java @@ -36,7 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.EndpointLocation.LocationType; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayContext; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.EndpointGroup; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.EndpointGroup; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.overlay.rev150105.TunnelTypeVxlan; diff --git a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainActionTest.java b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainActionTest.java index 8430641c3..4ad69b266 100755 --- a/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainActionTest.java +++ b/renderers/ofoverlay/src/test/java/org/opendaylight/groupbasedpolicy/renderer/ofoverlay/sf/ChainActionTest.java @@ -44,7 +44,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.acti import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.TenantId; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.rev140421.endpoints.Endpoint; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.subject.feature.instances.ActionInstance; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.subject.feature.instances.ActionInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; diff --git a/ui-backend/src/main/java/org/opendaylight/groupbasedpolicy/ui/backend/UiBackendServiceImpl.java b/ui-backend/src/main/java/org/opendaylight/groupbasedpolicy/ui/backend/UiBackendServiceImpl.java index 501994e58..50164c9ec 100755 --- a/ui-backend/src/main/java/org/opendaylight/groupbasedpolicy/ui/backend/UiBackendServiceImpl.java +++ b/ui-backend/src/main/java/org/opendaylight/groupbasedpolicy/ui/backend/UiBackendServiceImpl.java @@ -33,7 +33,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.endpoint.r import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.Tenants; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.Tenant; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.TenantKey; -import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.contract.subject.Rule; +import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.tenants.tenant.policy.contract.subject.Rule; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.ui.backend.rev150511.GetEndpointsFromEndpointGroupInput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.ui.backend.rev150511.GetEndpointsFromEndpointGroupOutput; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.controller.config.ui.backend.rev150511.GetEndpointsFromEndpointGroupOutputBuilder; diff --git a/ui-backend/src/main/yang/ui-backend.yang b/ui-backend/src/main/yang/ui-backend.yang index e2e0edd0c..128c78f99 100755 --- a/ui-backend/src/main/yang/ui-backend.yang +++ b/ui-backend/src/main/yang/ui-backend.yang @@ -30,7 +30,7 @@ module ui-backend { } leaf consumer-endpoint-group-id { type leafref { - path "/gbp-policy:tenants/gbp-policy:tenant/gbp-policy:endpoint-group/gbp-policy:id"; + path "/gbp-policy:tenants/gbp-policy:tenant/gbp-policy:policy/gbp-policy:endpoint-group/gbp-policy:id"; } } } @@ -43,7 +43,7 @@ module ui-backend { } leaf provider-endpoint-group-id { type leafref { - path "/gbp-policy:tenants/gbp-policy:tenant/gbp-policy:endpoint-group/gbp-policy:id"; + path "/gbp-policy:tenants/gbp-policy:tenant/gbp-policy:policy/gbp-policy:endpoint-group/gbp-policy:id"; } } }