summaryrefslogtreecommitdiff
path: root/cloudinit/distros
diff options
context:
space:
mode:
authorAndrew Jorgensen <ajorgens@amazon.com>2017-11-27 21:54:09 +0000
committerScott Moser <smoser@ubuntu.com>2017-12-11 18:18:08 -0500
commit703241a3c50f2cfec21e7c8e90616c3378ebbea2 (patch)
treec62cb25d76ca784c953a23ffa9c0f80db17b4b08 /cloudinit/distros
parentbd0ffd1e115c4f895c82e1115f1f586849925d88 (diff)
downloadvyos-cloud-init-703241a3c50f2cfec21e7c8e90616c3378ebbea2.tar.gz
vyos-cloud-init-703241a3c50f2cfec21e7c8e90616c3378ebbea2.zip
ec2: Use instance-identity doc for region and instance-id
The instance identity document is a better source for region information, partly because region isn't actually in meta-data at all, only availability-zone, which happens to be named similarly. Reviewed-by: Ethan Faust <efaust@amazon.com> Reviewed-by: Cyle Riggs <cyler@amazon.com> Reviewed-by: Tom Kirchner <tjk@amazon.com> Reviewed-by: Matt Nierzwicki <nierzwic@amazon.com> [ajorgens@amazon.com: rebase onto 0.7.9] [ajorgens@amazon.com: changes per merge proposal discussions]
Diffstat (limited to 'cloudinit/distros')
-rwxr-xr-xcloudinit/distros/__init__.py15
1 files changed, 7 insertions, 8 deletions
diff --git a/cloudinit/distros/__init__.py b/cloudinit/distros/__init__.py
index 99e60e7a..55260eae 100755
--- a/cloudinit/distros/__init__.py
+++ b/cloudinit/distros/__init__.py
@@ -45,6 +45,10 @@ OSFAMILIES = {
LOG = logging.getLogger(__name__)
+# This is a best guess regex, based on current EC2 AZs on 2017-12-11.
+# It could break when Amazon adds new regions and new AZs.
+_EC2_AZ_RE = re.compile('^[a-z][a-z]-(?:[a-z]+-)+[0-9][a-z]$')
+
@six.add_metaclass(abc.ABCMeta)
class Distro(object):
@@ -683,18 +687,13 @@ def _get_package_mirror_info(mirror_info, data_source=None,
if not mirror_info:
mirror_info = {}
- # ec2 availability zones are named cc-direction-[0-9][a-d] (us-east-1b)
- # the region is us-east-1. so region = az[0:-1]
- directions_re = '|'.join([
- 'central', 'east', 'north', 'northeast', 'northwest',
- 'south', 'southeast', 'southwest', 'west'])
- ec2_az_re = ("^[a-z][a-z]-(%s)-[1-9][0-9]*[a-z]$" % directions_re)
-
subst = {}
if data_source and data_source.availability_zone:
subst['availability_zone'] = data_source.availability_zone
- if re.match(ec2_az_re, data_source.availability_zone):
+ # ec2 availability zones are named cc-direction-[0-9][a-d] (us-east-1b)
+ # the region is us-east-1. so region = az[0:-1]
+ if _EC2_AZ_RE.match(data_source.availability_zone):
subst['ec2_region'] = "%s" % data_source.availability_zone[0:-1]
if data_source and data_source.region: