Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions packages/cli/package/docs/commands/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
* [`fluence provider gen`](#fluence-provider-gen)
* [`fluence provider info`](#fluence-provider-info)
* [`fluence provider init`](#fluence-provider-init)
* [`fluence provider offer-access-address`](#fluence-provider-offer-access-address)
* [`fluence provider offer-create`](#fluence-provider-offer-create)
* [`fluence provider offer-info`](#fluence-provider-offer-info)
* [`fluence provider offer-remove`](#fluence-provider-offer-remove)
Expand Down Expand Up @@ -637,6 +638,32 @@ DESCRIPTION

_See code: [src/commands/provider/init.ts](https://github.com/fluencelabs/cli/blob/fluence-cli-v0.25.1/src/commands/provider/init.ts)_

## `fluence provider offer-access-address`

Set access address for offer for use in cluster software.. Alias: fluence provider sck

```
USAGE
$ fluence provider offer-access-address [--no-input] [--offer <offer> | --offer-id <id>] [--env <testnet | mainnet | stage |
local>] [--priv-key <private-key>] [--address <address>]

FLAGS
--address=<address> Address derived from Cluster private key
--env=<testnet | mainnet | stage | local> Fluence Environment to use when running the command
--no-input Don't interactively ask for any input from the user
--offer=<offer> Offer name. Can't be used together with --offer flag
--offer-id=<id> Offer id. Can't be used together with --offer flag
--priv-key=<private-key> !WARNING! for debug purposes only. Passing private keys through flags is
unsecure. On local env
0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80 is used
by default when CLI is used in non-interactive mode

DESCRIPTION
Set access address for offer for use in cluster software.. Alias: fluence provider sck
```

_See code: [src/commands/provider/offer-access-address.ts](https://github.com/fluencelabs/cli/blob/fluence-cli-v0.25.1/src/commands/provider/offer-access-address.ts)_

## `fluence provider offer-create`

Create offers. You have to be registered as a provider to do that. Alias: fluence provider oc
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@
"whatwg-url": "^14.0.0"
},
"dependencies": {
"@fluencelabs/deal-ts-clients": "0.23.2-update-deal-interface-c153307-7773-1.0",
"@fluencelabs/deal-ts-clients": "0.24.2",
"@kubernetes/client-node": "github:fluencelabs/kubernetes-client-javascript#e72ee00a52fec4eb4a8327632895d888ee504f4d",
"@libp2p/crypto": "4.0.1",
"@libp2p/peer-id-factory": "4.0.5",
Expand Down
92 changes: 92 additions & 0 deletions packages/cli/package/src/commands/provider/offer-access-address.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
/**
* Fluence CLI
* Copyright (C) 2024 Fluence DAO
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* 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 { BaseCommand } from "../../baseCommand.js";
import {
filterOffersFoundOnChain,
resolveSingleOfferFromProviderConfig,
} from "../../lib/chain/offer/offer.js";
import { assertProviderIsRegistered } from "../../lib/chain/providerInfo.js";
import { commandObj } from "../../lib/commandObj.js";
import {
CHAIN_FLAGS,
CLUSTER_ADDRESS_FLAG,
SINGLE_OFFER_FLAGS,
ADDRESS_FLAG_NAME,
} from "../../lib/const.js";
import { getContracts, sign } from "../../lib/dealClient.js";
import { aliasesText } from "../../lib/helpers/aliasesText.js";
import { initCli } from "../../lib/lifeCycle.js";
import { confirm, input } from "../../lib/prompt.js";

export default class OfferAccessAddress extends BaseCommand<
typeof OfferAccessAddress
> {
static override hiddenAliases = ["provider:sck"];
static override description = `Set access address for offer for use in cluster software.${aliasesText.apply(this)}`;
static override flags = {
...SINGLE_OFFER_FLAGS,
...CHAIN_FLAGS,
...CLUSTER_ADDRESS_FLAG,
};

async run(): Promise<void> {
const { flags } = await initCli(this, await this.parse(OfferAccessAddress));
const configOffer = await resolveSingleOfferFromProviderConfig(flags);
const offersFoundOnChain = await filterOffersFoundOnChain([configOffer]);
const chainOffer = offersFoundOnChain[0];

if (chainOffer === undefined) {
commandObj.error(`Offer ${configOffer.offerName} is not found on chain`);
}

const address =
flags[ADDRESS_FLAG_NAME] ??
(await input({
message: "Enter cluster address",
validate(input: string) {
return (
input.length === 42 ||
"Please enter an address (40 hex digits + 0x)"
);
},
}));

commandObj.logToStderr(
`Setting cluster address ${address} for offer ${chainOffer.offerName} (${chainOffer.offerId})`,
);

if (
!(await confirm({
message: "Would you like to continue",
default: true,
}))
) {
commandObj.logToStderr("Setting cluster address cancelled");
return;
}

const { contracts } = await getContracts();

await sign({
validateAddress: assertProviderIsRegistered,
title: `Setting cluster address ${address} for offer ${chainOffer.offerName} (${chainOffer.offerId})`,
method: contracts.diamond.setClusterKey,
args: [chainOffer.offerId, address],
});
}
}
Loading
Loading