Merge remote-tracking branch 'origin/master' into merge-branch
[netvirt.git] / neutron / src / main / java / org / opendaylight / ovsdb / neutron / provider / ProviderNetworkManager.java
1 /*
2  * Copyright (C) 2013 Red Hat, Inc.
3  *
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
7  *
8  * Authors : Madhu Venugopal, Brent Salisbury, Dave Tucker
9  */
10 package org.opendaylight.ovsdb.neutron.provider;
11
12 import org.opendaylight.ovsdb.neutron.IAdminConfigManager;
13 import org.opendaylight.ovsdb.neutron.IInternalNetworkManager;
14 import org.opendaylight.ovsdb.neutron.ITenantNetworkManager;
15 import org.slf4j.Logger;
16 import org.slf4j.LoggerFactory;
17
18 public class ProviderNetworkManager implements IProviderNetworkManager {
19     static final Logger logger = LoggerFactory.getLogger(ProviderNetworkManager.class);
20     private NetworkProvider provider;
21     protected static final String OPENFLOW_10 = "1.0";
22     protected static final String OPENFLOW_13 = "1.3";
23
24     // The implementation for each of these services is resolved by the OSGi Service Manager
25     private volatile IAdminConfigManager adminConfigManager;
26     private volatile IInternalNetworkManager internalNetworkManager;
27     private volatile ITenantNetworkManager tenantNetworkManager;
28
29     public NetworkProvider getProvider() {
30         if (provider != null) return provider;
31         String ofVersion = System.getProperty("ovsdb.of.version", OPENFLOW_10);
32         switch (ofVersion) {
33             case OPENFLOW_13:
34                 provider = new OF13Provider(adminConfigManager, internalNetworkManager, tenantNetworkManager);
35                 break;
36             case OPENFLOW_10:
37             default:
38                 provider = new OF10Provider(adminConfigManager, internalNetworkManager, tenantNetworkManager);
39                 break;
40         }
41         return provider;
42     }
43
44 }