def whisk_user_create()

in nuvolaris/user_handlers.py [0:0]


def whisk_user_create(spec, name, patch, **kwargs):
    logging.info(f"*** whisk_user_create {name}")
    conditions = []
    state = {
    }

    conditions.append({        
        "lastTransitionTime": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        "status": "True",
        "type": "Initialized"})

    ucfg = get_ucfg(spec)
    user_metadata = UserMetadata(ucfg)
    owner = kube.get(f"wsku/{name}")
    
    if(ucfg.get("namespace") and ucfg.get("auth")):
        res = cdb.create_ow_user(ucfg,user_metadata)       
        logging.info(f"OpenWhisk subject {ucfg.get('namespace')} added = {res}")
        state['couchdb']= res

        res = endpoint.create_ow_api_endpoint(ucfg,user_metadata)
        logging.info(f"OpenWhisk api endpoints {ucfg.get('namespace')} added = {res}")
        state['api']= res

    if(cfg.get('components.minio') and (ucfg.get('object-storage.data.enabled') or ucfg.get('object-storage.route.enabled'))):        
        minio_deploy.create_ow_storage(state, ucfg, user_metadata, owner)

    if(cfg.get('components.minio') and ucfg.get('object-storage.route.enabled') and cfg.get('components.static')):
        res = static.create_ow_static_endpoint(ucfg,user_metadata, owner)
        logging.info("OpenWhisk static endpoint for %s added = %s", ucfg.get('namespace'), res)
        state['static']= res

    if(cfg.get('components.mongodb') and ucfg.get('mongodb.enabled')):
        res = mdb.create_db_user(ucfg,user_metadata)
        logging.info(f"Mongodb setup for {ucfg.get('namespace')} added = {res}")
        state['mongodb']= res

    if(cfg.get('components.redis') and ucfg.get('redis.enabled')):
        res = redis.create_db_user(ucfg, user_metadata)
        logging.info(f"Redis setup for {ucfg.get('namespace')} added = {res}")
        state['redis']= res

    if(cfg.get('components.postgres') and ucfg.get('postgres.enabled')):
        res = postgres.create_db_user(ucfg, user_metadata)
        logging.info(f"Postgres setup for {ucfg.get('namespace')} added = {res}")
        state['postgres']= res 

    if(cfg.get('components.milvus') and ucfg.get('milvus.enabled')):
        res = milvus.create_ow_milvus(ucfg, user_metadata)
        logging.info(f"Milvus setup for {ucfg.get('namespace')} added = {res}")
        state['milvus']= res

    # finally persists user metadata into the internal couchdb database
    user_metadata.dump()
    res = userdb.save_user_metadata(user_metadata)
    state['user_metadata']= res

    conditions.append({        
        "lastTransitionTime": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        "status": "True",
        "type": "Ready"})

    patch.status['conditions']=conditions
    return state