def create()

in nuvolaris/mongodb_operator.py [0:0]


def create(owner=None):
    """
    Deploys the mongodb operator and wait for the operator to be ready.
    """
    logging.info("*** creating mongodb-operator")    
    admin_user = cfg.get('mongodb.admin.user') or "whisk_user"
    admin_pwd = cfg.get('mongodb.admin.password') or "0therPa55"
    nuv_user = cfg.get('mongodb.nuvolaris.user') or "nuvolaris"
    nuv_pwd = cfg.get('mongodb.nuvolaris.password') or "s0meP@ass3"
    exposed = cfg.get('mongodb.exposedExternally') or False 

    data = util.get_mongodb_config_data()

    spec = kus.kustom_list("mongodb-operator")

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

    res = kube.apply(spec)
    logging.info("*** created mongodb operator")

    pod_name = get_operator_pod_name()
    #wait for mongodb_operator to be ready
    
    if( pod_name ):
        logging.info(f"checking for {pod_name}")
        while not kube.wait(f"pod/{pod_name}", "condition=ready"):
            logging.info(f"waiting for {pod_name} to be ready...")
            time.sleep(1)
        
        logging.info("*** creating a mongodb instance")
        
        tpl_filter =  ["mongodb-auth.yaml","mongodb-auth-nuvolaris.yaml","mongodb.yaml"]
        if exposed: 
            logging.info("*** including mongodb service for localhost access")
            tpl_filter.append("mongodb-svc.yaml")
        

        mkust = kus.patchTemplates("mongodb-operator-deploy", ["mongodb-auth.yaml","mongodb-auth-nuvolaris.yaml","mongodb-config.yaml"], data)    
        mspec = kus.restricted_kustom_list("mongodb-operator-deploy", mkust, templates=[],templates_filter=tpl_filter, data=data)

        if owner:
            kopf.append_owner_reference(mspec['items'], owner)
        else:
            cfg.put("state.mongodb.spec", mspec)
        
        res = kube.apply(mspec)
        # dynamically detect mongodb pod and wait for readiness
        util.wait_for_pod_ready("{.items[?(@.metadata.labels.app == 'nuvolaris-mongodb-svc')].metadata.name}")
    else:
        logging.info("*** something went wrong deploying mongodb operator")    
    return res