Refactor of the OVSDB Plugin
[ovsdb.git] / plugin / src / main / java / org / opendaylight / ovsdb / plugin / api / OvsVswitchdSchemaConstants.java
1 /*
2  * Copyright (C) 2014 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
9  */
10
11 package org.opendaylight.ovsdb.plugin.api;
12
13 import java.util.Map;
14
15 import com.google.common.collect.Maps;
16
17 public final class OvsVswitchdSchemaConstants {
18     public static String DATABASE_NAME = "Open_vSwitch";
19
20     private static final String OVSDB_AUTOCONFIGURECONTROLLER = "ovsdb.autoconfigurecontroller";
21     private static final boolean defaultAutoConfigureController = true;
22     private static boolean autoConfigureController = defaultAutoConfigureController;
23
24     private static Map<String, String[]> columnToMutate = Maps.newHashMap();
25     public static String[] getParentColumnToMutate(String childTabletoInsert) {
26         return columnToMutate.get(childTabletoInsert);
27     }
28     private static void addParentColumnToMutate(String childTable, String parentTable, String columnName) {
29         String[] parentColumn = {parentTable, columnName};
30         columnToMutate.put(childTable, parentColumn);
31     }
32
33     static {
34         addParentColumnToMutate("Bridge", "Open_vSwitch", "bridges");
35         addParentColumnToMutate("Port", "Bridge", "ports");
36         addParentColumnToMutate("Interface", "Port", "interfaces");
37         addParentColumnToMutate("SSL", "Open_vSwitch", "ssl");
38         addParentColumnToMutate("IPFIX", "Bridge", "ipfix");
39         addParentColumnToMutate("sFlow", "Bridge", "sflow");
40         addParentColumnToMutate("Flow_Table", "Bridge", "flow_tables");
41         addParentColumnToMutate("QoS", "Port", "qos");
42         addParentColumnToMutate("NetFlow", "Bridge", "netflow");
43         addParentColumnToMutate("Mirror", "Bridge", "mirrors");
44         addParentColumnToMutate("Manager", "Open_vSwitch", "manager_options");
45         addParentColumnToMutate("Controller", "Bridge", "controller");
46         // Keep the default value if the property is not set
47         if (System.getProperty(OVSDB_AUTOCONFIGURECONTROLLER) != null)
48             autoConfigureController = Boolean.getBoolean(OVSDB_AUTOCONFIGURECONTROLLER);
49     }
50
51     public static boolean shouldConfigureController (String databaseName, String tableName) {
52         if (autoConfigureController && databaseName.equals(DATABASE_NAME) && tableName.equals("Bridge")) return true;
53         return false;
54     }
55
56     public enum PortType {
57         VLAN("vlan"),
58         TUNNEL("Tunnel"),
59         BONDING("Bonding"),
60         PATCH("patch"),
61         INTERNAL("internal");
62
63         private PortType(String name) {
64             this.name = name;
65         }
66
67         private String name;
68
69         @Override
70         public String toString() {
71             return name;
72         }
73     }
74
75 }