/*
* Copyright (c) 2015 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.neutron.mapper.test;
import org.opendaylight.controller.md.sal.binding.api.DataBroker;
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
import org.opendaylight.groupbasedpolicy.util.IidFactory;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ActionName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClassifierName;
import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.common.rev140421.ClauseName;
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.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.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;
public final class ConfigDataStoreReader {
private ConfigDataStoreReader() {
throw new UnsupportedOperationException("Cannot create an instance");
}
public static Optional<Tenant> readTenant(DataBroker dataBroker, String tenantId) throws Exception {
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
IidFactory.tenantIid(new TenantId(tenantId)), rTx);
}
}
public static Optional<Contract> readContract(DataBroker dataBroker, String tenantId, String contractId)
throws Exception {
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
IidFactory.contractIid(new TenantId(tenantId), new ContractId(contractId)), rTx);
}
}
public static Optional<EndpointGroup> readEndpointGroup(DataBroker dataBroker, String tenantId,
String endpointGroupId) throws Exception {
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION,
IidFactory.endpointGroupIid(new TenantId(tenantId), new EndpointGroupId(endpointGroupId)), rTx);
}
}
public static Optional<ClassifierInstance> readClassifierInstance(DataBroker dataBroker, String tenantId,
ClassifierName classifierName) throws Exception {
InstanceIdentifier<ClassifierInstance> clsfInstanceIid = IidFactory.classifierInstanceIid(
new TenantId(tenantId), classifierName);
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, clsfInstanceIid, rTx);
}
}
public static Optional<ActionInstance> readActionInstance(DataBroker dataBroker, String tenantId,
ActionName actionName) throws Exception {
InstanceIdentifier<ActionInstance> actionIid = IidFactory.actionInstanceIid(new TenantId(tenantId), actionName);
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, actionIid, rTx);
}
}
public static Optional<ConsumerNamedSelector> readConsumerNamedSelector(DataBroker dataBroker, String tenantId, String egId,
String selectorName) {
InstanceIdentifier<ConsumerNamedSelector> cnsIid = IidFactory.consumerNamedSelectorIid(new TenantId(tenantId),
new EndpointGroupId(egId), new SelectorName(selectorName));
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, cnsIid, rTx);
}
}
public static Optional<Clause> readClause(DataBroker dataBroker, String tenantId, String contractId, String clauseName) {
InstanceIdentifier<Clause> clauseIid = IidFactory.clauseIid(new TenantId(tenantId), new ContractId(contractId),
new ClauseName(clauseName));
try (ReadOnlyTransaction rTx = dataBroker.newReadOnlyTransaction()) {
return DataStoreHelper.readFromDs(LogicalDatastoreType.CONFIGURATION, clauseIid, rTx);
}
}
}