Browse Source

storage-node-v2: Add ‘cancel-invite’ command.

Shamil Gadelshin 3 years ago
parent
commit
cb188434ec

+ 28 - 7
storage-node-v2/README.md

@@ -33,9 +33,10 @@ USAGE
 * [`storage-node dev:upload`](#storage-node-devupload)
 * [`storage-node dev:verify-bag-id`](#storage-node-devverify-bag-id)
 * [`storage-node help [COMMAND]`](#storage-node-help-command)
+* [`storage-node leader:cancel-invite [FILE]`](#storage-node-leadercancel-invite-file)
 * [`storage-node leader:create-bucket`](#storage-node-leadercreate-bucket)
 * [`storage-node leader:delete-bucket`](#storage-node-leaderdelete-bucket)
-* [`storage-node leader:invite-operator [FILE]`](#storage-node-leaderinvite-operator-file)
+* [`storage-node leader:invite-operator`](#storage-node-leaderinvite-operator)
 * [`storage-node leader:update-bag`](#storage-node-leaderupdate-bag)
 * [`storage-node leader:update-bag-limit`](#storage-node-leaderupdate-bag-limit)
 * [`storage-node leader:update-voucher-limits`](#storage-node-leaderupdate-voucher-limits)
@@ -153,6 +154,22 @@ OPTIONS
 
 _See code: [@oclif/plugin-help](https://github.com/oclif/plugin-help/blob/v3.0.1/src/commands/help.ts)_
 
+## `storage-node leader:cancel-invite [FILE]`
+
+describe the command here
+
+```
+USAGE
+  $ storage-node leader:cancel-invite [FILE]
+
+OPTIONS
+  -f, --force
+  -h, --help       show CLI help
+  -n, --name=name  name to print
+```
+
+_See code: [src/commands/leader/cancel-invite.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/cancel-invite.ts)_
+
 ## `storage-node leader:create-bucket`
 
 Create new storage bucket. Requires storage working group leader permissions.
@@ -194,18 +211,22 @@ OPTIONS
 
 _See code: [src/commands/leader/delete-bucket.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/delete-bucket.ts)_
 
-## `storage-node leader:invite-operator [FILE]`
+## `storage-node leader:invite-operator`
 
-describe the command here
+Deletes a storage bucket. Requires storage working group leader permissions.
 
 ```
 USAGE
-  $ storage-node leader:invite-operator [FILE]
+  $ storage-node leader:invite-operator
 
 OPTIONS
-  -f, --force
-  -h, --help       show CLI help
-  -n, --name=name  name to print
+  -h, --help                   show CLI help
+  -i, --bucketId=bucketId      (required) Storage bucket ID
+  -k, --keyfile=keyfile        Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                    Use development mode
+  -p, --password=password      Key file password (optional).
+  -u, --apiUrl=apiUrl          Runtime API URL. Mandatory in non-dev environment. Default is ws://localhost:9944
+  -w, --operatorId=operatorId  (required) Storage bucket operator ID (storage group worker ID)
 ```
 
 _See code: [src/commands/leader/invite-operator.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/invite-operator.ts)_

+ 6 - 5
storage-node-v2/scripts/run-all-commands.sh

@@ -1,10 +1,10 @@
 #!/usr/bin/env bash
 
 
-Must be run on the clean development chain.
-It tests all commands.
+# Must be run on the clean development chain.
+# It tests all commands.
 
-Set Alice as leader
+# Set Alice as leader
 yarn storage-node dev:init # leader workerId = 0
 
 # Update limits
@@ -20,6 +20,7 @@ yarn storage-node leader:update-bag -b=0 -i static:council --dev
 yarn storage-node leader:create-bucket -a -n=100 -s=10000000  --dev # bucketId = 1
 yarn storage-node leader:delete-bucket -i=1  --dev 
 
-# Create a bucket and invite operator
+# Create a bucket, invite operator and cancel invite
 yarn storage-node leader:create-bucket -a -n=100 -s=10000000  --dev # bucketId = 2
-yarn storage-node leader:invite-operator -i=2 -w=0  --dev 
+yarn storage-node leader:invite-operator -i=2 -w=0  --dev 
+yarn storage-node leader:cancel-invite -i=2   --dev 

+ 39 - 0
storage-node-v2/src/commands/leader/cancel-invite.ts

@@ -0,0 +1,39 @@
+import { cancelStorageBucketOperatorInvite } from '../../services/runtime/extrinsics'
+import { flags } from '@oclif/command'
+import ApiCommandBase from '../../command-base/ApiCommandBase'
+import logger from '../../services/logger'
+
+export default class LeaderCancelInvite extends ApiCommandBase {
+  static description = `Cancels a storage bucket operator invite. Requires storage working group leader permissions.`
+
+  static flags = {
+    bucketId: flags.integer({
+      char: 'i',
+      required: true,
+      description: 'Storage bucket ID',
+    }),
+    ...ApiCommandBase.flags,
+  }
+
+  async run(): Promise<void> {
+    const { flags } = this.parse(LeaderCancelInvite)
+
+    const storageBucketId = flags.bucketId
+
+    logger.info('Canceling storage bucket operator invite...')
+    if (flags.dev) {
+      await this.ensureDevelopmentChain()
+    }
+
+    const account = this.getAccount(flags)
+    const api = await this.getApi()
+
+    const success = await cancelStorageBucketOperatorInvite(
+      api,
+      account,
+      storageBucketId
+    )
+
+    this.exitAfterRuntimeCall(success)
+  }
+}

+ 16 - 0
storage-node-v2/src/services/runtime/extrinsics.ts

@@ -202,3 +202,19 @@ async function extrinsicWrapper(
 
   return true
 }
+
+export async function cancelStorageBucketOperatorInvite(
+  api: ApiPromise,
+  account: KeyringPair,
+  bucketId: number
+): Promise<boolean> {
+  return extrinsicWrapper(() =>
+    sendAndFollowNamedTx(
+      api,
+      account,
+      'storage',
+      'cancelStorageBucketOperatorInvite',
+      [bucketId]
+    )
+  )
+}