/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.groupbasedpolicy.renderer;
import java.util.Arrays;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.NetworkContainmentBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.common.endpoint.fields.network.containment.containment.ForwardingContextContainmentBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.AddressEndpointLocationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoint.locations.ContainmentEndpointLocationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.address.endpoints.AddressEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpointBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.endpoints.containment.endpoints.ContainmentEndpointKey;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.AbsoluteLocationBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.absolute.location.absolute.location.LocationType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.RelativeLocationsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.base_endpoint.rev160427.has.relative.location.relative.locations.InternalLocation;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionDefinitionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierDefinitionId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContextId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ContractId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.EndpointGroupId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.RuleName;
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.forwarding.rev160427.AddressType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.forwarding.rev160427.ContextType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.policy.rev140421.HasDirection.Direction;
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.classifiers.Classifier;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.classifiers.ClassifierBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRule;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.has.resolved.rules.ResolvedRuleBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.ResolvedPolicyBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraints;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.PolicyRuleGroupWithEndpointConstraintsBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroup;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.resolved.policy.rev150828.resolved.policies.resolved.policy.policy.rule.group.with.endpoint.constraints.PolicyRuleGroupBuilder;
import com.google.common.collect.ImmutableList;
public class TestDataFactory {
public static final TenantId TENANT_ID = new TenantId("cisco_tenant");
public static final ActionDefinitionId AD_1 = new ActionDefinitionId("ad_1");
public static final ActionName AN_1 = new ActionName("an_1");
public static final ClassifierDefinitionId CD_1 = new ClassifierDefinitionId("cd_1");
public static final ClassifierName CN_1 = new ClassifierName("cn_1");
public static final ContextId CTX_1 = new ContextId("ctx_1");
public static AddressEndpointLocationBuilder defaultAdrEpLoc(AddressEndpointKey adrEpKey, LocationType realLoc,
InternalLocation... relativeLocs) {
AddressEndpointLocationBuilder result =
new AddressEndpointLocationBuilder().setContextType(adrEpKey.getContextType())
.setContextId(adrEpKey.getContextId())
.setAddressType(adrEpKey.getAddressType())
.setAddress(adrEpKey.getAddress())
.setAbsoluteLocation(new AbsoluteLocationBuilder().setLocationType(realLoc).build());
if (relativeLocs != null) {
result.setRelativeLocations(
new RelativeLocationsBuilder().setInternalLocation(Arrays.asList(relativeLocs)).build());
}
return result;
}
public static ContainmentEndpointLocationBuilder defaultContEpLoc(ContainmentEndpointKey contEpKey,
InternalLocation... relativeLocs) {
ContainmentEndpointLocationBuilder result = new ContainmentEndpointLocationBuilder()
.setContextType(contEpKey.getContextType()).setContextId(contEpKey.getContextId()).setRelativeLocations(
new RelativeLocationsBuilder().setInternalLocation(Arrays.asList(relativeLocs)).build());
return result;
}
public static AddressEndpointBuilder defaultAdrEp(String address, EndpointGroupId... epgs) {
return new AddressEndpointBuilder().setContextType(ContextType.class)
.setContextId(CTX_1)
.setAddressType(AddressType.class)
.setAddress(address)
.setTenant(TENANT_ID)
.setEndpointGroup(Arrays.asList(epgs))
.setNetworkContainment(
new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
.setContextType(ContextType.class).setContextId(CTX_1).build()).build());
}
public static ContainmentEndpointBuilder defaultContEp(EndpointGroupId... epgs) {
return new ContainmentEndpointBuilder().setContextType(ContextType.class)
.setContextId(CTX_1)
.setTenant(TENANT_ID)
.setEndpointGroup(Arrays.asList(epgs))
.setNetworkContainment(
new NetworkContainmentBuilder().setContainment(new ForwardingContextContainmentBuilder()
.setContextType(ContextType.class).setContextId(CTX_1).build()).build());
}
public static ResolvedRuleBuilder defaultResolvedRule(RuleName ruleName) {
Action action = new ActionBuilder().setActionDefinitionId(AD_1).setName(AN_1).setOrder(0).build();
Classifier classifier = new ClassifierBuilder().setClassifierDefinitionId(CD_1)
.setName(CN_1)
.setDirection(Direction.In)
.build();
return new ResolvedRuleBuilder().setName(ruleName)
.setOrder(0)
.setAction(ImmutableList.of(action))
.setClassifier(ImmutableList.of(classifier));
}
public static PolicyRuleGroupBuilder defaultPolicyRuleGrp(ContractId contractId, SubjectName subjectName,
ResolvedRule... resolvedRules) {
return new PolicyRuleGroupBuilder().setTenantId(TENANT_ID)
.setContractId(contractId)
.setSubjectName(subjectName)
.setResolvedRule(Arrays.asList(resolvedRules));
}
public static ResolvedPolicyBuilder defaultResolvedPolicy(EndpointGroupId consEpg, EndpointGroupId provEpg,
PolicyRuleGroup... policyRuleGrps) {
PolicyRuleGroupWithEndpointConstraints blueRuleGrpWithoutCons =
new PolicyRuleGroupWithEndpointConstraintsBuilder().setPolicyRuleGroup(Arrays.asList(policyRuleGrps))
.build();
return new ResolvedPolicyBuilder().setConsumerEpgId(consEpg)
.setConsumerTenantId(TENANT_ID)
.setProviderEpgId(provEpg)
.setProviderTenantId(TENANT_ID)
.setPolicyRuleGroupWithEndpointConstraints(ImmutableList.of(blueRuleGrpWithoutCons));
}
}