2 * Copyright (C) 2015 Red Hat, Inc.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 * Authors : Flavio Fernandes
10 package org.opendaylight.ovsdb.openstack.netvirt.impl;
12 import com.google.common.collect.Lists;
13 import org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent;
14 import org.opendaylight.ovsdb.openstack.netvirt.AbstractHandler;
15 import org.opendaylight.ovsdb.openstack.netvirt.NodeCacheManagerEvent;
16 import org.opendaylight.ovsdb.openstack.netvirt.api.Action;
17 import org.opendaylight.ovsdb.openstack.netvirt.api.NodeCacheManager;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
19 import org.slf4j.Logger;
20 import org.slf4j.LoggerFactory;
22 import java.util.List;
24 public class NodeCacheManagerImpl extends AbstractHandler
25 implements NodeCacheManager {
27 private static final Logger logger = LoggerFactory.getLogger(NodeCacheManagerImpl.class);
28 private List<Node> nodeCache = Lists.newArrayList();
32 public void nodeAdded(String nodeIdentifier) {
33 logger.info("XXX >>>>> enqueue: Node added : {}", nodeIdentifier);
34 logger.debug(">>>>> enqueue: Node added : {}", nodeIdentifier);
35 enqueueEvent(new NodeCacheManagerEvent(nodeIdentifier, Action.ADD));
38 public void nodeRemoved(String nodeIdentifier) {
39 logger.info("XXX >>>>> enqueue: Node removed : {}", nodeIdentifier);
40 logger.debug(">>>>> enqueue: Node removed : {}", nodeIdentifier);
41 enqueueEvent(new NodeCacheManagerEvent(nodeIdentifier, Action.DELETE));
44 public List<Node> getNodes() {
48 void doNodeAdded(Node node) {
50 logger.info("XXXX added node {}. cache is now {}", node, nodeCache);
52 void doNodeRemoved(Node node) {
53 nodeCache.remove(node);
54 logger.info("XXXX removed node {}. cache is now {}", node, nodeCache);
60 * @param abstractEvent the {@link org.opendaylight.ovsdb.openstack.netvirt.AbstractEvent} event to be handled.
61 * @see org.opendaylight.ovsdb.openstack.netvirt.api.EventDispatcher
64 public void processEvent(AbstractEvent abstractEvent) {
65 if (!(abstractEvent instanceof NodeCacheManagerEvent)) {
66 logger.error("Unable to process abstract event " + abstractEvent);
69 NodeCacheManagerEvent ev = (NodeCacheManagerEvent) abstractEvent;
70 logger.debug(">>>>> dequeue: {}", ev);
71 switch (ev.getAction()) {
73 doNodeAdded(NodeUtils.getOpenFlowNode(ev.getNodeIdentifier()));
76 doNodeRemoved(NodeUtils.getOpenFlowNode(ev.getNodeIdentifier()));
81 logger.warn("Unable to process event action " + ev.getAction());