summaryrefslogtreecommitdiff
path: root/cloudinit/sources
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2012-11-12 10:01:02 -0500
committerScott Moser <smoser@ubuntu.com>2012-11-12 10:01:02 -0500
commit7446280d1398f7dc8ad74a792416cd82a5873d67 (patch)
treef050693a881d4ef9ac63bf2cf430082714c71b5a /cloudinit/sources
parent71ba36704132ff8597dfc0e45b34e0c4424e239f (diff)
parent7fd838c187ad004d124c9293d91fdb4fca083f66 (diff)
downloadvyos-cloud-init-7446280d1398f7dc8ad74a792416cd82a5873d67.tar.gz
vyos-cloud-init-7446280d1398f7dc8ad74a792416cd82a5873d67.zip
wrap boto.utils.get_instance_metadata to ensure non-lazy loading
newer versions of boto lazily load the metadata from the ec2 metadata service. Here, we: 1. Add a ec2_utils module that checks which version of boto is being used and under the right versions the metadata dictionary will be expanded. 2. Use this new ec2_utils module in the cloudstack and ec2 datasources as there entrypoints into boto. 3. Add a dependency on python-pkg-resources (from pkg_resources import parse_version) to determine the boto version. LP: #1068801
Diffstat (limited to 'cloudinit/sources')
-rw-r--r--cloudinit/sources/DataSourceCloudStack.py11
-rw-r--r--cloudinit/sources/DataSourceEc2.py11
2 files changed, 10 insertions, 12 deletions
diff --git a/cloudinit/sources/DataSourceCloudStack.py b/cloudinit/sources/DataSourceCloudStack.py
index f7ffa7cb..78cf24d7 100644
--- a/cloudinit/sources/DataSourceCloudStack.py
+++ b/cloudinit/sources/DataSourceCloudStack.py
@@ -26,8 +26,7 @@ from struct import pack
import os
import time
-import boto.utils as boto_utils
-
+from cloudinit import ec2_utils as ec2
from cloudinit import log as logging
from cloudinit import sources
from cloudinit import url_helper as uhelp
@@ -116,10 +115,10 @@ class DataSourceCloudStack(sources.DataSource):
if not self.wait_for_metadata_service():
return False
start_time = time.time()
- self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,
- None, self.metadata_address)
- self.metadata = boto_utils.get_instance_metadata(self.api_ver,
- self.metadata_address)
+ self.userdata_raw = ec2.get_instance_userdata(self.api_ver,
+ self.metadata_address)
+ self.metadata = ec2.get_instance_metadata(self.api_ver,
+ self.metadata_address)
LOG.debug("Crawl of metadata service took %s seconds",
int(time.time() - start_time))
return True
diff --git a/cloudinit/sources/DataSourceEc2.py b/cloudinit/sources/DataSourceEc2.py
index cff50669..6f51dfae 100644
--- a/cloudinit/sources/DataSourceEc2.py
+++ b/cloudinit/sources/DataSourceEc2.py
@@ -23,8 +23,7 @@
import os
import time
-import boto.utils as boto_utils
-
+from cloudinit import ec2_utils as ec2
from cloudinit import log as logging
from cloudinit import sources
from cloudinit import url_helper as uhelp
@@ -65,10 +64,10 @@ class DataSourceEc2(sources.DataSource):
if not self.wait_for_metadata_service():
return False
start_time = time.time()
- self.userdata_raw = boto_utils.get_instance_userdata(self.api_ver,
- None, self.metadata_address)
- self.metadata = boto_utils.get_instance_metadata(self.api_ver,
- self.metadata_address)
+ self.userdata_raw = ec2.get_instance_userdata(self.api_ver,
+ self.metadata_address)
+ self.metadata = ec2.get_instance_metadata(self.api_ver,
+ self.metadata_address)
LOG.debug("Crawl of metadata service took %s seconds",
int(time.time() - start_time))
return True