in nuvolaris/couchdb.py [0:0]
def create(owner=None):
logging.info("create couchdb")
runtime = cfg.get('nuvolaris.kube')
u = cfg.get('couchdb.admin.user', "COUCHDB_ADMIN_USER", "whisk_admin")
p = cfg.get('couchdb.admin.password', "COUCHDB_ADMIN_PASSWORD", "some_passw0rd")
user = f"db_username={u}"
pasw = f"db_password={p}"
img = cfg.get('operator.image') or "missing-operator-image"
tag = cfg.get('operator.tag') or "missing-operator-tag"
image = f"{img}:{tag}"
container_image = runtime in ['openshift'] and "ghcr.io/nuvolaris/couchdb:2.3.1-nuvolaris.23101915" or "apache/couchdb:2.3"
config = json.dumps(cfg.getall())
data = {
"runtime":runtime,
"container_image":container_image,
"image": image,
"config": config,
"name": "couchdb",
"container": "couchdb",
"size": cfg.get("couchdb.volume-size", "COUCHDB_VOLUME_SIZE", 10),
"dir": "/opt/couchdb/data",
"storageClass": cfg.get("nuvolaris.storageclass"),
"container_cpu_req": cfg.get('configs.couchdb.resources.cpu-req') or "500m",
"container_cpu_lim": cfg.get('configs.couchdb.resources.cpu-lim') or "1",
"container_mem_req": cfg.get('configs.couchdb.resources.mem-req') or "1G",
"container_mem_lim": cfg.get('configs.couchdb.resources.mem-lim') or "2G",
"container_manage_resources": cfg.exists('configs.couchdb.resources.cpu-req'),
"index": "1",
"replicationRole":"primary",
"appName":"nuvolaris-couchdb"
}
tplp = ["set-attach.yaml"]
util.couch_affinity_tolerations_data(data)
if(data['affinity'] or data['tolerations']):
tplp.append("affinity-tolerance-sts-core-attach.yaml")
kus.processTemplate("couchdb","couchdb-set-tpl.yaml",data,"couchdb-set_generated.yaml")
kust = kus.secretLiteral("couchdb-auth", user, pasw)
kust += kus.patchTemplates("couchdb",tplp,data)
spec = kus.restricted_kustom_list("couchdb", kust, templates=["couchdb-init.yaml"],templates_filter=["couchdb-set_generated.yaml","couchdb-svc.yaml"],data=data)
if owner:
kopf.append_owner_reference(spec['items'], owner)
else:
cfg.put("state.couchdb.spec", spec)
res = kube.apply(spec)
if res:
# dynamically detect couchdb pod and wait for readiness
util.wait_for_pod_ready("{.items[?(@.metadata.labels.name == 'couchdb')].metadata.name}")
return res