1. /*
  2.  * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
  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.  
  9. package org.opendaylight.controller.protocol_plugin.ovsdb.internal;
  10.  
  11. import java.util.ArrayList;
  12. import java.util.LinkedHashMap;
  13. import java.util.List;
  14. import java.util.Map;
  15.  
  16. import org.opendaylight.controller.sal.configuration.IPluginInNetworkConfigurationService;
  17. import org.opendaylight.controller.sal.core.Node;
  18. import org.slf4j.Logger;
  19. import org.slf4j.LoggerFactory;
  20.  
  21. public class ConfigurationService implements IPluginInNetworkConfigurationService
  22. {
  23.     private static final Logger logger = LoggerFactory
  24.             .getLogger(ConfigurationService.class);
  25.  
  26.     IConnectionServiceInternal connectionService;
  27.  
  28.     void init() {
  29.     }
  30.  
  31.     /**
  32.      * Function called by the dependency manager when at least one dependency
  33.      * become unsatisfied or when the component is shutting down because for
  34.      * example bundle is being stopped.
  35.      *
  36.      */
  37.     void destroy() {
  38.     }
  39.  
  40.     /**
  41.      * Function called by dependency manager after "init ()" is called and after
  42.      * the services provided by the class are registered in the service registry
  43.      *
  44.      */
  45.     void start() {
  46.     }
  47.  
  48.     /**
  49.      * Function called by the dependency manager before the services exported by
  50.      * the component are unregistered, this will be followed by a "destroy ()"
  51.      * calls
  52.      *
  53.      */
  54.     void stop() {
  55.     }
  56.  
  57.     public void setConnectionServiceInternal(IConnectionServiceInternal connectionService) {
  58.         this.connectionService = connectionService;
  59.     }
  60.  
  61.     public void unsetConnectionServiceInternal(IConnectionServiceInternal connectionService) {
  62.         if (this.connectionService == connectionService) {
  63.             this.connectionService = null;
  64.         }
  65.     }
  66.  
  67.     @Override
  68.     public boolean createBridgeDomain(Node node, String bridgeIdentifier) {
  69.         if (connectionService == null) {
  70.             logger.error("Couldnt refer to the ConnectionService");
  71.             return false;
  72.         }
  73.         Connection connection = connectionService.getConnection(node);
  74.  
  75.         /*
  76.         ArrayList nulist = new ArrayList();
  77.         ArrayList nulist5 = new ArrayList();
  78.         ArrayList nulist6 = new ArrayList();
  79.         ArrayList nulist4 = new ArrayList();
  80.  
  81.         Map brmap1 = new LinkedHashMap();
  82.         Map opinsert = new LinkedHashMap();
  83.         Map opcomment = new LinkedHashMap();
  84.         Map opmutate = new LinkedHashMap();
  85.  
  86.         ArrayList comarr = new ArrayList();
  87.         ArrayList comarr2 = new ArrayList();
  88.         ArrayList comarr3 = new ArrayList();
  89.         ArrayList comarr4 = new ArrayList();
  90.  
  91.         ArrayList mutwhere = new ArrayList();
  92.         ArrayList mutwhere2 = new ArrayList();
  93.         ArrayList mutwhere3 = new ArrayList();
  94.         ArrayList mutwhere4 = new ArrayList();
  95.         ArrayList mutwhere5 = new ArrayList();
  96.         ArrayList mutwhere6 = new ArrayList();
  97.  
  98.         brmap1.put("op", "insert");
  99.         brmap1.put("table", "Bridge");
  100.         brmap1.put("row", opinsert);
  101.         opinsert.put("external_ids", nulist);
  102.         nulist.add("map");
  103.         nulist.add(nulist4);
  104.         nulist4.add(nulist5);
  105.         nulist4.add(nulist6);
  106.         nulist5.add("brId");
  107.         nulist5.add("11111111-1111-1111-1111-111111111111");
  108.         nulist6.add("engine_test");
  109.         nulist6.add("eTest");
  110.         brmap1.put("uuid-name", "new_bridge");
  111.         opinsert.put("name", bridgeIdentifier);
  112.  
  113.         // Mutate operation
  114.         opmutate.put("op", "mutate");
  115.         opmutate.put("table", "Open_vSwitch");
  116.         opmutate.put("where", mutwhere);
  117.         opmutate.put("mutations", mutwhere2);
  118.         mutwhere2.add(mutwhere3);
  119.         mutwhere3.add("bridges");
  120.         mutwhere3.add("insert");
  121.         mutwhere3.add(mutwhere4);
  122.         mutwhere4.add("set");
  123.         mutwhere4.add(mutwhere5);
  124.         mutwhere5.add(mutwhere6);
  125.         mutwhere6.add("named-uuid");
  126.         mutwhere6.add("new_bridge");
  127.  
  128.         // Comment operation
  129.         opcomment.put("op", "comment");
  130.         opcomment.put("comment", "ovs-vsctl add-br x");
  131. */
  132.         /*
  133.          * Add the 3 operations into the object
  134.          * params along with the db_name OVS
  135.          */
  136.  
  137.  
  138.         // Arrays for JSON Interfaces
  139.         ArrayList intarr1 = new ArrayList();
  140.         ArrayList intarr2 = new ArrayList();
  141.         ArrayList intarr3 = new ArrayList();
  142.         ArrayList intarr4 = new ArrayList();
  143.         ArrayList intarr5 = new ArrayList();
  144.         ArrayList intarr6 = new ArrayList();
  145.         ArrayList intarr7 = new ArrayList();
  146.  
  147.         // Arrays for Port
  148.         ArrayList portarr1 = new ArrayList();
  149.         ArrayList portarr2 = new ArrayList();
  150.         ArrayList portarr3 = new ArrayList();
  151.         ArrayList portarr4 = new ArrayList();
  152.         ArrayList portarr5 = new ArrayList();
  153.         ArrayList portarr6 = new ArrayList();
  154.  
  155.         // Arrays for Bridge
  156.         ArrayList brarr1 = new ArrayList();
  157.         ArrayList brarr2 = new ArrayList();
  158.         ArrayList brarr3 = new ArrayList();
  159.         ArrayList brarr4 = new ArrayList();
  160.         ArrayList brarr5 = new ArrayList();
  161.         ArrayList brarr6 = new ArrayList();
  162.  
  163.         // Maps for JSON Bridge
  164.         Map brmap1 = new LinkedHashMap();
  165.         Map brmap2 = new LinkedHashMap();
  166.  
  167.         // Maps for JSON Port
  168.         Map portmap1 = new LinkedHashMap();
  169.         Map portmap2 = new LinkedHashMap();
  170.  
  171.         // Maps for Update
  172.         Map updtmap1 = new LinkedHashMap();
  173.         Map updtmap2 = new LinkedHashMap();
  174.  
  175.         // Arrays for Update
  176.         ArrayList updtarr1 = new ArrayList();
  177.         ArrayList updtarr2 = new ArrayList();
  178.         ArrayList updtarr3 = new ArrayList();
  179.         ArrayList updtarr4 = new ArrayList();
  180.         ArrayList updtarr5 = new ArrayList();
  181.         ArrayList updtarr6 = new ArrayList();
  182.         ArrayList updtarr7 = new ArrayList();
  183.        
  184.        
  185.         //Maps for Interface Insert
  186.         Map insintmap1 = new LinkedHashMap();
  187.         Map insintmap2 = new LinkedHashMap();
  188.         Map insintmap3 = new LinkedHashMap();
  189.         Map insintmap4 = new LinkedHashMap();
  190.  
  191.         //Arrays for Interface Insert
  192.         ArrayList insintarr1 = new ArrayList();
  193.         ArrayList insintarr2 = new ArrayList();
  194.         ArrayList insintarr3 = new ArrayList();
  195.         ArrayList insintarr4 = new ArrayList();
  196.         ArrayList insintarr5 = new ArrayList();
  197.         ArrayList insintarr6 = new ArrayList();
  198.  
  199.         // Maps for Port Update
  200.         Map insportmap1 = new LinkedHashMap();
  201.         Map insportmap2 = new LinkedHashMap();
  202.  
  203.         // Arrays for Port Update
  204.         ArrayList insportarr1 = new ArrayList();
  205.  
  206.  
  207.         // Arrays for Mutation Op
  208.         ArrayList mutearr1 = new ArrayList();
  209.         ArrayList mutearr2 = new ArrayList();
  210.         ArrayList mutearr3 = new ArrayList();
  211.         ArrayList mutearr4 = new ArrayList();
  212.         ArrayList mutearr5 = new ArrayList();
  213.  
  214.         // Maps for Mutate Op
  215.         Map mutemap1 = new LinkedHashMap();
  216.  
  217.         // Arrays for Op Select OVS
  218.         ArrayList opselarr1 = new ArrayList();
  219.         ArrayList opselarr2 = new ArrayList();
  220.         ArrayList opselarr3 = new ArrayList();
  221.         ArrayList opselarr4 = new ArrayList();
  222.        
  223.         // Maps for Op Select OVS
  224.         Map opselmap1 = new LinkedHashMap();
  225.        
  226.         // HMaps for JSON Interface
  227.         Map intmap1 = new LinkedHashMap();
  228.         Map intmap2 = new LinkedHashMap();
  229.         Map intmap3 = new LinkedHashMap();
  230.         Map intmap4 = new LinkedHashMap();
  231.        
  232.         // Arrays for  JSON Open_vSwitch Table
  233.         ArrayList ovsarr1 = new ArrayList();
  234.         ArrayList ovsarr2 = new ArrayList();
  235.         ArrayList ovsarr3 = new ArrayList();
  236.         ArrayList ovsarr4 = new ArrayList();
  237.        
  238.         // HMaps for JSON Open_vSwitch Table
  239.         Map ovsmap1 = new LinkedHashMap();
  240.         Map ovsmap2 = new LinkedHashMap();
  241.         Map ovsmap3 = new LinkedHashMap();
  242.         Map ovsmap4 = new LinkedHashMap();
  243.  
  244.         // Array for Comment
  245.         ArrayList commarr5 = new ArrayList();
  246.  
  247.         // Maps for Comment
  248.         Map commmap1 = new LinkedHashMap();
  249.        
  250.        //OVSDB Server Defined UUIDs
  251.        String intuuid = "e7c6fc73-a4a1-4d7d-b6b7-eb2e0d2fa900";
  252.        String bridgetabluuid = "435de935-54e2-474d-aba6-cb85468fcc65";
  253.        String portabluuid = "5aa60514-8a65-4739-8ea9-46fb1906a7ed";
  254.        String ovstbluuid = "2cfdf9dd-e2a3-46b9-b09d-fbc68f23bc5d";
  255.      
  256.         //OVS User Defined Port Name
  257.         String ovsbridgename = "br1";
  258.  
  259.         //Array for printing only
  260.         ArrayList print = new ArrayList();
  261.        
  262.         //Rows Bridge Set
  263.         intmap1.put("rows", intarr1);
  264.         intarr1.add(intmap2);
  265.         intmap2.put("bridges", intarr2);
  266.         intarr2.add("set");
  267.         intarr2.add(intarr3);
  268.         intmap1.put("until", "==");
  269.         intmap1.put("table", "Open_vSwitch");
  270.         intmap1.put("op", "wait");
  271.         intmap1.put("timeout", 0);
  272.         intmap1.put("where", intarr4);
  273.         intarr4.add(intarr5);
  274.         intarr5.add("_uuid");
  275.         intarr5.add("==");
  276.         intarr5.add(intarr6);
  277.         intarr6.add("uuid");
  278.         intarr6.add(ovstbluuid);
  279.         intmap1.put("columns", intarr7);
  280.         intarr7.add("bridges");
  281.        
  282.         //Table OVS update
  283.         ovsmap1.put("table", "Open_vSwitch");
  284.         ovsmap1.put("where", ovsarr1);
  285.         ovsarr1.add(ovsarr2);
  286.         ovsarr2.add("_uuid");
  287.         ovsarr2.add("==");
  288.         ovsarr2.add(ovsarr3);
  289.         ovsarr3.add("uuid");
  290.         ovsarr3.add(ovstbluuid);
  291.         ovsmap1.put("op", "update");
  292.         ovsmap1.put("row", ovsmap3);
  293.         ovsmap3.put("bridges", ovsarr4);
  294.         ovsarr4.add("named-uuid");
  295.         ovsarr4.add("row64781566_ce8a_447a_a762_8835ebd42a9b");
  296.        
  297.         //Table Interface Insert
  298.         insintmap1.put("table","Interface");
  299.         insintmap1.put("uuid-name","rowe943d8f1_411c_4c3f_bad4_131ed80e4dfc");
  300.         insintmap1.put("op", "insert");
  301.         insintmap1.put("row", insintmap2);
  302.         insintmap2.put("name", ovsbridgename);
  303.         insintmap2.put("type", "internal");
  304.        
  305.         //Bridge Table Inser
  306.         brmap1.put("table","Bridge");
  307.         brmap1.put("uuid-name","row64781566_ce8a_447a_a762_8835ebd42a9b");
  308.         brmap1.put("op", "insert");
  309.         brmap1.put("row", brmap2);
  310.         brmap2.put("name", ovsbridgename);
  311.         brmap2.put("ports", brarr1);
  312.         brarr1.add("named-uuid");
  313.         brarr1.add("row54bfd27e_8744_4f6a_a9e4_f982404de816");
  314.        
  315.         //Port Table Inser
  316.         portmap1.put("table","Port");
  317.         portmap1.put("uuid-name","row54bfd27e_8744_4f6a_a9e4_f982404de816");
  318.         portmap1.put("op", "insert");
  319.         portmap1.put("row", portmap2);
  320.         portmap2.put("interfaces", portarr1);
  321.         portarr1.add("named-uuid");
  322.         portarr1.add("rowe943d8f1_411c_4c3f_bad4_131ed80e4dfc");
  323.         portmap2.put("name", ovsbridgename);
  324.  
  325.         //Op Mutate Open_vSwtich table
  326.         mutemap1.put("mutations", mutearr1);
  327.         mutearr1.add(mutearr2);
  328.         mutearr2.add("next_cfg");
  329.         mutearr2.add("+=");
  330.         mutearr2.add(1);
  331.         mutemap1.put("table", "Open_vSwitch");
  332.         mutemap1.put("op", "mutate");
  333.         mutemap1.put("where", mutearr3);
  334.         mutearr3.add(mutearr4);
  335.         mutearr4.add("_uuid");
  336.         mutearr4.add("==");
  337.         mutearr4.add(mutearr5);
  338.         mutearr5.add("uuid");
  339.         mutearr5.add("2cfdf9dd-e2a3-46b9-b09d-fbc68f23bc5d");
  340.  
  341.         //Op Select OVS
  342.         opselmap1.put("table", "Open_vSwitch");
  343.         opselmap1.put("where", opselarr1);
  344.         opselarr1.add(opselarr2);
  345.         opselarr2.add("_uuid");
  346.         opselarr2.add("==");
  347.         opselarr2.add(opselarr3);
  348.         opselarr3.add("uuid");                
  349.         opselarr3.add("2cfdf9dd-e2a3-46b9-b09d-fbc68f23bc5d");  
  350.         opselmap1.put("op", "select");
  351.         opselmap1.put("columns", opselarr4);
  352.         opselarr4.add("next_cfg");
  353.        
  354.         //Comment
  355.         commmap1.put("comment", "ovs-vsctl: ovs-vsctl --db=tcp:172.16.58.170:6634 add-br " + ovsbridgename);
  356.         commmap1.put("op", "comment");
  357.        
  358.         Object[] params = { "Open_vSwitch", intmap1, ovsmap1, insintmap1, brmap1, portmap1, mutemap1, opselmap1, commmap1};
  359.  
  360.        
  361.         OvsdbMessage message = new OvsdbMessage("transact", params, "efg");
  362.         try {
  363.             connection.sendMessage(message);
  364.             connection.readResponse(String[].class);
  365.         } catch (Exception e) {
  366.             // TODO Auto-generated catch block
  367.             e.printStackTrace();
  368.             return false;
  369.         } catch (Throwable e) {
  370.             // TODO Auto-generated catch block
  371.             e.printStackTrace();
  372.             return false;
  373.         }
  374.         return true;
  375.     }
  376.  
  377.     @Override
  378.     public boolean deleteBridgeDomain(Node node, String bridgeIdentifier) {
  379.         // TODO Auto-generated method stub
  380.         return false;
  381.     }
  382.  
  383.     @Override
  384.     public List<String> getBridgeDomains(Node node) {
  385.         // TODO Auto-generated method stub
  386.         return null;
  387.     }
  388.  
  389.     @Override
  390.     public boolean addBridgeDomainConfig(Node node, String bridgeIdentifier, Map<String, String> config) {
  391.         // TODO Auto-generated method stub
  392.         return false;
  393.     }
  394.  
  395.     @Override
  396.     public boolean removeBridgeDomainConfig(Node node, String bridgeIdentifier, Map<String, String> config) {
  397.         // TODO Auto-generated method stub
  398.         return false;
  399.     }
  400.  
  401.     @Override
  402.     public Map<String, String> getBridgeDomainConfigs(Node node, String bridgeIdentifier) {
  403.         // TODO Auto-generated method stub
  404.         return null;
  405.     }
  406.  
  407.     @Override
  408.     public boolean createBridgeConnector(Node node, String bridgeConnectorIdentifier) {
  409.         // TODO Auto-generated method stub
  410.         return false;
  411.     }
  412.  
  413.     @Override
  414.     public boolean deleteBridgeConnector(Node node, String bridgeConnectorIdentifier) {
  415.         // TODO Auto-generated method stub
  416.         return false;
  417.     }
  418.  
  419.     @Override
  420.     public boolean associateBridgeConnector(Node node, String bridgeIdentifier, String bridgeConnectorIdentifier) {
  421.        
  422.         if (connectionService == null) {
  423.             logger.error("Couldnt refer to the ConnectionService");
  424.             return false;
  425.         }
  426.         Connection connection = connectionService.getConnection(node);
  427.  
  428.         //OVSDB Server Defined UUIDs
  429.         String intuuid = "e8f6eeaa-c5f9-47dd-90ff-e729077bccef";
  430.         String bridgetabluuid = "d80726a3-3a66-45dc-9f80-05a54499ced8";
  431.         String portabluuid = "e4eeec4e-a087-4fba-b780-6bc10d187140";
  432.         String ovstbluuid = "2cfdf9dd-e2a3-46b9-b09d-fbc68f23bc5d";
  433.        
  434.        
  435.         //OVS User Defined Port Name
  436.         String ovsportname = "vnic0";
  437.  
  438.         //Array for printing only
  439.         ArrayList printout = new ArrayList();
  440.        
  441.         //Arrays for JSON obj
  442.         ArrayList intarr0 = new ArrayList();
  443.         ArrayList intarr1 = new ArrayList();
  444.         ArrayList intarr2 = new ArrayList();
  445.         ArrayList intarr3 = new ArrayList();
  446.         ArrayList intarr4 = new ArrayList();
  447.         ArrayList intarr5 = new ArrayList();
  448.         ArrayList intarr6 = new ArrayList();
  449.         ArrayList intarr7 = new ArrayList();
  450.         ArrayList intarr8 = new ArrayList();
  451.         ArrayList intarr9 = new ArrayList();
  452.         ArrayList intarr10 = new ArrayList();  
  453.         ArrayList intarr11 = new ArrayList();  
  454.         ArrayList intarr12 = new ArrayList();  
  455.         ArrayList intarr13 = new ArrayList();  
  456.         ArrayList intarr14 = new ArrayList();  
  457.        
  458.         //Arrays for Port
  459.     ArrayList portarr6 = new ArrayList();
  460.         ArrayList portarr7 = new ArrayList();
  461.         ArrayList portarr8 = new ArrayList();
  462.         ArrayList portarr9 = new ArrayList();
  463.     ArrayList portarr10 = new ArrayList();
  464.         ArrayList portarr11 = new ArrayList();
  465.        
  466.         //Arrays for Bridge
  467.     ArrayList brarr6 = new ArrayList();
  468.         ArrayList brarr7 = new ArrayList();
  469.         ArrayList brarr8 = new ArrayList();
  470.         ArrayList brarr9 = new ArrayList();
  471.     ArrayList brarr10 = new ArrayList();
  472.         ArrayList brarr11 = new ArrayList();
  473.        
  474.         //Maps for JSON Port
  475.         Map intmap0 = new LinkedHashMap();
  476.         Map intmap1 = new LinkedHashMap();
  477.         Map intmap2 = new LinkedHashMap();
  478.         Map intmap3 = new LinkedHashMap();
  479.         Map intmap4 = new LinkedHashMap();
  480.         Map intmap5 = new LinkedHashMap();
  481.         Map intmap6 = new LinkedHashMap();
  482.         Map intmap7 = new LinkedHashMap();
  483.         Map intmap8 = new LinkedHashMap();
  484.        
  485.         //Maps for JSON Bridge
  486.         Map brmap2 = new LinkedHashMap();
  487.         Map brmap3 = new LinkedHashMap();
  488.        
  489.         //Maps for JSON Port
  490.         Map portmap2 = new LinkedHashMap();
  491.         Map portmap3 = new LinkedHashMap();
  492.        
  493.         //Maps for Update
  494.         Map updtmap1 = new LinkedHashMap();
  495.         Map updtmap2 = new LinkedHashMap();
  496.  
  497.        
  498.         //Arrays for Update
  499.     ArrayList updtarr1 = new ArrayList();
  500.         ArrayList updtarr2 = new ArrayList();
  501.         ArrayList updtarr3 = new ArrayList();
  502.     ArrayList updtarr4 = new ArrayList();
  503.     ArrayList updtarr5 = new ArrayList();
  504.     ArrayList updtarr6 = new ArrayList();
  505.     ArrayList updtarr7 = new ArrayList();
  506.          
  507.         //Maps for Port Update
  508.         Map insportmap1 = new LinkedHashMap();
  509.         Map insportmap2 = new LinkedHashMap();
  510.         Map insportmap3 = new LinkedHashMap();
  511.         Map insportmap4 = new LinkedHashMap();
  512.  
  513.         //Arrays for Port Update
  514.     ArrayList insportarr1 = new ArrayList();
  515.         ArrayList insportarr2 = new ArrayList();
  516.         ArrayList insportarr3 = new ArrayList();
  517.     ArrayList insportarr4 = new ArrayList();
  518.     ArrayList insportarr5 = new ArrayList();
  519.     ArrayList insportarr6 = new ArrayList();
  520.    
  521.         //Maps for Interface Update
  522.         Map insintmap1 = new LinkedHashMap();
  523.         Map insintmap2 = new LinkedHashMap();
  524.         Map insintmap3 = new LinkedHashMap();
  525.         Map insintmap4 = new LinkedHashMap();
  526.  
  527.         //Arrays for Interface Update
  528.     ArrayList insintarr1 = new ArrayList();
  529.         ArrayList insintarr2 = new ArrayList();
  530.         ArrayList insintarr3 = new ArrayList();
  531.     ArrayList insintarr4 = new ArrayList();
  532.     ArrayList insintarr5 = new ArrayList();
  533.     ArrayList insintarr6 = new ArrayList();
  534.    
  535.    
  536.     //Arrays for Mutation Op
  537.     ArrayList mutearr1 = new ArrayList();
  538.         ArrayList mutearr2 = new ArrayList();
  539.         ArrayList mutearr3 = new ArrayList();
  540.     ArrayList mutearr4 = new ArrayList();
  541.     ArrayList mutearr5 = new ArrayList();
  542.     ArrayList mutearr6 = new ArrayList();
  543.    
  544.         //Maps for Mutate Op
  545.         Map mutemap1 = new LinkedHashMap();
  546.         Map mutemap2 = new LinkedHashMap();
  547.         Map mutemap3 = new LinkedHashMap();
  548.         Map mutemap4 = new LinkedHashMap();
  549.        
  550.     //Arrays for Op Select OVS
  551.     ArrayList opselarr1 = new ArrayList();
  552.         ArrayList opselarr2 = new ArrayList();
  553.         ArrayList opselarr3 = new ArrayList();
  554.     ArrayList opselarr4 = new ArrayList();
  555.     ArrayList opselarr5 = new ArrayList();
  556.        
  557.         //Maps for Op Select OVS
  558.         Map opselmap1 = new LinkedHashMap();
  559.        
  560.         //Array for Comment
  561.     ArrayList commarr5 = new ArrayList();
  562.        
  563.         //Maps for Comment
  564.         Map commmap1 = new LinkedHashMap();
  565.        
  566.        //Interface
  567.         intmap0.put("rows", intarr0);
  568.         intarr0.add(intmap1);
  569.         intmap1.put("interfaces", intarr1);
  570.         intarr1.add("uuid");
  571.         intarr1.add(intuuid);
  572.         intmap0.put("until", "==");
  573.         intmap0.put("table", "Port");
  574.         intmap0.put("op", "wait");
  575.         intmap0.put("timeout", 0);
  576.         intmap0.put("where", intarr2);
  577.         intarr2.add(intarr3);
  578.         intarr3.add("_uuid");
  579.         intarr3.add("==");     
  580.         intarr3.add(intarr4);
  581.         intarr4.add("uuid");       
  582.         intarr4.add(portabluuid);
  583.         intmap0.put("columns", intarr5);
  584.         intarr5.add("interfaces");
  585.        
  586.         //Bridge
  587.         brmap2.put("rows", brarr6);
  588.         brarr6.add(brmap3);
  589.         brarr7.add("uuid");
  590.         brarr7.add(bridgetabluuid);
  591.         brmap3.put("bridges", brarr7);
  592.         brmap2.put("until", "==");
  593.         brmap2.put("table", "Open_vSwitch");
  594.         brmap2.put("op", "wait");
  595.         brmap2.put("timeout", 0);
  596.         brmap2.put("where", brarr8);
  597.         brarr8.add(brarr9);
  598.         brarr9.add("_uuid");
  599.         brarr9.add("==");
  600.         brarr9.add(brarr10);
  601.         brarr10.add("uuid");
  602.         brarr10.add(ovstbluuid);
  603.         brmap2.put("columns", brarr11);
  604.         brarr11.add("bridges");
  605.        
  606.         //Ports
  607.         portmap2.put("rows", portarr6);
  608.         portarr6.add(portmap3);
  609.         portarr7.add("uuid");
  610.         portarr7.add(portabluuid);
  611.         portmap3.put("ports", portarr7);
  612.         portmap2.put("until", "==");
  613.         portmap2.put("table", "Bridge");
  614.         portmap2.put("op", "wait");
  615.         portmap2.put("timeout", 0);
  616.         portmap2.put("where", portarr8);
  617.         portarr8.add(portarr9);
  618.         portarr9.add("_uuid");
  619.         portarr9.add("==");
  620.         portarr9.add(portarr10);
  621.         portarr10.add("uuid");
  622.         portarr10.add(bridgetabluuid);
  623.         portmap2.put("columns", portarr11);
  624.         portarr11.add("ports");
  625.        
  626.         //Update
  627.         updtmap1.put("where", updtarr1);
  628.         updtarr1.add(updtarr2);
  629.         updtarr2.add("_uuid");
  630.         updtarr2.add("==");
  631.         updtarr2.add(updtarr3);
  632.         updtarr3.add("uuid");
  633.         updtarr3.add(bridgetabluuid);
  634.         updtmap1.put("op", "update");
  635.         updtmap1.put("table", "Bridge");
  636.         updtmap1.put("row", updtmap2);
  637.         updtmap2.put("ports", updtarr4);
  638.         updtarr4.add("set");
  639.         updtarr4.add(updtarr5);
  640.         updtarr5.add(updtarr6);
  641.         updtarr6.add("uuid");
  642.         updtarr6.add(portabluuid);
  643.         updtarr5.add(updtarr7);
  644.         updtarr7.add("named-uuid");
  645.         updtarr7.add("rowc1ee45e7_e736_4cd2_8e30_55a460d0f11a");
  646.        
  647.        
  648.        
  649.         //Insert Port
  650.         insportmap1.put("uuid-name", "rowc1ee45e7_e736_4cd2_8e30_55a460d0f11a");
  651.         insportmap1.put("op", "insert");
  652.         insportmap1.put("table", "Port");
  653.         insportmap1.put("row", insportmap2);
  654.         insportmap2.put("interfaces", insportarr1);
  655.         insportarr1.add("named-uuid");
  656.         insportarr1.add("row50c0ab47_0077_4ac3_8d84_8b1906a39947");
  657.         insportmap2.put("name", ovsportname);
  658.        
  659.  
  660.         //Insert Interface
  661.         insintmap1.put("uuid-name", "row50c0ab47_0077_4ac3_8d84_8b1906a39947");
  662.         insintmap1.put("op", "insert");
  663.         insintmap1.put("table", "Interface");
  664.         insintmap1.put("row", insintmap2);
  665.         insintmap2.put("name", ovsportname);
  666.        
  667.         //Mutation Op
  668.         mutemap1.put("mutations", mutearr1);
  669.         mutearr1.add(mutearr2);
  670.         mutearr2.add("next_cfg");
  671.         mutearr2.add("+=");
  672.         mutearr2.add(1);
  673.         mutemap1.put("table", "Open_vSwitch");
  674.         mutemap1.put("op", "mutate");
  675.         mutemap1.put("where", mutearr3);
  676.         mutearr3.add(mutearr4);
  677.         mutearr4.add("_uuid");
  678.         mutearr4.add("==");
  679.         mutearr4.add(mutearr5);
  680.         mutearr5.add("uuid");
  681.         mutearr5.add(ovstbluuid);
  682.         opselmap1.put("where", opselarr1);
  683.         opselarr1.add(opselarr2);
  684.         opselarr2.add("_uuid");
  685.         opselarr2.add("==");
  686.         opselarr2.add(opselarr3);
  687.         opselarr3.add("uuid");
  688.         opselarr3.add(ovstbluuid);
  689.         opselmap1.put("op", "select");
  690.         opselmap1.put("table", "Open_vSwitch");
  691.         opselmap1.put("columns", opselarr4);
  692.         opselarr4.add("next_cfg");
  693.        
  694.         //Comment
  695.         commmap1.put("comment", "ovs-vsctl: ovs-vsctl -vjsonrpc --db=tcp:172.16.58.170:6634 add-port br0 vnic0");
  696.         commmap1.put("op", "comment");
  697.  
  698.          Object[] params = { "Open_vSwitch", intmap0, brmap2, portmap2, updtmap1, insportmap1, insintmap1, mutemap1, opselmap1, commmap1};
  699.  
  700.            
  701.             OvsdbMessage message = new OvsdbMessage("transact", params, "efg");
  702.             try {
  703.                 connection.sendMessage(message);
  704.                 connection.readResponse(String[].class);
  705.             } catch (Exception e) {
  706.                 // TODO Auto-generated catch block
  707.                 e.printStackTrace();
  708.                 return false;
  709.             } catch (Throwable e) {
  710.                 // TODO Auto-generated catch block
  711.                 e.printStackTrace();
  712.                 return false;
  713.             }
  714.             return true;
  715.     }
  716.  
  717.     @Override
  718.     public boolean disassociateBridgeConnector(Node node, String bridgeIdentifier, String bridgeConnectorIdentifier) {
  719.         // TODO Auto-generated method stub
  720.         return false;
  721.     }
  722.  
  723.     @Override
  724.     public boolean addBridgeConnectorConfig(Node node, String bridgeConnectorIdentifier, Map<String, String> config) {
  725.         // TODO Auto-generated method stub
  726.         return false;
  727.     }
  728.  
  729.     @Override
  730.     public boolean removeBridgeConnectorConfig(Node node, String bridgeConnectorIdentifier, Map<String, String> config) {
  731.         // TODO Auto-generated method stub
  732.         return false;
  733.     }
  734.  
  735.     @Override
  736.     public Map<String, String> getBridgeConnectorConfigs(Node node, String bridgeConnectorIdentifier) {
  737.         // TODO Auto-generated method stub
  738.         return null;
  739.     }
  740.  
  741.     @Override
  742.     public Object genericConfigurationEvent(Node node, Map<String, String> config) {
  743.         // TODO Auto-generated method stub
  744.         return null;
  745.     }
  746.  
  747.   }
  748.  
  749.  
  750.  
  751.  
  752.  
  753.  
  754. ==============================OvsdbTestAddBridge Junit=========================================
  755.  
  756.  
  757. package org.opendaylight.controller.protocol_plugin.ovsdb;
  758.  
  759. import java.io.IOException;
  760. import java.util.HashMap;
  761. import java.util.Map;
  762. import org.junit.Test;
  763. import org.opendaylight.controller.protocol_plugin.ovsdb.internal.ConfigurationService;
  764. import org.opendaylight.controller.protocol_plugin.ovsdb.internal.ConnectionService;
  765. import org.opendaylight.controller.sal.connection.ConnectionConstants;
  766. import org.opendaylight.controller.sal.core.Node;
  767. import org.opendaylight.controller.sal.core.NodeConnector;
  768. import org.slf4j.Logger;
  769. import org.slf4j.LoggerFactory;
  770.  
  771.  
  772.  
  773. public class OvsdbTestAddBridge {
  774.     private static final Logger logger = LoggerFactory
  775.             .getLogger(OvsdbTestAddBridge.class);
  776.  
  777.     //@Test
  778.     public void addBridgeDomain() throws IOException, Throwable {
  779.         Node.NodeIDType.registerIDType("OVS", String.class);
  780.         NodeConnector.NodeConnectorIDType.registerIDType("OVS", String.class, "OVS");
  781.  
  782.         ConnectionService connectionService = new ConnectionService();
  783.         connectionService.init();
  784.         String identifier = "TEST";
  785.         Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();
  786.         params.put(ConnectionConstants.ADDRESS, "172.16.58.170");
  787.  
  788.         Node node = connectionService.connect(identifier, params);
  789.         if (node == null) {
  790.             logger.error("Could not connect to ovsdb server");
  791.             return;
  792.         }
  793.  
  794.         ConfigurationService configurationService = new ConfigurationService();
  795.         configurationService.setConnectionServiceInternal(connectionService);
  796.         configurationService.createBridgeDomain(node, "JUNIT_BRIDGE_TEST");
  797.     }
  798.    
  799.     @Test
  800.     public void addPort() throws IOException, Throwable {
  801.         Node.NodeIDType.registerIDType("OVS", String.class);
  802.         NodeConnector.NodeConnectorIDType.registerIDType("OVS", String.class, "OVS");
  803.  
  804.         ConnectionService connectionService = new ConnectionService();
  805.         connectionService.init();
  806.         String identifier = "TEST";
  807.         Map<ConnectionConstants, String> params = new HashMap<ConnectionConstants, String>();
  808.         params.put(ConnectionConstants.ADDRESS, "172.16.58.170");
  809.  
  810.         Node node = connectionService.connect(identifier, params);
  811.         if (node == null) {
  812.             logger.error("Could not connect to ovsdb server");
  813.             return;
  814.         }
  815.  
  816.         ConfigurationService configurationService = new ConfigurationService();
  817.         configurationService.setConnectionServiceInternal(connectionService);
  818.         configurationService.associateBridgeConnector(node, "JUNIT_BRIDGE_TEST", "vnic0");
  819.     }
  820. }