summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2012-11-13 14:13:12 -0500
committerScott Moser <smoser@ubuntu.com>2012-11-13 14:13:12 -0500
commitb503a6827a8aca13246e98272d83cf11fdeab820 (patch)
tree98623afdac904191c8fddc284fd48ba85739949a
parent7ea93af0599fc10d69c059e86e3f6e027b8ba7b4 (diff)
parent10147364638595d6c1a7077cc47c205413ef13a6 (diff)
downloadvyos-cloud-init-b503a6827a8aca13246e98272d83cf11fdeab820.tar.gz
vyos-cloud-init-b503a6827a8aca13246e98272d83cf11fdeab820.zip
Even when using boto < 2.6 force the unlazying to occur
It seems like its possible that boto 2.5.2 and below have the lazy loading metadata dictionary so as a precaution we will always take the hit of unlazying the metadata dictionary by traversing it which in the non-lazy dictionary case has no effect (its marginal). This also removes the need to check the boto version and the dependency on setup tools just for this case.
-rw-r--r--ChangeLog3
-rw-r--r--cloudinit/ec2_utils.py34
-rwxr-xr-xpackages/bddeb1
-rwxr-xr-xpackages/brpm1
4 files changed, 14 insertions, 25 deletions
diff --git a/ChangeLog b/ChangeLog
index 14efc4b1..3735b1e1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -38,9 +38,8 @@
runs the usage of this lazy loading is hidden and since that lazy loading
will be performed on future attribute access we must traverse the lazy loaded
dictionary and force it to full expand so that if cloud-init blocks the ec2
- metadata port the lazy loaded dictionary will continue working properly
+ metadata port the lazy loaded dictionary will continue working properly
instead of trying to make additional url calls which will fail (LP: #1068801)
- - Added dependency: python-pkg-resources (deb), python-setuptools (rpm)
- use a set of helper/parsing classes to perform system configuration
for easier test. (/etc/sysconfig, /etc/hostname, resolv.conf, /etc/hosts)
0.7.0:
diff --git a/cloudinit/ec2_utils.py b/cloudinit/ec2_utils.py
index 32bf3968..46b93f39 100644
--- a/cloudinit/ec2_utils.py
+++ b/cloudinit/ec2_utils.py
@@ -16,34 +16,26 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-import pkg_resources
-from pkg_resources import parse_version as pver
-
import boto.utils as boto_utils
-# Versions of boto >= 2.6.0 try to lazily load
-# the metadata backing, which doesn't work so well
-# in cloud-init especially since the metadata is
-# serialized and actions are performed where the
-# metadata server may be blocked (thus the datasource
-# will start failing) resulting in url exceptions
-# when fields that do exist (or would have existed)
-# do not exist due to the blocking that occurred.
-
-BOTO_LAZY = False
-try:
- _boto_lib = pkg_resources.get_distribution('boto')
- if _boto_lib.parsed_version > pver("2.5.2"): # pylint: disable=E1103
- BOTO_LAZY = True
-except pkg_resources.DistributionNotFound:
- pass
+# Versions of boto >= 2.6.0 (and possibly 2.5.2)
+# try to lazily load the metadata backing, which
+# doesn't work so well in cloud-init especially
+# since the metadata is serialized and actions are
+# performed where the metadata server may be blocked
+# (thus the datasource will start failing) resulting
+# in url exceptions when fields that do exist (or
+# would have existed) do not exist due to the blocking
+# that occurred.
def _unlazy_dict(mp):
if not isinstance(mp, (dict)):
return mp
- if not BOTO_LAZY:
- return mp
+ # Walk over the keys/values which
+ # forces boto to unlazy itself and
+ # has no effect on dictionaries that
+ # already have there items.
for (_k, v) in mp.items():
_unlazy_dict(v)
return mp
diff --git a/packages/bddeb b/packages/bddeb
index a92dad70..bda3170d 100755
--- a/packages/bddeb
+++ b/packages/bddeb
@@ -33,7 +33,6 @@ PKG_MP = {
'cheetah': 'python-cheetah',
'configobj': 'python-configobj',
'oauth': 'python-oauth',
- 'pkg_resources': 'python-pkg-resources',
'prettytable': 'python-prettytable',
'pyyaml': 'python-yaml',
}
diff --git a/packages/brpm b/packages/brpm
index 0b1e33cf..eea2a046 100755
--- a/packages/brpm
+++ b/packages/brpm
@@ -39,7 +39,6 @@ PKG_MP = {
'cheetah': 'python-cheetah',
'configobj': 'python-configobj',
'oauth': 'python-oauth',
- 'pkg_resources': 'python-setuptools',
'prettytable': 'python-prettytable',
'pyyaml': 'PyYAML',
}