Check for existing deployment

This commit is contained in:
Prathamesh Musale 2025-02-05 18:39:18 +05:30
parent a8e7235267
commit f5947a8a65

View File

@ -158,18 +158,23 @@ def process_app_deployment_request(
% app_deployment_request.attributes.deployment
)
# Target deployment dir and existing deployment dir
# Target deployment dir
deployment_dir = os.path.join(deployment_parent_dir, fqdns[-1])
existing_deployment_dir = deployment_dir
# Existing deployment record: take the first lrn that resolves
deployment_record = None
existing_deployment_dir = deployment_dir # Default to target dir in case the app had been undeployed
for app_deployment_lrn in app_deployment_lrns:
deployment_record = laconic.get_record(app_deployment_lrn)
if deployment_record is not None:
# TODO: Determine the deployment dir for existing deployment
# prev_request = laconic.get_record(deployment_record.attributes.request, True)
# existing_deployment_dir = ...
if deployment_record:
# Determine the deployment dir for existing deployment
dir_name = deployment_record.attributes.url.replace("https://", "")
existing_deployment_dir = os.path.join(deployment_parent_dir, dir_name)
if not os.path.exists(existing_deployment_dir):
raise Exception(
"Deployment record %s exists, but not deployment dir %s. Please remove name."
% (app_deployment_lrn, existing_deployment_dir)
)
break
@ -177,16 +182,10 @@ def process_app_deployment_request(
# At present we use this to generate a unique but stable ID for the app's host container
# TODO: implement support to derive this transparently from the already-unique deployment id
unique_deployment_id = hashlib.md5(fqdns[-1].encode()).hexdigest()[:16]
deployment_config_file = os.path.join(existing_deployment_dir, "config.env")
deployment_container_tag = "laconic-webapp/%s:local" % unique_deployment_id
app_image_shared_tag = f"laconic-webapp/{app.id}:local"
# b. check for deployment directory (create if necessary)
if not os.path.exists(existing_deployment_dir):
if deployment_record:
raise Exception(
"Deployment record %s exists, but not deployment dir %s. Please remove name."
% (app_deployment_lrn, deployment_dir)
)
logger.log(
f"Creating webapp deployment in: {deployment_dir} with container id: {deployment_container_tag}"
)
@ -200,8 +199,14 @@ def process_app_deployment_request(
image_registry,
env_filename,
)
elif env_filename:
shutil.copyfile(env_filename, deployment_config_file)
else:
# Rename deployment dir according to new request (last fqdn from given dns)
os.rename(existing_deployment_dir, deployment_dir)
# Update config if required
if env_filename:
deployment_config_file = os.path.join(deployment_dir, "config.env")
shutil.copyfile(env_filename, deployment_config_file)
# TODO: Update spec with new urls
@ -210,8 +215,6 @@ def process_app_deployment_request(
# if deployment_record.attributes.application != app.id:
# ...
# Rename deployment dir according to new request (last fqdn from given dns)
os.rename(existing_deployment_dir, deployment_dir)
needs_k8s_deploy = False
if force_rebuild:
@ -646,6 +649,7 @@ def command( # noqa: C901
requests_to_check_for_payment.append(r)
requests_to_execute = []
# TODO: Charge more for multiple dns?
for r in requests_to_check_for_payment:
if r.attributes.auction:
if auction_requests: