Преглед на файлове

storage-node-v2: Add ‘update blacklist’ command.

Shamil Gadelshin преди 3 години
родител
ревизия
7352dc9fe4

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

@@ -41,8 +41,9 @@ USAGE
 * [`storage-node leader:set-uploading-block`](#storage-node-leaderset-uploading-block)
 * [`storage-node leader:update-bag`](#storage-node-leaderupdate-bag)
 * [`storage-node leader:update-bag-limit`](#storage-node-leaderupdate-bag-limit)
+* [`storage-node leader:update-blacklist [FILE]`](#storage-node-leaderupdate-blacklist-file)
 * [`storage-node leader:update-data-fee`](#storage-node-leaderupdate-data-fee)
-* [`storage-node leader:update-dynamic-bag-policy [FILE]`](#storage-node-leaderupdate-dynamic-bag-policy-file)
+* [`storage-node leader:update-dynamic-bag-policy`](#storage-node-leaderupdate-dynamic-bag-policy)
 * [`storage-node leader:update-voucher-limits`](#storage-node-leaderupdate-voucher-limits)
 * [`storage-node operator:accept-invitation`](#storage-node-operatoraccept-invitation)
 * [`storage-node operator:set-bucket-limits`](#storage-node-operatorset-bucket-limits)
@@ -329,7 +330,7 @@ _See code: [src/commands/leader/update-bag.ts](https://github.com/Joystream/joys
 
 ## `storage-node leader:update-bag-limit`
 
-Updates StorageBucketsPerBagLimit variable in the Joystream node storage.
+Update StorageBucketsPerBagLimit variable in the Joystream node storage.
 
 ```
 USAGE
@@ -346,6 +347,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-blacklist [FILE]`
+
+describe the command here
+
+```
+USAGE
+  $ storage-node leader:update-blacklist [FILE]
+
+OPTIONS
+  -f, --force
+  -h, --help       show CLI help
+  -n, --name=name  name to print
+```
+
+_See code: [src/commands/leader/update-blacklist.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-blacklist.ts)_
+
 ## `storage-node leader:update-data-fee`
 
 Update data size fee. Requires storage working group leader permissions.
@@ -365,18 +382,23 @@ OPTIONS
 
 _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-dynamic-bag-policy [FILE]`
+## `storage-node leader:update-dynamic-bag-policy`
 
-describe the command here
+Update number of storage buckets used in the dynamic bag creation policy.
 
 ```
 USAGE
-  $ storage-node leader:update-dynamic-bag-policy [FILE]
+  $ storage-node leader:update-dynamic-bag-policy
 
 OPTIONS
-  -f, --force
-  -h, --help       show CLI help
-  -n, --name=name  name to print
+  -c, --channel            Channel dynamic bag type
+  -e, --member             Member dynamic bag type (default)
+  -h, --help               show CLI help
+  -k, --keyfile=keyfile    Key file for the account. Mandatory in non-dev environment.
+  -m, --dev                Use development mode
+  -n, --number=number      (required) New storage buckets number
+  -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/update-dynamic-bag-policy.ts](https://github.com/Joystream/joystream/blob/v0.1.0/src/commands/leader/update-dynamic-bag-policy.ts)_

+ 1 - 1
storage-node-v2/src/commands/leader/update-bag.ts

@@ -43,7 +43,7 @@ export default class LeaderUpdateBag extends ApiCommandBase {
 
     const bucket = flags.bucket ?? 0
 
-    logger.info('Update bag - add/remove storage buckets...')
+    logger.info('Updating the bag...')
     if (flags.dev) {
       await this.ensureDevelopmentChain()
     }

+ 44 - 0
storage-node-v2/src/commands/leader/update-blacklist.ts

@@ -0,0 +1,44 @@
+import { flags } from '@oclif/command'
+import { updateBlacklist } from '../../services/runtime/extrinsics'
+import ApiCommandBase from '../../command-base/ApiCommandBase'
+import logger from '../../services/logger'
+
+export default class LeaderUpdateBlacklist extends ApiCommandBase {
+  static description =
+    'Add/remove a content ID from the blacklist (adds by default).'
+
+  static flags = {
+    cid: flags.string({
+      char: 'c',
+      required: true,
+      description: 'Content ID',
+    }),
+    remove: flags.boolean({
+      char: 'r',
+      description: 'Remove a content ID from the blaclist',
+    }),
+    ...ApiCommandBase.flags,
+  }
+
+  async run(): Promise<void> {
+    const { flags } = this.parse(LeaderUpdateBlacklist)
+
+    logger.info('Updating blacklist...')
+    if (flags.dev) {
+      await this.ensureDevelopmentChain()
+    }
+
+    const account = this.getAccount(flags)
+    const api = await this.getApi()
+
+    const success = await updateBlacklist(
+      api,
+      account,
+      flags.cid,
+      flags.remove
+    )
+
+    this.exitAfterRuntimeCall(success)
+  }
+}
+

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

@@ -330,3 +330,29 @@ export async function updateNumberOfStorageBucketsInDynamicBagCreationPolicy(
     )
   )
 }
+
+export async function updateBlacklist(
+  api: ApiPromise,
+  account: KeyringPair,
+  cid: string,
+  removeCid: boolean
+): Promise<boolean> {
+  return await extrinsicWrapper(() => {
+    let addHashes: CodecArg
+    let removeHashes: CodecArg
+
+    if (removeCid) {
+      removeHashes = api.createType('ContentIdSet', [cid])
+    } else {
+      addHashes = api.createType('ContentIdSet', [cid])
+    }
+
+    return sendAndFollowNamedTx(
+      api,
+      account,
+      'storage',
+      'updateBlacklist',
+      [removeHashes, addHashes]
+    )
+  })
+}