Integrate SP auctions in webapp deployment flow #950

Merged
ashwin merged 25 commits from deep-stack/stack-orchestrator:pm-integrate-sp-auctions into main 2024-10-21 07:02:07 +00:00
2 changed files with 41 additions and 47 deletions
Showing only changes of commit 49a730707e - Show all commits

View File

@ -12,9 +12,7 @@
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http:#www.gnu.org/licenses/>.
import shutil
import sys
import tempfile
import click
import yaml
@ -43,23 +41,23 @@ def fatal(msg: str):
)
@click.option(
"--commits-duration",
help="Auction commits duration (in seconds).",
required=True,
help="Auction commits duration (in seconds) (default: 600).",
default=600,
)
@click.option(
"--reveals-duration",
help="Auction reveals duration (in seconds).",
required=True,
help="Auction reveals duration (in seconds) (default: 600).",
default=600,
)
@click.option(
"--commit-fee",
help="Auction bid commit fee (in alnt).",
required=True,
help="Auction bid commit fee (in alnt) (default: 100000).",
default=100000,
)
@click.option(
"--reveal-fee",
help="Auction bid reveal fee (in alnt).",
required=True,
help="Auction bid reveal fee (in alnt) (default: 100000).",
default=100000,
)
@click.option(
"--max-price",
@ -88,44 +86,40 @@ def command(
max_price,
num_providers,
dry_run,
): # noqa: C901
tempdir = tempfile.mkdtemp()
try:
laconic = LaconicRegistryClient(laconic_config)
):
laconic = LaconicRegistryClient(laconic_config)
app_record = laconic.get_record(app)
if not app_record:
fatal(f"Unable to locate app: {app}")
app_record = laconic.get_record(app)
if not app_record:
fatal(f"Unable to locate app: {app}")
provider_auction_params = {
"kind": AUCTION_KIND_PROVIDER,
"commits_duration": commits_duration,
"reveals_duration": reveals_duration,
"denom": TOKEN_DENOM,
"commit_fee": commit_fee,
"reveal_fee": reveal_fee,
"max_price": max_price,
"num_providers": num_providers,
provider_auction_params = {
"kind": AUCTION_KIND_PROVIDER,
"commits_duration": commits_duration,
"reveals_duration": reveals_duration,
"denom": TOKEN_DENOM,
"commit_fee": commit_fee,
"reveal_fee": reveal_fee,
"max_price": max_price,
"num_providers": num_providers,
}
auction_id = laconic.create_auction(provider_auction_params)
print("Deployment auction created:", auction_id)
if not auction_id:
fatal("Unable to create a provider auction")
deployment_auction = {
"record": {
"type": "ApplicationDeploymentAuction",
"application": app,
"auction": auction_id,
}
auction_id = laconic.create_auction(provider_auction_params)
print("Deployment auction created:", auction_id)
}
if not auction_id:
fatal("Unable to create a provider auction")
if dry_run:
print(yaml.dump(deployment_auction))
return
deployment_auction = {
"record": {
"type": "ApplicationDeploymentAuction",
"application": app,
"auction": auction_id,
}
}
if dry_run:
print(yaml.dump(deployment_auction))
return
# Publish the deployment auction record
laconic.publish(deployment_auction)
finally:
shutil.rmtree(tempdir, ignore_errors=True)
# Publish the deployment auction record
laconic.publish(deployment_auction)

View File

@ -465,7 +465,7 @@ class LaconicRegistryClient:
return AttrDict(json.loads(logged_cmd(self.log_file, *args)))
def create_auction(self, auction):
if auction["kind"] == "provider":
if auction["kind"] == AUCTION_KIND_PROVIDER:
args = [
"laconic",
"-c",