+++ /dev/null
-/*
- * Copyright (c) 2016, 2017 Brocade Communications 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.netvirt.sfc.translator;
-
-import com.google.common.util.concurrent.CheckedFuture;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-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.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MdsalUtils {
- private static final Logger LOG = LoggerFactory.getLogger(MdsalUtils.class);
- private DataBroker databroker = null;
-
- /**
- * Class constructor setting the data broker.
- *
- * @param dataBroker the {@link DataBroker}
- */
- public MdsalUtils(DataBroker dataBroker) {
- this.databroker = dataBroker;
- }
-
- /**
- * Executes put as a blocking transaction.
- *
- * @param logicalDatastoreType {@link LogicalDatastoreType} which should be modified
- * @param path {@link InstanceIdentifier} for path to read
- * @param <D> the data object type
- * @return the result of the request
- */
- public <D extends org.opendaylight.yangtools.yang.binding.DataObject> boolean put(
- final LogicalDatastoreType logicalDatastoreType, final InstanceIdentifier<D> path, D data) {
- boolean result = false;
- final WriteTransaction transaction = databroker.newWriteOnlyTransaction();
- transaction.put(logicalDatastoreType, path, data, WriteTransaction.CREATE_MISSING_PARENTS);
- CheckedFuture<Void, TransactionCommitFailedException> future = transaction.submit();
- try {
- future.checkedGet();
- result = true;
- } catch (TransactionCommitFailedException e) {
- LOG.warn("Failed to put {} ", path, e);
- }
- return result;
- }
-}
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.Acl;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160218.access.lists.AclKey;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
-import org.opendaylight.yangtools.yang.binding.DataObject;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
= InstanceIdentifier.create(ServiceFunctionPaths.class);
private final DataBroker dataBroker;
- private final MdsalUtils mdsalUtils;
public SfcMdsalHelper(DataBroker dataBroker) {
this.dataBroker = dataBroker;
- mdsalUtils = new MdsalUtils(this.dataBroker);
}
//ACL Flow Classifier data store utility methods
public void addAclFlowClassifier(Acl aclFlowClassifier) {
InstanceIdentifier<Acl> aclIid = getAclPath(aclFlowClassifier.getKey());
LOG.info("Write ACL FlowClassifier {} to config data store at {}",aclFlowClassifier, aclIid);
- mdsalPutWrapper(LogicalDatastoreType.CONFIGURATION, aclIid, aclFlowClassifier);
+ try {
+ SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, aclIid,
+ aclFlowClassifier);
+ } catch (TransactionCommitFailedException e) {
+ LOG.error("Error writing {} to {}", aclFlowClassifier, aclIid, e);
+ }
}
public void updateAclFlowClassifier(Acl aclFlowClassifier) {
public void addServiceFunction(ServiceFunction sf) {
InstanceIdentifier<ServiceFunction> sfIid = getSFPath(sf.getKey());
LOG.info("Write Service Function {} to config data store at {}",sf, sfIid);
- mdsalPutWrapper(LogicalDatastoreType.CONFIGURATION, sfIid, sf);
+ try {
+ SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, sfIid, sf);
+ } catch (TransactionCommitFailedException e) {
+ LOG.error("Error writing {} to {}", sf, sfIid, e);
+ }
}
public void updateServiceFunction(ServiceFunction sf) {
public void addServiceFunctionForwarder(ServiceFunctionForwarder sff) {
InstanceIdentifier<ServiceFunctionForwarder> sffIid = getSFFPath(sff.getKey());
LOG.info("Write Service Function Forwarder {} to config data store at {}",sff, sffIid);
- mdsalPutWrapper(LogicalDatastoreType.CONFIGURATION, sffIid, sff);
+ try {
+ SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, sffIid, sff);
+ } catch (TransactionCommitFailedException e) {
+ LOG.error("Error writing {} to {}", sff, sffIid, e);
+ }
}
public void deleteServiceFunctionForwarder(ServiceFunctionForwarderKey sffKey) {
public void addServiceFunctionChain(ServiceFunctionChain sfc) {
InstanceIdentifier<ServiceFunctionChain> sfcIid = getSFCPath(sfc.getKey());
LOG.info("Write Service Function Chain {} to config data store at {}",sfc, sfcIid);
- mdsalPutWrapper(LogicalDatastoreType.CONFIGURATION, sfcIid, sfc);
+ try {
+ SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, sfcIid, sfc);
+ } catch (TransactionCommitFailedException e) {
+ LOG.error("Error writing {} to {}", sfc, sfcIid, e);
+ }
}
public void deleteServiceFunctionChain(ServiceFunctionChainKey sfcKey) {
public void addServiceFunctionPath(ServiceFunctionPath sfp) {
InstanceIdentifier<ServiceFunctionPath> sfpIid = getSFPPath(sfp.getKey());
LOG.info("Write Service Function Path {} to config data store at {}",sfp, sfpIid);
- mdsalPutWrapper(LogicalDatastoreType.CONFIGURATION, sfpIid, sfp);
+ try {
+ SingleTransactionDataBroker.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, sfpIid, sfp);
+ } catch (TransactionCommitFailedException e) {
+ LOG.error("Error writing {} to {}", sfp, sfpIid, e);
+ }
}
public void deleteServiceFunctionPath(ServiceFunctionPathKey sfpKey) {
}
return null;
}
-
- // TODO Clean up the exception handling
- @SuppressWarnings("checkstyle:IllegalCatch")
- private <D extends DataObject> void mdsalPutWrapper(LogicalDatastoreType dataStore,
- InstanceIdentifier<D> iid, D data) {
- try {
- mdsalUtils.put(dataStore, iid, data);
- } catch (Exception e) {
- LOG.error("Exception while putting data in data store {} : {}",iid, data, e);
- }
- }
}