def __get_managed_instance_group_for_instance()

in ad-joining/register-computer/main.py [0:0]


def __get_managed_instance_group_for_instance(gce_instance):    
    if ("metadata" in gce_instance.keys() and "items" in gce_instance["metadata"]):
        metadata_created_by = next((x for x in gce_instance["metadata"]["items"] if x["key"] == "created-by"), None)

        if (metadata_created_by and "instanceGroupManagers" in metadata_created_by["value"]):
            # https://cloud.google.com/compute/docs/instance-groups/getting-info-about-migs#checking_if_a_vm_instance_is_part_of_a_mig
            # The "created-by" metadata value is in the format of either:
            # projects/[number]/zones/[zone]/instanceGroupManagers/[mig-name]
            # or
            # # projects/[number]/regions/[region]/instanceGroupManagers/[mig-name]
            # Return the mig-name, and the region/zone it belongs to
            mig_info = {}
            mig_id_parts = (metadata_created_by["value"]).split('/')
            mig_info["zone"] = mig_id_parts[3] if mig_id_parts[2] == "zones" else None
            mig_info["region"] = mig_id_parts[3] if mig_id_parts[2] == "regions" else None
            mig_info["name"] = mig_id_parts[5]

            return mig_info
    return