update-dynamic-bag-policy.ts 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import ApiCommandBase from '../../command-base/ApiCommandBase'
  2. import { updateNumberOfStorageBucketsInDynamicBagCreationPolicy } from '../../services/runtime/extrinsics'
  3. import { flags } from '@oclif/command'
  4. import logger from '../../services/logger'
  5. import { parseDynamicBagType } from '../../services/helpers/bagTypes'
  6. import { DynamicBagTypeKey } from '@joystream/types/storage'
  7. /**
  8. * CLI command:
  9. * Updates dynamic bag creation policy - storage bucket number for new dynamic
  10. * bag.
  11. *
  12. * @remarks
  13. * Storage working group leader command. Requires storage WG leader priviliges.
  14. * Shell command: "leader:update-dynamic-bag-policy"
  15. */
  16. export default class LeaderUpdateDynamicBagPolicy extends ApiCommandBase {
  17. static description = 'Update number of storage buckets used in the dynamic bag creation policy.'
  18. static flags = {
  19. number: flags.integer({
  20. char: 'n',
  21. required: true,
  22. description: 'New storage buckets number',
  23. }),
  24. bagType: flags.enum<DynamicBagTypeKey>({
  25. char: 't',
  26. description: 'Dynamic bag type (Channel, Member).',
  27. options: ['Channel', 'Member'],
  28. required: true,
  29. }),
  30. ...ApiCommandBase.flags,
  31. }
  32. async run(): Promise<void> {
  33. const { flags } = this.parse(LeaderUpdateDynamicBagPolicy)
  34. logger.info('Update dynamic bag creation policy....')
  35. if (flags.dev) {
  36. await this.ensureDevelopmentChain()
  37. }
  38. const account = this.getAccount(flags)
  39. const newNumber = flags.number
  40. const api = await this.getApi()
  41. const dynamicBagType = parseDynamicBagType(flags.bagType)
  42. const success = await updateNumberOfStorageBucketsInDynamicBagCreationPolicy(
  43. api,
  44. account,
  45. dynamicBagType,
  46. newNumber
  47. )
  48. this.exitAfterRuntimeCall(success)
  49. }
  50. }