def instance_properties()

in community/modules/scheduler/schedmd-slurm-gcp-v6-controller/modules/slurm_files/scripts/resume.py [0:0]


def instance_properties(nodeset: NSDict, model:str, placement_group:Optional[str], labels:Optional[dict], job_id:Optional[int]):
    props = NSDict()

    if labels: # merge in extra labels on instance and disks
        template = lookup().node_template(model)
        template_info = lookup().template_info(template)

        props.labels = {**template_info.labels, **labels}
        
        for disk in template_info.disks:
            if disk.initializeParams.get("diskType", "local-ssd") == "local-ssd":
                continue # do not label local ssd
            disk.initializeParams.labels.update(labels)
        props.disks = template_info.disks

    if placement_group:
        props.resourcePolicies = [placement_group]

    if reservation := lookup().nodeset_reservation(nodeset):
        update_reservation_props(reservation, props, placement_group, reservation.calendar)

    if (fr := lookup().future_reservation(nodeset)) and fr.specific:
        assert fr.active_reservation
        update_reservation_props(fr.active_reservation, props, placement_group, fr.calendar)

    if props.resourcePolicies:
       props.scheduling.onHostMaintenance = "TERMINATE"

    if nodeset.maintenance_interval:
        props.scheduling.maintenanceInterval = nodeset.maintenance_interval

    if nodeset.dws_flex.enabled and nodeset.dws_flex.use_bulk_insert:
        update_props_dws(props, nodeset.dws_flex, job_id)

    # Override with properties explicit specified in the nodeset
    props.update(nodeset.get("instance_properties") or {})
    return props