in mysqloperator/backup_main.py [0:0]
def execute_meb(backup: MySQLBackup, backup_source: dict, backup_name: str, logger: logging.Logger) -> dict:
cert = ("/tls/client.pem", "/tls/client.key")
ca = "/tls/ca.pem"
backup_obj = MySQLBackup.read(backup.name, backup.namespace)
profile = backup_obj.get_profile().meb
request = {
"spec": profile,
"source": backup_source
}
if "s3" in profile.storage:
request["secret"] = get_secret(profile.storage["s3"]["credentials"],
backup.namespace, logger)
elif "oci" in profile.storage:
request["secret"] = get_secret(profile.storage["oci"]["credentials"],
backup.namespace, logger)
else:
raise Exception("Need either meb or s3 storage specification")
request["incremental"] = backup.parsed_spec.incremental
request["incremental_base"] = backup.parsed_spec.incrementalBase
request_s = json.dumps(request, default=lambda o: o.__dict__, indent=4)
name = urlquote(backup_name, safe="")
url = f"https://{backup_source['host']}:4443/backup/{name}"
logger.info(f"Triggering {url}")
response = requests.post(url, data=request_s,
cert=cert, verify=False) #, verify=ca)
print(response.content.decode())
if response.status_code != 200:
raise Exception(f"Failed to take backup. Backup daemon returned {response.status_code}: {response.content}")
info = {
"method": "meb",
"source": f"{backup_source['user']}@{backup_source['host']}:{backup_source['port']}",
#"spaceAvailable": f"{gb_avail:.4}G",
#"size": f"{backup_size:.4}G"
}
return info