annotate configmix/extras/aws.py @ 766:a90273abc8a4

Make any notes regarding IMDSv2 and IPv4/IPv6
author Franz Glasner <f.glasner@feldmann-mg.com>
date Mon, 19 Feb 2024 15:49:58 +0100
parents f454889e41fa
children 538a579cf6fe
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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"
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
38 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
39 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
40 TIMEOUT = 2
503768f91a05 More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents: 282
diff changeset
41 # 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
42 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
43
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
44 _meta_instanceid = None
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
45 _meta_region = None
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
46 _meta_availability_zone = None
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
47 _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
48
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 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
51 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
52 try:
283
503768f91a05 More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents: 282
diff changeset
53 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
54 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
55 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
56 resp.raise_for_status()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
57 return resp.text
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
58 except requests.exceptions.RequestException:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
59 return _MARKER
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
60
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 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
63 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
64 try:
283
503768f91a05 More granular configuration of retrieving AWS metadata: retries with backoff setting
Franz Glasner <fzglas.hg@dom66.de>
parents: 282
diff changeset
65 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
66 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
67 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
68 resp.raise_for_status()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
69 return resp.json()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
70 except requests.exceptions.RequestException:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
71 return _MARKER
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
72 except ValueError:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
73 # JSON error
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
74 return _MARKER
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
75
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 def _get_meta_instanceid():
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
78 global _meta_instanceid
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
79 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
80 _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
81 return _meta_instanceid
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
82
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 def _get_meta_region():
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
85 global _meta_region
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
86 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
87 _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
88 return _meta_region
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
89
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 def _get_meta_avzone():
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
92 global _meta_availability_zone
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
93 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
94 _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
95 return _meta_availability_zone
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
96
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 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
99 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
100 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
101 _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
102 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
103 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
104
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 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
107 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
108 v = _get_meta_instanceid()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
109 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
110 v = _get_meta_region()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
111 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
112 v = _get_meta_avzone()
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
113 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
114 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
115 if idoc is _MARKER:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
116 v = _MARKER
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
117 else:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
118 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
119 else:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
120 v = _MARKER
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
121 if v is _MARKER:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
122 if default is _MARKER:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
123 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
124 else:
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
125 return default
da1596034954 Implemented an "AWS" namespace to retrieve some AWS-specific metadata
Franz Glasner <fzglas.hg@dom66.de>
parents:
diff changeset
126 return v