components/openstack/neutron/patches/03-metadata-driver-solaris.patch
branchs11u3-sru
changeset 6035 c9748fcc32de
child 6848 8e252a37ed0d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/components/openstack/neutron/patches/03-metadata-driver-solaris.patch	Fri May 20 17:42:29 2016 -0400
@@ -0,0 +1,111 @@
+Changes to the Neutron Metadata agent to port it to Solaris. These
+changes will eventually be proposed upstream.
+
+--- neutron-2015.1.0/neutron/agent/metadata/driver.py	2015-04-30 05:52:24.000000000 -0700
++++ new/neutron/agent/metadata/driver.py	2015-10-08 16:01:14.949791035 -0700
+@@ -14,6 +14,7 @@
+ #    under the License.
+ 
+ import os
++import platform
+ 
+ from oslo_log import log as logging
+ 
+@@ -38,10 +39,16 @@
+     def __init__(self, l3_agent):
+         self.metadata_port = l3_agent.conf.metadata_port
+         self.metadata_access_mark = l3_agent.conf.metadata_access_mark
+-        registry.subscribe(
+-            after_router_added, resources.ROUTER, events.AFTER_CREATE)
+-        registry.subscribe(
+-            before_router_removed, resources.ROUTER, events.BEFORE_DELETE)
++        if platform.system() == "SunOS":
++            registry.subscribe(after_router_added_solaris, resources.ROUTER,
++                               events.AFTER_CREATE)
++            registry.subscribe(before_router_removed_solaris, resources.ROUTER,
++                               events.BEFORE_DELETE)
++        else:
++            registry.subscribe(after_router_added, resources.ROUTER,
++                               events.AFTER_CREATE)
++            registry.subscribe(before_router_removed, resources.ROUTER,
++                               events.BEFORE_DELETE)
+ 
+     @classmethod
+     def metadata_filter_rules(cls, port, mark):
+@@ -95,14 +102,18 @@
+             metadata_proxy_socket = conf.metadata_proxy_socket
+             user, group, watch_log = (
+                 cls._get_metadata_proxy_user_group_watchlog(conf))
+-            proxy_cmd = ['neutron-ns-metadata-proxy',
+-                         '--pid_file=%s' % pid_file,
+-                         '--metadata_proxy_socket=%s' % metadata_proxy_socket,
+-                         lookup_param,
+-                         '--state_path=%s' % conf.state_path,
+-                         '--metadata_port=%s' % port,
+-                         '--metadata_proxy_user=%s' % user,
+-                         '--metadata_proxy_group=%s' % group]
++            if platform.system() == "SunOS":
++                proxy_cmd = ['/usr/lib/neutron/neutron-ns-metadata-proxy']
++            else:
++                proxy_cmd = ['neutron-ns-metadata-proxy',
++                             '--metadata_proxy_user=%s' % user,
++                             '--metadata_proxy_group=%s' % group]
++            proxy_cmd.extend(['--pid_file=%s' % pid_file,
++                              '--metadata_proxy_socket=%s' %
++                              metadata_proxy_socket,
++                              lookup_param,
++                              '--state_path=%s' % conf.state_path,
++                              '--metadata_port=%s' % port])
+             proxy_cmd.extend(config.get_log_args(
+                 conf, 'neutron-ns-metadata-proxy-%s.log' % uuid,
+                 metadata_proxy_watch_log=watch_log))
+@@ -141,7 +152,7 @@
+     router = kwargs['router']
+     proxy = l3_agent.metadata_driver
+     for c, r in proxy.metadata_filter_rules(proxy.metadata_port,
+-                                           proxy.metadata_access_mark):
++                                            proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['filter'].add_rule(c, r)
+     for c, r in proxy.metadata_mangle_rules(proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['mangle'].add_rule(c, r)
+@@ -162,7 +173,7 @@
+     router = kwargs['router']
+     proxy = l3_agent.metadata_driver
+     for c, r in proxy.metadata_filter_rules(proxy.metadata_port,
+-                                           proxy.metadata_access_mark):
++                                            proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['filter'].remove_rule(c, r)
+     for c, r in proxy.metadata_mangle_rules(proxy.metadata_access_mark):
+         router.iptables_manager.ipv4['mangle'].remove_rule(c, r)
+@@ -171,6 +182,28 @@
+     router.iptables_manager.apply()
+ 
+     proxy.destroy_monitored_metadata_proxy(l3_agent.process_monitor,
+-                                          router.router['id'],
+-                                          router.ns_name,
+-                                          l3_agent.conf)
++                                           router.router['id'],
++                                           router.ns_name,
++                                           l3_agent.conf)
++
++
++def after_router_added_solaris(resource, event, l3_agent, **kwargs):
++    router = kwargs['router']
++    proxy = l3_agent.metadata_driver
++    if not router.is_ha:
++        proxy.spawn_monitored_metadata_proxy(
++            l3_agent.process_monitor,
++            router.ns_name,
++            proxy.metadata_port,
++            l3_agent.conf,
++            router_id=router.router_id)
++
++
++def before_router_removed_solaris(resource, event, l3_agent, **kwargs):
++    router = kwargs['router']
++    proxy = l3_agent.metadata_driver
++    if not router.is_ha:
++        proxy.destroy_monitored_metadata_proxy(l3_agent.process_monitor,
++                                               router.router['id'],
++                                               router.ns_name,
++                                               l3_agent.conf)