in nuvolaris/postgres_operator.py [0:0]
def create(owner=None):
"""
Deploys the postgres using kubegres operator and wait for the operator to be ready.
"""
logging.info("*** creating kubegres-operator")
pg_cm_data = util.postgres_manager_affinity_tolerations_data()
pg_op_kust = kus.patchTemplates("postgres-operator",templates=["affinity-tolerance-dep-core-attach.yaml"], data=pg_cm_data)
spec = kus.kustom_list("postgres-operator",pg_op_kust, templates=[], data={})
if owner:
kopf.append_owner_reference(spec['items'], owner)
else:
cfg.put("state.postgres-operator.spec", spec)
res = kube.apply(spec)
logging.info("*** created postgres operator")
#wait for postgres_operator to be ready
util.wait_for_pod_ready("{.items[?(@.metadata.labels.control-plane == 'controller-manager')].metadata.name}")
logging.info("*** creating a postgres instance")
data = util.get_postgres_config_data()
mkust = kus.patchTemplates("postgres-operator-deploy",templates=["postgres.yaml"], data=data)
mkust += kus.patchGenericEntry("Secret","postgres-nuvolaris-secret","/stringData/superUserPassword",data['postgres_root_password'])
mkust += kus.patchGenericEntry("Secret","postgres-nuvolaris-secret","/stringData/replicationUserPassword",data['postgres_root_replica_password'])
mkust += kus.patchGenericEntry("Secret","postgres-nuvolaris-secret","/stringData/nuvolarisUserPassword",data['postgres_nuvolaris_password'])
mspec = kus.kustom_list("postgres-operator-deploy", mkust, templates=[],data={})
if owner:
kopf.append_owner_reference(mspec['items'], owner)
else:
cfg.put("state.postgres.spec", mspec)
res += kube.apply(mspec)
# dynamically detect postgres pod and wait for readiness
util.wait_for_pod_ready("{.items[?(@.metadata.labels.app == 'nuvolaris-postgres')].metadata.name}")
if(res):
util.wait_for_service("{.items[?(@.metadata.labels.replicationRole == 'primary')]}")
if data['backup']:
logging.info("*** activating nuvolaris-postgres backup")
backup_data = util.get_postgres_backup_data()
tplp = ["set-attach.yaml","postgres-backup-sts.yaml"]
if(backup_data['affinity'] or backup_data['tolerations']):
tplp.append("affinity-tolerance-sts-core-attach.yaml")
bkust = kus.patchTemplates("postgres-backup",templates=tplp, data=backup_data)
bspec = kus.kustom_list("postgres-backup", bkust, templates=[],data={})
if owner:
kopf.append_owner_reference(bspec['items'], owner)
else:
cfg.put("state.postgres-backup.spec", bspec)
res += kube.apply(bspec)
if res:
update_system_cm_for_pdb(data)
return res