Add Compute Gallery images support (#1450)

This commit is contained in:
Peleus Uhley
2021-11-18 12:20:29 -08:00
committed by GitHub
parent dd03996961
commit 58091c2859

View File

@ -19,12 +19,25 @@ from .compute import get_compute_client
@cached(ttl=60) @cached(ttl=60)
def get_os(region: Region, image: str) -> Union[Error, OS]: def get_os(region: Region, image: str) -> Union[Error, OS]:
client = get_compute_client() client = get_compute_client()
# The dict returned here may not have any defined keys.
#
# See: https://github.com/Azure/msrestazure-for-python/blob/v0.6.3/msrestazure/tools.py#L134 # noqa: E501
parsed = parse_resource_id(image) parsed = parse_resource_id(image)
if "resource_group" in parsed: if "resource_group" in parsed:
if parsed["type"] == "galleries":
try: try:
# See: https://docs.microsoft.com/en-us/rest/api/compute/gallery-images/get#galleryimage # noqa: E501
name = client.gallery_images.get(
parsed["resource_group"], parsed["name"], parsed["child_name_1"]
).os_type.lower()
except (ResourceNotFoundError, CloudError) as err:
return Error(code=ErrorCode.INVALID_IMAGE, errors=[str(err)])
else:
try:
# See: https://docs.microsoft.com/en-us/rest/api/compute/images/get
name = client.images.get( name = client.images.get(
parsed["resource_group"], parsed["name"] parsed["resource_group"], parsed["name"]
).storage_profile.os_disk.os_type.name ).storage_profile.os_disk.os_type.lower()
except (ResourceNotFoundError, CloudError) as err: except (ResourceNotFoundError, CloudError) as err:
return Error(code=ErrorCode.INVALID_IMAGE, errors=[str(err)]) return Error(code=ErrorCode.INVALID_IMAGE, errors=[str(err)])
else: else: