def detect_labels()

in actions/devel/download/nuvolaris/config.py [0:0]


def detect_labels(labels=None):    
    # skip autodetection of nuvolaris.kube if already available in _config
    if exists('nuvolaris.kube') and get('nuvolaris.kube') != 'auto':
        logging.info(f"*** configuration provided already a nuvolaris.kube={get('nuvolaris.kube')}")
        return {}

    # read labels if not available
    if not labels:
        import nuvolaris.kube as kube
        labels = kube.kubectl("get", "nodes", jsonpath='{.items[].metadata.labels}')        
    
    res = {}
    kube = None
    for i in labels:
        for j in list(i.keys()):
            if j.startswith("nuvolaris.io/"):
                key = f"nuvolaris.{j[13:]}"
                res[key] = i[j]
                _config[key] = i[j]

    for i in labels:
        for j in list(i.keys()):
            # detect the kube type
            if j.find("eksctl.io") >= 0:
                kube ="eks"
                break
            if j.find("k8s.io/cloud-provider-aws") >= 0:
                kube ="eks"
                break
            elif j.find("microk8s.io") >= 0:
                kube = "microk8s"
                break
            elif j.find("lke.linode.com") >=0:
                kube = "lks"
                break
            elif j.find("node.openshift.io") >=0:
                kube = "openshift"
                break
            elif j.endswith("kubernetes.io/instance-type") and i[j] == "k3s":
                kube = "k3s"
                break
            elif j.find("cloud.google.com/gke") >=0:
                kube = "gke"
                break 
            elif j.find("kubernetes.azure.com") >=0:
                kube = "aks"
                break                        
            # assign all the 'nuvolaris.io' labels
        
    if kube:
        res["nuvolaris.kube"] = kube 
        _config["nuvolaris.kube"] = kube
        return res

    # defaults to generic if it is not yet detected
    if exists('nuvolaris.kube') and get('nuvolaris.kube') == 'auto':
        _config["nuvolaris.kube"] = "generic"
        res["nuvolaris.kube"] = "generic"

    return res