import org.opendaylight.openflowplugin.api.openflow.rpc.listener.ItemLifecycleListener;
/**
- * simple standalone {@link ItemLifeCycleSource} implementation
+ * simple standalone {@link ItemLifeCycleSource} implementation.
*/
public class ItemLifeCycleSourceImpl implements ItemLifeCycleKeeper {
/**
* Class converts multipart reply messages to the objects that can be then written to datastore using
- * multipart writers
+ * multipart writers.
*/
public class MultipartReplyTranslatorUtil {
private static final Logger LOG = LoggerFactory.getLogger(MultipartReplyTranslatorUtil.class);
- public static Optional<? extends MultipartReplyBody> translate(final OfHeader message,
- final DeviceInfo deviceInfo,
- @Nullable final ConvertorExecutor convertorExecutor,
- @Nullable final TranslatorLibrary translatorLibrary) {
+ public static Optional<? extends MultipartReplyBody> translate(
+ final OfHeader message,
+ final DeviceInfo deviceInfo,
+ @Nullable final ConvertorExecutor convertorExecutor,
+ @Nullable final TranslatorLibrary translatorLibrary) {
+
if (message instanceof MultipartReply) {
final Optional<ConvertorExecutor> convertor = Optional.ofNullable(convertorExecutor);
final Optional<TranslatorLibrary> translator = Optional.ofNullable(translatorLibrary);
return convertor.flatMap(c -> Optional.of(translateTableFeatures(msg, deviceInfo.getVersion(), c)));
case OFPMPPORTDESC:
return translator.flatMap(t -> Optional.of(translatePortDesc(msg, deviceInfo, t)));
+ default:
}
} else if (message instanceof org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112
.MultipartReply) {
.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart.reply.body
- .MultipartReplyTableFeatures translateTableFeatures(final MultipartReply msg,
- final short version,
- final ConvertorExecutor convertorExecutor) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.reply.multipart
+ .reply.body.MultipartReplyTableFeatures translateTableFeatures(
+ final MultipartReply msg,
+ final short version,
+ final ConvertorExecutor convertorExecutor) {
MultipartReplyTableFeaturesCase caseBody = (MultipartReplyTableFeaturesCase) msg.getMultipartReplyBody();
final MultipartReplyTableFeatures multipartReplyTableFeatures = caseBody.getMultipartReplyTableFeatures();
final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.table.features
.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.multipart.reply.multipart.reply.body
- .MultipartReplyDesc translateDesc(final MultipartReply msg) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.multipart.reply.multipart
+ .reply.body.MultipartReplyDesc translateDesc(final MultipartReply msg) {
final MultipartReplyDesc desc = ((MultipartReplyDescCase) msg.getMultipartReplyBody()).getMultipartReplyDesc();
return new MultipartReplyDescBuilder()
return message.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.reply.multipart.reply.body
- .MultipartReplyPortStats translatePortStats(final MultipartReply msg,
- final OpenflowVersion ofVersion,
- final BigInteger datapathId) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.reply.multipart
+ .reply.body.MultipartReplyPortStats translatePortStats(
+ final MultipartReply msg,
+ final OpenflowVersion ofVersion,
+ final BigInteger datapathId) {
MultipartReplyPortStatsBuilder message = new MultipartReplyPortStatsBuilder();
MultipartReplyPortStatsCase caseBody = (MultipartReplyPortStatsCase) msg.getMultipartReplyBody();
MultipartReplyPortStats replyBody = caseBody.getMultipartReplyPortStats();
return message.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.reply.multipart.reply.body
- .MultipartReplyGroupDesc translateGroupDesc(final MultipartReply msg,
- final VersionDatapathIdConvertorData data,
- final ConvertorExecutor convertorExecutor) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.reply.multipart
+ .reply.body.MultipartReplyGroupDesc translateGroupDesc(
+ final MultipartReply msg,
+ final VersionDatapathIdConvertorData data,
+ final ConvertorExecutor convertorExecutor) {
MultipartReplyGroupDescBuilder message = new MultipartReplyGroupDescBuilder();
MultipartReplyGroupDescCase caseBody = (MultipartReplyGroupDescCase) msg.getMultipartReplyBody();
MultipartReplyGroupDesc replyBody = caseBody.getMultipartReplyGroupDesc();
return message.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.reply.multipart.reply.body
- .MultipartReplyGroupFeatures translateGroupFeatures(final MultipartReply msg) {
- MultipartReplyGroupFeaturesBuilder message = new MultipartReplyGroupFeaturesBuilder();
- MultipartReplyGroupFeaturesCase caseBody = (MultipartReplyGroupFeaturesCase) msg.getMultipartReplyBody();
- MultipartReplyGroupFeatures replyBody = caseBody.getMultipartReplyGroupFeatures();
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.group.statistics.rev131111.multipart.reply.multipart
+ .reply.body.MultipartReplyGroupFeatures translateGroupFeatures(final MultipartReply msg) {
+ final MultipartReplyGroupFeaturesBuilder message = new MultipartReplyGroupFeaturesBuilder();
+ final MultipartReplyGroupFeaturesCase caseBody = (MultipartReplyGroupFeaturesCase) msg.getMultipartReplyBody();
+ final MultipartReplyGroupFeatures replyBody = caseBody.getMultipartReplyGroupFeatures();
List<Class<? extends GroupType>> supportedGroups =
new ArrayList<>();
MultipartReplyMeterStatsBuilder message = new MultipartReplyMeterStatsBuilder();
MultipartReplyMeterCase caseBody = (MultipartReplyMeterCase) msg.getMultipartReplyBody();
MultipartReplyMeter replyBody = caseBody.getMultipartReplyMeter();
- final Optional<List<org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats>> meterStatsList =
- convertorExecutor.convert(replyBody.getMeterStats(), data);
+ final Optional<List<
+ org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.meter.statistics.reply.MeterStats
+ >>
+ meterStatsList = convertorExecutor.convert(replyBody.getMeterStats(), data);
message.setMeterStats(meterStatsList.orElse(Collections.emptyList()));
return message.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart.reply.body
- .MultipartReplyMeterConfig translateMeterConfig(final MultipartReply msg,
- final VersionDatapathIdConvertorData data,
- final ConvertorExecutor convertorExecutor) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart
+ .reply.body.MultipartReplyMeterConfig translateMeterConfig(
+ final MultipartReply msg,
+ final VersionDatapathIdConvertorData data,
+ final ConvertorExecutor convertorExecutor) {
MultipartReplyMeterConfigBuilder message = new MultipartReplyMeterConfigBuilder();
MultipartReplyMeterConfigCase caseBody = (MultipartReplyMeterConfigCase) msg.getMultipartReplyBody();
MultipartReplyMeterConfig replyBody = caseBody.getMultipartReplyMeterConfig();
- final Optional<List<MeterConfigStats>> meterConfigStatsList = convertorExecutor.convert(replyBody.getMeterConfig(), data);
+ final Optional<List<MeterConfigStats>> meterConfigStatsList
+ = convertorExecutor.convert(replyBody.getMeterConfig(), data);
message.setMeterConfigStats(meterConfigStatsList.orElse(Collections.emptyList()));
return message.build();
}
- private static org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart.reply.body
- .MultipartReplyMeterFeatures translateMeterFeatures(final MultipartReply msg) {
+ private static org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.reply.multipart
+ .reply.body.MultipartReplyMeterFeatures translateMeterFeatures(final MultipartReply msg) {
MultipartReplyMeterFeaturesBuilder message = new MultipartReplyMeterFeaturesBuilder();
MultipartReplyMeterFeaturesCase caseBody = (MultipartReplyMeterFeaturesCase) msg.getMultipartReplyBody();
MultipartReplyMeterFeatures replyBody = caseBody.getMultipartReplyMeterFeatures();
MultipartReplyTable replyBody = caseBody.getMultipartReplyTable();
List<TableStats> swTablesStats = replyBody.getTableStats();
- List<FlowTableAndStatisticsMap> salFlowStats = new ArrayList<FlowTableAndStatisticsMap>();
+ List<FlowTableAndStatisticsMap> salFlowStats = new ArrayList<>();
+ //TODO: Duplicate code: look at OpendaylightFlowTableStatisticsServiceImpl method transformToNotification
for (TableStats swTableStats : swTablesStats) {
FlowTableAndStatisticsMapBuilder statisticsBuilder = new FlowTableAndStatisticsMapBuilder();
/**
* openflowplugin-impl
* org.opendaylight.openflowplugin.impl.common
- * <p>
* Factory class is designed for easy producing a MultipartRequestInput. Class should help
* to understand a relationship between {@link MultipartType} and {@link MultipartRequestInput}
* without touch OF specification 1.3.2 - a section 7.3.5. Multipart Messages
- * see also <a href="https://www.opennetworking.org/images/stories/downloads/sdn-resources/onf-specifications/openflow/openflow-spec-v1.3.2.pdf">OpenFlow 1.3.2</a>
- *
- * @author <a href="mailto:vdemcak@cisco.com">Vaclav Demcak</a>
- * <p>
- * Created: Mar 27, 2015
*/
public final class MultipartRequestInputFactory {
}
/**
- * Method validate input and makes {@link org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader}
+ * Method validate input and makes
+ * {@link org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.protocol.rev130731.OfHeader}
* from input values. Method set a moreRequest marker to false and it creates default empty multipart request body
* by {@link MultipartType}
*
final short version,
@Nonnull final MultipartType type,
final boolean canUseSingleLayer) {
- return canUseSingleLayer ?
- new MultipartRequestBuilder()
- .setRequestMore(false)
- .setVersion(version)
- .setXid(xid)
- .setMultipartRequestBody(makeDefaultSingleLayerBody(type))
- .build() :
- new MultipartRequestInputBuilder()
- .setFlags(new MultipartRequestFlags(false))
- .setMultipartRequestBody(makeDefaultMultiLayerBody(type, version))
- .setVersion(version)
- .setType(type)
- .setXid(xid)
- .build();
+ return canUseSingleLayer
+ ? new MultipartRequestBuilder()
+ .setRequestMore(false)
+ .setVersion(version)
+ .setXid(xid)
+ .setMultipartRequestBody(makeDefaultSingleLayerBody(type))
+ .build()
+ : new MultipartRequestInputBuilder()
+ .setFlags(new MultipartRequestFlags(false))
+ .setMultipartRequestBody(makeDefaultMultiLayerBody(type, version))
+ .setVersion(version)
+ .setType(type)
+ .setXid(xid)
+ .build();
}
private static org.opendaylight.yang.gen.v1.urn.opendaylight.multipart.types.rev170112.multipart.request
.build();
case OFPMPAGGREGATE: return new MultipartRequestFlowAggregateStatsBuilder().build();
case OFPMPTABLE: return new MultipartRequestFlowTableStatsBuilder().build();
- case OFPMPPORTSTATS: return new org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics.rev131214.multipart.request.multipart.request.body
- .MultipartRequestPortStatsBuilder().build();
+ case OFPMPPORTSTATS: return new org.opendaylight.yang.gen.v1.urn.opendaylight.port.statistics
+ .rev131214.multipart.request.multipart.request.body.MultipartRequestPortStatsBuilder().build();
case OFPMPQUEUE: return new MultipartRequestQueueStatsBuilder().build();
case OFPMPGROUP: return new MultipartRequestGroupStatsBuilder().build();
case OFPMPGROUPDESC: return new MultipartRequestGroupDescBuilder().build();
case OFPMPGROUPFEATURES: return new MultipartRequestGroupFeaturesBuilder().build();
case OFPMPMETER: return new MultipartRequestMeterStatsBuilder().build();
- case OFPMPMETERCONFIG: return new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics.rev131111.multipart.request.multipart.request.body
- .MultipartRequestMeterConfigBuilder().build();
+ case OFPMPMETERCONFIG: return new org.opendaylight.yang.gen.v1.urn.opendaylight.meter.statistics
+ .rev131111.multipart.request.multipart.request.body.MultipartRequestMeterConfigBuilder().build();
case OFPMPMETERFEATURES: return new MultipartRequestMeterFeaturesBuilder().build();
- case OFPMPTABLEFEATURES: return new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.multipart.request.multipart.request.body
- .MultipartRequestTableFeaturesBuilder().build();
+ case OFPMPTABLEFEATURES: return new org.opendaylight.yang.gen.v1.urn.opendaylight.table.types
+ .rev131026.multipart.request.multipart.request.body.MultipartRequestTableFeaturesBuilder().build();
case OFPMPPORTDESC: return new MultipartRequestPortDescBuilder().build();
case OFPMPEXPERIMENTER: return new MultipartRequestExperimenterBuilder().build();
default:throw new IllegalArgumentException("Unknown MultipartType " + type);
case OFPMPDESC:
return new MultipartRequestDescCaseBuilder().build();
case OFPMPFLOW:
- MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder = new MultipartRequestFlowCaseBuilder();
+ final MultipartRequestFlowCaseBuilder multipartRequestFlowCaseBuilder
+ = new MultipartRequestFlowCaseBuilder();
MultipartRequestFlowBuilder multipartRequestFlowBuilder = new MultipartRequestFlowBuilder();
multipartRequestFlowBuilder.setTableId(OFConstants.OFPTT_ALL);
multipartRequestFlowBuilder.setOutPort(OFConstants.OFPP_ANY);
case OFPMPTABLE:
return new MultipartRequestTableCaseBuilder().build();
case OFPMPPORTSTATS:
- MultipartRequestPortStatsCaseBuilder multipartRequestPortStatsCaseBuilder = new MultipartRequestPortStatsCaseBuilder();
- MultipartRequestPortStatsBuilder multipartRequestPortStatsBuilder = new MultipartRequestPortStatsBuilder();
+ MultipartRequestPortStatsCaseBuilder multipartRequestPortStatsCaseBuilder
+ = new MultipartRequestPortStatsCaseBuilder();
+ MultipartRequestPortStatsBuilder multipartRequestPortStatsBuilder
+ = new MultipartRequestPortStatsBuilder();
multipartRequestPortStatsBuilder.setPortNo(OFConstants.OFPP_ANY);
- multipartRequestPortStatsCaseBuilder.setMultipartRequestPortStats(multipartRequestPortStatsBuilder.build());
+ multipartRequestPortStatsCaseBuilder
+ .setMultipartRequestPortStats(multipartRequestPortStatsBuilder.build());
return multipartRequestPortStatsCaseBuilder.build();
case OFPMPQUEUE:
- MultipartRequestQueueCaseBuilder multipartRequestQueueCaseBuilder = new MultipartRequestQueueCaseBuilder();
+ MultipartRequestQueueCaseBuilder multipartRequestQueueCaseBuilder
+ = new MultipartRequestQueueCaseBuilder();
MultipartRequestQueueBuilder multipartRequestQueueBuilder = new MultipartRequestQueueBuilder();
multipartRequestQueueBuilder.setPortNo(OFConstants.OFPP_ANY);
multipartRequestQueueBuilder.setQueueId(OFConstants.OFPQ_ALL);
multipartRequestQueueCaseBuilder.setMultipartRequestQueue(multipartRequestQueueBuilder.build());
return multipartRequestQueueCaseBuilder.build();
case OFPMPGROUP:
- MultipartRequestGroupCaseBuilder multipartRequestGroupCaseBuilder = new MultipartRequestGroupCaseBuilder();
+ MultipartRequestGroupCaseBuilder multipartRequestGroupCaseBuilder
+ = new MultipartRequestGroupCaseBuilder();
MultipartRequestGroupBuilder multipartRequestGroupBuilder = new MultipartRequestGroupBuilder();
GroupId groupId = new GroupId(OFConstants.OFPG_ALL);
multipartRequestGroupBuilder.setGroupId(groupId);
case OFPMPGROUPFEATURES:
return new MultipartRequestGroupFeaturesCaseBuilder().build();
case OFPMPMETER:
- MultipartRequestMeterCaseBuilder multipartRequestMeterCaseBuilder = new MultipartRequestMeterCaseBuilder();
+ MultipartRequestMeterCaseBuilder multipartRequestMeterCaseBuilder
+ = new MultipartRequestMeterCaseBuilder();
MultipartRequestMeterBuilder multipartRequestMeterBuilder = new MultipartRequestMeterBuilder();
MeterId meterId = new MeterId(OFConstants.OFPM_ALL);
multipartRequestMeterBuilder.setMeterId(meterId);
multipartRequestMeterCaseBuilder.setMultipartRequestMeter(multipartRequestMeterBuilder.build());
return multipartRequestMeterCaseBuilder.build();
case OFPMPMETERCONFIG:
- MultipartRequestMeterConfigCaseBuilder multipartRequestMeterConfigCaseBuilder = new MultipartRequestMeterConfigCaseBuilder();
- MultipartRequestMeterConfigBuilder multipartRequestMeterConfigBuilder = new MultipartRequestMeterConfigBuilder();
+ MultipartRequestMeterConfigCaseBuilder multipartRequestMeterConfigCaseBuilder
+ = new MultipartRequestMeterConfigCaseBuilder();
+ MultipartRequestMeterConfigBuilder multipartRequestMeterConfigBuilder
+ = new MultipartRequestMeterConfigBuilder();
MeterId configMeterId = new MeterId(OFConstants.OFPM_ALL);
multipartRequestMeterConfigBuilder.setMeterId(configMeterId);
- multipartRequestMeterConfigCaseBuilder.setMultipartRequestMeterConfig(multipartRequestMeterConfigBuilder.build());
+ multipartRequestMeterConfigCaseBuilder
+ .setMultipartRequestMeterConfig(multipartRequestMeterConfigBuilder.build());
return multipartRequestMeterConfigCaseBuilder.build();
case OFPMPMETERFEATURES:
return new MultipartRequestMeterFeaturesCaseBuilder().build();
case OFPMPTABLEFEATURES:
- MultipartRequestTableFeaturesCaseBuilder tableFeaturesCaseBuilder = new MultipartRequestTableFeaturesCaseBuilder();
- tableFeaturesCaseBuilder.setMultipartRequestTableFeatures(new MultipartRequestTableFeaturesBuilder().build());
+ MultipartRequestTableFeaturesCaseBuilder tableFeaturesCaseBuilder
+ = new MultipartRequestTableFeaturesCaseBuilder();
+ tableFeaturesCaseBuilder.setMultipartRequestTableFeatures(
+ new MultipartRequestTableFeaturesBuilder().build()
+ );
return tableFeaturesCaseBuilder.build();
case OFPMPPORTDESC:
return new MultipartRequestPortDescCaseBuilder().build();
private static final Logger LOG = LoggerFactory.getLogger(ConfigurationServiceFactory.class);
@Override
- public ConfigurationService newInstance(final OpenflowProviderConfig providerConfig, final BundleContext bundleContext) {
+ public ConfigurationService newInstance(
+ final OpenflowProviderConfig providerConfig,
+ final BundleContext bundleContext) {
return new ConfigurationServiceImpl(providerConfig, bundleContext);
}
.build());
LOG.info("Loading configuration from '{}' configuration file", OFConstants.CONFIG_FILE_ID);
- Optional.ofNullable(bundleContext.getServiceReference(ConfigurationAdmin.class)).ifPresent(serviceReference -> {
- final ConfigurationAdmin configurationAdmin = bundleContext.getService(serviceReference);
-
- try {
- final Configuration configuration = configurationAdmin.getConfiguration(OFConstants.CONFIG_FILE_ID);
-
- Optional.ofNullable(configuration.getProperties()).ifPresent(properties -> {
- final Enumeration<String> keys = properties.keys();
- final Map<String, String> mapProperties = new HashMap<>(properties.size());
-
- while (keys.hasMoreElements()) {
- final String key = keys.nextElement();
- final String value = properties.get(key).toString();
- mapProperties.put(key, value);
+ Optional.ofNullable(bundleContext.getServiceReference(ConfigurationAdmin.class))
+ .ifPresent(serviceReference -> {
+ final ConfigurationAdmin configurationAdmin = bundleContext.getService(serviceReference);
+
+ try {
+ final Configuration configuration
+ = configurationAdmin.getConfiguration(OFConstants.CONFIG_FILE_ID);
+
+ Optional.ofNullable(configuration.getProperties()).ifPresent(properties -> {
+ final Enumeration<String> keys = properties.keys();
+ final Map<String, String> mapProperties = new HashMap<>(properties.size());
+
+ while (keys.hasMoreElements()) {
+ final String key = keys.nextElement();
+ final String value = properties.get(key).toString();
+ mapProperties.put(key, value);
+ }
+
+ update(mapProperties);
+ });
+ } catch (IOException e) {
+ LOG.debug("Failed to load {} configuration file. Error {}", OFConstants.CONFIG_FILE_ID, e);
}
-
- update(mapProperties);
});
- } catch (IOException e) {
- LOG.debug("Failed to load {} configuration file. Error {}", OFConstants.CONFIG_FILE_ID, e);
- }
- });
}
@Override
return;
}
- LOG.info("{} configuration property was changed from '{}' to '{}'", propertyName, originalValue, newValue);
+ LOG.info("{} configuration property was changed from '{}' to '{}'",
+ propertyName,
+ originalValue,
+ newValue);
} else {
if (Objects.isNull(newValue)) {
return;
}
@Override
- public <E extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.openflow.provider.config.rev160510.OpenflowProviderConfig>> E getAugmentation(java.lang.Class<E> augmentationType) {
+ public <E extends Augmentation<org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang
+ .openflow.provider.config.rev160510.OpenflowProviderConfig>> E getAugmentation(
+ java.lang.Class<E> augmentationType) {
return null;
}
MultipartReplyTable replyBody = caseBody.getMultipartReplyTable();
List<TableStats> swTablesStats = replyBody.getTableStats();
+ //TODO: Duplicate code: look at MultiReplyTranslatorUtil method translateTable
for (TableStats swTableStats : swTablesStats) {
FlowTableAndStatisticsMapBuilder statisticsBuilder = new FlowTableAndStatisticsMapBuilder();
statisticsBuilder.setActiveFlows(new Counter32(swTableStats.getActiveCount()));