quantum-ns-metadata-proxyのパス問題

なんかボヤきに近いメモばかりが増えていくな。
今度は、ネットワークネームスペース上でexecするquantum-ns-metadata-proxyのパスが見つからない…だってvirtualenv環境にあるんだもん
これは...流石に設定ファイルでも指定できない感じ...

2013-09-10 11:46:02    DEBUG [quantum.agent.linux.utils]
Command: ['sudo', '/usr/local/grizzly/bin/quantum-rootwrap', '/usr/local/grizzly/neutron/etc/rootwrap.conf', 'ip', 'netns', 'exec', 'qdhcp-d3d3c2b9-f931-4836-b609-fe5e7fa24743', 'quantum-ns-metadata-proxy', '--pid_file=/usr/local/grizzly/neutron/dhcp/external/pids/d3d3c2b9-f931-4836-b609-fe5e7fa24743.pid', '--network_id=d3d3c2b9-f931-4836-b609-fe5e7fa24743', '--state_path=/usr/local/grizzly/neutron/dhcp', '--metadata_port=80', '--debug', '--verbose', '--log-file=quantum-ns-metadata-proxyd3d3c2b9-f931-4836-b609-fe5e7fa24743.log', '--log-dir=/usr/local/grizzly/neutron/log']
Exit code: 255
Stdout: ''
Stderr: 'exec of quantum-ns-metadata-proxy failed: No such file or directory\n'
■しかたがないのでパッチを書いた
  • quantum/agent/dhcp_agent.py
--- dhcp_agent.py.org     2013-09-10 12:11:07.987150000 +0900
+++ dhcp_agent.py     2013-09-11 11:43:14.664865270 +0900
@@ -17,6 +17,7 @@

 import os
 import socket
+import sys
 import uuid

 import eventlet
@@ -316,7 +317,8 @@
                                         router_ports[0].device_id)

         def callback(pid_file):
-            proxy_cmd = ['quantum-ns-metadata-proxy',
+            proxy_cmd = [os.path.join(os.path.dirname(sys.argv[0]),
+                             'quantum-ns-metadata-proxy'),
                          '--pid_file=%s' % pid_file,
                          quantum_lookup_param,
                          '--state_path=%s' % self.conf.state_path,

os.path.join()のところは他所と書き方をあわせたので、まぁこんなもんだと思う。
起動して動いてるように見えるし、ヨシとしよう。
まだまだneutronをvirtualenv環境で動かす戦いは続くのかな...