package org.opendaylight.groupbasedpolicy.neutron.mapper.infrastructure; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.groupbasedpolicy.util.IidFactory; import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.Description; 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 com.google.common.base.Preconditions; public class NetworkClient { private static final Name NETWORK_CLIENT_EPG_NAME = new Name("NETWORK_CLIENT"); private static final Description NETWORK_CLIENT_EPG_DESC = new Description("Represents DHCP and DNS clients."); /** * ID of {@link #EPG} */ public static final EndpointGroupId EPG_ID = new EndpointGroupId("ccc5e444-573c-11e5-885d-feff819cdc9f"); /** * Network-client endpoint-group consuming no contract */ public static final EndpointGroup EPG; static { EPG = createNetworkClientEpg(); } private static EndpointGroup createNetworkClientEpg() { return new EndpointGroupBuilder().setId(EPG_ID) .setName(NETWORK_CLIENT_EPG_NAME) .setIntraGroupPolicy(IntraGroupPolicy.RequireContract) .setDescription(NETWORK_CLIENT_EPG_DESC) .build(); } /** * Puts {@link #EPG} to {@link LogicalDatastoreType#CONFIGURATION} * * @param tenantId location of {@link #EPG} * @param wTx transaction where {@link #EPG} is written */ public static void writeNetworkClientEntitiesToTenant(TenantId tenantId, WriteTransaction wTx) { wTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.endpointGroupIid(tenantId, EPG_ID), EPG, true); } /** * Puts consumer-named-selector to {@link #EPG} in {@link LogicalDatastoreType#CONFIGURATION} * * @param tenantId tenantId location of {@link #EPG} * @param consumerNamedSelector is added to {@link #EPG} * @param wTx transaction where the given consumer-named-selector is written */ public static void writeConsumerNamedSelector(TenantId tenantId, ConsumerNamedSelector consumerNamedSelector, WriteTransaction wTx) { Preconditions.checkNotNull(consumerNamedSelector); wTx.put(LogicalDatastoreType.CONFIGURATION, IidFactory.consumerNamedSelectorIid(tenantId, EPG_ID, consumerNamedSelector.getName()), consumerNamedSelector, true); } }