dtk-client 0.5.10 → 0.5.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZDEyNmM1MGE3NzA2MzQ5OGMyMzhhNDVjZDUxY2JkMmE0MTYxNDFkYQ==
4
+ NTZhMDBlMWM1ZWUzYjFiNWFlNTg2NDJmZTE2MjQ2ZGU4YmFjYmZiMQ==
5
5
  data.tar.gz: !binary |-
6
- MWRiODEwOTRkYjNkZDRhNzI4ZjNmNjVjZmQ3ODQwMmI1Y2VjMTQwNQ==
6
+ NWNkODg5NjU2NWJmN2Q4YzkzNDZmZTE1NzU1OTE5YWExZmJhNzVmZA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MjE1MzUwZTNlZTMzMWY3OTRkMWJhNGJmNDQyZjU2YTM2YjkwYWFhZjczZjRh
10
- ODY2NTVjOTI5M2Y2YzVkYjFhMzlhMmYzMTcwZDZiZmNjZDNmM2VhZWIzZGY3
11
- MzMyYzBlZDM3ZDQxNjVlOGQ4MjYzNmY3ZWEwMmE1OTIxYjkzNDY=
9
+ MzQ0ZmVmYmM0NmY4NmJlMGZiYWFmODY0NWYyOTI5YWFmYmJjZWViZDliNGY5
10
+ YTFlMjRmZTZlZTI0NWI3OTFlNDIyZGNkZmIyYTZlODgyMWZhNGRmZDNlNDZj
11
+ NzRmMzMyYzgzMTllOWMyOTZlZTFhMWJkNGQwM2VhZjI1NmIyZGQ=
12
12
  data.tar.gz: !binary |-
13
- MzQwYzQ0YjhkOTRlNzkyZDJjZDQ1NzY1ZjMxYjc3ZGE5NmEyYTlmMjVmNTlj
14
- NGU3NzMzMWE1ZGE5MTc0ZGMxNDY2MWQ4MTU0MjhkNjZlY2MzOWM3MjQyOWQx
15
- MDYyNjMzNmI4MDlhZTkwYzIwNWQ0MWNmN2VmMzUwMWYzYzYwMDY=
13
+ MTUwYzA1Y2E0NzEwY2Y0ZGZkMDcwNzRkNTVlOWNmZDBkZTkwY2M5NjQ3NzUz
14
+ MWY5ZTEzMmNlOGQ5NGNlY2EwYzg3ZTU3ZjQ2M2ExNTcyNzA0YmZmOGY5ZmIy
15
+ YTkxNzQ0OGVkMTYxZmI3MDZiZmRkYzk1Y2I3YjM5M2M3N2RkYTQ=
data/bin/dtk CHANGED
@@ -9,7 +9,6 @@ require File.expand_path('../lib/parser/adapters/thor', File.dirname(__FILE__
9
9
  require File.expand_path('../lib/shell/context', File.dirname(__FILE__))
10
10
  require File.expand_path('../lib/shell/domain', File.dirname(__FILE__))
11
11
  require File.expand_path('../lib/commands/thor/account', File.dirname(__FILE__))
12
- require File.expand_path('../lib/command_helpers/ssh_processing', File.dirname(__FILE__))
13
12
  require File.expand_path('../lib/shell/parse_monkey_patch', File.dirname(__FILE__))
14
13
  require File.expand_path('../lib/shell/help_monkey_patch', File.dirname(__FILE__))
15
14
 
@@ -18,13 +17,13 @@ require 'shellwords'
18
17
 
19
18
  $: << "/usr/lib/ruby/1.8/" #TODO: put in to get around path problem in rvm 1.9.2 environment
20
19
 
21
- ::DTK::Client::Configurator.check_config_exists
20
+ config_exists = ::DTK::Client::Configurator.check_config_exists
22
21
  ::DTK::Client::Configurator.check_git
23
22
  ::DTK::Client::Configurator.create_missing_clone_dirs
24
23
 
25
24
 
26
25
  # check if .add_direct_access file exists, if not then add direct access and create .add_direct_access file
27
- resolve_direct_access(::DTK::Client::Configurator.check_direct_access)
26
+ resolve_direct_access(::DTK::Client::Configurator.check_direct_access, config_exists)
28
27
  entries = []
29
28
 
30
29
  if ARGV.size > 0
data/bin/dtk-shell CHANGED
@@ -1,15 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
2
  require File.expand_path('../lib/shell', File.dirname(__FILE__))
3
3
  require File.expand_path('../lib/commands/thor/account', File.dirname(__FILE__))
4
- require File.expand_path('../lib/command_helpers/ssh_processing', File.dirname(__FILE__))
5
4
 
6
5
  trap("INT", "SIG_IGN")
7
6
 
8
- ::DTK::Client::Configurator.check_config_exists
7
+ config_exists = ::DTK::Client::Configurator.check_config_exists
9
8
  ::DTK::Client::Configurator.check_git
10
9
  ::DTK::Client::Configurator.create_missing_clone_dirs
11
10
 
12
11
  # check if .add_direct_access file exists, if not then add direct access and create .add_direct_access file
13
- resolve_direct_access(::DTK::Client::Configurator.check_direct_access)
12
+ resolve_direct_access(::DTK::Client::Configurator.check_direct_access, config_exists)
14
13
 
15
14
  run_shell_command()
data/dtk-client.gemspec CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |gem|
29
29
  gem.add_dependency 'hirb','~> 0.7.0'
30
30
  gem.add_dependency 'thor','~> 0.15.4'
31
31
  gem.add_dependency 'erubis','~> 2.7.0'
32
- gem.add_dependency 'dtk-common-core','~> 0.5.4'
32
+ gem.add_dependency 'dtk-common-core','~> 0.5.10'
33
33
  gem.add_dependency 'git','~> 1.2.6'
34
34
  gem.add_dependency 'colorize','~> 0.5.8'
35
35
  gem.add_dependency 'highline', '1.6.16'
data/lib/auxiliary.rb CHANGED
@@ -9,5 +9,37 @@ module DTK
9
9
  command_class.to_s.gsub(/^.*::/, '').gsub(/Command$/,'').scan(/[A-Z][a-z]+/).map{|w|w.downcase}.join(seperator)
10
10
  end
11
11
  end
12
+
13
+ #TODO: probably move this
14
+ class PostBody < Hash
15
+ def initialize(raw={})
16
+ super()
17
+ unless raw.empty?
18
+ replace(convert(raw))
19
+ end
20
+ end
21
+ def merge(raw)
22
+ super(convert(raw))
23
+ end
24
+ def merge!(raw)
25
+ super(convert(raw))
26
+ end
27
+
28
+ private
29
+ def convert(raw)
30
+ raw.inject(Hash.new) do |h,(k,v)|
31
+ if non_null_var = is_only_non_null_var?(k)
32
+ v.nil? ? h : h.merge(non_null_var => v)
33
+ else
34
+ h.merge(k => v)
35
+ end
36
+ end
37
+ end
38
+ def is_only_non_null_var?(k)
39
+ if k.to_s =~ /\?$/
40
+ k.to_s.gsub(/\?$/,'').to_sym
41
+ end
42
+ end
43
+ end
12
44
  end
13
45
  end
@@ -20,11 +20,18 @@ module DTK::Client
20
20
  #
21
21
  def trigger_module_component_import(missing_component_list,opts={})
22
22
  puts "Auto-importing missing component module(s)"
23
+ does_not_exist, modules_to_import = validate_missing_components(missing_component_list)
23
24
 
24
- missing_component_list.each do |m_module|
25
- print "Importing component module '#{m_module['name']}' ... "
25
+ unless does_not_exist.empty?
26
+ module_names = does_not_exist.collect{|x| "#{x['namespace']}/#{x['name']}"}
27
+ OsUtil.print("Component modules '#{module_names}' required by service module does not exist on repo manager and will not be imported!", :yellow)
28
+ return false unless Console.confirmation_prompt("Do you want to continue with import of available component modules and service module"+'?')
29
+ end
30
+
31
+ modules_to_import.each do |m_module|
26
32
  module_name = "#{m_module['namespace']}/#{m_module['name']}"
27
- module_name += "/#{m_module['version']}" if m_module['version']
33
+ module_name += "-#{m_module['version']}" if m_module['version']
34
+ print "Importing component module '#{module_name}' ... "
28
35
  new_context_params = ::DTK::Shell::ContextParams.new([module_name])
29
36
  new_context_params.override_method_argument!('option_2', m_module['version'])
30
37
  new_context_params.forward_options( { "skip_cloning" => true}).merge!(opts)
@@ -37,14 +44,47 @@ module DTK::Client
37
44
  Response::Ok.new()
38
45
  end
39
46
 
47
+ # check if component modules dependencies specified in service module exist on repo manager
48
+ def validate_missing_components(missing_component_list)
49
+ thor_options = {}
50
+ thor_options["remote"] = true
51
+ new_context_params = ::DTK::Shell::ContextParams.new
52
+ new_context_params.forward_options(thor_options)
53
+ new_context_params.add_context_to_params(:"component-module", :"component-module")
54
+ response = ContextRouter.routeTask("component_module", "list", new_context_params, @conn)
55
+ return response unless response.ok?
56
+
57
+ does_not_exist, modules_to_import = [], []
58
+
59
+ missing_component_list.each do |missing_cmp|
60
+ cmp = response.data.select{|x| x['display_name'].eql?("#{missing_cmp['namespace']}/#{missing_cmp['name']}")}
61
+ if cmp.empty?
62
+ does_not_exist << missing_cmp
63
+ else
64
+ cmp = cmp.first
65
+ if remote_version = cmp['versions']
66
+ missing_version = missing_cmp['version']||'CURRENT'
67
+ does_not_exist << missing_cmp unless (remote_version.include?(missing_version))
68
+ else
69
+ does_not_exist << missing_cmp if missing_cmp['version']
70
+ end
71
+ end
72
+ end
73
+
74
+ modules_to_import = missing_component_list - does_not_exist
75
+ return does_not_exist, modules_to_import
76
+ end
77
+
40
78
  def resolve_missing_components(service_module_id, service_module_name, namespace_to_use, force_clone=false)
41
79
  # Get dependency component modules and cross reference them with local component modules
42
80
  module_component_list = post rest_url("service_module/list_component_modules"), { :service_module_id => service_module_id }
43
81
  local_modules, needed_modules = OsUtil.local_component_module_list(), Array.new
44
82
 
45
- module_component_list.data.each do |dependency_module|
46
- unless local_modules.include?(formated_name = formulate_module_name(dependency_module['display_name'], dependency_module['version']))
47
- needed_modules << dependency_module.merge({'formated_name' => formated_name})
83
+ if module_component_list
84
+ module_component_list.data.each do |dependency_module|
85
+ unless local_modules.include?(formated_name = formulate_module_name(dependency_module['display_name'], dependency_module['version']))
86
+ needed_modules << dependency_module.merge({'formated_name' => formated_name})
87
+ end
48
88
  end
49
89
  end
50
90
 
@@ -0,0 +1,52 @@
1
+ module DTK
2
+ module Client
3
+ module ActionResultHandler
4
+
5
+ def print_action_results(action_results_id, number_of_retries=8)
6
+ response = action_results(action_results_id, number_of_retries)
7
+
8
+ if response.ok? && response.data['results']
9
+ response.data['results'].each do |k,v|
10
+ if v['error']
11
+ OsUtil.print("#{v['error']} (#{k})", :red)
12
+ else
13
+ OsUtil.print("#{v['message']} (#{k})", :yellow)
14
+ end
15
+ end
16
+ else
17
+ OsUtil.print("Not able to process given request, we apologise for inconvenience", :red)
18
+ end
19
+
20
+ nil
21
+ end
22
+
23
+ def action_results(action_results_id, number_of_retries=8)
24
+ action_body = {
25
+ :action_results_id => action_results_id,
26
+ :return_only_if_complete => true,
27
+ :disable_post_processing => true
28
+ }
29
+ response = nil
30
+
31
+ number_of_retries.times do
32
+ response = post(rest_url("assembly/get_action_results"),action_body)
33
+
34
+ # server has found an error
35
+ unless response.data(:results).nil?
36
+ if response.data(:results)['error']
37
+ raise DTK::Client::DtkError, response.data(:results)['error']
38
+ end
39
+ end
40
+
41
+ break if response.data(:is_complete)
42
+
43
+ sleep(1.5)
44
+ end
45
+
46
+ response
47
+
48
+ end
49
+
50
+ end
51
+ end
52
+ end
@@ -722,8 +722,8 @@ module DTK::Client
722
722
  end
723
723
 
724
724
  def execute_tests_aux(context_params)
725
- execute_test_tries = 6
726
- execute_test_sleep = 0.5
725
+ execute_test_tries = 10
726
+ execute_test_sleep = 1
727
727
 
728
728
  assembly_or_workspace_id,node_id = context_params.retrieve_arguments([REQ_ASSEMBLY_OR_WS_ID,:node_id],method_argument_names)
729
729
 
@@ -738,13 +738,28 @@ module DTK::Client
738
738
  response = post(rest_url("assembly/info_about"),post_body)
739
739
 
740
740
  components = []
741
-
742
741
  if !response['data'].nil?
743
742
  response['data'].each do |c|
744
743
  components << c['display_name']
745
744
  end
746
745
  end
747
746
 
747
+ #Filter out request per specific component
748
+ #Filter works for two types of component notation provided: node/component and component
749
+ if !options["component"].nil?
750
+ components.reject! do |c|
751
+ if options["component"].include? "/"
752
+ c != options["component"]
753
+ else
754
+ c.split("/").last != options["component"]
755
+ end
756
+ end
757
+ end
758
+
759
+ if components.empty?
760
+ components = nil
761
+ end
762
+
748
763
  post_body = {
749
764
  :assembly_id => assembly_or_workspace_id,
750
765
  :node_id => node_id,
@@ -752,6 +767,7 @@ module DTK::Client
752
767
  }
753
768
 
754
769
  response = post(rest_url("assembly/initiate_execute_tests"),post_body)
770
+ raise DTK::Client::DtkValidationError, response.data(:errors).first if response.data(:errors)
755
771
  return response unless response.ok?
756
772
 
757
773
  action_results_id = response.data(:action_results_id)
@@ -776,16 +792,8 @@ module DTK::Client
776
792
  sleep execute_test_sleep
777
793
  end
778
794
  end
779
- filtered = response.data(:results)
780
-
781
- #Filter out results per specific component
782
- if !options["component"].nil?
783
- filtered.reject! do |element|
784
- element["component_name"] != options["component"]
785
- end
786
- end
787
795
 
788
- response.set_data(*filtered)
796
+ response.set_data(*response.data(:results))
789
797
  response.render_table(:execute_tests_data)
790
798
  end
791
799
 
@@ -1161,6 +1169,7 @@ module DTK::Client
1161
1169
 
1162
1170
  post_body[:about] = about
1163
1171
  response = post rest_url(rest_endpoint), post_body
1172
+
1164
1173
  # set render view to be used
1165
1174
  unless format
1166
1175
  response.render_table(data_type, use_default)
@@ -30,5 +30,22 @@ module DTK::Client
30
30
  end
31
31
  post_body
32
32
  end
33
+
34
+ def get_remote_module_info_aux(module_type,module_id,remote_namespace,version=nil)
35
+ id_field = "#{module_type}_id"
36
+ rsa_pub_value = SSHUtil.rsa_pub_key_content()
37
+
38
+ post_body = {
39
+ id_field => module_id,
40
+ :rsa_pub_key => rsa_pub_value,
41
+ :access_rights => "rw",
42
+ :action => "push"
43
+ }
44
+ post_body.merge!(:version => version) if version
45
+ post_body.merge!(:remote_namespace => remote_namespace) if remote_namespace
46
+
47
+ post(rest_url("#{module_type}/get_remote_module_info"),post_body)
48
+ end
49
+
33
50
  end
34
51
  end
@@ -2,7 +2,7 @@ module DTK::Client
2
2
  module ListDiffsMixin
3
3
  def list_diffs_aux(module_type,module_id,remote,version=nil)
4
4
  id_field = "#{module_type}_id"
5
- path_to_key = SshProcessing.default_rsa_pub_key_path()
5
+ path_to_key = SSHUtil.default_rsa_pub_key_path()
6
6
  rsa_pub_key = File.file?(path_to_key) && File.open(path_to_key){|f|f.read}.chomp
7
7
 
8
8
  post_body = {
@@ -1,39 +1,20 @@
1
1
  module DTK::Client
2
2
  module PullFromRemoteMixin
3
-
4
- ##
5
- #
6
- # module_type: will be :component_module or :service_module
7
- def import_module_component_dependencies(module_id)
8
- post_body = {
9
- :service_module_id => module_id
10
- }
11
- response = post(rest_url("service_module/resolve_pull_from_remote"),post_body)
12
-
13
- print "Resolving dependencies please wait ... "
14
-
15
- if (response.ok? && !(missing_components = response.data(:missing_modules)).empty?)
16
- puts " New dependencies found, Installing."
17
-
18
- trigger_module_component_import(missing_components)
19
- puts "Resuming pull from remote ..."
20
- else
21
- puts 'Done.'
22
- end
23
- end
24
-
25
- def pull_from_remote_aux(module_type,module_id,version=nil)
3
+ def pull_from_remote_aux(module_type,module_id,opts={})
4
+ version = opts[:version]
5
+ remote_namespace = opts[:remote_namespace]
26
6
  #get remote module info, errors raised if remote is not linked or access errors
27
- path_to_key = SshProcessing.default_rsa_pub_key_path()
7
+ path_to_key = SSHUtil.default_rsa_pub_key_path()
28
8
  rsa_pub_key = File.file?(path_to_key) && File.open(path_to_key){|f|f.read}.chomp
29
9
 
30
- post_body = {
10
+ post_body = PostBody.new(
31
11
  PullFromRemote.id_field(module_type) => module_id,
32
12
  :access_rights => "r",
33
- :action => "pull"
34
- }
35
- post_body.merge!(:version => version) if version
36
- post_body.merge!(:rsa_pub_key => rsa_pub_key) if rsa_pub_key
13
+ :action => "pull",
14
+ :version? => version,
15
+ :remote_namespace? => remote_namespace,
16
+ :rsa_pub_key? => rsa_pub_key
17
+ )
37
18
  response = post(rest_url("#{module_type}/get_remote_module_info"),post_body)
38
19
  return response unless response.ok?
39
20
  module_name = response.data(:module_name)
@@ -41,8 +22,9 @@ module DTK::Client
41
22
  remote_params.merge!(:version => version) if version
42
23
 
43
24
  #check and import component module dependencies before importing service itself
44
- import_module_component_dependencies(module_id) if (module_type == :service_module)
45
-
25
+ if (module_type == :service_module)
26
+ import_module_component_dependencies(module_id,remote_namespace)
27
+ end
46
28
  # check whether a local module exists to determine whether pull from local clone or try to pull from server
47
29
  if Helper(:git_repo).local_clone_exists?(module_type,module_name,version)
48
30
  unless rsa_pub_key
@@ -53,14 +35,37 @@ module DTK::Client
53
35
  PullFromRemote.perform_on_server(self,module_type,module_id,module_name,remote_params)
54
36
  end
55
37
  end
38
+
56
39
  private
40
+
41
+ ##
42
+ #
43
+ # module_type: will be :component_module or :service_module
44
+ def import_module_component_dependencies(module_id,remote_namespace=nil)
45
+ post_body = PostBody.new(
46
+ :service_module_id => module_id,
47
+ :remote_namespace? => remote_namespace
48
+ )
49
+ response = post(rest_url("service_module/resolve_pull_from_remote"),post_body)
50
+
51
+ print "Resolving dependencies please wait ... "
52
+
53
+ if (response.ok? && !(missing_components = response.data(:missing_modules)).empty?)
54
+ puts " New dependencies found, Installing."
55
+
56
+ trigger_module_component_import(missing_components)
57
+ puts "Resuming pull from remote ..."
58
+ else
59
+ puts 'Done.'
60
+ end
61
+ end
62
+
57
63
  module PullFromRemote
58
64
  extend CommandBase
59
65
  def self.perform_locally(cmd_obj,module_type,module_id,module_name,remote_params)
60
66
  opts = remote_params
61
67
  response = cmd_obj.Helper(:git_repo).pull_changes(module_type,module_name,opts)
62
68
  # return response unless response.ok?
63
-
64
69
  if response.data[:diffs].empty?
65
70
  raise DtkError, "No changes to pull from remote"
66
71
  end
@@ -77,6 +82,8 @@ module DTK::Client
77
82
  end
78
83
 
79
84
  def self.perform_on_server(cmd_obj,module_type,module_id,module_name,remote_params)
85
+ #TODO: this does not handle different namespaces; so suggesting workaround for now
86
+ raise DtkError, "Module must be cloned to perform this operation; execute 'clone' command and then retry."
80
87
  post_body = {
81
88
  id_field(module_type) => module_id,
82
89
  :remote_repo => remote_params[:remote_repo],
@@ -1,37 +1,39 @@
1
+ dtk_require_common_commands('thor/common')
1
2
  module DTK::Client
2
3
  module PushToRemoteMixin
3
4
 
4
5
  ##
5
6
  #
6
7
  # module_type: will be :component_module or :service_module
8
+ # def push_to_remote_aux(module_type,module_id, module_name,remote_namespace,version=nil)
9
+ def push_to_remote_aux(remote_module_info, module_type)
10
+ # commented out, because we perform this check before calling 'push_to_remote_aux' from service-module/component-module
11
+ # id_field = "#{module_type}_id"
7
12
 
8
- def push_to_remote_aux(module_type,module_id, module_name,remote_namespace,version=nil)
9
- id_field = "#{module_type}_id"
13
+ # rsa_pub_value = SSHUtil.rsa_pub_key_content()
10
14
 
11
- rsa_pub_value = SshProcessing.rsa_pub_key_content()
15
+ # post_body = {
16
+ # id_field => module_id,
17
+ # :rsa_pub_key => rsa_pub_value,
18
+ # :access_rights => "rw",
19
+ # :action => "push"
20
+ # }
21
+ # post_body.merge!(:version => version) if version
22
+ # post_body.merge!(:remote_namespace => remote_namespace) if remote_namespace
12
23
 
13
- post_body = {
14
- id_field => module_id,
15
- :rsa_pub_key => rsa_pub_value,
16
- :access_rights => "rw",
17
- :action => "push"
18
- }
19
- post_body.merge!(:version => version) if version
20
- post_body.merge!(:remote_namespace => remote_namespace) if remote_namespace
21
- response = post(rest_url("#{module_type}/get_remote_module_info"),post_body)
24
+ # response = post(rest_url("#{module_type}/get_remote_module_info"),post_body)
25
+ # return response unless response.ok?
22
26
 
23
- return response unless response.ok?
27
+ returned_module_name = remote_module_info.data(:module_name)
28
+ version = remote_module_info.data(:version)
24
29
 
25
- returned_module_name = response.data(:module_name)
26
30
  opts = {
27
- :remote_repo_url => response.data(:remote_repo_url),
28
- :remote_repo => response.data(:remote_repo),
29
- :remote_branch => response.data(:remote_branch),
30
- :local_branch => response.data(:workspace_branch)
31
+ :remote_repo_url => remote_module_info.data(:remote_repo_url),
32
+ :remote_repo => remote_module_info.data(:remote_repo),
33
+ :remote_branch => remote_module_info.data(:remote_branch),
34
+ :local_branch => remote_module_info.data(:workspace_branch)
31
35
  }
32
36
 
33
- version = response.data(:version)
34
-
35
37
  response = Helper(:git_repo).push_changes(module_type,returned_module_name,version,opts)
36
38
  return response unless response.ok?
37
39
  if response.data(:diffs).empty?
@@ -1,4 +1,3 @@
1
- dtk_require_from_base('command_helpers/ssh_processing')
2
1
  dtk_require_from_base("dtk_logger")
3
2
  dtk_require_from_base("util/os_util")
4
3
  dtk_require_from_base('configurator')
@@ -10,15 +9,6 @@ module DTK::Client
10
9
  KEY_EXISTS_ALREADY_CONTENT = 'key exists already'
11
10
 
12
11
  no_tasks do
13
- def self.is_ssh_key_valid(path_to_key, rsa_pub_key)
14
- unless path_to_key.include?(".pub")
15
- raise DtkError, "[ERROR] Invalid public key file path (#{path_to_key}). Please provide valid path and try again."
16
- end
17
-
18
- if(rsa_pub_key.empty? || !rsa_pub_key.include?("AAAAB3NzaC1yc2EA"))
19
- raise DtkError, "[ERROR] SSH public key (#{path_to_key}) does not have valid content. Please check your key and try again."
20
- end
21
- end
22
12
 
23
13
  def password_prompt(message, add_options=true)
24
14
  begin
@@ -51,8 +41,7 @@ module DTK::Client
51
41
  raise DtkError,"[ERROR] No ssh key file found at (#{path_to_key}). Path is wrong or it is necessary to generate the public rsa key (e.g., run `ssh-keygen -t rsa`)."
52
42
  end
53
43
 
54
- rsa_pub_key = File.open(path_to_key){|f|f.read}
55
- is_ssh_key_valid(path_to_key, rsa_pub_key)
44
+ rsa_pub_key = SSHUtil.read_and_validate_pub_key(path_to_key)
56
45
 
57
46
  post_body = { :rsa_pub_key => rsa_pub_key.chomp }
58
47
  post_body.merge!(:username => name.chomp) if name
@@ -67,9 +56,11 @@ module DTK::Client
67
56
 
68
57
  if response && !match
69
58
  repo_manager_fingerprint,repo_manager_dns = response.data_ret_and_remove!(:repo_manager_fingerprint,:repo_manager_dns)
70
- SshProcessing.update_ssh_known_hosts(repo_manager_dns,repo_manager_fingerprint)
59
+
60
+ SSHUtil.update_ssh_known_hosts(repo_manager_dns,repo_manager_fingerprint)
71
61
  name ||= response.data["new_username"]
72
62
  OsUtil.print("SSH key '#{name}' added successfully!", :yellow)
63
+
73
64
  end
74
65
 
75
66
  return response, match, matched_username
@@ -124,7 +115,7 @@ module DTK::Client
124
115
  desc "add-ssh-key KEYPAIR-NAME [PATH-TO-RSA-PUB-KEY]","Adds a named ssh key to your user account to access modules from the catalog. Optional parameters is path to a ssh rsa public key and default is <user-home-dir>/.ssh/id_rsa.pub"
125
116
  def add_ssh_key(context_params)
126
117
  name, path_to_key = context_params.retrieve_arguments([:option_1!, :option_2],method_argument_names)
127
- path_to_key ||= SshProcessing.default_rsa_pub_key_path()
118
+ path_to_key ||= SSHUtil.default_rsa_pub_key_path()
128
119
 
129
120
  response, matched, matched_username = Account.add_key(path_to_key, name)
130
121
 
@@ -136,7 +127,7 @@ module DTK::Client
136
127
  DTK::Client::Configurator.add_current_user_to_direct_access() if response.ok?
137
128
  end
138
129
 
139
- response
130
+ nil
140
131
  end
141
132
 
142
133
  desc "delete-ssh-key KEYPAIR-NAME ","Deletes the named ssh key from your user account"
@@ -148,7 +139,7 @@ module DTK::Client
148
139
  return response unless response.ok?
149
140
 
150
141
  OsUtil.print("Ssh key '#{name}' removed successfully!", :yellow)
151
- response
142
+ nil
152
143
  end
153
144
 
154
145
 
@@ -177,7 +168,7 @@ module DTK::Client
177
168
  # # if either of request passed we will add to known hosts
178
169
  # if proper_response
179
170
  # repo_manager_fingerprint,repo_manager_dns = proper_response.data_ret_and_remove!(:repo_manager_fingerprint,:repo_manager_dns)
180
- # SshProcessing.update_ssh_known_hosts(repo_manager_dns,repo_manager_fingerprint)
171
+ # SSHUtil.update_ssh_known_hosts(repo_manager_dns,repo_manager_fingerprint)
181
172
  # return proper_response
182
173
  # else
183
174
  # nil
@@ -188,7 +179,7 @@ module DTK::Client
188
179
  # def add_direct_access(context_params)
189
180
  # return
190
181
  # path_to_key = context_params.retrieve_arguments([:option_1],method_argument_names)
191
- # path_to_key ||= SshProcessing.default_rsa_pub_key_path()
182
+ # path_to_key ||= SSHUtil.default_rsa_pub_key_path()
192
183
  # access_granted = Account.add_access(path_to_key)
193
184
 
194
185
  # FileUtils.touch(DTK::Client::Configurator::DIRECT_ACCESS) if access_granted
@@ -198,7 +189,7 @@ module DTK::Client
198
189
  # desc "remove-direct-access [PATH-TO-RSA-PUB-KEY]","Removes direct access to modules. Optional paramaeters is path to a ssh rsa public key and default is <user-home-dir>/.ssh/id_rsa.pub"
199
190
  # def remove_direct_access(context_params)
200
191
  # path_to_key = context_params.retrieve_arguments([:option_1],method_argument_names)
201
- # path_to_key ||= SshProcessing.default_rsa_pub_key_path()
192
+ # path_to_key ||= SSHUtil.default_rsa_pub_key_path()
202
193
 
203
194
  # # path_to_key ||= "#{ENV['HOME']}/.ssh/id_rsa.pub" #TODO: very brittle
204
195
  # unless File.file?(path_to_key)
@@ -2,7 +2,8 @@ module DTK::Client
2
2
  class Component < CommandBaseThor
3
3
 
4
4
  def self.valid_children()
5
- [:attribute]
5
+ # [:attribute]
6
+ []
6
7
  end
7
8
 
8
9
  def self.valid_child?(name_of_sub_context)