def get_ami(version, channel, region, instance_type): def resolve_current_version(): version_file_url = release_metadata_url(channel, "current", version_file_name) version_metadata_file = utils.download_file_as_string(version_file_url) version_metadata_lines = version_metadata_file.split('\n') version_kv_pair = [ line for line in version_metadata_lines if line.startswith('COREOS_VERSION=') ][0] return version_kv_pair[15:] def version_as_float(numeric_version): return float(numeric_version[:numeric_version.rfind("."):]) current_version = resolve_current_version() if version != "current" and version_as_float(current_version) != version_as_float(version): msg = "Current coreOS {0} channel version {1} differs from specified {2}, press 'i' to ignore it or 'e' to exit" choice = confirm_version_change(msg.format(channel, current_version, version)) if not choice == 'i': sys.exit(0) ami_file_output = utils.download_file_as_string(release_metadata_url(channel, version, ami_list_file_name)) amis = json.loads(ami_file_output) image_type = image_types[instance_type.split('.')[0]] return [ ami for ami in amis['amis'] if ami['name'] == region ][0][image_type]
def resolve_current_version(): version_file_url = release_metadata_url(channel, "current", version_file_name) version_metadata_file = utils.download_file_as_string(version_file_url) version_metadata_lines = version_metadata_file.split('\n') version_kv_pair = [ line for line in version_metadata_lines if line.startswith('COREOS_VERSION=') ][0] return version_kv_pair[15:]
def assert_ami_matches(self, version, channel, region, instance_type, category): ami = coreos.get_ami(version, channel, region, instance_type) ami_file = utils.download_file_as_string(coreos.release_metadata_url(channel, version, coreos.ami_list_file_name)) stable_current_amis = json.loads(ami_file) expected_ami = [ ami for ami in stable_current_amis['amis'] if ami['name'] == region ][0][category] self.assertEqual(ami, expected_ami)