Merge pull request 'fixes for deployer & SP documentation' (#887) from zach/cns-to-registry into main
Some checks failed
Lint Checks / Run linter (push) Successful in 40s
Publish / Build and publish (push) Successful in 1m18s
Smoke Test / Run basic test suite (push) Successful in 3m45s
Webapp Test / Run webapp test suite (push) Successful in 4m36s
Deploy Test / Run deploy test suite (push) Successful in 4m44s
Fixturenet-Laconicd-Test / Run Laconicd fixturenet and Laconic CLI tests (push) Has started running
K8s Deploy Test / Run deploy test suite on kind/k8s (push) Successful in 7m17s
Fixturenet-Eth-Plugeth-Arm-Test / Run an Ethereum plugeth fixturenet test (push) Failing after 3h10m59s
Fixturenet-Eth-Plugeth-Test / Run an Ethereum plugeth fixturenet test (push) Failing after 3h11m0s
Database Test / Run database hosting test on kind/k8s (push) Successful in 9m37s
Container Registry Test / Run contaier registry hosting test on kind/k8s (push) Successful in 3m50s
External Stack Test / Run external stack test suite (push) Successful in 4m31s

Reviewed-on: #887
This commit is contained in:
zramsay 2024-07-24 00:29:14 +00:00
commit 40ccd47857
10 changed files with 55 additions and 46 deletions

View File

@ -74,7 +74,7 @@ laconic-so --stack fixturenet-laconicd deploy logs
### Test with the registry CLI
```bash
laconic-so --stack fixturenet-laconicd deploy exec cli "laconic cns status"
laconic-so --stack fixturenet-laconicd deploy exec cli "laconic registry status"
```
Try additional CLI commands, documented [here](https://github.com/cerc-io/laconic-registry-cli#operations).

View File

@ -110,7 +110,7 @@ To avoid hiccups on Mac M1/M2 and any local machine nuances that may affect the
4. Confirm operation of the registry CLI:
```
laconic-so deployment --dir laconic-loaded-deployment exec cli "laconic cns status"
laconic-so deployment --dir laconic-loaded-deployment exec cli "laconic registry status"
```
```
@ -223,5 +223,5 @@ record:
- e.g,:
```
laconic-so --stack fixturenet-laconic-loaded deploy exec cli "laconic cns record list"
laconic-so --stack fixturenet-laconic-loaded deploy exec cli "laconic registry record list"
```

View File

@ -1,9 +1,9 @@
services:
cns:
restEndpoint: 'http://laconicd:1317'
registry:
rpcEndpoint: 'http://laconicd:26657'
gqlEndpoint: 'http://laconicd:9473/api'
userKey: REPLACE_WITH_MYKEY
bondId:
chainId: laconic_9000-1
gas: 350000
fees: 200000aphoton
fees: 200000photon

View File

@ -1,9 +1,9 @@
services:
cns:
restEndpoint: 'http://laconicd:1317'
registry:
rpcEndpoint: 'http://laconicd:26657'
gqlEndpoint: 'http://laconicd:9473/api'
userKey: REPLACE_WITH_MYKEY
bondId:
chainId: laconic_9000-1
gas: 250000
fees: 200000aphoton
fees: 200000photon

View File

@ -5,7 +5,7 @@ if [ -n "$CERC_SCRIPT_DEBUG" ]; then
set -x
fi
registry_command="laconic cns"
registry_command="laconic registry"
demo_records_dir="scripts/demo-records"
# Check we have funds

View File

@ -7,9 +7,9 @@ record:
env:
ENV_VAR_A: A
ENV_VAR_B: B
crn:
- crn://foo.bar
- crn://bar.baz
lrn:
- lrn://foo.bar
- lrn://bar.baz
meta:
foo: bar
tags:

View File

@ -49,7 +49,7 @@ $ laconic-so --stack fixturenet-laconic-loaded deploy logs
```
## 6. Test with the Registry CLI
```
$ laconic-so --stack fixturenet-laconic-loaded deploy exec cli "laconic cns status"
$ laconic-so --stack fixturenet-laconic-loaded deploy exec cli "laconic registry status"
```
## 7. View the laconic console
Get the URL for the console web app with this command (the port number will be different for each deployment):

View File

@ -44,5 +44,5 @@ $ laconic-so --stack fixturenet-laconicd deploy logs
```
## 6. Test with the Registry CLI
```
$ laconic-so --stack fixturenet-laconicd deploy exec cli "laconic cns status"
$ laconic-so --stack fixturenet-laconicd deploy exec cli "laconic registry status"
```

View File

@ -66,8 +66,8 @@ def process_app_deployment_request(
fqdn = f"{requested_name}.{default_dns_suffix}"
# 3. check ownership of existing dnsrecord vs this request
dns_crn = f"{dns_record_namespace}/{fqdn}"
dns_record = laconic.get_record(dns_crn)
dns_lrn = f"{dns_record_namespace}/{fqdn}"
dns_record = laconic.get_record(dns_lrn)
if dns_record:
matched_owner = match_owner(app_deployment_request, dns_record)
if not matched_owner and dns_record.attributes.request:
@ -77,9 +77,9 @@ def process_app_deployment_request(
logger.log(f"Matched DnsRecord ownership: {matched_owner}")
else:
raise Exception("Unable to confirm ownership of DnsRecord %s for request %s" %
(dns_crn, app_deployment_request.id))
(dns_lrn, app_deployment_request.id))
elif "preexisting" == fqdn_policy:
raise Exception(f"No pre-existing DnsRecord {dns_crn} could be found for request {app_deployment_request.id}.")
raise Exception(f"No pre-existing DnsRecord {dns_lrn} could be found for request {app_deployment_request.id}.")
# 4. get build and runtime config from request
env_filename = None
@ -90,14 +90,14 @@ def process_app_deployment_request(
file.write("%s=%s\n" % (k, shlex.quote(str(v))))
# 5. determine new or existing deployment
# a. check for deployment crn
app_deployment_crn = f"{deployment_record_namespace}/{fqdn}"
# a. check for deployment lrn
app_deployment_lrn = f"{deployment_record_namespace}/{fqdn}"
if app_deployment_request.attributes.deployment:
app_deployment_crn = app_deployment_request.attributes.deployment
if not app_deployment_crn.startswith(deployment_record_namespace):
app_deployment_lrn = app_deployment_request.attributes.deployment
if not app_deployment_lrn.startswith(deployment_record_namespace):
raise Exception("Deployment CRN %s is not in a supported namespace" % app_deployment_request.attributes.deployment)
deployment_record = laconic.get_record(app_deployment_crn)
deployment_record = laconic.get_record(app_deployment_lrn)
deployment_dir = os.path.join(deployment_parent_dir, fqdn)
# 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
@ -109,7 +109,7 @@ def process_app_deployment_request(
if not os.path.exists(deployment_dir):
if deployment_record:
raise Exception("Deployment record %s exists, but not deployment dir %s. Please remove name." %
(app_deployment_crn, deployment_dir))
(app_deployment_lrn, deployment_dir))
logger.log(f"Creating webapp deployment in: {deployment_dir} with container id: {deployment_container_tag}")
deploy_webapp.create_deployment(ctx, deployment_dir, deployment_container_tag,
f"https://{fqdn}", kube_config, image_registry, env_filename)
@ -173,9 +173,9 @@ def process_app_deployment_request(
laconic,
app,
deployment_record,
app_deployment_crn,
app_deployment_lrn,
dns_record,
dns_crn,
dns_lrn,
deployment_dir,
app_deployment_request,
logger
@ -214,8 +214,8 @@ def dump_known_requests(filename, requests, status="SEEN"):
@click.option("--only-update-state", help="Only update the state file, don't process any requests anything.", is_flag=True)
@click.option("--dns-suffix", help="DNS domain to use eg, laconic.servesthe.world")
@click.option("--fqdn-policy", help="How to handle requests with an FQDN: prohibit, allow, preexisting", default="prohibit")
@click.option("--record-namespace-dns", help="eg, crn://laconic/dns")
@click.option("--record-namespace-deployments", help="eg, crn://laconic/deployments")
@click.option("--record-namespace-dns", help="eg, lrn://laconic/dns")
@click.option("--record-namespace-deployments", help="eg, lrn://laconic/deployments")
@click.option("--dry-run", help="Don't do anything, just report what would be done.", is_flag=True)
@click.option("--include-tags", help="Only include requests with matching tags (comma-separated).", default="")
@click.option("--exclude-tags", help="Exclude requests with matching tags (comma-separated).", default="")

View File

@ -94,7 +94,7 @@ class LaconicRegistryClient:
)
def list_records(self, criteria={}, all=False):
args = ["laconic", "-c", self.config_file, "cns", "record", "list"]
args = ["laconic", "-c", self.config_file, "registry", "record", "list"]
if all:
args.append("--all")
@ -112,13 +112,13 @@ class LaconicRegistryClient:
return results
def is_crn(self, name_or_id: str):
def is_lrn(self, name_or_id: str):
if name_or_id:
return str(name_or_id).startswith("crn://")
return str(name_or_id).startswith("lrn://")
return False
def is_id(self, name_or_id: str):
return not self.is_crn(name_or_id)
return not self.is_lrn(name_or_id)
def _add_to_cache(self, records):
if not records:
@ -127,8 +127,8 @@ class LaconicRegistryClient:
for p in records:
self.cache["name_or_id"][p.id] = p
if p.names:
for crn in p.names:
self.cache["name_or_id"][crn] = p
for lrn in p.names:
self.cache["name_or_id"][lrn] = p
if p.attributes.type not in self.cache:
self.cache[p.attributes.type] = []
self.cache[p.attributes.type].append(p)
@ -140,7 +140,7 @@ class LaconicRegistryClient:
if name in self.cache.name_or_id:
return self.cache.name_or_id[name]
args = ["laconic", "-c", self.config_file, "cns", "name", "resolve", name]
args = ["laconic", "-c", self.config_file, "registry", "name", "resolve", name]
parsed = [AttrDict(r) for r in json.loads(logged_cmd(self.log_file, *args))]
if parsed:
@ -158,14 +158,14 @@ class LaconicRegistryClient:
if name_or_id in self.cache.name_or_id:
return self.cache.name_or_id[name_or_id]
if self.is_crn(name_or_id):
if self.is_lrn(name_or_id):
return self.resolve(name_or_id)
args = [
"laconic",
"-c",
self.config_file,
"cns",
"registry",
"record",
"get",
"--id",
@ -203,7 +203,16 @@ class LaconicRegistryClient:
print(open(record_fname, 'r').read(), file=self.log_file)
new_record_id = json.loads(
logged_cmd(self.log_file, "laconic", "-c", self.config_file, "cns", "record", "publish", "--filename", record_fname)
logged_cmd(
self.log_file,
"laconic", "-c",
self.config_file,
"registry",
"record",
"publish",
"--filename",
record_fname
)
)["id"]
for name in names:
self.set_name(name, new_record_id)
@ -212,10 +221,10 @@ class LaconicRegistryClient:
logged_cmd(self.log_file, "rm", "-rf", tmpdir)
def set_name(self, name, record_id):
logged_cmd(self.log_file, "laconic", "-c", self.config_file, "cns", "name", "set", name, record_id)
logged_cmd(self.log_file, "laconic", "-c", self.config_file, "registry", "name", "set", name, record_id)
def delete_name(self, name):
logged_cmd(self.log_file, "laconic", "-c", self.config_file, "cns", "name", "delete", name)
logged_cmd(self.log_file, "laconic", "-c", self.config_file, "registry", "name", "delete", name)
def file_hash(filename):
@ -326,9 +335,9 @@ def deploy_to_k8s(deploy_record, deployment_dir, logger):
def publish_deployment(laconic: LaconicRegistryClient,
app_record,
deploy_record,
deployment_crn,
deployment_lrn,
dns_record,
dns_crn,
dns_lrn,
deployment_dir,
app_deployment_request=None,
logger=None):
@ -363,7 +372,7 @@ def publish_deployment(laconic: LaconicRegistryClient,
if logger:
logger.log("Publishing DnsRecord.")
dns_id = laconic.publish(new_dns_record, [dns_crn])
dns_id = laconic.publish(new_dns_record, [dns_lrn])
new_deployment_record = {
"record": {
@ -384,7 +393,7 @@ def publish_deployment(laconic: LaconicRegistryClient,
if logger:
logger.log("Publishing ApplicationDeploymentRecord.")
deployment_id = laconic.publish(new_deployment_record, [deployment_crn])
deployment_id = laconic.publish(new_deployment_record, [deployment_lrn])
return {"dns": dns_id, "deployment": deployment_id}
@ -393,7 +402,7 @@ def hostname_for_deployment_request(app_deployment_request, laconic):
if not dns_name:
app = laconic.get_record(app_deployment_request.attributes.application, require=True)
dns_name = generate_hostname_for_app(app)
elif dns_name.startswith("crn://"):
elif dns_name.startswith("lrn://"):
record = laconic.get_record(dns_name, require=True)
dns_name = record.attributes.name
return dns_name