dtk-client 0.10.1 → 0.10.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e9540610a410ba802ef78157c6781d4271ccfe04
4
- data.tar.gz: 7a38732fc16295a3cad0f088483198746d776b21
3
+ metadata.gz: 7d12c019fd00d94a4be0b393fc9ee0f9f3355095
4
+ data.tar.gz: ab0b919677570741e387a4ed4ca0e01479c2607d
5
5
  SHA512:
6
- metadata.gz: 7a1ed74ece609638c98e20ba20e2d3cb12364ecc1bc7cadf94fc5341837fda53c51226bc0529c63464c80cdf5ea3b96c3769fc070fc60233e950e0d208bda23f
7
- data.tar.gz: 300e8bec9f03786c3867a0e473c8eff0d93b7c056148fc9bf70752220d1103c3e7d29eb37305890ad653fa7d16b5d4ca0bc5b8f14aa9f9c59a0329180ac7186c
6
+ metadata.gz: 08c9897c885fc0af755288124c43746e0edaa6477856ae649c7b576faf282772d2a04231327d96190ca479885447c1df96dbeb6da6a8709dbe6e69c23cacd708
7
+ data.tar.gz: e9c8de28290402661d9db61cbbef3574abeb02f32f5a64a6b50a2e1cdd4453ff1ac1dc80e313ee730851867803ee6c9bf5198ff47828547a5c70986e356dc188
data/dtk-client.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.executables = spec.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
 
20
- spec.add_dependency 'dtk-common-core','0.10.0'
20
+ spec.add_dependency 'dtk-common-core','0.10.1'
21
21
  spec.add_dependency 'gli', '2.13.4'
22
22
  spec.add_dependency 'highline', '1.7.8'
23
23
  spec.add_dependency 'colorize', '0.7.7'
@@ -0,0 +1,59 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::Client
19
+ module CLI::Command
20
+ module Module
21
+ subcommand_def 'stage' do |c|
22
+ c.arg Token::Arg.assembly_name, :optional => true
23
+ command_body c, :stage, 'Create a new service instance to refer to staged infrastructure that then can be deployed' do |sc|
24
+ sc.flag Token.directory_path, :desc => 'Path to module directory where assembly is being staged from; not needed if in the module directory'
25
+ sc.flag Token.service_name, :desc => 'If specified, name to use for new service instance; otherwise service instance name is auto-generated'
26
+ sc.flag Token.parent_service_instance
27
+ sc.switch Token.force
28
+ sc.switch Token.target
29
+ # on useful for testing in dev mode
30
+ # sc.switch Token.purge, :desc => 'Overwrite any content that presently exists in the service instance directory to be created'
31
+ # sc.flag Token.version
32
+ sc.action do |_global_options, options, args|
33
+ module_ref = module_ref_in_options_or_context(options)
34
+ assembly_name = args[0]
35
+ version = options[:version] || module_ref.version
36
+ service_name = options[:service_name]
37
+ force = options[:f]
38
+ directory_path = options[:directory_path]
39
+
40
+ Validation.validate_name(service_name) if service_name
41
+
42
+ args = {
43
+ :module_ref => module_ref,
44
+ :assembly_name => assembly_name,
45
+ :service_name => service_name,
46
+ :version => version,
47
+ :target_service => options[:parent_service_instance],
48
+ :remove_existing => options[:purge],
49
+ :is_target => options[:target],
50
+ :force => force,
51
+ :directory_path => directory_path
52
+ }
53
+ Operation::Module.stage(args)
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
59
+ end
@@ -21,7 +21,7 @@ module DTK::Client
21
21
  module Module
22
22
  include Command::Mixin
23
23
 
24
- ALL_SUBCOMMANDS = ['install', 'list', 'list-assemblies', 'push', 'uninstall', 'clone', 'list-remotes']
24
+ ALL_SUBCOMMANDS = ['install', 'list', 'list-assemblies', 'push', 'uninstall', 'clone', 'list-remotes', 'stage']
25
25
  command_def :desc => 'Subcommands for interacting with DTK modules'
26
26
  ALL_SUBCOMMANDS.each { |subcommand| require_relative("module/#{subcommand.gsub(/-/,'_')}") }
27
27
  end
@@ -21,12 +21,14 @@ module DTK::Client; module CLI
21
21
  subcommand_def 'converge' do |c|
22
22
  command_body c, :converge, "Converge service instance" do |sc|
23
23
  sc.flag Token.directory_path, :desc => 'Absolute or relative path to service instance directory; not needed if executed in the service instance directory'
24
-
24
+ sc.switch Token.force
25
25
  sc.action do |_global_options, options, _args|
26
26
  service_instance = service_instance_in_options_or_context(options)
27
-
27
+ force = options[:f]
28
28
  args = {
29
- :service_instance => service_instance
29
+ :service_instance => service_instance,
30
+ :force => force,
31
+ :directory_path => options[:directory_path]
30
32
  }
31
33
  Operation::Service.converge(args)
32
34
  end
@@ -22,22 +22,22 @@ module DTK::Client; module CLI
22
22
  command_body c, :delete, 'Destroys the running infrastructure associated with the service instance' do |sc|
23
23
  sc.flag Token.directory_path, :desc => 'Absolute or relative path to service instance directory associated; not needed if executed in service instance directory'
24
24
  sc.switch Token.skip_prompt, :desc => 'Skip prompt that checks if user wants to delete the service instance'
25
- sc.switch Token.recursive
25
+ sc.switch Token.recursive, :desc => 'Delete all service instances staged into specified target'
26
+ sc.switch Token.force, :desc => 'Ignore changes and destroy the running service instance'
26
27
  # sc.switch Token.purge, :desc => 'Delete the service instance directory on the client'
27
28
  sc.action do |_global_options, options, args|
28
- directory_path = options[:directory_path]
29
- purge = options[:purge]
30
- recursive = options[:recursive]
31
- # if purge && (!directory_path || (directory_path == @base_dsl_file_obj.parent_dir?))
32
- # raise Error::Usage, "If use option '#{option_ref(:purge)}' then need to call from outside directory and use option '#{option_ref(:directory_path)}'"
33
- # end
29
+ directory_path = options[:directory_path]
30
+ purge = options[:purge]
31
+ recursive = options[:recursive]
32
+ force = options[:force]
34
33
  service_instance = service_instance_in_options_or_context(options)
35
34
 
36
35
  args = {
37
36
  :service_instance => service_instance,
38
37
  :skip_prompt => options[:skip_prompt],
39
38
  :directory_path => directory_path,
40
- :recursive => recursive
39
+ :recursive => recursive,
40
+ :force => force
41
41
  }
42
42
  Operation::Service.delete(args)
43
43
  end
@@ -24,16 +24,18 @@ module DTK::Client
24
24
  sc.flag Token.directory_path, :desc => 'Path to module directory where assembly is being staged from; not needed if in the module directory'
25
25
  sc.flag Token.service_name, :desc => 'If specified, name to use for new service instance; otherwise service instance name is auto-generated'
26
26
  sc.flag Token.parent_service_instance
27
-
27
+ sc.switch Token.force
28
28
  sc.switch Token.target
29
29
  # on useful for testing in dev mode
30
30
  # sc.switch Token.purge, :desc => 'Overwrite any content that presently exists in the service instance directory to be created'
31
31
  # sc.flag Token.version
32
32
  sc.action do |_global_options, options, args|
33
- module_ref = module_ref_in_options_or_context(options)
34
- assembly_name = args[0]
35
- version = options[:version] || module_ref.version
36
- service_name = options[:service_name]
33
+ module_ref = module_ref_in_options_or_context(options)
34
+ assembly_name = args[0]
35
+ version = options[:version] || module_ref.version
36
+ service_name = options[:service_name]
37
+ force = options[:f]
38
+ directory_path = options[:directory_path]
37
39
 
38
40
  Validation.validate_name(service_name) if service_name
39
41
 
@@ -44,7 +46,9 @@ module DTK::Client
44
46
  :version => version,
45
47
  :target_service => options[:parent_service_instance],
46
48
  :remove_existing => options[:purge],
47
- :is_target => options[:target]
49
+ :is_target => options[:target],
50
+ :force => force,
51
+ :directory_path => directory_path
48
52
  }
49
53
  Operation::Service.stage(args)
50
54
  end
@@ -23,8 +23,8 @@ module DTK::Client; module CLI
23
23
  sc.flag Token.directory_path, :desc => 'Absolute or relative path to service instance directory associated; not needed if executed in service instance directory'
24
24
  sc.switch Token.skip_prompt, :desc => 'Skip prompt that checks if user wants to delete the service instance'
25
25
  sc.switch Token.purge, :desc => 'Delete the service instance directory on the client'
26
- sc.switch Token.force
27
- sc.switch Token.recursive
26
+ sc.switch Token.force, :desc => 'Removes service instance with all nodes and modules'
27
+ sc.switch Token.recursive, :desc => 'Delete dependent service instances'
28
28
  sc.action do |_global_options, options, args|
29
29
  directory_path = options[:directory_path]
30
30
  purge = options[:purge]
@@ -22,7 +22,6 @@ module DTK::Client
22
22
  include Command::Mixin
23
23
  ALL_SUBCOMMANDS = [
24
24
  'clone',
25
- 'stage',
26
25
  'delete',
27
26
  'uninstall',
28
27
  'edit',
@@ -22,10 +22,18 @@ module DTK::Client; module CLI
22
22
  include Command::Module
23
23
  include Command::Service
24
24
 
25
+ COMMAND_DEFS = [:service, :module]
26
+
25
27
  def add_command_defs!
26
- add_command :module
27
- # add_command :service needed for stage and deploy commands
28
- add_command :service
28
+ COMMAND_DEFS.each {|cmd| add_command(cmd)}
29
+ end
30
+
31
+ def context_type
32
+ 'module'
33
+ end
34
+
35
+ def allowed_commands_defs
36
+ COMMAND_DEFS.map { |cmd| cmd.to_s }
29
37
  end
30
38
 
31
39
  end
@@ -20,9 +20,20 @@ module DTK::Client::CLI
20
20
  module Type
21
21
  class Service < Context
22
22
  include Command::Service
23
+ include Command::Module
24
+
25
+ COMMAND_DEFS = [:service, :module]
23
26
 
24
27
  def add_command_defs!
25
- add_command :service
28
+ COMMAND_DEFS.each {|cmd| add_command(cmd)}
29
+ end
30
+
31
+ def context_type
32
+ 'service'
33
+ end
34
+
35
+ def allowed_commands_defs
36
+ COMMAND_DEFS.map { |cmd| cmd.to_s }
26
37
  end
27
38
  end
28
39
  end
@@ -20,7 +20,10 @@ module DTK::Client::CLI
20
20
  module Type
21
21
  class Top < Context
22
22
  include Command::All
23
-
23
+
24
+ def context_type
25
+ nil
26
+ end
24
27
  private
25
28
 
26
29
  def add_command_defs!
data/lib/cli/runner.rb CHANGED
@@ -35,6 +35,7 @@ module DTK::Client
35
35
  DTKNAccess.resolve_direct_access(config_existed)
36
36
 
37
37
  context = Context.determine_context
38
+ add_missing_context(argv, context)
38
39
  if response_obj = context.run_and_return_response_object(argv)
39
40
  # render_response will raise Error in case of error response
40
41
  render_response(response_obj)
@@ -53,6 +54,16 @@ module DTK::Client
53
54
  Response::ErrorHandler.raise_if_error(response_obj)
54
55
  response_obj.render_data
55
56
  end
57
+
58
+ def self.add_missing_context(argv, context)
59
+ add_context = true
60
+
61
+ if context_type = context.context_type
62
+ allowed_commands = context.allowed_commands_defs
63
+ allowed_commands.each {|cmd| add_context = false if argv.include?(cmd)}
64
+ argv.unshift(context_type) if add_context
65
+ end
66
+ end
56
67
  end
57
68
  end
58
69
  end
data/lib/cli/version.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  module DTK
2
2
  module Client
3
3
  module CLI
4
- VERSION="0.10.1"
4
+ VERSION="0.10.2"
5
5
  end
6
6
  end
7
7
  end
@@ -172,7 +172,7 @@ module DTK::Client
172
172
  changes[1].each { |item| puts "\t#{item}" }
173
173
  puts "\nDeleted files:\n".colorize(:red) unless changes[2].empty?
174
174
  changes[2].each { |item| puts "\t#{item}" }
175
- puts ""
175
+ puts ""
176
176
  end
177
177
  end
178
178
  end
@@ -46,7 +46,17 @@ module DTK::Client
46
46
  end
47
47
  end
48
48
 
49
-
49
+ def self.modified?(dir)
50
+ repo_dir = {
51
+ :path => dir,
52
+ :branch => Git.open(dir).branches.local
53
+ }
54
+ message = DTK::Client::Operation::ClientModuleDir::GitRepo.modified(repo_dir)
55
+ if message.data(:modified)
56
+ raise Error::Usage, "Please push or revert changes."
57
+ end
58
+ end
59
+
50
60
  def add_remote(name, url)
51
61
  @git_adapter.add_remote(name, url)
52
62
  end
@@ -68,6 +68,12 @@ module DTK::Client
68
68
  end
69
69
  end
70
70
 
71
+ def self.modified(args)
72
+ wrap_operation(args) do |args|
73
+ response_data_hash(:modified => Internal.modified(args))
74
+ end
75
+ end
76
+
71
77
  def self.init_and_push_from_existing_repo(args)
72
78
  wrap_operation(args) do |args|
73
79
  repo_dir = args.required(:repo_dir)
@@ -194,6 +200,16 @@ module DTK::Client
194
200
  head_sha
195
201
  end
196
202
 
203
+ def self.modified(args)
204
+ repo_url = args.required(:path)
205
+ branch = args.required(:branch)
206
+ repo = git_repo.new(repo_url, :branch => branch)
207
+
208
+ changed = repo.changed?
209
+ repo.print_status if changed
210
+ changed
211
+ end
212
+
197
213
  def self.create_add_remote_and_push(repo_dir, repo_url, remote_branch)
198
214
  repo = git_repo.new(repo_dir)
199
215
  add_remote_and_push(repo, repo_url, remote_branch)
@@ -23,8 +23,14 @@ module DTK::Client
23
23
  module_ref = args.required(:module_ref)
24
24
  module_name = args.required(:module_name)
25
25
  target_directory = args[:target_directory]
26
+
27
+ opts = {
28
+ :namespace => module_ref.namespace,
29
+ :version => module_ref.version
30
+ }
31
+
26
32
  unless module_info = module_exists?(module_ref, :type => :common_module)
27
- raise Error::Usage, "DTK module '#{module_ref.print_form}' does not exist on server."
33
+ raise Error::Usage, "DTK module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, opts)}' does not exist on server."
28
34
  end
29
35
 
30
36
  branch = module_info.required(:branch, :name)
@@ -41,7 +47,7 @@ module DTK::Client
41
47
  }
42
48
 
43
49
  ret = ClientModuleDir::GitRepo.clone_module_repo(clone_args)
44
- OsUtil.print_info("DTK module '#{module_ref.print_form}' has been successfully cloned into '#{ret.required(:target_repo_dir)}'")
50
+ OsUtil.print_info("DTK module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, opts)}' has been successfully cloned into '#{ret.required(:target_repo_dir)}'")
45
51
  end
46
52
  end
47
53
  end
@@ -18,12 +18,12 @@
18
18
  module DTK::Client
19
19
  class Operation::Module::Install
20
20
  class ExternalModule < self
21
- BaseRoute = "modules"
21
+ BaseRoute = "modules"
22
+ @update_all = false
23
+ @update_none = false
22
24
 
23
25
  def self.install_dependent_modules(module_refs, opts = {})
24
- # if skip_prompt option is sent it means user wants to update_all
25
- @update_all = opts[:skip_prompt]
26
- @update_none = false
26
+ @update_all = opts[:skip_prompt] if opts[:skip_prompt]
27
27
  @print_dependency_newline = false
28
28
 
29
29
  module_refs.each do |module_ref|
@@ -93,9 +93,13 @@ module DTK::Client
93
93
  module_name = component_module.module_name
94
94
  version = component_module.version
95
95
 
96
- import_msg = "#{opts[:indent]}Importing module '#{namespace}:#{module_name}"
97
- import_msg += "(#{version})" if version && !version.eql?('master')
98
- import_msg += "' ... "
96
+ print_opts = {
97
+ :module_name => module_name,
98
+ :namespace => namespace,
99
+ :version => version
100
+ }
101
+
102
+ import_msg = "#{opts[:indent]}Importing module '#{DTK::Common::PrettyPrintForm.module_ref(module_name, print_opts)}' ..."
99
103
 
100
104
  # Using print to avoid adding cr at the end.
101
105
  print "\n" if opts[:add_newline]
@@ -186,7 +190,12 @@ module DTK::Client
186
190
  print "\n"
187
191
  @print_dependency_newline = false
188
192
  end
189
- OsUtil.print("#{opts[:indent]}Using module '#{module_ref.namespace}:#{module_ref.module_name}'" + (module_ref.version.nil? ? "" : " version: #{module_ref.version} "))
193
+
194
+ opts = {
195
+ :namespace => module_ref.namespace,
196
+ :version => module_ref.version
197
+ }
198
+ OsUtil.print("#{opts[:indent]}Using module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, opts)}'")
190
199
  end
191
200
 
192
201
  end
@@ -45,10 +45,14 @@ module DTK::Client
45
45
  unless dependent_modules.empty?
46
46
  OsUtil.print_info('Auto-importing dependencies')
47
47
  ExternalModule.install_dependent_modules(dependent_modules, opts)
48
- OsUtil.print_info("Successfully imported '#{@base_module_ref.namespace}:#{@base_module_ref.module_name}' version #{@base_module_ref.version}")
49
48
  end
50
49
 
50
+ opts = {
51
+ :namespace => @base_module_ref.namespace,
52
+ :version => @base_module_ref.version
53
+ }
51
54
  CommonModule.install(@base_module_ref, @file_obj)
55
+ OsUtil.print_info("Successfully imported '#{DTK::Common::PrettyPrintForm.module_ref(@base_module_ref.module_name, opts)}'")
52
56
  nil
53
57
  end
54
58
 
@@ -24,7 +24,7 @@ module DTK::Client
24
24
  version = args[:version]
25
25
  directory_path = args[:directory_path]
26
26
 
27
- # will create different classes for different catalog taypes when we add support for them
27
+ # will create different classes for different catalog types when we add support for them
28
28
  new('dtkn', module_ref, directory_path, version).install
29
29
  end
30
30
  end
@@ -0,0 +1,64 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::Client
19
+ class Operation::Module
20
+ class Stage < self
21
+ def self.execute(args = Args.new)
22
+ wrap_operation(args) do |args|
23
+ module_ref = args.required(:module_ref)
24
+ remove_existing = args[:remove_existing]
25
+ service_name = args[:service_name]
26
+ force = args[:force]
27
+ directory_path = args[:directory_path]
28
+
29
+ post_body = PostBody.new(
30
+ :namespace => module_ref.namespace,
31
+ :module_name => module_ref.module_name,
32
+ :assembly_name? => args.required(:assembly_name),
33
+ :version? => args[:version],
34
+ :target_service? => args[:target_service],
35
+ :is_target? => args[:is_target]
36
+ )
37
+
38
+ DTK::Client::GitRepo.modified?(directory_path || OsUtil.current_dir) unless force
39
+ service_name ||= rest_post("#{BaseRoute}/generate_service_name", post_body).data
40
+ base_path = ClientModuleDir.ret_base_path(:service, service_name)
41
+
42
+ raise Error::Usage, "Directory '#{base_path}' is not empty; it must be deleted or removed before retrying the command" if ClientModuleDir.local_dir_exists?(:service, service_name)
43
+
44
+ post_body.merge!(:service_name => service_name)
45
+ response = rest_post("#{BaseRoute}/stage", post_body)
46
+
47
+ service_instance = response.required(:service, :name)
48
+
49
+ clone_args = {
50
+ :module_ref => module_ref,
51
+ :repo_url => response.required(:repo, :url),
52
+ :branch => response.required(:branch, :name),
53
+ :service_instance => service_instance,
54
+ :remove_existing => remove_existing
55
+ }
56
+ message = ClientModuleDir::GitRepo.clone_service_repo(clone_args)
57
+ target_dir = message.data(:target_repo_dir)
58
+
59
+ OsUtil.print_info("Service instance '#{service_instance}' has been created. In order to work with service instance, please navigate to: #{target_dir}")
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -21,9 +21,14 @@ module DTK::Client
21
21
  def self.execute(args = Args.new)
22
22
  wrap_operation(args) do |args|
23
23
  module_ref = args.required(:module_ref)
24
+
25
+ opts = {
26
+ :namespace => module_ref.namespace,
27
+ :version => module_ref.version
28
+ }
24
29
 
25
30
  unless args[:skip_prompt]
26
- return false unless Console.prompt_yes_no("Are you sure you want to uninstall module '#{module_ref.print_form}' from the server?", :add_options => true)
31
+ return false unless Console.prompt_yes_no("Are you sure you want to uninstall module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, opts)}' from the server?", :add_options => true)
27
32
  end
28
33
 
29
34
  post_body = PostBody.new(
@@ -32,7 +37,7 @@ module DTK::Client
32
37
  :version? => module_ref.version
33
38
  )
34
39
  rest_post("#{BaseRoute}/delete", post_body)
35
- OsUtil.print_info("DTK module '#{module_ref.print_form}' has been deleted successfully.")
40
+ OsUtil.print_info("DTK module '#{DTK::Common::PrettyPrintForm.module_ref(module_ref.module_name, opts)}' has been deleted successfully.")
36
41
  nil
37
42
  end
38
43
  end
@@ -18,7 +18,7 @@
18
18
  module DTK::Client
19
19
  class Operation
20
20
  class Module < self
21
- OPERATIONS = [:install, :list, :list_assemblies, :list_remotes, :push, :uninstall, :clone_module, :install_from_catalog]
21
+ OPERATIONS = [:install, :list, :list_assemblies, :list_remotes, :push, :uninstall, :clone_module, :install_from_catalog, :stage]
22
22
  OPERATIONS.each { |operation| require_relative("module/#{operation}") }
23
23
 
24
24
  BaseRoute = 'modules'
@@ -21,11 +21,14 @@ module DTK::Client
21
21
  def self.execute(args = Args.new)
22
22
  wrap_operation(args) do |args|
23
23
  service_instance = args.required(:service_instance)
24
+ force = args[:force]
25
+ directory_path = args[:directory_path]
24
26
 
25
27
  post_body = PostBody.new(
26
28
  :service_instance => service_instance
27
29
  )
28
30
 
31
+ DTK::Client::GitRepo.modified?(directory_path || OsUtil.current_dir) unless force
29
32
  violations = find_violations(service_instance)
30
33
  return violations if violations
31
34
 
@@ -22,18 +22,21 @@ module DTK::Client
22
22
  wrap_operation(args) do |args|
23
23
  service_instance = args.required(:service_instance)
24
24
  recursive = args.required(:recursive)
25
+ force = args[:force]
26
+ directory_path = args[:directory_path]
25
27
 
26
28
  unless args[:skip_prompt]
27
29
  return false unless Console.prompt_yes_no("Are you sure you want to delete the content of service instance '#{service_instance}' ?", :add_options => true)
28
30
  end
29
31
 
32
+ DTK::Client::GitRepo.modified?(directory_path || OsUtil.current_dir) unless force
30
33
  post_body = PostBody.new(
31
34
  :service_instance => service_instance,
32
35
  :recursive? => recursive
33
36
  )
34
37
  rest_post("#{BaseRoute}/delete", post_body)
35
38
 
36
- OsUtil.print_info("DTK module '#{service_instance}' has been deleted successfully.")
39
+ OsUtil.print_info("Delete procedure started. For more information use 'dtk task-status'.")
37
40
  end
38
41
  end
39
42
 
@@ -30,7 +30,7 @@ module DTK::Client
30
30
  }
31
31
  ClientModuleDir::GitRepo.pull_from_service_repo(pull_args)
32
32
  end
33
-
33
+ nil
34
34
  end
35
35
  end
36
36
  end
@@ -23,6 +23,8 @@ module DTK::Client
23
23
  module_ref = args.required(:module_ref)
24
24
  remove_existing = args[:remove_existing]
25
25
  service_name = args[:service_name]
26
+ force = args[:force]
27
+ directory_path = args[:directory_path]
26
28
 
27
29
  post_body = PostBody.new(
28
30
  :namespace => module_ref.namespace,
@@ -33,11 +35,12 @@ module DTK::Client
33
35
  :is_target? => args[:is_target]
34
36
  )
35
37
 
38
+ DTK::Client::GitRepo.modified?(directory_path || OsUtil.current_dir) unless force
36
39
  service_name ||= rest_post("#{BaseRoute}/generate_service_name", post_body).data
37
- path = ClientModuleDir.ret_base_path(:service, service_name)
38
-
39
- raise Error::Usage, "Directory '#{path}' is not empty; it must be deleted or removed before retrying the command" if ClientModuleDir.local_dir_exists?(:service, service_name)
40
+ base_path = ClientModuleDir.ret_base_path(:service, service_name)
40
41
 
42
+ raise Error::Usage, "Directory '#{base_path}' is not empty; it must be deleted or removed before retrying the command" if ClientModuleDir.local_dir_exists?(:service, service_name)
43
+
41
44
  post_body.merge!(:service_name => service_name)
42
45
  response = rest_post("#{BaseRoute}/create", post_body)
43
46
 
@@ -22,6 +22,7 @@ module DTK::Client
22
22
  wrap_operation(args) do |args|
23
23
  service_instance = args.required(:service_instance)
24
24
  recursive = args.required(:recursive)
25
+ force = args.required(:force)
25
26
 
26
27
  unless args[:skip_prompt]
27
28
  return false unless Console.prompt_yes_no("Are you sure you want to uninstall the infrastructure associated with '#{service_instance}' and delete this service instance from the server?", :add_options => true)
@@ -29,7 +30,8 @@ module DTK::Client
29
30
 
30
31
  post_body = PostBody.new(
31
32
  :service_instance => service_instance,
32
- :recursive? => recursive
33
+ :recursive? => recursive,
34
+ :force => force
33
35
  )
34
36
  rest_post("#{BaseRoute}/uninstall", post_body)
35
37
 
@@ -25,7 +25,6 @@ module DTK::Client
25
25
  :uninstall,
26
26
  :edit,
27
27
  :pull,
28
- :stage,
29
28
  :converge,
30
29
  :task_status,
31
30
  :list,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dtk-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.1
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Reactor8
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-18 00:00:00.000000000 Z
11
+ date: 2016-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dtk-common-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 0.10.0
19
+ version: 0.10.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 0.10.0
26
+ version: 0.10.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: gli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -98,28 +98,28 @@ dependencies:
98
98
  name: mime-types
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - "~>"
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
103
  version: 2.99.3
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - "~>"
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
110
  version: 2.99.3
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: dtk-dsl
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ~>
116
116
  - !ruby/object:Gem::Version
117
117
  version: 1.0.0
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - "~>"
122
+ - - ~>
123
123
  - !ruby/object:Gem::Version
124
124
  version: 1.0.0
125
125
  description: Command line tool to interact with a DTK Server and DTK Service Catalog.
@@ -129,7 +129,7 @@ executables:
129
129
  extensions: []
130
130
  extra_rdoc_files: []
131
131
  files:
132
- - ".gitignore"
132
+ - .gitignore
133
133
  - Gemfile
134
134
  - README.md
135
135
  - Rakefile
@@ -153,6 +153,7 @@ files:
153
153
  - lib/cli/command/module/list_assemblies.rb
154
154
  - lib/cli/command/module/list_remotes.rb
155
155
  - lib/cli/command/module/push.rb
156
+ - lib/cli/command/module/stage.rb
156
157
  - lib/cli/command/module/uninstall.rb
157
158
  - lib/cli/command/options.rb
158
159
  - lib/cli/command/service.rb
@@ -231,6 +232,7 @@ files:
231
232
  - lib/client/operation/module/list_assemblies.rb
232
233
  - lib/client/operation/module/list_remotes.rb
233
234
  - lib/client/operation/module/push.rb
235
+ - lib/client/operation/module/stage.rb
234
236
  - lib/client/operation/module/uninstall.rb
235
237
  - lib/client/operation/module_service_common.rb
236
238
  - lib/client/operation/service.rb
@@ -320,17 +322,17 @@ require_paths:
320
322
  - lib
321
323
  required_ruby_version: !ruby/object:Gem::Requirement
322
324
  requirements:
323
- - - ">="
325
+ - - '>='
324
326
  - !ruby/object:Gem::Version
325
327
  version: 1.9.3
326
328
  required_rubygems_version: !ruby/object:Gem::Requirement
327
329
  requirements:
328
- - - ">="
330
+ - - '>='
329
331
  - !ruby/object:Gem::Version
330
332
  version: '0'
331
333
  requirements: []
332
334
  rubyforge_project:
333
- rubygems_version: 2.4.1
335
+ rubygems_version: 2.0.14.1
334
336
  signing_key:
335
337
  specification_version: 4
336
338
  summary: DTK CLI client for DTK server interaction.