]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
NSX: fix API payloads for dhcp/metadata setup
authorarmando-migliaccio <armamig@gmail.com>
Fri, 25 Apr 2014 22:29:14 +0000 (15:29 -0700)
committerarmando-migliaccio <armamig@gmail.com>
Fri, 25 Apr 2014 22:37:09 +0000 (15:37 -0700)
NSX 4.2 GA has tweaked the way dhcp and metadata
ports are configured. This patch takes care of
that.

Closes-bug: #1312822

Change-Id: I4e8496bf721c0f35df4228ec9c6f8066275e8c7a

neutron/plugins/vmware/nsxlib/lsn.py
neutron/tests/unit/vmware/nsxlib/test_lsn.py

index de73bf88ea6b9074a2c211bb2424fb256591e3e0..db302201ee39fec3d3944b39ddd61329121c85e0 100644 (file)
@@ -206,29 +206,33 @@ def _lsn_port_configure_action(
                cluster=cluster)
 
 
+def _get_opts(name, value):
+    return {"name": name, "value": str(value)}
+
+
 def lsn_port_dhcp_configure(
         cluster, lsn_id, lsn_port_id, is_enabled=True, dhcp_options=None):
     dhcp_options = dhcp_options or {}
-    opts = ["%s=%s" % (key, val) for key, val in dhcp_options.iteritems()]
-    dhcp_obj = {
-        'options': {'options': opts}
-    }
+    opts = [_get_opts(key, val) for key, val in dhcp_options.iteritems()]
+    dhcp_obj = {'options': opts}
     _lsn_port_configure_action(
         cluster, lsn_id, lsn_port_id, 'dhcp', is_enabled, dhcp_obj)
 
 
 def lsn_metadata_configure(
         cluster, lsn_id, is_enabled=True, metadata_info=None):
-    opts = [
-        "%s=%s" % (opt, metadata_info[opt])
-        for opt in SUPPORTED_METADATA_OPTIONS
-        if metadata_info.get(opt)
-    ]
     meta_obj = {
         'metadata_server_ip': metadata_info['metadata_server_ip'],
         'metadata_server_port': metadata_info['metadata_server_port'],
-        'misc_options': opts
     }
+    if metadata_info:
+        opts = [
+            _get_opts(opt, metadata_info[opt])
+            for opt in SUPPORTED_METADATA_OPTIONS
+            if metadata_info.get(opt)
+        ]
+        if opts:
+            meta_obj["options"] = opts
     _lsn_configure_action(
         cluster, lsn_id, 'metadata-proxy', is_enabled, meta_obj)
 
index e29afdf10827daac6c0d52fcc58dbad54625a651..23732c872975bfbc0ecad95ed208064826f8aae9 100644 (file)
@@ -248,7 +248,10 @@ class LSNTestCase(base.BaseTestCase):
         self, lsn_id, lsn_port_id, is_enabled, opts):
         lsnlib.lsn_port_dhcp_configure(
             self.cluster, lsn_id, lsn_port_id, is_enabled, opts)
-        opt_array = ["%s=%s" % (key, val) for key, val in opts.iteritems()]
+        opt_array = [
+            {"name": key, "value": val}
+            for key, val in opts.iteritems()
+        ]
         self.mock_request.assert_has_calls([
             mock.call("PUT", "/ws.v1/lservices-node/%s/dhcp" % lsn_id,
                       json.dumps({"enabled": is_enabled}),
@@ -256,7 +259,7 @@ class LSNTestCase(base.BaseTestCase):
             mock.call("PUT",
                       ("/ws.v1/lservices-node/%s/"
                        "lport/%s/dhcp") % (lsn_id, lsn_port_id),
-                      json.dumps({"options": {"options": opt_array}}),
+                      json.dumps({"options": opt_array}),
                       cluster=self.cluster)
         ])
 
@@ -299,7 +302,6 @@ class LSNTestCase(base.BaseTestCase):
         expected_opts = {
             "metadata_server_ip": "1.2.3.4",
             "metadata_server_port": "8775",
-            "misc_options": []
         }
         self._test_lsn_metadata_configure(
             lsn_id, is_enabled, opts, expected_opts)
@@ -315,7 +317,10 @@ class LSNTestCase(base.BaseTestCase):
         expected_opts = {
             "metadata_server_ip": "1.2.3.4",
             "metadata_server_port": "8775",
-            "misc_options": ["metadata_proxy_shared_secret=foo_secret"]
+            "options": [{
+                "name": "metadata_proxy_shared_secret",
+                "value": "foo_secret"
+            }]
         }
         self._test_lsn_metadata_configure(
             lsn_id, is_enabled, opts, expected_opts)