diff --git a/run.sh b/run.sh index 8b144ed..e45b92b 100755 --- a/run.sh +++ b/run.sh @@ -123,82 +123,82 @@ while true; do yarn start & fi - echo "########### UNDEPLOY ############" - laconic-so undeploy-webapp-from-registry \ - --laconic-config /etc/config/laconic.yml \ - --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ - --delete-names \ - --delete-volumes \ - --state-file "${DEPLOYMENTS_DIR}/autoremove.state" \ - --include-tags "$INCLUDE_TAGS" \ - --exclude-tags "$EXCLUDE_TAGS" \ - --lrn "$LRN" \ - --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ - $EXTRA_UNDEPLOY_OPTS \ - $UPDATE_OPTS \ - --discover - rc=$? - if [ $rc -eq 0 ]; then - echo "############ UNDEPLOY SUCCESS #############" - else - echo "############ UNDEPLOY FAILURE STATUS $rc #############" - fi +# echo "########### UNDEPLOY ############" +# laconic-so undeploy-webapp-from-registry \ +# --laconic-config /etc/config/laconic.yml \ +# --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ +# --delete-names \ +# --delete-volumes \ +# --state-file "${DEPLOYMENTS_DIR}/autoremove.state" \ +# --include-tags "$INCLUDE_TAGS" \ +# --exclude-tags "$EXCLUDE_TAGS" \ +# --lrn "$LRN" \ +# --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ +# $EXTRA_UNDEPLOY_OPTS \ +# $UPDATE_OPTS \ +# --discover +# rc=$? +# if [ $rc -eq 0 ]; then +# echo "############ UNDEPLOY SUCCESS #############" +# else +# echo "############ UNDEPLOY FAILURE STATUS $rc #############" +# fi - echo "############ DEPLOY #############" - laconic-so deploy-webapp-from-registry \ - --kube-config /etc/config/kube.yml \ - --laconic-config /etc/config/laconic.yml \ - --image-registry ${IMAGE_REGISTRY} \ - --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ - --dns-suffix ${DEPLOYMENT_DNS_SUFFIX} \ - --record-namespace-dns lrn://${DEPLOYMENT_RECORD_NAMESPACE}/dns \ - --record-namespace-deployments lrn://${DEPLOYMENT_RECORD_NAMESPACE}/deployments \ - --state-file "${DEPLOYMENTS_DIR}/autodeploy.state" \ - --include-tags "$INCLUDE_TAGS" \ - --exclude-tags "$EXCLUDE_TAGS" \ - --fqdn-policy "${FQDN_POLICY:-prohibit}" \ - --lrn "$LRN" \ - --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ - --config-upload-dir "$UPLOAD_DIRECTORY" \ - --private-key-file "$OPENPGP_PRIVATE_KEY_FILE" \ - --private-key-passphrase "$OPENPGP_PASSPHRASE" \ - $AUCTION_OPTS \ - $LOG_OPTS \ - $EXTRA_DEPLOY_OPTS \ - $UPDATE_OPTS \ - --discover - rc=$? - if [ $rc -eq 0 ]; then - echo "############ DEPLOY SUCCESS #############" - else - echo "############ DEPLOY FAILURE STATUS $rc #############" - fi +# echo "############ DEPLOY #############" +# laconic-so deploy-webapp-from-registry \ +# --kube-config /etc/config/kube.yml \ +# --laconic-config /etc/config/laconic.yml \ +# --image-registry ${IMAGE_REGISTRY} \ +# --deployment-parent-dir "${DEPLOYMENTS_DIR}" \ +# --dns-suffix ${DEPLOYMENT_DNS_SUFFIX} \ +# --record-namespace-dns lrn://${DEPLOYMENT_RECORD_NAMESPACE}/dns \ +# --record-namespace-deployments lrn://${DEPLOYMENT_RECORD_NAMESPACE}/deployments \ +# --state-file "${DEPLOYMENTS_DIR}/autodeploy.state" \ +# --include-tags "$INCLUDE_TAGS" \ +# --exclude-tags "$EXCLUDE_TAGS" \ +# --fqdn-policy "${FQDN_POLICY:-prohibit}" \ +# --lrn "$LRN" \ +# --min-required-payment ${MIN_REQUIRED_PAYMENT:-0} \ +# --config-upload-dir "$UPLOAD_DIRECTORY" \ +# --private-key-file "$OPENPGP_PRIVATE_KEY_FILE" \ +# --private-key-passphrase "$OPENPGP_PASSPHRASE" \ +# $AUCTION_OPTS \ +# $LOG_OPTS \ +# $EXTRA_DEPLOY_OPTS \ +# $UPDATE_OPTS \ +# --discover +# rc=$? +# if [ $rc -eq 0 ]; then +# echo "############ DEPLOY SUCCESS #############" +# else +# echo "############ DEPLOY FAILURE STATUS $rc #############" +# fi - if [ "$HANDLE_AUCTION_REQUESTS" = "true" ]; then - echo "############ DEPLOYMENT AUCTION #############" - laconic-so handle-deployment-auction \ - --laconic-config /etc/config/laconic.yml \ - --state-file "${DEPLOYMENTS_DIR}/autoauction.state" \ - --bid-amount ${AUCTION_BID_AMOUNT} - rc=$? - if [ $rc -eq 0 ]; then - echo "############ DEPLOYMENT AUCTION SUCCESS #############" - else - echo "############ DEPLOYMENT AUCTION FAILURE STATUS $rc #############" - fi - fi +# if [ "$HANDLE_AUCTION_REQUESTS" = "true" ]; then +# echo "############ DEPLOYMENT AUCTION #############" +# laconic-so handle-deployment-auction \ +# --laconic-config /etc/config/laconic.yml \ +# --state-file "${DEPLOYMENTS_DIR}/autoauction.state" \ +# --bid-amount ${AUCTION_BID_AMOUNT} +# rc=$? +# if [ $rc -eq 0 ]; then +# echo "############ DEPLOYMENT AUCTION SUCCESS #############" +# else +# echo "############ DEPLOYMENT AUCTION FAILURE STATUS $rc #############" +# fi +# fi - # Cleanup any build leftovers - if [[ "${SYSTEM_PRUNE:-false}" == "true" ]]; then - docker system prune --all --force - fi - if [[ "${WEBAPP_IMAGE_PRUNE:-true}" == "true" ]]; then - APP_IMAGES="$(docker image ls --quiet --filter 'reference=laconic-webapp')" - DANGLING_IMAGES="$(docker image ls --quiet --filter 'dangling=true')" - if [[ -n "$APP_IMAGES" ]] || [[ -n "$DANGLING_IMAGES" ]]; then - echo "Pruning images: $APP_IMAGES $DANGLING_IMAGES" - docker image rm -f $APP_IMAGES $DANGLING_IMAGES - fi - fi +# # Cleanup any build leftovers +# if [[ "${SYSTEM_PRUNE:-false}" == "true" ]]; then +# docker system prune --all --force +# fi +# if [[ "${WEBAPP_IMAGE_PRUNE:-true}" == "true" ]]; then +# APP_IMAGES="$(docker image ls --quiet --filter 'reference=laconic-webapp')" +# DANGLING_IMAGES="$(docker image ls --quiet --filter 'dangling=true')" +# if [[ -n "$APP_IMAGES" ]] || [[ -n "$DANGLING_IMAGES" ]]; then +# echo "Pruning images: $APP_IMAGES $DANGLING_IMAGES" +# docker image rm -f $APP_IMAGES $DANGLING_IMAGES +# fi +# fi sleep ${CHECK_INTERVAL:-15} done diff --git a/src/deployments.ts b/src/deployments.ts index b30f630..7d96b38 100644 --- a/src/deployments.ts +++ b/src/deployments.ts @@ -108,8 +108,12 @@ export class RegHelper { } async deploymentRequestStatus(requestId?: string) { + console.log('Starting deploymentRequestStatus with requestId:', requestId); + const requests: any[] = []; const deployments: any[] = []; + + // Querying for removal requests const removalRequests = await this.queryRecords({ type: 'ApplicationDeploymentRemovalRequest', }); @@ -118,53 +122,75 @@ export class RegHelper { const request = await this.getRecordById(requestId); if (request) { requests.push(request); + console.log('Found request:', request); + } else { + console.log('Request not found for requestId:', requestId); } - deployments.push(...await this.queryRecords({ - type: 'ApplicationDeploymentRecord', request: requestId - })); - } else { - requests.push(...await this.queryRecords({ - type: 'ApplicationDeploymentRequest', - })); - deployments.push(...await this.queryRecords({ + + const foundDeployments = await this.queryRecords({ type: 'ApplicationDeploymentRecord', - })); + request: requestId + }); + deployments.push(...foundDeployments); + } else { + console.log('Fetching all ApplicationDeploymentRequests'); + const allRequests = await this.queryRecords({ + type: 'ApplicationDeploymentRequest', + }); + requests.push(...allRequests); + console.log('All requests:', allRequests); + + console.log('Fetching all ApplicationDeploymentRecords'); + const allDeployments = await this.queryRecords({ + type: 'ApplicationDeploymentRecord', + }); + deployments.push(...allDeployments); + console.log('All deployments:', allDeployments); } + console.log('Sorting requests by createTime'); requests.sort((a, b) => a.createTime === b.createTime ? 0 : a.createTime > b.createTime ? 1 : -1,); requests.reverse(); + console.log('Sorted requests:', requests); const deploymentsByRequest = new Map(); for (const d of deployments) { deploymentsByRequest.set(d.attributes.request, d); } + console.log('Deployments by request:', deploymentsByRequest); + const removalsByRequest = new Map(); for (const rr of removalRequests) { if (rr.attributes.request) { removalsByRequest.set(rr.attributes.request, rr); } } + console.log('Removals by request:', removalsByRequest); const latestByHostname = new Map(); const ret = []; for (const r of requests) { + console.log('Processing request:', r.id); const status = new RequestStatus(r.id, r.createTime); ret.push(status); const app = await this.getRecord(r.attributes.application); if (!app) { + console.log('Error: Application not found for request:', r.id); status.lastState = 'ERROR'; continue; } status.app = r.attributes.application; const hostname = r.attributes.dns ?? generateHostnameForApp(app); + console.log('Hostname for app:', hostname); if (deploymentsByRequest.has(r.id)) { const deployment = deploymentsByRequest.get(r.id); status.url = deployment.attributes.url; status.lastUpdate = deployment.createTime; + console.log('Deployment found for request:', r.id, 'with deployment:', deployment); if (!latestByHostname.has(hostname)) { latestByHostname.set(hostname, status); @@ -179,11 +205,13 @@ export class RegHelper { } if (removalsByRequest.has(r.id)) { + console.log('Removal request found for request:', r.id); status.lastState = 'CANCELLED'; continue; } if (latestByHostname.has(hostname)) { + console.log('Cancellation found for hostname:', hostname); status.lastState = 'CANCELLED'; continue; } @@ -191,6 +219,7 @@ export class RegHelper { latestByHostname.set(hostname, status); } + console.log('Final status array:', ret); return ret; }