/usr/lib/python3/dist-packages/landscape/lib
NameSizeModeActions
apt/-0755rm
__pycache__/-0755rm
amp.py217450644editdlrm
backoff.py16830644editdlrm
base64.py1960644editdlrm
bootstrap.py14160644editdlrm
bpickle.py64710644editdlrm
cli.py4400644editdlrm
cloud.py17150644editdlrm
compat.py6160644editdlrm
config.py124840644editdlrm
disk.py50270644editdlrm
encoding.py5450644editdlrm
fd.py7510644editdlrm
fetch.py66470644editdlrm
format.py9590644editdlrm
fs.py38890644editdlrm
gpg.py17960644editdlrm
hashlib.py2640644editdlrm
jiffies.py16210644editdlrm
juju.py8600644editdlrm
lock.py7050644editdlrm
log.py4840644editdlrm
logging.py25280644editdlrm
message.py26380644editdlrm
monitor.py62810644editdlrm
network.py98210644editdlrm
os_release.py13240644editdlrm
persist.py209950644editdlrm
plugin.py17870644editdlrm
process.py66030644editdlrm
reactor.py88120644editdlrm
schema.py64570644editdlrm
scriptcontent.py5220644editdlrm
sequenceranges.py57240644editdlrm
store.py14080644editdlrm
sysstats.py79200644editdlrm
tag.py5060644editdlrm
testing.py246620644editdlrm
timestamp.py2330644editdlrm
twisted_util.py44760644editdlrm
user.py14760644editdlrm
versioning.py12650644editdlrm
vm_info.py31720644editdlrm
warning.py3940644editdlrm
__init__.py1980644editdlrm
Edit: /usr/lib/python3/dist-packages/landscape/lib/cloud.py (1715B)
from landscape.lib.fetch import fetch_async EC2_HOST = "169.254.169.254" EC2_API = "http://%s/latest" % (EC2_HOST,) MAX_LENGTH = 64 def fetch_ec2_meta_data(fetch=None): """Fetch EC2 information about the cloud instance. The fetch parameter provided above is for non-mocked testing purposes. """ cloud_data = [] # We're not using a DeferredList here because we want to keep the # number of connections to the backend minimal. See lp:567515. deferred = _fetch_ec2_item("instance-id", cloud_data, fetch) deferred.addCallback( lambda ignore: _fetch_ec2_item("instance-type", cloud_data, fetch)) deferred.addCallback( lambda ignore: _fetch_ec2_item("ami-id", cloud_data, fetch)) def return_result(ignore): """Record the instance data returned by the EC2 API.""" def _process_result(value): if value is not None: if isinstance(value, bytes): value = value.decode("utf-8") return value[:MAX_LENGTH] (instance_id, instance_type, ami_id) = cloud_data return { "instance-id": _process_result(instance_id), "ami-id": _process_result(ami_id), "instance-type": _process_result(instance_type)} deferred.addCallback(return_result) return deferred def _fetch_ec2_item(path, accumulate, fetch=None): """ Get data at C{path} on the EC2 API endpoint, and add the result to the C{accumulate} list. The C{fetch} parameter is provided for testing only. """ url = EC2_API + "/meta-data/" + path if fetch is None: fetch = fetch_async return fetch(url, follow=False).addCallback(accumulate.append)