Allow payment reuse for application redeployment #960

Merged
ashwin merged 2 commits from deep-stack/stack-orchestrator:pm-allow-redeployment into main 2024-10-29 06:51:49 +00:00
2 changed files with 10 additions and 6 deletions
Showing only changes of commit 1c3dfceb30 - Show all commits

View File

@ -616,6 +616,7 @@ def command( # noqa: C901
if confirm_payment(
laconic,
r,
lrn,
payment_address,
min_required_payment,
main_logger,

View File

@ -798,7 +798,7 @@ def skip_by_tag(r, include_tags, exclude_tags):
return False
def confirm_payment(laconic: LaconicRegistryClient, record, payment_address, min_amount, logger):
def confirm_payment(laconic: LaconicRegistryClient, record, deployer_lrn, payment_address, min_amount, logger):
req_owner = laconic.get_owner(record)
if req_owner == payment_address:
# No need to confirm payment if the sender and recipient are the same account.
@ -846,16 +846,19 @@ def confirm_payment(laconic: LaconicRegistryClient, record, payment_address, min
)
return False
# Check if the payment was already used on a
# Check if the payment was already used on a deployment
used = laconic.app_deployments(
{"deployer": payment_address, "payment": tx.hash}, all=True
{"deployer": deployer_lrn, "payment": tx.hash}, all=True
)
if len(used):
logger.log(f"{record.id}: payment {tx.hash} already used on deployment {used}")
return False
# Check that payment was used for deployment of same application
app_record = laconic.get_record(record.attributes.application, require=True)
if app_record.id != used[0].attributes.application:
logger.log(f"{record.id}: payment {tx.hash} already used on a different application deployment {used}")
return False
used = laconic.app_deployment_removals(
{"deployer": payment_address, "payment": tx.hash}, all=True
{"deployer": deployer_lrn, "payment": tx.hash}, all=True
)
if len(used):
logger.log(