def _get_total_cores()

in src/hpcadvisor/batch_handler.py [0:0]


def _get_total_cores(vm_size):
    log.debug(f"Get total cores for sku={vm_size}")

    credentials = DefaultAzureCredential()

    subscription_id = env["SUBSCRIPTION"]
    region = env["REGION"]

    compute_client = ComputeManagementClient(credentials, subscription_id)

    results = compute_client.resource_skus.list(
        filter="location eq '{}'".format(region)
    )

    resourceSkusList = [result.as_dict() for result in results]
    filtered_sku = next(
        sku for sku in resourceSkusList if sku["name"].lower() == vm_size.lower()
    )

    if filtered_sku:
        vcpus_available = next(
            capability["value"]
            for capability in filtered_sku["capabilities"]
            if capability["name"] == "vCPUsAvailable"
        )
        log.debug(f"vcpus_available={vcpus_available} for sku={vm_size}")
        return int(vcpus_available)
    else:
        log.critical(f"Cannot find sku={vm_size} to obtain its total cores")
        return None