Bump up openstack4j to 3.1.0 with dependency updated

Change-Id: If8bef8a9e9ebd71b32433555bfdaed406f7e40c3
diff --git a/apps/openstacknetworking/BUCK b/apps/openstacknetworking/BUCK
index 4a5d19c..f6a3a5d 100644
--- a/apps/openstacknetworking/BUCK
+++ b/apps/openstacknetworking/BUCK
@@ -1,14 +1,20 @@
 COMPILE_DEPS = [
-  '//lib:CORE_DEPS',
-  '//lib:JACKSON',
-  '//lib:KRYO',
-  '//core/store/serializers:onos-core-serializers',
-  '//lib:org.apache.karaf.shell.console',
-  '//lib:javax.ws.rs-api',
-  '//utils/rest:onlab-rest',
-  '//cli:onos-cli',
-  '//apps/openstacknode/api:onos-apps-openstacknode-api',
-  '//lib:openstack4j-core',
+    '//lib:CORE_DEPS',
+    '//lib:JACKSON',
+    '//lib:KRYO',
+    '//core/store/serializers:onos-core-serializers',
+    '//lib:org.apache.karaf.shell.console',
+    '//lib:javax.ws.rs-api',
+    '//utils/rest:onlab-rest',
+    '//cli:onos-cli',
+    '//apps/openstacknode/api:onos-apps-openstacknode-api',
+    '//lib:openstack4j-core',
+    '//lib:openstack4j-http-connector',
+    '//lib:openstack4j-httpclient',
+    '//lib:json-patch',
+    '//lib:jackson-coreutils',
+    '//lib:btf',
+    '//lib:msg-simple',
 ]
 
 TEST_DEPS = [
@@ -17,23 +23,43 @@
     '//core/common:onos-core-common-tests',
 ]
 
+BUNDLES = [
+    '//apps/openstacknetworking:onos-apps-openstacknetworking',
+]
+
+EXCLUDED_BUNDLES = [
+    '//lib:openstack4j-core',
+    '//lib:openstack4j-http-connector',
+    '//lib:openstack4j-httpclient',
+    '//lib:json-patch',
+    '//lib:jackson-coreutils',
+    '//lib:btf',
+    '//lib:msg-simple',
+    '//lib:spifly-bundle',
+    '//lib:spifly-weaver',
+    '//lib:spifly-core',
+    '//lib:aries-util',
+]
+
 osgi_jar_with_tests (
-  deps = COMPILE_DEPS,
-  test_deps = TEST_DEPS,
-  web_context = '/onos/openstacknetworking',
-  api_title = 'OpenStack Networking API',
-  api_version = '1.0',
-  api_description = 'REST API for OpenStack Networking',
-  api_package = 'org.onosproject.openstacknetworking.web',
+    deps = COMPILE_DEPS,
+    test_deps = TEST_DEPS,
+    web_context = '/onos/openstacknetworking',
+    api_title = 'OpenStack Networking API',
+    api_version = '1.0',
+    api_description = 'REST API for OpenStack Networking',
+    api_package = 'org.onosproject.openstacknetworking.web',
 )
 
 onos_app (
-  app_name = 'org.onosproject.openstacknetworking',
-  title = 'OpenStack Networking',
-  category = 'Utility',
-  url = 'http://onosproject.org',
-  description = 'OpenStack Networking application.',
-  required_apps = [
-    'org.onosproject.openstacknode'
-  ]
+    app_name = 'org.onosproject.openstacknetworking',
+    title = 'OpenStack Networking',
+    category = 'Utility',
+    url = 'http://onosproject.org',
+    included_bundles = BUNDLES,
+    excluded_bundles = EXCLUDED_BUNDLES,
+    description = 'OpenStack Networking application.',
+    required_apps = [
+        'org.onosproject.openstacknode'
+    ]
 )
diff --git a/apps/openstacknetworking/app.xml b/apps/openstacknetworking/app.xml
new file mode 100644
index 0000000..2f8c3db
--- /dev/null
+++ b/apps/openstacknetworking/app.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  ~ Copyright 2018-present Open Networking Foundation
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<app name="org.onosproject.openstacknetworking" origin="ON.Lab" version="${project.version}"
+     category="Traffic Steering" url="http://onosproject.org" title="OpenStack Networking App"
+     featuresRepo="mvn:${project.groupId}/${project.artifactId}/${project.version}/xml/features"
+     features="${project.artifactId}">
+    <description>${project.description}</description>
+    <artifact>mvn:${project.groupId}/onos-apps-openstacknetworking/${project.version}</artifact>
+</app>
diff --git a/apps/openstacknetworking/features.xml b/apps/openstacknetworking/features.xml
new file mode 100644
index 0000000..4ae8836
--- /dev/null
+++ b/apps/openstacknetworking/features.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ~ Copyright 2018-present Open Networking Foundation
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~     http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0" name="${project.artifactId}-${project.version}">
+    <feature name="${project.artifactId}" version="${project.version}"
+             description="${project.description}">
+        <feature>onos-api</feature>
+        <bundle>mvn:${project.groupId}/onos-apps-openstacknetworking/${project.version}</bundle>
+        <bundle>mvn:${project.groupId}/onos-apps-openstacknode-api/${project.version}</bundle>
+    </feature>
+</features>
diff --git a/apps/openstacknetworking/pom.xml b/apps/openstacknetworking/pom.xml
index d3f08d6..ae865d6 100644
--- a/apps/openstacknetworking/pom.xml
+++ b/apps/openstacknetworking/pom.xml
@@ -150,17 +150,37 @@
         <dependency>
             <groupId>org.pacesys</groupId>
             <artifactId>openstack4j-core</artifactId>
-            <version>2.11</version>
+            <version>3.1.0</version>
         </dependency>
         <dependency>
             <groupId>org.pacesys.openstack4j.connectors</groupId>
             <artifactId>openstack4j-http-connector</artifactId>
-            <version>2.11</version>
+            <version>3.1.0</version>
         </dependency>
         <dependency>
             <groupId>org.pacesys.openstack4j.connectors</groupId>
             <artifactId>openstack4j-httpclient</artifactId>
-            <version>2.11</version>
+            <version>3.1.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.fge</groupId>
+            <artifactId>json-patch</artifactId>
+            <version>1.9</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.fge</groupId>
+            <artifactId>jackson-coreutils</artifactId>
+            <version>1.6</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.fge</groupId>
+            <artifactId>btf</artifactId>
+            <version>1.2</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.fge</groupId>
+            <artifactId>msg-simple</artifactId>
+            <version>1.1</version>
         </dependency>
     </dependencies>
 
@@ -212,7 +232,11 @@
                         <Embed-Dependency>
                             openstack4j-core,
                             openstack4j-http-connector,
-                            openstack4j-httpclient
+                            openstack4j-httpclient,
+                            json-patch,
+                            jackson-coreutils,
+                            btf,
+                            msg-simple
                         </Embed-Dependency>
                     </instructions>
                 </configuration>
diff --git a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
index 24308ff..e89141b 100644
--- a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
+++ b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/cli/OpenstackSyncStateCommand.java
@@ -28,7 +28,7 @@
 import org.onosproject.openstacknetworking.api.OpenstackSecurityGroupService;
 import org.openstack4j.api.OSClient;
 import org.openstack4j.api.exceptions.AuthenticationException;
-import org.openstack4j.model.identity.Access;
+import org.openstack4j.model.identity.v2.Access;
 import org.openstack4j.model.network.IP;
 import org.openstack4j.model.network.NetFloatingIP;
 import org.openstack4j.model.network.Network;
@@ -90,7 +90,7 @@
 
         Access osAccess;
         try {
-            osAccess = OSFactory.builder()
+            osAccess = OSFactory.builderV2()
                     .endpoint(this.endpoint)
                     .tenantName(this.tenant)
                     .credentials(this.user, this.password)
diff --git a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
index 3b7b38c..8e03ba5 100644
--- a/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
+++ b/apps/openstacknetworking/src/main/java/org/onosproject/openstacknetworking/impl/DistributedOpenstackNetworkStore.java
@@ -38,6 +38,8 @@
 import org.onosproject.store.service.StorageService;
 import org.onosproject.store.service.Versioned;
 import org.openstack4j.model.network.IPVersionType;
+import org.openstack4j.model.network.Ipv6AddressMode;
+import org.openstack4j.model.network.Ipv6RaMode;
 import org.openstack4j.model.network.Network;
 import org.openstack4j.model.network.NetworkType;
 import org.openstack4j.model.network.Port;
@@ -95,6 +97,8 @@
             .register(NeutronPool.class)
             .register(NeutronHostRoute.class)
             .register(IPVersionType.class)
+            .register(Ipv6AddressMode.class)
+            .register(Ipv6RaMode.class)
             .build();
 
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)