idcfcloud 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +1 -0
  3. data/.gitignore +5 -3
  4. data/.rubocop.yml +16 -1
  5. data/README.md +61 -6
  6. data/exe/idcfcloud +9 -1
  7. data/idcfcloud.gemspec +9 -7
  8. data/lib/idcf/cli/conf/conf.yml +39 -5
  9. data/lib/idcf/cli/conf/const.rb +42 -17
  10. data/lib/idcf/cli/controller/base.rb +130 -60
  11. data/lib/idcf/cli/controller/extend/command.rb +18 -16
  12. data/lib/idcf/cli/controller/extend/init.rb +2 -0
  13. data/lib/idcf/cli/controller/extend/override.rb +1 -8
  14. data/lib/idcf/cli/controller/extend/search_module.rb +14 -0
  15. data/lib/idcf/cli/controller/ilb.rb +5 -34
  16. data/lib/idcf/cli/controller/include/command.rb +7 -80
  17. data/lib/idcf/cli/controller/include/init.rb +2 -4
  18. data/lib/idcf/cli/controller/include/util.rb +20 -63
  19. data/lib/idcf/cli/controller/include/validate.rb +7 -1
  20. data/lib/idcf/cli/controller/your.rb +0 -33
  21. data/lib/idcf/cli/error/cli_error.rb +7 -5
  22. data/lib/idcf/cli/extend/configure.rb +38 -33
  23. data/lib/idcf/cli/extend/update.rb +139 -54
  24. data/lib/idcf/cli/extend/update_file.rb +113 -18
  25. data/lib/idcf/cli/gem_ext/thor/init_util.rb +20 -7
  26. data/lib/idcf/cli/index.rb +21 -11
  27. data/lib/idcf/cli/lib/convert/formatter/base.rb +1 -1
  28. data/lib/idcf/cli/lib/convert/formatter/xml_format.rb +1 -1
  29. data/lib/idcf/cli/lib/convert/helper.rb +43 -7
  30. data/lib/idcf/cli/lib/util/ini_conf.rb +30 -8
  31. data/lib/idcf/cli/lib/util/yml_conf.rb +13 -2
  32. data/lib/idcf/cli/service/base.rb +121 -21
  33. data/lib/idcf/cli/service/ilb/add_server_for_protocol.rb +8 -3
  34. data/lib/idcf/cli/service/ilb/base_server_for_protocol.rb +21 -35
  35. data/lib/idcf/cli/service/ilb/delete_server_for_protocol.rb +9 -4
  36. data/lib/idcf/cli/validate/define/base.rb +3 -1
  37. data/lib/idcf/cli/validate/define/ilb/base.rb +0 -5
  38. data/lib/idcf/cli/version.rb +1 -1
  39. metadata +62 -23
  40. data/lib/idcf/cli/conf/service/.gitkeep +0 -0
  41. data/lib/idcf/cli/controller/include/override.rb +0 -30
  42. data/lib/idcf/cli/controller/include/sdk.rb +0 -94
@@ -6,7 +6,7 @@ module Idcf
6
6
  module Util
7
7
  # ini conf
8
8
  class IniConf
9
- attr_reader :load_data, :tmp_data
9
+ attr_reader :load_data, :tmp_data, :read_only
10
10
 
11
11
  # initialize
12
12
  #
@@ -14,6 +14,7 @@ module Idcf
14
14
  def initialize(*path)
15
15
  @tmp_data = {}
16
16
  @load_data = IniFile.load(path[0])
17
+ @read_only = false
17
18
  end
18
19
 
19
20
  def load_error?
@@ -44,22 +45,43 @@ module Idcf
44
45
  end
45
46
  rescue
46
47
  msg = "Error: could not read #{profile}:#{name}"
47
- raise Idcf::Cli::CliError, msg
48
+ raise Idcf::Cli::Error::CliError, msg
48
49
  end
49
50
 
51
+ # write
52
+ #
53
+ # @param path [String]
50
54
  def write(path)
51
- unless File.exist?(path)
52
- dir_path = File.dirname(path)
53
- FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
54
- File.open(path, 'w').close
55
- @load_data = IniFile.load(path)
56
- end
55
+ raise Idcf::Cli::Error::CliError, 'read only object' if @read_only
56
+ @load_data = load_create_file(path) unless File.exist?(path)
57
57
 
58
58
  @tmp_data.each do |k, v|
59
59
  @load_data[k] = v
60
60
  end
61
61
  @load_data.write(filename: path)
62
62
  end
63
+
64
+ # inifile object merge
65
+ #
66
+ # @param value [Idcf::Cli::Lib::Util::IniConf]
67
+ # @return self
68
+ def merge!(value)
69
+ raise Idcf::Cli::Error::CliError, 'merge error' unless value.class == self.class
70
+ v_data = value.load_data
71
+ return self if v_data.nil?
72
+ @load_data.merge!(v_data)
73
+ @read_only = true
74
+ self
75
+ end
76
+
77
+ protected
78
+
79
+ def load_create_file(path)
80
+ dir_path = File.dirname(path)
81
+ FileUtils.mkdir_p(dir_path) unless Dir.exist?(dir_path)
82
+ File.open(path, 'w').close
83
+ IniFile.load(path)
84
+ end
63
85
  end
64
86
  end
65
87
  end
@@ -5,7 +5,17 @@ module Idcf
5
5
  module Util
6
6
  # yml conf
7
7
  class YmlConf
8
- @load_data = nil
8
+ attr_reader :load_data
9
+
10
+ class << self
11
+ attr_reader :data
12
+ def load(path)
13
+ @data ||= {}
14
+ return @data[path] unless @data[path].nil?
15
+ @data[path] = name.constantize.new(path)
16
+ @data[path]
17
+ end
18
+ end
9
19
 
10
20
  # initialize
11
21
  #
@@ -17,6 +27,7 @@ module Idcf
17
27
  # get config value
18
28
  #
19
29
  # @param path [String]
30
+ # @param section [String]
20
31
  # @return String or Hash
21
32
  # @raise
22
33
  def find(path)
@@ -28,7 +39,7 @@ module Idcf
28
39
 
29
40
  result
30
41
  rescue
31
- raise Idcf::Cli::CliError, "Error: could not read '#{path}'"
42
+ raise Idcf::Cli::Error::CliError, "Error: could not read '#{path}'"
32
43
  end
33
44
  end
34
45
  end
@@ -1,14 +1,29 @@
1
+ require 'idcf/cli/lib/include/recurring_calling'
1
2
  module Idcf
2
3
  module Cli
3
4
  module Service
4
5
  # model base
5
6
  class Base
6
- ARG_TYPE_REQ = :req
7
- ARG_TYPE_OPT = :opt
8
- ARG_TYPE_REST = :rest
9
- ARG_TYPE_BLOCK = :block
7
+ ARG_TYPE_REQ = :req
8
+ ARG_TYPE_OPT = :opt
9
+ ARG_TYPE_REST = :rest
10
+ HELP_FORMAT = {
11
+ ARG_TYPE_REQ => '<%s>',
12
+ ARG_TYPE_OPT => '[%s]',
13
+ ARG_TYPE_REST => '[%s ...]'
14
+ }.freeze
15
+ attr_reader :last_command, :last_command_args
16
+ include Idcf::Cli::Lib::Include::RecurringCalling
17
+
10
18
  class << self
11
- attr_reader :options, :params
19
+ attr_reader :options
20
+
21
+ # reset
22
+ # setting reset
23
+ def reset
24
+ @options = {}
25
+ end
26
+
12
27
  # option
13
28
  #
14
29
  # @param name [String]
@@ -16,39 +31,124 @@ module Idcf
16
31
  # @option attr [String] :type
17
32
  # @option attr [Boolean] :required
18
33
  # @option attr [String] :desc
19
- def option(name, *attr)
34
+ def option(name, attr)
20
35
  @options ||= {}
21
36
  @options[name] = attr
22
37
  end
23
38
 
24
- # params
39
+ # descritpion
25
40
  #
26
- # @param values [String]
27
- # @param arg_type [String]
28
- def param(name, arg_type = ARG_TYPE_REQ)
29
- @params ||= []
30
- s = @params.select do |v|
31
- v[:name] == name
41
+ # @return String
42
+ def description
43
+ ''
44
+ end
45
+
46
+ # make param string
47
+ #
48
+ # @return String
49
+ def make_param_s
50
+ cp = []
51
+ valid_params.each do |param|
52
+ f = HELP_FORMAT[param[0]]
53
+ next if f.nil?
54
+ cp << format(f, param[1])
55
+ end
56
+ cp.join(' ')
57
+ end
58
+
59
+ def valid_params
60
+ [].tap do |result|
61
+ new.method(:do).parameters.each do |param|
62
+ result << param if target_param?(param[1])
63
+ end
32
64
  end
65
+ end
33
66
 
34
- param = {
35
- name: name,
36
- arg_type: arg_type
37
- }
67
+ protected
38
68
 
39
- @params << param if s.size.zero?
69
+ # target param?
70
+ #
71
+ # @param name [String]
72
+ # @return Boolean
73
+ def target_param?(name)
74
+ val = name.to_s
75
+ exclusion_list = %w(api o)
76
+ return false if exclusion_list.include?(val)
77
+ return false if val[0] == '_'
78
+ true
40
79
  end
41
80
  end
42
81
 
82
+ def initialize
83
+ @last_command = ''
84
+ @last_command_args = []
85
+ end
86
+
43
87
  # do
44
88
  #
45
89
  # @param _client [Mixed]
46
- # @param *_args [Array]
47
90
  # @param _o [Hash] options
91
+ # @param *_args [Array]
48
92
  # @return Hash
49
93
  # @raise
50
- def do(_client, *_args, _o)
51
- raise Idcf::Cli::CliError, 'Require override'
94
+ def do(_client, _o, *_args)
95
+ cli_error 'Require override'
96
+ end
97
+
98
+ # between params
99
+ #
100
+ # @param params [Array]
101
+ # @param arg_size [int]
102
+ # @raise
103
+ def between_param?(arg_size)
104
+ param = self.class.valid_params
105
+ p_cnt = param.size
106
+ return true if method_rest?(param)
107
+ opt_cnt = method_option_cnt(param)
108
+
109
+ min = p_cnt - opt_cnt
110
+ msg = format('Argument: %s', self.class.make_param_s)
111
+ cli_error msg unless arg_size.between?(min, p_cnt)
112
+ true
113
+ end
114
+
115
+ # is rest
116
+ #
117
+ # @param params [Array]
118
+ # @return Boolean
119
+ def method_rest?(params)
120
+ return false if params.nil?
121
+ params.each do |param|
122
+ case param[0]
123
+ when ARG_TYPE_REST
124
+ return true
125
+ end
126
+ end
127
+ false
128
+ end
129
+
130
+ # option count
131
+ #
132
+ # @param params [Array]
133
+ # @return int
134
+ def method_option_cnt(params)
135
+ result = 0
136
+ return result if params.nil?
137
+ params.each do |param|
138
+ case param[0]
139
+ when ARG_TYPE_OPT
140
+ result += 1
141
+ end
142
+ end
143
+ result
144
+ end
145
+
146
+ # cli error
147
+ #
148
+ # @param msg [String]
149
+ # @raise
150
+ def cli_error(msg)
151
+ raise Idcf::Cli::Error::CliError, msg
52
152
  end
53
153
  end
54
154
  end
@@ -6,12 +6,17 @@ module Idcf
6
6
  module Ilb
7
7
  # add server
8
8
  class AddServerForProtocol < BaseServerForProtocol
9
- init
9
+ class << self
10
+ def description
11
+ "Add a loadbalancer config's server."
12
+ end
13
+ end
10
14
 
11
15
  protected
12
16
 
13
- def do_command(lb_id, config, target)
14
- client.add_server(lb_id, config['id'], target)
17
+ def set_last_command(lb_id, config, target)
18
+ @last_command = :add_server
19
+ @last_command_args = [lb_id, config['id'], target]
15
20
  end
16
21
  end
17
22
  end
@@ -6,58 +6,43 @@ module Idcf
6
6
  module Ilb
7
7
  # [add/delete] server for protocol
8
8
  class BaseServerForProtocol < Idcf::Cli::Service::Base
9
- class << self
10
- def init
11
- param :lb_id
12
- param :protocol
13
- param :protocol_port
14
- param :data, Base::ARG_TYPE_REQ
15
- end
16
- end
17
-
18
- attr_reader :client
9
+ attr_reader :api, :options
19
10
 
20
11
  # do
21
12
  #
22
- # @param client [Idcf::Ilb::Client]
23
- # @param args [Array]
24
- # @option args [String] lb id
25
- # @option args [Stirng] configure protocol
26
- # @option args [int] configure port
27
- # @option args [Hash] server info {ipaddress: '0.0.0.0', port: 80}
13
+ # @param api [Idcf::Ilb::Lib::Api]
28
14
  # @param o [Hash] options
29
- def do(client, *args, o)
30
- @client = client
31
- lb_id = args[0]
32
- lb = search_lb(lbs, lb_id)
33
- config = search_config(lb, args[1], args[2])
15
+ # @option lb_id [String]
16
+ # @option protocol [Stirng] http
17
+ # @option protocol_port [int] 80
18
+ # @option params [Hash] {ipaddress: '0.0.0.0', port: 80}
19
+ def do(api, o, lb_id, protocol, protocol_port, params)
20
+ @api = api
21
+ @options = o
22
+ lb = search_lb(lbs, lb_id)
23
+ config = search_config(lb, protocol, protocol_port)
34
24
 
35
25
  if config.nil?
36
26
  not_param = o[:protocol].nil? ? 'conf_id' : 'protocol'
37
- raise Idcf::Cli::CliError, "Target not found (#{not_param})"
27
+ cli_error "A target isn't found(#{not_param})"
38
28
  end
39
29
 
40
- do_command(lb_id, config, args[3])
41
- client.list_servers(lb_id, config['id'])
30
+ set_last_command(lb_id, config, params)
31
+ config['servers']
42
32
  end
43
33
 
44
34
  protected
45
35
 
46
- def do_command(_lb_id, _config, _target)
47
- raise Idcf::Cli::CliError, 'override required'
36
+ def set_last_command(_lb_id, _config, _target)
37
+ cli_error 'override required'
48
38
  end
49
39
 
50
- # get lb list [Idcf::Ilb::Client]
40
+ # get lb list
51
41
  #
52
- # @param client
53
42
  # @return Array in Hash
54
43
  # @raise
55
44
  def lbs
56
- lb = client.get(:loadbalancers)
57
- msg = "Status: #{lb.status}"
58
- raise Idcf::Cli::CliError, msg if !lb.success? || lb.status != 200
59
-
60
- lb.body
45
+ @api.do(:list_loadbalancers)
61
46
  end
62
47
 
63
48
  # search lb target
@@ -72,7 +57,7 @@ module Idcf
72
57
  end
73
58
 
74
59
  msg = "Target lb_id not found ( #{id} )"
75
- raise Idcf::Cli::CliError, msg if lbs.empty?
60
+ cli_error msg if lbs.empty?
76
61
 
77
62
  lbs[0]
78
63
  end
@@ -88,10 +73,11 @@ module Idcf
88
73
  next unless target_config?(v, protocol, p_port)
89
74
  unless v['state'].casecmp('running').zero?
90
75
  msg = 'The operation is impossible because the target is currently being processed'
91
- raise Idcf::Cli::CliError, msg
76
+ cli_error msg
92
77
  end
93
78
  return v
94
79
  end
80
+ nil
95
81
  end
96
82
 
97
83
  # is target config
@@ -6,13 +6,18 @@ module Idcf
6
6
  module Ilb
7
7
  # delete server
8
8
  class DeleteServerForProtocol < BaseServerForProtocol
9
- init
9
+ class << self
10
+ def description
11
+ "Delete a [loadbalancer's config server]"
12
+ end
13
+ end
10
14
 
11
15
  protected
12
16
 
13
- def do_command(lb_id, config, target)
14
- server_id = search_server_id(config['servers'], target)
15
- client.delete_server(lb_id, config['id'], server_id)
17
+ def set_last_command(lb_id, config, target)
18
+ server_id = search_server_id(config['servers'], target)
19
+ @last_command = :delete_server
20
+ @last_command_args = [lb_id, config['id'], server_id]
16
21
  end
17
22
 
18
23
  def search_server_id(servers, target)
@@ -14,7 +14,9 @@ module Idcf
14
14
  :api_key,
15
15
  :secret_key,
16
16
  :no_ssl,
17
- :no_vssl
17
+ :no_vssl,
18
+ :json_path,
19
+ :fields
18
20
 
19
21
  validates :output,
20
22
  allow_blank: true,
@@ -1,5 +1,3 @@
1
- require 'active_model'
2
- require 'active_model/model'
3
1
  require_relative '../base'
4
2
  module Idcf
5
3
  module Cli
@@ -8,9 +6,6 @@ module Idcf
8
6
  module Ilb
9
7
  # Base Validate
10
8
  class Base < Idcf::Cli::Validate::Define::Base
11
- include ActiveModel::Model
12
- include Idcf::Cli::Validate::Custom
13
-
14
9
  attr_accessor :region
15
10
 
16
11
  validates :region,
@@ -1,5 +1,5 @@
1
1
  module Idcf
2
2
  module Cli
3
- VERSION = '0.1.4'.freeze
3
+ VERSION = '0.2.0'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: idcfcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - IDC Frontier Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-09-15 00:00:00.000000000 Z
11
+ date: 2017-12-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -48,7 +48,7 @@ dependencies:
48
48
  - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: 3.2.5
51
- type: :runtime
51
+ type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
@@ -68,7 +68,7 @@ dependencies:
68
68
  - - ">="
69
69
  - !ruby/object:Gem::Version
70
70
  version: 1.0.4
71
- type: :runtime
71
+ type: :development
72
72
  prerelease: false
73
73
  version_requirements: !ruby/object:Gem::Requirement
74
74
  requirements:
@@ -79,7 +79,7 @@ dependencies:
79
79
  - !ruby/object:Gem::Version
80
80
  version: 1.0.4
81
81
  - !ruby/object:Gem::Dependency
82
- name: activerecord
82
+ name: activemodel
83
83
  requirement: !ruby/object:Gem::Requirement
84
84
  requirements:
85
85
  - - "~>"
@@ -187,47 +187,89 @@ dependencies:
187
187
  - !ruby/object:Gem::Version
188
188
  version: 1.0.0
189
189
  - !ruby/object:Gem::Dependency
190
- name: idcf-your
190
+ name: open_uri_redirections
191
191
  requirement: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ">="
193
+ - - "~>"
194
194
  - !ruby/object:Gem::Version
195
- version: '0'
195
+ version: 0.2.1
196
196
  type: :runtime
197
197
  prerelease: false
198
198
  version_requirements: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ">="
200
+ - - "~>"
201
201
  - !ruby/object:Gem::Version
202
- version: '0'
202
+ version: 0.2.1
203
+ - !ruby/object:Gem::Dependency
204
+ name: idcf-json_hyper_schema
205
+ requirement: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: 0.1.0
210
+ type: :runtime
211
+ prerelease: false
212
+ version_requirements: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: 0.1.0
203
217
  - !ruby/object:Gem::Dependency
204
218
  name: idcf-faraday_middleware
205
219
  requirement: !ruby/object:Gem::Requirement
206
220
  requirements:
207
- - - ">="
221
+ - - "~>"
208
222
  - !ruby/object:Gem::Version
209
- version: '0'
223
+ version: 0.0.2
210
224
  type: :runtime
211
225
  prerelease: false
212
226
  version_requirements: !ruby/object:Gem::Requirement
213
227
  requirements:
214
- - - ">="
228
+ - - "~>"
215
229
  - !ruby/object:Gem::Version
216
- version: '0'
230
+ version: 0.0.2
217
231
  - !ruby/object:Gem::Dependency
218
- name: idcf-ilb
232
+ name: jsonpath
219
233
  requirement: !ruby/object:Gem::Requirement
220
234
  requirements:
221
- - - ">="
235
+ - - "~>"
222
236
  - !ruby/object:Gem::Version
223
- version: 0.0.3
237
+ version: 0.8.10
224
238
  type: :runtime
225
239
  prerelease: false
226
240
  version_requirements: !ruby/object:Gem::Requirement
227
241
  requirements:
228
- - - ">="
242
+ - - "~>"
243
+ - !ruby/object:Gem::Version
244
+ version: 0.8.10
245
+ - !ruby/object:Gem::Dependency
246
+ name: facter
247
+ requirement: !ruby/object:Gem::Requirement
248
+ requirements:
249
+ - - "~>"
250
+ - !ruby/object:Gem::Version
251
+ version: 2.5.1
252
+ type: :runtime
253
+ prerelease: false
254
+ version_requirements: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - "~>"
257
+ - !ruby/object:Gem::Version
258
+ version: 2.5.1
259
+ - !ruby/object:Gem::Dependency
260
+ name: CFPropertyList
261
+ requirement: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - "~>"
264
+ - !ruby/object:Gem::Version
265
+ version: 2.3.5
266
+ type: :runtime
267
+ prerelease: false
268
+ version_requirements: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - "~>"
229
271
  - !ruby/object:Gem::Version
230
- version: 0.0.3
272
+ version: 2.3.5
231
273
  description: IDCF Cli
232
274
  email: []
233
275
  executables:
@@ -248,7 +290,6 @@ files:
248
290
  - idcfcloud.gemspec
249
291
  - lib/idcf/cli/conf/conf.yml
250
292
  - lib/idcf/cli/conf/const.rb
251
- - lib/idcf/cli/conf/service/.gitkeep
252
293
  - lib/idcf/cli/controller/base.rb
253
294
  - lib/idcf/cli/controller/extend/command.rb
254
295
  - lib/idcf/cli/controller/extend/init.rb
@@ -257,8 +298,6 @@ files:
257
298
  - lib/idcf/cli/controller/ilb.rb
258
299
  - lib/idcf/cli/controller/include/command.rb
259
300
  - lib/idcf/cli/controller/include/init.rb
260
- - lib/idcf/cli/controller/include/override.rb
261
- - lib/idcf/cli/controller/include/sdk.rb
262
301
  - lib/idcf/cli/controller/include/util.rb
263
302
  - lib/idcf/cli/controller/include/validate.rb
264
303
  - lib/idcf/cli/controller/your.rb
@@ -310,7 +349,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
310
349
  version: '0'
311
350
  requirements: []
312
351
  rubyforge_project:
313
- rubygems_version: 2.6.8
352
+ rubygems_version: 2.6.13
314
353
  signing_key:
315
354
  specification_version: 4
316
355
  summary: IDCF Cli tools
File without changes
@@ -1,30 +0,0 @@
1
- module Idcf
2
- module Cli
3
- module Controller
4
- module Include
5
- # override methods
6
- module Override
7
- protected
8
-
9
- # Create a new client
10
- #
11
- # @param _o [Hash] other options
12
- # @return [Response] Mixed
13
- def make_client(_o)
14
- raise Idcf::Cli::CliError, 'Required override'
15
- end
16
-
17
- # sdk do
18
- #
19
- # @param _command [String]
20
- # @param *_args [Array]
21
- # @param o [Hash] options
22
- # @return String
23
- def do_sdk(_command, *_args, _o)
24
- raise Idcf::Cli::CliError, 'Requre override'
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end