Mercurial > hgrepos > Python > libs > ConfigMix
annotate configmix/extras/aws.py @ 767:538a579cf6fe
Drop a note to use the new endpoint URL for the availability-zone
| author | Franz Glasner <f.glasner@feldmann-mg.com> |
|---|---|
| date | Mon, 19 Feb 2024 15:58:27 +0100 |
| parents | a90273abc8a4 |
| children | 665cc514a0cc |
| rev | line source |
|---|---|
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
1 # -*- coding: utf-8 -*- |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
2 # :- |
|
593
f454889e41fa
Adjust copyright year (the end) to 2022
Franz Glasner <fzglas.hg@dom66.de>
parents:
296
diff
changeset
|
3 # :Copyright: (c) 2015-2022, Franz Glasner. All rights reserved. |
|
296
eed16a1ec8f3
Use SPDX license identifiers (either full or short) all over the package
Franz Glasner <fzglas.hg@dom66.de>
parents:
284
diff
changeset
|
4 # :License: BSD-3-Clause. See LICENSE.txt for details. |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
5 # :- |
|
284
4aaf74858d07
Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
Franz Glasner <fzglas.hg@dom66.de>
parents:
283
diff
changeset
|
6 """AWS namespace implementation. |
|
4aaf74858d07
Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
Franz Glasner <fzglas.hg@dom66.de>
parents:
283
diff
changeset
|
7 |
|
4aaf74858d07
Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
Franz Glasner <fzglas.hg@dom66.de>
parents:
283
diff
changeset
|
8 .. see:: - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-metadata.html |
|
4aaf74858d07
Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
Franz Glasner <fzglas.hg@dom66.de>
parents:
283
diff
changeset
|
9 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instancedata-data-retrieval.html |
|
4aaf74858d07
Some links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws moduleSome links to AWS docu into the aws module
Franz Glasner <fzglas.hg@dom66.de>
parents:
283
diff
changeset
|
10 - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-identity-documents.html |
|
766
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
11 . IMDSv2: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/instance-metadata-v2-how-it-works.html |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
12 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
13 """ |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
14 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
15 from __future__ import division, absolute_import, print_function |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
16 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
17 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
18 __all__ = [] |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
19 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
20 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
21 import requests |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
22 import requests.exceptions |
|
283
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
23 import requests.adapters |
|
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
24 import urllib3 |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
25 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
26 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
27 _MARKER = object() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
28 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
29 |
|
766
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
30 # |
|
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
31 # These are for IMDSv1 (Instance Metadata Service) |
|
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
32 # |
|
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
33 # There is a new session-oriented IMDSv2 implementation using |
|
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
34 # IPv4 (169.254.169.254) and IPv6 ([fd00:ec2::254]). |
|
a90273abc8a4
Make any notes regarding IMDSv2 and IPv4/IPv6
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
593
diff
changeset
|
35 # |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
36 URL_META_INSTANCEID = "http://169.254.169.254/latest/meta-data/instance-id" |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
37 URL_META_REGION = "http://169.254.169.254/latest/meta-data/placement/region" |
|
767
538a579cf6fe
Drop a note to use the new endpoint URL for the availability-zone
Franz Glasner <f.glasner@feldmann-mg.com>
parents:
766
diff
changeset
|
38 # XXX FIXME: Use placement/availability-zone instead??? |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
39 URL_META_AVAILABILITY_ZONE = "http://169.254.169.254/latest/meta-data/availability-zone" |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
40 URL_DYN_INSTANCE_IDENTITY_DOC = "http://169.254.169.254/latest/dynamic/instance-identity/document" |
|
283
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
41 TIMEOUT = 2 |
|
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
42 # See https://gist.github.com/doublenns/7e3e4b72df4aaeccbeabf87ba767f44e |
|
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
43 RETRIES = urllib3.Retry(total=3, backoff_factor=0.3) |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
44 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
45 _meta_instanceid = None |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
46 _meta_region = None |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
47 _meta_availability_zone = None |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
48 _dyn_instance_identity_doc = None |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
49 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
50 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
51 def _get_text_req(url): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
52 with requests.Session() as sess: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
53 try: |
|
283
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
54 a = requests.adapters.HTTPAdapter(max_retries=RETRIES) |
|
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
55 sess.mount("http://", a) |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
56 resp = sess.get(url, timeout=TIMEOUT) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
57 resp.raise_for_status() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
58 return resp.text |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
59 except requests.exceptions.RequestException: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
60 return _MARKER |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
61 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
62 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
63 def _get_json_req(url): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
64 with requests.Session() as sess: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
65 try: |
|
283
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
66 a = requests.adapters.HTTPAdapter(max_retries=RETRIES) |
|
503768f91a05
More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents:
282
diff
changeset
|
67 sess.mount("http://", a) |
|
282
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
68 resp = sess.get(url, timeout=TIMEOUT) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
69 resp.raise_for_status() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
70 return resp.json() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
71 except requests.exceptions.RequestException: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
72 return _MARKER |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
73 except ValueError: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
74 # JSON error |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
75 return _MARKER |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
76 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
77 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
78 def _get_meta_instanceid(): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
79 global _meta_instanceid |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
80 if _meta_instanceid is None: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
81 _meta_instanceid = _get_text_req(URL_META_INSTANCEID) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
82 return _meta_instanceid |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
83 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
84 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
85 def _get_meta_region(): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
86 global _meta_region |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
87 if _meta_region is None: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
88 _meta_region = _get_text_req(URL_META_REGION) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
89 return _meta_region |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
90 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
91 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
92 def _get_meta_avzone(): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
93 global _meta_availability_zone |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
94 if _meta_availability_zone is None: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
95 _meta_availability_zone = _get_text_req(URL_META_AVAILABILITY_ZONE) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
96 return _meta_availability_zone |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
97 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
98 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
99 def _get_dyn_instance_identity_doc(): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
100 global _dyn_instance_identity_doc |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
101 if _dyn_instance_identity_doc is None: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
102 _dyn_instance_identity_doc = _get_json_req( |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
103 URL_DYN_INSTANCE_IDENTITY_DOC) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
104 return _dyn_instance_identity_doc |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
105 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
106 |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
107 def _awslookup(name, default=_MARKER): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
108 if name == "metadata.instance-id": |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
109 v = _get_meta_instanceid() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
110 elif name == "metadata.placement.region": |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
111 v = _get_meta_region() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
112 elif name == "metadata.placement.availability-zone": |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
113 v = _get_meta_avzone() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
114 elif name.startswith("dynamic.instance-identity."): |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
115 idoc = _get_dyn_instance_identity_doc() |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
116 if idoc is _MARKER: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
117 v = _MARKER |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
118 else: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
119 v = idoc.get(name[26:], _MARKER) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
120 else: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
121 v = _MARKER |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
122 if v is _MARKER: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
123 if default is _MARKER: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
124 raise KeyError("key %r not found in the AWS namespace" % name) |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
125 else: |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
126 return default |
|
da1596034954
Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff
changeset
|
127 return v |
