
org.opendaylight.sfc.provider.api.SfcProviderServiceFunctionMetadataAPI Maven / Gradle / Ivy
/*
* Copyright (c) 2015, 2017 Intel Ltd. 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.sfc.provider.api;
import static org.opendaylight.sfc.provider.SfcProviderDebug.printTraceStart;
import static org.opendaylight.sfc.provider.SfcProviderDebug.printTraceStop;
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.md.rev140701.ServiceFunctionMetadata;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.md.rev140701.service.function.metadata.ContextMetadata;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.md.rev140701.service.function.metadata.ContextMetadataKey;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.md.rev140701.service.function.metadata.VariableMetadata;
import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.md.rev140701.service.function.metadata.VariableMetadataKey;
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* This class has the APIs to operate on the Service Function Metadata.
*
*
* It is normally called from onDataChanged() through a executor service. We
* need to use an executor service because we can not operate on a datastore
* while on onDataChanged() context.
*
* @author Ruijing Guo ([email protected])
* @version 0.1
* @since 2015-10-10
*/
public final class SfcProviderServiceFunctionMetadataAPI {
private static final Logger LOG = LoggerFactory.getLogger(SfcProviderServiceFunctionMetadataAPI.class);
private SfcProviderServiceFunctionMetadataAPI() {
}
public static boolean putContextMetadata(ContextMetadata md) {
boolean ret;
InstanceIdentifier mdIID;
printTraceStart(LOG);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(ContextMetadata.class, md.key())
.build();
ret = SfcDataStoreAPI.writePutTransactionAPI(mdIID, md, LogicalDatastoreType.CONFIGURATION);
printTraceStop(LOG);
return ret;
}
public static ContextMetadata readContextMetadata(String mdName) {
printTraceStart(LOG);
ContextMetadata md;
InstanceIdentifier mdIID;
ContextMetadataKey mdKey = new ContextMetadataKey(mdName);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(ContextMetadata.class, mdKey).build();
md = SfcDataStoreAPI.readTransactionAPI(mdIID, LogicalDatastoreType.CONFIGURATION);
printTraceStop(LOG);
return md;
}
public static boolean deleteContextMetadata(String mdName) {
boolean ret = false;
printTraceStart(LOG);
InstanceIdentifier mdIID;
ContextMetadataKey mdKey = new ContextMetadataKey(mdName);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(ContextMetadata.class, mdKey).build();
if (SfcDataStoreAPI.deleteTransactionAPI(mdIID, LogicalDatastoreType.CONFIGURATION)) {
ret = true;
} else {
LOG.error("{}: Failed to delete service function context metadata {}",
Thread.currentThread().getStackTrace()[1], mdName);
}
printTraceStop(LOG);
return ret;
}
public static boolean putVariableMetadata(VariableMetadata md) {
boolean ret;
InstanceIdentifier mdIID;
printTraceStart(LOG);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(VariableMetadata.class, md.key())
.build();
ret = SfcDataStoreAPI.writePutTransactionAPI(mdIID, md, LogicalDatastoreType.CONFIGURATION);
printTraceStop(LOG);
return ret;
}
public static VariableMetadata readVariableMetadata(String mdName) {
VariableMetadata md;
InstanceIdentifier mdIID;
printTraceStart(LOG);
VariableMetadataKey mdKey = new VariableMetadataKey(mdName);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(VariableMetadata.class, mdKey).build();
md = SfcDataStoreAPI.readTransactionAPI(mdIID, LogicalDatastoreType.CONFIGURATION);
printTraceStop(LOG);
return md;
}
public static boolean deleteVariableMetadata(String mdName) {
boolean ret = false;
InstanceIdentifier mdIID;
printTraceStart(LOG);
VariableMetadataKey mdKey = new VariableMetadataKey(mdName);
mdIID = InstanceIdentifier.builder(ServiceFunctionMetadata.class).child(VariableMetadata.class, mdKey).build();
if (SfcDataStoreAPI.deleteTransactionAPI(mdIID, LogicalDatastoreType.CONFIGURATION)) {
ret = true;
} else {
LOG.error("{}: Failed to delete variable metadata: {}", Thread.currentThread().getStackTrace()[1], mdName);
}
printTraceStop(LOG);
return ret;
}
}