def create()

in nuvolaris/monitoring.py [0:0]


def create(owner=None):
    """
    Configuring the operator monitoring via prometheus.
    """
    logging.info("*** creating prometheus based monitoring")
    alert_manager = cfg.get("monitoring.alert-manager.enabled") or False

    if alert_manager:        
        logging.info("*** enabling prometheus alert-manager")
        data = ent_util.get_am_config_data()
        kus.renderTemplate("alert-manager","pvc-create.yaml",data,"alertmanager-01-pvc_generated.yaml")

        tplp = ["alert-manager-02-cm.yaml"]
        if(data['affinity'] or data['tolerations']):
            tplp.append("affinity-tolerance-dep-core-attach.yaml") 

        kust = kus.patchTemplates("alert-manager", tplp, data)
        am_spec = kus.kustom_list("alert-manager", kust, templates=[], data=data)

        if owner:
            kopf.append_owner_reference(am_spec['items'], owner)
        else:
            cfg.put("state.alertmanager.spec", am_spec)

        res = kube.apply(am_spec)
        # dynamically detect alert manager pod and wait for readiness
        util.wait_for_pod_ready(r"{.items[?(@.metadata.labels.app\.kubernetes\.io\/name == 'alertmanager')].metadata.name}")
    
    what = []
    spec = ""
    prometheus_data = ent_util.get_prometheus_config_data()    
    kus.renderTemplate("monitoring","pvc-create.yaml",prometheus_data,"prometheus-01-pvc_generated.yaml")
    p_tplp = []

    if prometheus_data['applypodsecurity']:
        logging.info("*** enabling prometheus pod security")
        prometheus_data["kind"]="Deployment"
        prometheus_data["fs_group"]=65534
        prometheus_data["run_as_user"]=65534
        p_tplp.append("security-global-attach.yaml")

    if(data['affinity'] or data['tolerations']):
       p_tplp.append("affinity-tolerance-dep-core-attach.yaml")         

    if len(p_tplp) > 0 :
        kust = kus.patchTemplates("monitoring",p_tplp,prometheus_data)
        spec = kus.kustom_list("monitoring", kust,templates=[], data={})
    else:    
        spec = kus.kustom_list("monitoring", *what) 

    if owner:
        kopf.append_owner_reference(spec['items'], owner)
    else:
        cfg.put("state.prometheus.spec", spec)

    res = kube.apply(spec)

    # dynamically detect prometheus pod and wait for readiness
    util.wait_for_pod_ready(r"{.items[?(@.metadata.labels.app\.kubernetes\.io\/name == 'prometheus')].metadata.name}")
 
    logging.info("*** created prometheus based monitoring")    
    return res