Browse Source

storage-node-v2: Add ‘update data fee’ command.

Shamil Gadelshin 3 years ago
parent
commit
44cb502e36

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

@@ -37,9 +37,10 @@ USAGE
 * [`storage-node leader:create-bucket`](#storage-node-leadercreate-bucket)
 * [`storage-node leader:delete-bucket`](#storage-node-leaderdelete-bucket)
 * [`storage-node leader:invite-operator`](#storage-node-leaderinvite-operator)
-* [`storage-node leader:remove-operator [FILE]`](#storage-node-leaderremove-operator-file)
+* [`storage-node leader:remove-operator`](#storage-node-leaderremove-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-data-fee [FILE]`](#storage-node-leaderupdate-data-fee-file)
 * [`storage-node leader:update-voucher-limits`](#storage-node-leaderupdate-voucher-limits)
 * [`storage-node operator:accept-invitation`](#storage-node-operatoraccept-invitation)
 * [`storage-node server [FILE]`](#storage-node-server-file)
@@ -217,7 +218,7 @@ _See code: [src/commands/leader/delete-bucket.ts](https://github.com/Joystream/j
 
 ## `storage-node leader:invite-operator`
 
-Deletes a storage bucket. Requires storage working group leader permissions.
+Invites a storage bucket operator. Requires storage working group leader permissions.
 
 ```
 USAGE
@@ -235,18 +236,21 @@ OPTIONS
 
 _See code: [src/commands/leader/invite-operator.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/invite-operator.ts)_
 
-## `storage-node leader:remove-operator [FILE]`
+## `storage-node leader:remove-operator`
 
-describe the command here
+Removes a storage bucket operator. Requires storage working group leader permissions.
 
 ```
 USAGE
-  $ storage-node leader:remove-operator [FILE]
+  $ storage-node leader:remove-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
 ```
 
 _See code: [src/commands/leader/remove-operator.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/remove-operator.ts)_
@@ -317,6 +321,22 @@ OPTIONS
 
 _See code: [src/commands/leader/update-bag-limit.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-bag-limit.ts)_
 
+## `storage-node leader:update-data-fee [FILE]`
+
+describe the command here
+
+```
+USAGE
+  $ storage-node leader:update-data-fee [FILE]
+
+OPTIONS
+  -f, --force
+  -h, --help       show CLI help
+  -n, --name=name  name to print
+```
+
+_See code: [src/commands/leader/update-data-fee.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-data-fee.ts)_
+
 ## `storage-node leader:update-voucher-limits`
 
 Updates VoucherMaxObjectsSizeLimit and VoucherMaxObjectsNumberLimit the Joystream node storage.

+ 35 - 0
storage-node-v2/src/commands/leader/update-data-fee.ts

@@ -0,0 +1,35 @@
+import { updateDataSizeFee } from '../../services/runtime/extrinsics'
+import { flags } from '@oclif/command'
+import ApiCommandBase from '../../command-base/ApiCommandBase'
+import logger from '../../services/logger'
+
+export default class LeaderUpdateDataFee extends ApiCommandBase {
+  static description = `Updates data size fee. Requires storage working group leader permissions.`
+
+  static flags = {
+    fee: flags.integer({
+      char: 'f',
+      required: true,
+      description: 'New data size fee',
+    }),
+    ...ApiCommandBase.flags,
+  }
+
+  async run(): Promise<void> {
+    const { flags } = this.parse(LeaderUpdateDataFee)
+
+    const fee = flags.fee
+
+    logger.info('Updating data size fee...')
+    if (flags.dev) {
+      await this.ensureDevelopmentChain()
+    }
+
+    const account = this.getAccount(flags)
+    const api = await this.getApi()
+
+    const success = await updateDataSizeFee(api, account, fee)
+
+    this.exitAfterRuntimeCall(success)
+  }
+}

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

@@ -234,3 +234,15 @@ export async function removeStorageBucketOperator(
     )
   )
 }
+
+export async function updateDataSizeFee(
+  api: ApiPromise,
+  account: KeyringPair,
+  bucketId: number
+): Promise<boolean> {
+  return extrinsicWrapper(() =>
+    sendAndFollowNamedTx(api, account, 'storage', 'updateDataSizeFee', [
+      bucketId,
+    ])
+  )
+}