forked from cerc-io/stack-orchestrator
Publish multiple DNS records and set all deployment names
This commit is contained in:
parent
ef6f5db743
commit
42103ef551
@ -97,9 +97,15 @@ def process_app_deployment_request(
|
||||
fqdns = [fqdn.lower() for fqdn in fqdns]
|
||||
|
||||
# 3. check ownership of existing dnsrecord(s) vs this request
|
||||
dns_lrns = []
|
||||
existing_dns_records_by_lrns = {}
|
||||
for fqdn in fqdns:
|
||||
dns_lrn = f"{dns_record_namespace}/{fqdn}"
|
||||
dns_lrns.append(dns_lrn)
|
||||
|
||||
dns_record = laconic.get_record(dns_lrn)
|
||||
existing_dns_records_by_lrns[dns_lrn] = dns_record
|
||||
|
||||
if dns_record:
|
||||
matched_owner = match_owner(app_deployment_request, dns_record)
|
||||
if not matched_owner and dns_record.attributes.request:
|
||||
@ -281,15 +287,14 @@ def process_app_deployment_request(
|
||||
deploy_to_k8s(deployment_record, deployment_dir, recreate_on_deploy, logger)
|
||||
|
||||
logger.log("Publishing deployment to registry.")
|
||||
# TODO: Publish multiple DNS records
|
||||
# TODO: Point all app_deployment_lrns
|
||||
publish_deployment(
|
||||
laconic,
|
||||
app,
|
||||
deployment_record,
|
||||
app_deployment_lrn,
|
||||
dns_record,
|
||||
dns_lrn,
|
||||
app_deployment_lrns,
|
||||
existing_dns_records_by_lrns,
|
||||
dns_lrns,
|
||||
dns_record_namespace,
|
||||
deployment_dir,
|
||||
dns_value,
|
||||
app_deployment_request,
|
||||
|
@ -685,9 +685,10 @@ def publish_deployment(
|
||||
laconic: LaconicRegistryClient,
|
||||
app_record,
|
||||
deploy_record,
|
||||
deployment_lrn,
|
||||
dns_record,
|
||||
dns_lrn,
|
||||
deployment_lrns,
|
||||
existing_dns_records_by_lrns,
|
||||
dns_lrns: list[str],
|
||||
dns_record_namespace,
|
||||
deployment_dir,
|
||||
dns_value=None,
|
||||
app_deployment_request=None,
|
||||
@ -701,42 +702,49 @@ def publish_deployment(
|
||||
int(deploy_record.attributes.version.split(".")[-1]) + 1
|
||||
)
|
||||
|
||||
if not dns_record:
|
||||
dns_ver = "0.0.1"
|
||||
else:
|
||||
dns_ver = "0.0.%d" % (int(dns_record.attributes.version.split(".")[-1]) + 1)
|
||||
|
||||
dns_ids = []
|
||||
for dns_lrn in dns_lrns:
|
||||
dns_record = existing_dns_records_by_lrns[dns_lrn]
|
||||
if not dns_record:
|
||||
dns_ver = "0.0.1"
|
||||
else:
|
||||
dns_ver = "0.0.%d" % (int(dns_record.attributes.version.split(".")[-1]) + 1)
|
||||
|
||||
fqdn = dns_lrn.removeprefix(f"${dns_record_namespace}/")
|
||||
uniq = uuid.uuid4()
|
||||
|
||||
new_dns_record = {
|
||||
"record": {
|
||||
"type": "DnsRecord",
|
||||
"version": dns_ver,
|
||||
"name": fqdn,
|
||||
"resource_type": "A",
|
||||
"meta": {"so": uniq.hex},
|
||||
}
|
||||
}
|
||||
if app_deployment_request:
|
||||
new_dns_record["record"]["request"] = app_deployment_request.id
|
||||
if dns_value:
|
||||
new_dns_record["record"]["value"] = dns_value
|
||||
|
||||
if logger:
|
||||
logger.log("Publishing DnsRecord.")
|
||||
dns_id = laconic.publish(new_dns_record, [dns_lrn])
|
||||
dns_ids.append(dns_id)
|
||||
|
||||
spec = yaml.full_load(open(os.path.join(deployment_dir, "spec.yml")))
|
||||
fqdn = spec["network"]["http-proxy"][0]["host-name"]
|
||||
|
||||
uniq = uuid.uuid4()
|
||||
|
||||
new_dns_record = {
|
||||
"record": {
|
||||
"type": "DnsRecord",
|
||||
"version": dns_ver,
|
||||
"name": fqdn,
|
||||
"resource_type": "A",
|
||||
"meta": {"so": uniq.hex},
|
||||
}
|
||||
}
|
||||
if app_deployment_request:
|
||||
new_dns_record["record"]["request"] = app_deployment_request.id
|
||||
if dns_value:
|
||||
new_dns_record["record"]["value"] = dns_value
|
||||
|
||||
if logger:
|
||||
logger.log("Publishing DnsRecord.")
|
||||
dns_id = laconic.publish(new_dns_record, [dns_lrn])
|
||||
last_fqdn = spec["network"]["http-proxy"][-1]["host-name"]
|
||||
last_dns_id = dns_ids[-1]
|
||||
|
||||
new_deployment_record = {
|
||||
"record": {
|
||||
"type": "ApplicationDeploymentRecord",
|
||||
"version": deploy_ver,
|
||||
"url": f"https://{fqdn}",
|
||||
"url": f"https://{last_fqdn}",
|
||||
"name": app_record.attributes.name,
|
||||
"application": app_record.id,
|
||||
"dns": dns_id,
|
||||
"dns": last_dns_id,
|
||||
"meta": {
|
||||
"config": file_hash(os.path.join(deployment_dir, "config.env")),
|
||||
"so": uniq.hex,
|
||||
@ -758,8 +766,8 @@ def publish_deployment(
|
||||
|
||||
if logger:
|
||||
logger.log("Publishing ApplicationDeploymentRecord.")
|
||||
deployment_id = laconic.publish(new_deployment_record, [deployment_lrn])
|
||||
return {"dns": dns_id, "deployment": deployment_id}
|
||||
deployment_id = laconic.publish(new_deployment_record, [deployment_lrns])
|
||||
return {"dns": dns_ids, "deployment": deployment_id}
|
||||
|
||||
def get_requested_names(app_deployment_request):
|
||||
request_dns = app_deployment_request.attributes.dns
|
||||
|
Loading…
Reference in New Issue
Block a user