404

[ Avaa Bypassed ]




Upload:

Command:

botdev@3.145.82.96: ~ $
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)

Filemanager

Name Type Size Permission Actions
__pycache__ Folder 0755
apt Folder 0755
__init__.py File 198 B 0644
amp.py File 21.24 KB 0644
bootstrap.py File 1.38 KB 0644
bpickle.py File 6.31 KB 0644
cli.py File 440 B 0644
cloud.py File 1.67 KB 0644
compat.py File 564 B 0644
config.py File 12.15 KB 0644
disk.py File 4.97 KB 0644
encoding.py File 545 B 0644
fd.py File 751 B 0644
fetch.py File 6.49 KB 0644
format.py File 959 B 0644
fs.py File 3.55 KB 0644
gpg.py File 1.75 KB 0644
hashlib.py File 264 B 0644
jiffies.py File 1.58 KB 0644
juju.py File 860 B 0644
lock.py File 705 B 0644
log.py File 484 B 0644
logging.py File 2.47 KB 0644
lsb_release.py File 893 B 0644
message.py File 1.91 KB 0644
monitor.py File 6.13 KB 0644
network.py File 8.91 KB 0644
persist.py File 20.5 KB 0644
plugin.py File 1.75 KB 0644
process.py File 6.45 KB 0644
reactor.py File 8.61 KB 0644
schema.py File 5.97 KB 0644
scriptcontent.py File 522 B 0644
sequenceranges.py File 5.59 KB 0644
store.py File 1.38 KB 0644
sysstats.py File 6.94 KB 0644
tag.py File 505 B 0644
testing.py File 24.08 KB 0644
timestamp.py File 233 B 0644
twisted_util.py File 4.37 KB 0644
user.py File 1.44 KB 0644
versioning.py File 1.24 KB 0644
vm_info.py File 3.2 KB 0644
warning.py File 394 B 0644