summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /app-emulation/openstack-guest-agents-unix
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'app-emulation/openstack-guest-agents-unix')
-rw-r--r--app-emulation/openstack-guest-agents-unix/Manifest2
-rw-r--r--app-emulation/openstack-guest-agents-unix/files/0513f013625b6a652d7dcb663eb396b9b5bb924e.patch60
-rw-r--r--app-emulation/openstack-guest-agents-unix/files/4453b4773688eef6c60736d9cf07100716308a5e.patch57
-rw-r--r--app-emulation/openstack-guest-agents-unix/files/openstack-guest-agents-unix-1.39.0-python2.patch15
-rw-r--r--app-emulation/openstack-guest-agents-unix/files/patches-1.39.0-20140621.patch323
-rw-r--r--app-emulation/openstack-guest-agents-unix/metadata.xml13
-rw-r--r--app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r1.ebuild43
-rw-r--r--app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r2.ebuild48
-rw-r--r--app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0.ebuild32
-rw-r--r--app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.1.ebuild65
10 files changed, 658 insertions, 0 deletions
diff --git a/app-emulation/openstack-guest-agents-unix/Manifest b/app-emulation/openstack-guest-agents-unix/Manifest
new file mode 100644
index 000000000000..022a7c87a12b
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/Manifest
@@ -0,0 +1,2 @@
+DIST openstack-guest-agents-unix-1.39.0.tar.gz 75013 SHA256 eaa22564c8da46c2c1c08e6c0ccd2507e181ffac66fa89f1d9ac2323a2a77d97 SHA512 4f7c4c1f2bc2c8ebda25dc8c0fa79c39e8e5a83040ff103f8c583d9142e71c6527d23e430da983e3a8c9add508298c31ec13a7e56d1db3b5338736dd470fec80 WHIRLPOOL 8e91593dcf6e1f0a8281a9a19946aa67c6e57acfcd5dd5739cddc9b0db0ea0952552f592f598a156140f5c8834fd47f9e20fddddec0f7648bcc40ebce0127d63
+DIST openstack-guest-agents-unix-1.39.1.tar.gz 75458 SHA256 dab0bafb2a632040b0e76ac277fee5714dc8eb9cb9781e80f64a94aaa6bd06a2 SHA512 b1e88bb3492018375e7b2275829e2698d82d75c975a396ab7409c9b88f7787145b0da87c81a089aa8914fae30e996654b589bc1675bba769b661d7d1deb9590d WHIRLPOOL 5ba6cf326b78ea5141611b59d9d2b21b9c6a54f4ed9b358a6751ac135a77eac0c20a0b8ce7e078557158bc6a0192e13fed44c75bb9e7794eded1f4777b24b072
diff --git a/app-emulation/openstack-guest-agents-unix/files/0513f013625b6a652d7dcb663eb396b9b5bb924e.patch b/app-emulation/openstack-guest-agents-unix/files/0513f013625b6a652d7dcb663eb396b9b5bb924e.patch
new file mode 100644
index 000000000000..bf95287a86f9
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/files/0513f013625b6a652d7dcb663eb396b9b5bb924e.patch
@@ -0,0 +1,60 @@
+From 84e1a32ee2b8d0607f2868365aa46aaea58f014c Mon Sep 17 00:00:00 2001
+From: Nate House <nathan.house@rackspace.com>
+Date: Mon, 20 Oct 2014 18:50:52 -0500
+Subject: [PATCH] Updated regexp to work with config headers added sometime ago
+
+---
+ tests/test_resetnetwork_interfaces.py | 26 +++++++++++---------------
+ 1 file changed, 11 insertions(+), 15 deletions(-)
+
+diff --git a/tests/test_resetnetwork_interfaces.py b/tests/test_resetnetwork_interfaces.py
+index dc8e7e7..b12b84c 100644
+--- a/tests/test_resetnetwork_interfaces.py
++++ b/tests/test_resetnetwork_interfaces.py
+@@ -344,17 +344,13 @@ def test_gentoo_legacy_ipv4(self):
+
+ generated = outfiles['net'].rstrip()
+ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
+- pattern = ('modules=\( "ifconfig|iproute2" \)\n*' +
++ # (todo: naterh) Remove excessive unused kwargs
++ pattern = ('.*?modules="(ifconfig|iproute2)"\n*' +
+ '# Label public\n*' +
+ 'config_eth0=\(\s*"192.0.2.42 netmask 255.255.255.0"\s*\)\n*' +
+ 'routes_eth0=\(\s*"default via 192.0.2.1"\s*\)\n*' +
+- 'dns_servers_eth0=\(\s*"192.0.2.2"\s*\)').format(
+- ip=interface['ipv4'][0][0],
+- netmask=interface['ipv4'][0][1],
+- gateway=interface['gateway4'],
+- dns=interface['dns'][0]
+- )
+- expected_regex = re.compile(pattern, re.MULTILINE)
++ 'dns_servers_eth0=\(\s*"192.0.2.2"\s*\)')
++ expected_regex = re.compile(pattern, re.DOTALL)
+
+ self.assertRegexpMatches(generated, expected_regex)
+
+@@ -373,17 +369,17 @@ def test_gentoo_legacy_ipv6(self):
+
+ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
+ generated = outfiles['net'].rstrip()
+- pattern = ('modules=\( "ifconfig|iproute2" \)\n*' +
++ pattern = ('.*?modules="(ifconfig|iproute2)"\n*' +
+ '# Label public\n*' +
+ 'config_eth0=\(\s*"{ip}/{netmask_len}"\s*\)\n*' +
+ 'routes_eth0=\(\s*"default via {gateway}"\s*\)\n*' +
+ 'dns_servers_eth0=\(\s*"{dns}"\s*\)').format(
+- ip=interface['ipv6'][0][0],
+- netmask_len=interface['ipv6'][0][1],
+- gateway=interface['gateway6'],
+- dns=interface['dns'][0]
+- )
+- expected_regex = re.compile(pattern, re.MULTILINE)
++ ip=interface['ipv6'][0][0],
++ netmask_len=interface['ipv6'][0][1],
++ gateway=interface['gateway6'],
++ dns=interface['dns'][0]
++ )
++ expected_regex = re.compile(pattern, re.DOTALL)
+
+ self.assertRegexpMatches(generated, expected_regex)
+
diff --git a/app-emulation/openstack-guest-agents-unix/files/4453b4773688eef6c60736d9cf07100716308a5e.patch b/app-emulation/openstack-guest-agents-unix/files/4453b4773688eef6c60736d9cf07100716308a5e.patch
new file mode 100644
index 000000000000..ea506845ed36
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/files/4453b4773688eef6c60736d9cf07100716308a5e.patch
@@ -0,0 +1,57 @@
+From 4453b4773688eef6c60736d9cf07100716308a5e Mon Sep 17 00:00:00 2001
+From: Nate House <nathan.house@rackspace.com>
+Date: Sun, 19 Oct 2014 15:49:35 -0500
+Subject: [PATCH] Updated tests to check for either ifconfig/iproute2
+
+---
+ tests/test_resetnetwork_interfaces.py | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/tests/test_resetnetwork_interfaces.py b/tests/test_resetnetwork_interfaces.py
+index f2b73bf..dc8e7e7 100644
+--- a/tests/test_resetnetwork_interfaces.py
++++ b/tests/test_resetnetwork_interfaces.py
+@@ -343,8 +343,8 @@ def test_gentoo_legacy_ipv4(self):
+ self.assertTrue('net' in outfiles)
+
+ generated = outfiles['net'].rstrip()
+-
+- pattern = ('modules=\( "ifconfig" \)\n*' +
++ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
++ pattern = ('modules=\( "ifconfig|iproute2" \)\n*' +
+ '# Label public\n*' +
+ 'config_eth0=\(\s*"192.0.2.42 netmask 255.255.255.0"\s*\)\n*' +
+ 'routes_eth0=\(\s*"default via 192.0.2.1"\s*\)\n*' +
+@@ -371,8 +371,9 @@ def test_gentoo_legacy_ipv6(self):
+
+ self.assertTrue('net' in outfiles)
+
++ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
+ generated = outfiles['net'].rstrip()
+- pattern = ('modules=\( "ifconfig" \)\n*' +
++ pattern = ('modules=\( "ifconfig|iproute2" \)\n*' +
+ '# Label public\n*' +
+ 'config_eth0=\(\s*"{ip}/{netmask_len}"\s*\)\n*' +
+ 'routes_eth0=\(\s*"default via {gateway}"\s*\)\n*' +
+@@ -399,8 +400,9 @@ def test_gentoo_openrc_ipv4(self):
+
+ self.assertTrue('net' in outfiles)
+
++ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
+ generated = outfiles['net'].rstrip()
+- pattern = ('modules="ifconfig"\n*' +
++ pattern = ('modules="ifconfig|iproute2"\n*' +
+ '# Label public\n*' +
+ 'config_eth0="\s*{ip}/{netmask_len}\s*"\n*' +
+ 'routes_eth0="\s*default via {gateway}\s*"\n*' +
+@@ -429,8 +431,9 @@ def test_gentoo_openrc_ipv6(self):
+
+ self.assertTrue('net' in outfiles)
+
++ # (todo: naterh) Update tests to mock for both ifconfig/iproute2
+ generated = outfiles['net'].rstrip()
+- pattern = ('modules="ifconfig"\n*' +
++ pattern = ('modules="ifconfig|iproute2"\n*' +
+ '# Label public\n*' +
+ 'config_eth0="\s*{ip}/{netmask_len}\s*"\n*' +
+ 'routes_eth0="\s*default via {gateway}\s*"\n*' +
diff --git a/app-emulation/openstack-guest-agents-unix/files/openstack-guest-agents-unix-1.39.0-python2.patch b/app-emulation/openstack-guest-agents-unix/files/openstack-guest-agents-unix-1.39.0-python2.patch
new file mode 100644
index 000000000000..0010e9ea5eae
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/files/openstack-guest-agents-unix-1.39.0-python2.patch
@@ -0,0 +1,15 @@
+diff -Nuar openstack-guest-agents-unix-1.39.0.orig/scripts/gentoo/nova-agent.in openstack-guest-agents-unix-1.39.0/scripts/gentoo/nova-agent.in
+--- openstack-guest-agents-unix-1.39.0.orig/scripts/gentoo/nova-agent.in 2013-12-31 02:02:57.000000000 -0800
++++ openstack-guest-agents-unix-1.39.0/scripts/gentoo/nova-agent.in 2014-06-21 17:20:01.527148493 -0700
+@@ -35,8 +35,9 @@
+ NOVA_PYTHONPATH="${reallibdir}/${NOVA_PYTHONPATH}"
+ NOVA_PYTHONPATH="${NOVA_PYTHONPATH}:${NOVA_PYTHONPATH}/site-packages"
+
+-if [ `which python > /dev/null 2>&1 ; echo $?` -eq 0 ]; then
+- PYTHONPATH="$(python -c 'import sys; print ":".join(sys.path)')"
++PYTHON=python2
++if [ `which $PYTHON > /dev/null 2>&1 ; echo $?` -eq 0 ]; then
++ PYTHONPATH="$($PYTHON -c 'import sys; print ":".join(sys.path)')"
+ fi
+ export PYTHONPATH="$NOVA_PYTHONPATH:$PYTHONPATH"
+ export PYTHONHOME="$NOVA_PYTHONPATH:$PYTHONPATH"
diff --git a/app-emulation/openstack-guest-agents-unix/files/patches-1.39.0-20140621.patch b/app-emulation/openstack-guest-agents-unix/files/patches-1.39.0-20140621.patch
new file mode 100644
index 000000000000..c275982fa94b
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/files/patches-1.39.0-20140621.patch
@@ -0,0 +1,323 @@
+commit fc8c9fe076e321ff98cc6717abbb21ee57808c52
+Merge: eaaae09 1ecec49
+Author: teran-mckinney <teran.mckinney@rackspace.com>
+Date: Wed Apr 30 15:33:43 2014 +0000
+
+ Merge pull request #43 from gtmanfred/master
+
+ sbindir changes to exec_prefix
+
+commit eaaae09c27a33998374a8d63702c75b04ab3e5c2
+Merge: 773e431 1505a5a
+Author: teran-mckinney <teran.mckinney@rackspace.com>
+Date: Tue Apr 29 18:21:27 2014 +0000
+
+ Merge pull request #45 from leader716/master
+
+ Added addditional logic to deterine if the hardware address for and inte...
+
+commit 1505a5a8e180910c3307bf04ccfc4eed09c0f40a
+Author: John Ward <john.ward@rackspace.com>
+Date: Tue Apr 29 14:28:34 2014 +0000
+
+ Added addditional logic to deterine if the hardware address for and interface is 0x0 if so go to the next interface.
+ I put this into place to handle tun adapters that have a hardware address of 0x0 which was causing the agent to
+ segfault when it encounterd this type of adapter.
+
+commit 1ecec499d5bea73980a8aec992b394339acc83c7
+Author: Daniel Wallace <danielwallace@gtmanfred.com>
+Date: Fri Apr 25 20:38:35 2014 -0500
+
+ sbindir changes to exec_prefix
+
+ Systemd requires a full path for the start of the command, and there
+ isn't one that isn't a nice way to change this.
+
+commit 773e431997a6612cbda9f11ec9d57f5685a29eea
+Merge: 1ca2056 12c0294
+Author: teran-mckinney <teran.mckinney@rackspace.com>
+Date: Fri Apr 25 18:41:56 2014 +0000
+
+ Merge pull request #39 from Camisa/master
+
+ nova-agent should replace the Slice or Image ID rather than append
+
+commit 1ca2056a455f8075ed951f0a82b92820c0b33b54
+Merge: 1b05c75 f9a365e
+Author: teran-mckinney <teran.mckinney@rackspace.com>
+Date: Fri Apr 25 18:40:29 2014 +0000
+
+ Merge pull request #42 from gtmanfred/master
+
+ Do not add static routes that are the default route, if a default gateway already exists.
+
+ Courtesy of gtmanfred. Thank you!
+
+commit f9a365e7a9543d407ca9d75164688faa0ff53528
+Author: Daniel Wallace <danielwallace@gtmanfred.com>
+Date: Fri Apr 25 10:54:29 2014 -0500
+
+ remove extra and from debian network.py
+
+commit 387d4e77695598a07be9e4593c5b236b81a1aeea
+Author: Daniel Wallace <danielwallace@gtmanfred.com>
+Date: Fri Apr 25 09:31:15 2014 -0500
+
+ Do not add static routes that are the default route
+
+commit 1b05c75530c8b4cbf5347e84815e275ee0bbacd4
+Author: teran-mckinney <teran.mckinney@rackspace.com>
+Date: Thu Feb 13 19:26:36 2014 +0000
+
+ Fix nova-agent not starting on some systems
+
+ data/host existing could cause a fault on xs_handle.mkdir(self.request_path) if request_path (data/host) already existed. Wrap it in a try/except clause to ignore the fault as if the directory already exists, there's no reason to throw an exception while trying to create it.
+
+ Workaround without this patch is to xenstore-rm data/host from affected VMs, or to do it from dom0 with the full path.
+
+commit 12c02941ef02dc6645e6d4700e8a028decbf0c19
+Author: Christopher J. Camisa <cjc@operator.host>
+Date: Thu Jan 30 03:11:51 2014 -0600
+
+ nova-agent should replace the Slice or Image ID rather than append
+
+commit ce388bf600136736fdb790edef58a57aad8adfc1
+Author: AbhishekKr <abhikumar163@gmail.com>
+Date: Tue Jan 21 17:22:23 2014 +0530
+
+ shebang fixed for installer.sh and bintar script; gitignore updated
+
+commit 91fe7d0262fe8ad685a287df291b504250b1184c
+Author: AbhishekKr <abhikumar163@gmail.com>
+Date: Fri Jan 3 16:51:54 2014 +0530
+
+ FreeBSD changed ports, so bintar creation script need to
+diff --git a/.gitignore b/.gitignore
+index ae1ae1b..6bdeda8 100644
+--- a/.gitignore
++++ b/.gitignore
+@@ -55,3 +55,4 @@ unix/scripts/generic/nova-agent
+ unix/scripts/gentoo/nova-agent
+ unix/scripts/freebsd/nova-agent
+ .idea/*
++**/.venv
+diff --git a/commands/arch/network.py b/commands/arch/network.py
+index 1d698ca..2bc0aff 100644
+--- a/commands/arch/network.py
++++ b/commands/arch/network.py
+@@ -373,6 +373,11 @@ def _update_rc_conf_legacy(infile, interfaces):
+ ifaces.append((ifname.replace(':', '_'), ' '.join(line)))
+
+ for i, route in enumerate(interface['routes']):
++ if route['network'] == '0.0.0.0' and \
++ route['netmask'] == '0.0.0.0' and \
++ route['gateway'] == gateway4:
++ continue
++
+ line = "-net %(network)s netmask %(netmask)s gw %(gateway)s" % \
+ route
+
+@@ -499,7 +504,10 @@ def _get_file_data_netctl(ifname, interface):
+ print >>outfile, 'Gateway6=%s' % gateway6
+
+ routes = ['%(network)s/%(netmask)s via %(gateway)s' % route
+- for route in interface['routes']]
++ for route in interface['routes'] if not
++ route['network'] == '0.0.0.0' and not
++ route['netmask'] == '0.0.0.0' and not
++ route['gateway'] == gateway4]
+
+ if routes:
+ print >>outfile, 'Routes=(\'%s\')' % '\' \''.join(routes)
+@@ -552,7 +560,10 @@ def _get_file_data_netcfg(ifname, interface):
+ print >>outfile, 'GATEWAY6="%s"' % gateway6
+
+ routes = ['"%(network)s/%(netmask)s via %(gateway)s"' % route
+- for route in interface['routes']]
++ for route in interface['routes'] if not
++ route['network'] == '0.0.0.0' and not
++ route['netmask'] == '0.0.0.0' and not
++ route['gateway'] == gateway4]
+
+ if routes:
+ print >>outfile, 'ROUTES=(%s)' % ' '.join(routes)
+diff --git a/commands/debian/network.py b/commands/debian/network.py
+index d91d602..3b82d97 100644
+--- a/commands/debian/network.py
++++ b/commands/debian/network.py
+@@ -234,6 +234,11 @@ def _get_file_data(interfaces):
+ ifname_suffix_num += 1
+
+ for route in interface['routes']:
++ if route['network'] == '0.0.0.0' \
++ and route['netmask'] == '0.0.0.0'\
++ and 'gateway4' in interface \
++ and route['gateway'] == interface['gateway4']:
++ continue
+ file_data += " post-up route add -net %(network)s " \
+ "netmask %(netmask)s gw %(gateway)s || true\n" % route
+ file_data += " pre-down route del -net %(network)s " \
+diff --git a/commands/freebsd/network.py b/commands/freebsd/network.py
+index 2d5d7f1..87e5e9e 100644
+--- a/commands/freebsd/network.py
++++ b/commands/freebsd/network.py
+@@ -211,6 +211,10 @@ def _create_rcconf_file(infile, interfaces, hostname):
+ ifname_suffix_num += 1
+
+ for route in interface['routes']:
++ if route['network'] == '0.0.0.0' and \
++ route['netmask'] == '0.0.0.0' and \
++ route['gateway'] == gateway4:
++ continue
+ if ':' in route['network']:
+ # ipv6
+ fmt = '-net %(network)s/%(netmask)s %(gateway)s'
+diff --git a/commands/gentoo/network.py b/commands/gentoo/network.py
+index f3ceff5..f3e5251 100644
+--- a/commands/gentoo/network.py
++++ b/commands/gentoo/network.py
+@@ -199,7 +199,11 @@ def _confd_net_file(interfaces):
+ lines.extend([ " {0}/{1} via {2}".format(route['network'],
+ commands.network.NETMASK_TO_PREFIXLEN[route['netmask']],
+ route['gateway']
+- ) for route in interface['routes'] ])
++ ) for route in interface['routes'] if not
++ route['network'] == '0.0.0.0' and not
++ route['netmask'] == '0.0.0.0' and
++ 'gateway4' in interface and not
++ route['gateway'] == interface['gateway4']])
+ if 'gateway4' in interface and interface['gateway4']:
+ lines.append(" default via {0}".format(interface['gateway4']))
+ if 'gateway6' in interface and interface['gateway6']:
+@@ -247,7 +251,11 @@ def _confd_net_file_legacy(interfaces):
+ lines.append("routes_{0}=(".format(name))
+ lines.extend([ " \"{0} netmask {1} gw {2}\"".format(
+ route['network'], route['netmask'], route['gateway']
+- ) for route in interface['routes'] ])
++ ) for route in interface['routes'] if not
++ route['network'] == '0.0.0.0' and not
++ route['netmask'] == '0.0.0.0' and
++ 'gateway4' in interface and not
++ route['gateway'] == interface['gateway4'] ])
+ if 'gateway4' in interface and interface['gateway4']:
+ lines.append(" \"default via {0}\"".format(interface['gateway4']))
+ if 'gateway6' in interface and interface['gateway6']:
+diff --git a/commands/redhat/network.py b/commands/redhat/network.py
+index a85ed6b..e853fbd 100644
+--- a/commands/redhat/network.py
++++ b/commands/redhat/network.py
+@@ -202,6 +202,11 @@ def _get_file_data(ifname_prefix, interface):
+
+ route_data = ''
+ for i, route in enumerate(interface['routes']):
++ if route['network'] == '0.0.0.0' and \
++ route['netmask'] == '0.0.0.0' and \
++ 'gateway4' in interface and \
++ route['gateway'] == interface['gateway4']:
++ continue
+ route_data += "ADDRESS%d=%s\n" % (i, route['network'])
+ route_data += "NETMASK%d=%s\n" % (i, route['netmask'])
+ route_data += "GATEWAY%d=%s\n" % (i, route['gateway'])
+diff --git a/commands/suse/network.py b/commands/suse/network.py
+index 2947974..baad7b2 100644
+--- a/commands/suse/network.py
++++ b/commands/suse/network.py
+@@ -191,6 +191,10 @@ def _get_file_data(ifname, interface):
+
+ route_data = ''
+ for route in interface['routes']:
++ if route['network'] == '0.0.0.0' and \
++ route['netmask'] == '0.0.0.0' and \
++ route['gateway'] == gateway4:
++ continue
+ network = route['network']
+ netmask = route['netmask']
+ gateway = route['gateway']
+diff --git a/lib/agentlib.c b/lib/agentlib.c
+index ccba6e3..cced430 100644
+--- a/lib/agentlib.c
++++ b/lib/agentlib.c
+@@ -73,7 +73,10 @@ static PyObject *_agentlib_get_interfaces(PyObject *self, PyObject *args)
+ goto next;
+
+ #if defined(__linux__)
+- if (ifa->ifa_addr->sa_family != PF_PACKET)
++ if (ifa->ifa_addr == NULL)
++ goto next;
++
++ if (ifa->ifa_addr->sa_family != PF_PACKET)
+ goto next;
+
+ struct sockaddr_ll *sll = (struct sockaddr_ll *)ifa->ifa_addr;
+diff --git a/plugins/xscomm.py b/plugins/xscomm.py
+index e3faa2e..9b8a33b 100644
+--- a/plugins/xscomm.py
++++ b/plugins/xscomm.py
+@@ -41,7 +41,11 @@ class XSComm(object):
+ XENSTORE_RESPONSE_PATH)
+
+ self.xs_handle = pyxenstore.Handle()
+- self.xs_handle.mkdir(self.request_path)
++ try:
++ self.xs_handle.mkdir(self.request_path)
++ except:
++ pass
++
+ self.requests = []
+
+ def _check_handle(self):
+diff --git a/scripts/gentoo/nova-agent.in b/scripts/gentoo/nova-agent.in
+index a043394..7f2687e 100755
+--- a/scripts/gentoo/nova-agent.in
++++ b/scripts/gentoo/nova-agent.in
+@@ -59,7 +59,7 @@ start() {
+ /usr/bin/xenstore write data/host/system-init '{"name":"resetnetwork","value":""}'
+ /usr/bin/xenstore watch -n 1 data/guest/system-init >/dev/null
+ [ "$(/usr/bin/xenstore read data/guest/system-init | wc -l)" -gt "0" ] || eend 1
+- echo "UUID=\"$(/usr/bin/xenstore read name)\"" >> /etc/conf.d/nova-agent
++ echo "UUID=\"$(/usr/bin/xenstore read name)\"" > /etc/conf.d/nova-agent
+ fi
+
+ eend $RET
+diff --git a/scripts/installer.sh.in b/scripts/installer.sh.in
+index 8ef793d..3fbf352 100755
+--- a/scripts/installer.sh.in
++++ b/scripts/installer.sh.in
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+
+ # vim: tabstop=4 shiftwidth=4 softtabstop=4
+ #
+diff --git a/scripts/systemd/nova-agent.service.in b/scripts/systemd/nova-agent.service.in
+index 9d8a4a7..b73ebbe 100644
+--- a/scripts/systemd/nova-agent.service.in
++++ b/scripts/systemd/nova-agent.service.in
+@@ -4,7 +4,7 @@ Description=nova-agent service
+ [Service]
+ Environment=LD_LIBRARY_PATH=@prefix@/share/@PACKAGE@/@PACKAGE_VERSION@/lib
+ EnvironmentFile=-/etc/nova-agent.env
+-ExecStart=@sbindir@/nova-agent -n -l info @prefix@/share/@PACKAGE@/nova-agent.py
++ExecStart=@prefix@/sbin/nova-agent -n -l info @prefix@/share/@PACKAGE@/nova-agent.py
+
+
+ [Install]
+diff --git a/tools/nova-agent-builder.sh b/tools/nova-agent-builder.sh
+index 1823639..fcaa7c7 100755
+--- a/tools/nova-agent-builder.sh
++++ b/tools/nova-agent-builder.sh
+@@ -1,4 +1,4 @@
+-#!/bin/bash
++#!/usr/bin/env bash
+ ##### NOVA AGENT BUILDER
+ ##### how_to:$ sh nova-agent-builder.sh help
+ ##### W.I.P. works fine for most of cases,
+@@ -202,7 +202,7 @@ install_pre_requisite_freebsd(){
+ export INSTALL_D=""
+ uname -a
+
+- pkg_add -r git autogen automake wget bash
++ pkg_add -r git autogen automake wget bash libtool
+ pkg_add -r py27-unittest2 py27-cryptkit py27-pycrypto py27-mox
+
+ # re-install xen-tool :: required for pyxenstore install
diff --git a/app-emulation/openstack-guest-agents-unix/metadata.xml b/app-emulation/openstack-guest-agents-unix/metadata.xml
new file mode 100644
index 000000000000..1edaa77a2471
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/metadata.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer>
+ <email>robbat2@gentoo.org</email>
+ </maintainer>
+ <maintainer>
+ <email>alunduil@gentoo.org</email>
+ </maintainer>
+ <upstream>
+ <remote-id type="github">rackerlabs/openstack-guest-agents-unix</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r1.ebuild b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r1.ebuild
new file mode 100644
index 000000000000..8bb3d55c6206
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r1.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 ) # does not work with py3 yet
+
+inherit autotools eutils vcs-snapshot python-single-r1
+
+DESCRIPTION="Openstack Unix Guest Agent"
+HOMEPAGE="http://github.com/rackerlabs/openstack-guest-agents-unix"
+SRC_URI="https://github.com/rackerlabs/${PN}/tarball/v${PV} -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+RDEPEND="dev-util/patchelf
+ dev-python/pycrypto[${PYTHON_USEDEP}]
+ dev-python/pyxenstore[${PYTHON_USEDEP}]"
+
+# Fails to build if python2.5/python2.6 are present
+DEPEND="${RDEPEND}
+ !dev-lang/python:2.5
+ !dev-lang/python:2.6
+ ${PYTHON_DEPS}"
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/patches-1.39.0-20140621.patch \
+ "${FILESDIR}"/openstack-guest-agents-unix-1.39.0-python2.patch
+ eautoreconf
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ doinitd scripts/gentoo/nova-agent
+}
diff --git a/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r2.ebuild b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r2.ebuild
new file mode 100644
index 000000000000..25ca053ffc08
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0-r2.ebuild
@@ -0,0 +1,48 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 ) # does not work with py3 yet
+
+inherit autotools eutils vcs-snapshot python-single-r1
+
+DESCRIPTION="Openstack Unix Guest Agent"
+HOMEPAGE="http://github.com/rackerlabs/openstack-guest-agents-unix"
+SRC_URI="https://github.com/rackerlabs/${PN}/tarball/v${PV} -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+RDEPEND="dev-util/patchelf
+ dev-python/pycrypto[${PYTHON_USEDEP}]
+ dev-python/pyxenstore[${PYTHON_USEDEP}]"
+
+# Fails to build if python2.5/python2.6 are present
+DEPEND="${RDEPEND}
+ !dev-lang/python:2.5
+ !dev-lang/python:2.6
+ ${PYTHON_DEPS}"
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/patches-1.39.0-20140621.patch \
+ "${FILESDIR}"/openstack-guest-agents-unix-1.39.0-python2.patch
+ # Ignore the deps of install-exec-local
+ sed -i -e '/^install-exec-local:/s,:.*,:,g' Makefile.am
+ # bashism fix
+ sed -r -i -e '/^export ([A-Z_]+)/{ s,^export ,,g; s,^([A-Z0-9_]+)(.*),\1\2; export \1,g; }' scripts/gentoo/nova-agent.in
+
+ eautoreconf
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ doinitd scripts/gentoo/nova-agent
+}
diff --git a/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0.ebuild b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0.ebuild
new file mode 100644
index 000000000000..3697adf98b3f
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.0.ebuild
@@ -0,0 +1,32 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit autotools eutils vcs-snapshot
+
+DESCRIPTION="Openstack Unix Guest Agent"
+HOMEPAGE="http://github.com/rackerlabs/openstack-guest-agents-unix"
+SRC_URI="https://github.com/rackerlabs/${PN}/tarball/v${PV} -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE=""
+
+DEPEND="
+ dev-util/patchelf
+ dev-python/pycrypto
+ dev-python/pyxenstore
+ "
+RDEPEND="${DEPEND}"
+
+src_prepare() {
+ eautoreconf
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+ doinitd scripts/gentoo/nova-agent
+}
diff --git a/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.1.ebuild b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.1.ebuild
new file mode 100644
index 000000000000..1a6fc7588765
--- /dev/null
+++ b/app-emulation/openstack-guest-agents-unix/openstack-guest-agents-unix-1.39.1.ebuild
@@ -0,0 +1,65 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+PYTHON_COMPAT=( python2_7 )
+
+inherit autotools eutils python-single-r1 vcs-snapshot
+
+DESCRIPTION="Openstack Unix Guest Agent"
+HOMEPAGE="http://github.com/rackerlabs/openstack-guest-agents-unix"
+SRC_URI="https://github.com/rackerlabs/${PN}/tarball/${PV} -> ${P}.tar.gz"
+
+LICENSE="Apache-2.0"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="test"
+
+CDEPEND="
+ dev-python/pycrypto[${PYTHON_USEDEP}]
+ dev-python/pyxenstore[${PYTHON_USEDEP}]
+ dev-util/patchelf
+ ${PYTHON_DEPS}
+"
+DEPEND="
+ ${CDEPEND}
+ test? (
+ dev-python/mox[${PYTHON_USEDEP}]
+ dev-python/unittest2[${PYTHON_USEDEP}]
+ )
+"
+RDEPEND="${CDEPEND}"
+
+pkg_setup() {
+ python-single-r1_pkg_setup
+}
+
+src_prepare() {
+ epatch \
+ "${FILESDIR}"/4453b4773688eef6c60736d9cf07100716308a5e.patch \
+ "${FILESDIR}"/0513f013625b6a652d7dcb663eb396b9b5bb924e.patch
+
+ # Note: https://github.com/rackerlabs/openstack-guest-agents-unix/issues/52
+ ebegin 'patching tests/test_injectfile.py'
+ sed \
+ -e '97,127 d' \
+ -i tests/test_injectfile.py
+ STATUS=$?
+ eend ${STATUS}
+ [[ ${STATUS} -gt 0 ]] && die
+
+ eautoreconf
+}
+
+src_install() {
+ emake DESTDIR="${D}" install
+
+ doinitd scripts/gentoo/nova-agent
+}
+
+pkg_postinst() {
+ elog "If you would like to utilize openstack-guest-agents-unix, add 'nova-agent' to"
+ elog "your 'default' runlevel:"
+ elog " rc-update add nova-agent default"
+}