dtk-client 0.7.2.1 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 36866fedf15d78bce59f29a9b8b14bb3521ad724
4
- data.tar.gz: 5b6279a70d1e584ffadce4bf6cf966af16b88240
3
+ metadata.gz: 0f5b684856babcaa9d925ad089f311461b8ea4c6
4
+ data.tar.gz: 952f5d25a660b8c17936cdc20ef80d1cd1c13ec7
5
5
  SHA512:
6
- metadata.gz: 80cd07ca2c793d1f6e5203c4d53d19dc41459e6cff72db3a1a46e654ba2c45063f05a20117cab3ff8545d45bb46f2b20eb1b09e2a02973cb35fd0553419055f3
7
- data.tar.gz: 6b458944a0025ed1873464a2e2c517296c0409aa8a8db864ca60fbb32f3598bc79aedbd3bccac40704734bb248f714abb76791bde50c2f21a6ff662334f73aca
6
+ metadata.gz: 12d06bf9def6875592c3bbf2daf4c31c175d426875672854d4c1c4d8ad25bb14b2f0db998e45cd4c906ef24ad96352b76d1daeb769bde35bcb637bd0acdf1840
7
+ data.tar.gz: 6dfd454ecc21eeba533d4ccb1ac130dfa9d7235055f133551bd320ff5d24366ad3f197da1b3a3eab572745bf11ba4352a36c63ae6f9e3653b5f645a4cea14467
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'http://rubygems.org'
1
+ source 'https://rubygems.org'
2
2
 
3
3
  # dependcies are defined in gemspec file since to avoid duplication
4
4
  # gemspec :name => 'dtk-client'
data/dtk-client.gemspec CHANGED
@@ -29,8 +29,8 @@ 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.7.1'
33
- gem.add_dependency 'git','~> 1.2.6'
32
+ gem.add_dependency 'dtk-common-core','0.7.2'
33
+ gem.add_dependency 'git','1.2.8'
34
34
  gem.add_dependency 'colorize','~> 0.5.8'
35
35
  gem.add_dependency 'highline', '1.6.16'
36
36
  gem.add_dependency 'awesome_print', '1.1.0'
@@ -9,7 +9,7 @@ module DTK; module Client; class CommandHelper
9
9
  class GitRepo < self; class << self
10
10
 
11
11
  def create(repo_dir,branch=nil,opts={})
12
- GitAdapter.new(repo_dir,branch)
12
+ GitAdapter.new(repo_dir, branch)
13
13
  end
14
14
 
15
15
  def create_clone_from_optional_branch(type, module_name, repo_url, opts={})
@@ -18,6 +18,7 @@ module DTK; module Client; class CommandHelper
18
18
  namespace = opts[:namespace]
19
19
  create_clone_with_branch(type,module_name,repo_url,branch,version,namespace,{:track_remote_branch => true}.merge(opts))
20
20
  end
21
+
21
22
  # TODO: should we deprecate below for above, subsituting the body of below for above ?
22
23
  def create_clone_with_branch(type, module_name, repo_url, branch=nil, version=nil, module_namespace=nil, opts={})
23
24
  Response.wrap_helper_actions do
@@ -40,7 +41,7 @@ module DTK; module Client; class CommandHelper
40
41
 
41
42
  begin
42
43
  opts_clone = (opts[:track_remote_branch] ? {:track_remote_branch => true} : {})
43
- GitAdapter.clone(repo_url, target_repo_dir, branch,opts_clone)
44
+ GitAdapter.clone(repo_url, target_repo_dir, branch, opts_clone)
44
45
  rescue => e
45
46
  # Handling Git error messages with more user friendly messages
46
47
  e = GitErrorHandler.handle(e)
@@ -73,12 +74,13 @@ module DTK; module Client; class CommandHelper
73
74
  # :remote_branch
74
75
  # :remote_repo_url
75
76
  # :local_branch
77
+ # :override_repo_dir_location
76
78
  # :no_fetch
77
79
  #
78
80
  def push_changes(type, full_module_name, version, opts={})
79
81
  Response.wrap_helper_actions() do
80
- repo_dir = local_repo_dir(type, full_module_name, version, opts)
81
- repo = create(repo_dir,opts[:local_branch])
82
+ repo_dir = opts[:override_repo_dir_location] ? opts[:override_repo_dir_location] : local_repo_dir(type, full_module_name, version, opts)
83
+ repo = create(repo_dir, opts[:local_branch])
82
84
  push_repo_changes_aux(repo, opts)
83
85
  end
84
86
  end
@@ -128,6 +130,16 @@ module DTK; module Client; class CommandHelper
128
130
  end
129
131
  end
130
132
 
133
+ def hard_reset_branch_to_sha(type, module_name, opts={})
134
+ Response.wrap_helper_actions() do
135
+ full_module_name = full_module_name(module_name,opts)
136
+ repo_dir = local_repo_dir(type, full_module_name, opts[:version], opts)
137
+ repo = create(repo_dir, opts[:local_branch])
138
+ current_branch_sha = opts[:current_branch_sha]
139
+ repo.reset_hard(current_branch_sha)
140
+ end
141
+ end
142
+
131
143
  # opts can have the following keys
132
144
  #
133
145
  # :version
@@ -135,7 +147,7 @@ module DTK; module Client; class CommandHelper
135
147
  # :namespace
136
148
  def local_clone_dir_exists?(type,module_name,opts={})
137
149
  full_module_name = full_module_name(module_name,opts)
138
- ret = local_repo_dir(type,full_module_name,opts[:version])
150
+ ret = local_repo_dir(type, full_module_name, opts[:version], opts)
139
151
  File.directory?(ret) && ret
140
152
  end
141
153
 
@@ -436,10 +448,14 @@ module DTK; module Client; class CommandHelper
436
448
 
437
449
  def pull_repo_changes_aux(repo,opts={})
438
450
  diffs = DiffSummary.new()
451
+ hard_reset = opts[:hard_reset] || opts[:force]
452
+
453
+ # default commit in case it is needed
454
+ repo.stage_and_commit("Commit prior to pull from remote") if repo.changed?
439
455
 
440
456
  if commit_sha = opts[:commit_sha]
441
457
  #no op if at commit_sha
442
- return diffs if commit_sha == repo.head_commit_sha()
458
+ return diffs if (commit_sha == repo.head_commit_sha()) && !hard_reset
443
459
  end
444
460
 
445
461
  if opts[:remote_repo] and opts[:remote_repo_url]
@@ -447,24 +463,21 @@ module DTK; module Client; class CommandHelper
447
463
  end
448
464
 
449
465
  repo.fetch(remote(opts[:remote_repo]))
450
-
451
466
  local_branch = repo.local_branch_name
452
467
  remote_branch_ref = remote_branch_ref(local_branch,opts)
453
468
 
454
- if opts[:hard_reset]
469
+ if hard_reset
455
470
  diffs = DiffSummary.diff(repo,local_branch, remote_branch_ref)
456
471
  repo.merge_theirs(remote_branch_ref)
457
472
  return({:diffs => diffs, :commit_sha => repo.head_commit_sha()})
458
473
  end
459
474
 
460
- # default commit in case it is needed
461
- repo.stage_and_commit("Commit prior to pull from remote") if repo.changed?
462
-
463
475
  #check if merge needed
464
476
  merge_rel = repo.merge_relationship(:remote_branch,remote_branch_ref)
465
477
  if merge_rel == :equal
466
478
  { :diffs => diffs, :commit_sha => repo.head_commit_sha() }
467
479
  elsif [:branchpoint,:local_ahead].include?(merge_rel)
480
+ raise ErrorUsage.new("Unable to do fast-forward merge. You can use --force but all changes in the service instance will be lost") unless opts[:force]
468
481
  # TODO: right now just wiping out what is in repo
469
482
  diffs = DiffSummary.diff(repo,local_branch, remote_branch_ref)
470
483
  repo.merge_theirs(remote_branch_ref)
@@ -494,6 +507,7 @@ module DTK; module Client; class CommandHelper
494
507
  def remote(remote_repo=nil)
495
508
  remote_repo||"origin"
496
509
  end
510
+
497
511
  def remote_branch_ref(local_branch,opts={})
498
512
  "#{remote(opts[:remote_repo])}/#{opts[:remote_branch]||opts[:local_branch]||local_branch}"
499
513
  end
@@ -514,7 +528,7 @@ module DTK; module Client; class CommandHelper
514
528
  end
515
529
 
516
530
  def local_repo_dir(type,full_module_name,version=nil,opts={})
517
- OsUtil.module_location(type,full_module_name,version,opts)
531
+ OsUtil.module_location(type, full_module_name, version, opts)
518
532
  end
519
533
 
520
534
  def backup_dir(type, full_module_name, opts={})
@@ -173,6 +173,7 @@ module DTK::Client
173
173
  edit_opts = {
174
174
  :automatically_clone => true,
175
175
  :pull_if_needed => false,
176
+ :service_instance_module => true,
176
177
  :assembly_module => {
177
178
  :assembly_name => assembly_name,
178
179
  :version => version
@@ -280,6 +281,60 @@ module DTK::Client
280
281
  Response::Ok.new()
281
282
  end
282
283
 
284
+ def pull_base_component_module_aux(context_params)
285
+ assembly_or_workspace_id, component_module_name = context_params.retrieve_arguments([REQ_ASSEMBLY_OR_WS_ID,:option_1!],method_argument_names)
286
+ post_body = {
287
+ :assembly_id => assembly_or_workspace_id,
288
+ :module_name => component_module_name,
289
+ :module_type => 'component_module'
290
+ }
291
+ post_body.merge!(:force => true) if options.force?
292
+ response = post(rest_url("assembly/get_component_module_info"),post_body)
293
+ return response unless response.ok?
294
+
295
+ if dsl_parsing_errors = response.data(:dsl_parsing_errors)
296
+ error_message = "Module '#{component_module_name}' parsing errors found:\n#{dsl_parsing_errors}\nYou can fix errors using 'edit' command from module context and invoke promote-module-updates again.\n"
297
+ OsUtil.print(error_message, :red)
298
+ return Response::Error.new()
299
+ end
300
+
301
+ assembly_name, module_id, module_name, version, base_module_branch, branch_head_sha, local_branch, namespace, repo_url, current_branch_sha = response.data(:assembly_name, :module_id, :full_module_name, :version, :workspace_branch, :branch_head_sha, :local_branch, :module_namespace, :repo_url, :current_branch_sha)
302
+ edit_opts = {
303
+ :assembly_module => {
304
+ :assembly_name => assembly_name,
305
+ :version => version
306
+ },
307
+ :workspace_branch_info => {
308
+ :repo_url => repo_url,
309
+ :branch => local_branch,
310
+ :module_name => module_name,
311
+ :commit_sha => branch_head_sha
312
+ },
313
+ :remote_branch => base_module_branch,
314
+ :commit_sha => branch_head_sha,
315
+ :current_branch_sha => current_branch_sha,
316
+ :full_module_name => module_name
317
+ }
318
+ opts = {:local_branch => local_branch, :namespace => namespace}
319
+
320
+ opts.merge!(:hard_reset => true) if options.revert?
321
+ opts.merge!(:force => true) if options.force?
322
+
323
+ response = Helper(:git_repo).pull_changes?(:component_module, module_name, edit_opts.merge!(opts))
324
+ return response unless response.ok?()
325
+
326
+ edit_opts.merge!(:force_parse => true, :update_from_includes => true, :print_dependencies => true)
327
+ response = push_clone_changes_aux(:component_module, module_id, nil, "Pull base module updates", true, edit_opts)
328
+
329
+ unless response.ok?()
330
+ # if parsing error on assembly module (components/attributes/link_defs integrity violations) do git reset --hard
331
+ Helper(:git_repo).hard_reset_branch_to_sha(:component_module, module_name, edit_opts)
332
+ return response
333
+ end
334
+
335
+ Response::Ok.new()
336
+ end
337
+
283
338
  def workflow_info_aux(context_params)
284
339
  assembly_or_workspace_id = context_params.retrieve_arguments([REQ_ASSEMBLY_OR_WS_ID],method_argument_names)
285
340
  post_body = {
@@ -0,0 +1,32 @@
1
+ module DTK::Client
2
+ module Commands
3
+ module Common
4
+ class Base
5
+ def initialize(command_base,context_params)
6
+ @command_base = command_base
7
+ @context_params = context_params
8
+ end
9
+ private
10
+ def retrieve_arguments(mapping)
11
+ @context_params.retrieve_arguments(mapping,@command_base.method_argument_names())
12
+ end
13
+
14
+ def retrieve_option_hash(option_list)
15
+ ret = Hash.new
16
+ option_values = @context_params.retrieve_thor_options(option_list,@command_base.options)
17
+ option_values.each_with_index do |val,i|
18
+ unless val.nil?
19
+ key = option_list[i].to_s.gsub(/\!$/,'').to_sym
20
+ ret.merge!(key => val)
21
+ end
22
+ end
23
+ ret
24
+ end
25
+
26
+ def post(url_path,body=nil)
27
+ @command_base.post(@command_base.rest_url(url_path),body)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,50 @@
1
+ dtk_require('common_base')
2
+ module DTK; module Client; module Commands::Common
3
+ class CreateTarget < Base
4
+ # option_list is of form [:provider!, :region, :keypair, :security_group!] indcating what is optional and what is required
5
+ def execute(type,option_list)
6
+ # we use :target_id but that will return provider_id (another name for target template ID)
7
+ target_name = retrieve_arguments([:option_1])
8
+ iaas_properties = iaas_properties(type,option_list)
9
+ provider = iaas_properties.delete(:provider)
10
+ post_body = {
11
+ :type => type.to_s,
12
+ :provider_id => provider,
13
+ :iaas_properties => iaas_properties
14
+ }
15
+ post_body.merge!(:target_name => target_name) if target_name
16
+ post 'target/create', post_body
17
+ end
18
+
19
+ private
20
+ def iaas_properties(type,option_list)
21
+ iaas_properties = retrieve_option_hash(option_list)
22
+ special_processing_security_groups!(iaas_properties)
23
+ special_processing_region!(iaas_properties)
24
+ iaas_properties
25
+ end
26
+
27
+ def special_processing_region!(iaas_properties)
28
+ if region = iaas_properties[:region]
29
+ Shell::InteractiveWizard.validate_region(region)
30
+ end
31
+ iaas_properties
32
+ end
33
+
34
+ def special_processing_security_groups!(iaas_properties)
35
+ if security_group = iaas_properties[:security_group]
36
+ if security_group.end_with?(',')
37
+ raise DtkValidationError.new("Multiple security groups should be separated with ',' and without spaces between them (e.g. --security_groups gr1,gr2,gr3,...) ")
38
+ end
39
+ security_groups = security_group.split(',')
40
+
41
+ unless security_groups.empty? || security_groups.size==1
42
+ iaas_properties.delete(:security_group)
43
+ iaas_properties.merge!(:security_group_set => security_groups)
44
+ end
45
+ end
46
+ iaas_properties
47
+ end
48
+
49
+ end
50
+ end; end; end
@@ -82,7 +82,7 @@ module DTK::Client
82
82
  else
83
83
  "Would you like to commit ALL the changes?"
84
84
  end
85
- confirmed_ok = Console.confirmation_prompt(confirm_msg)
85
+ confirmed_ok = Console.confirmation_prompt_simple(confirm_msg)
86
86
  end
87
87
  if (auto_commit || confirmed_ok)
88
88
  if auto_commit
@@ -59,7 +59,7 @@ module DTK::Client
59
59
  print_external_dependencies(external_dependencies, 'in the git repo')
60
60
  end
61
61
 
62
- Response::Ok.new()
62
+ OsUtil.print("Successfully installed #{ModuleUtil.module_name(module_type)} '#{ModuleUtil.join_name(@module_name, @module_namespace)}' from git.", :green)
63
63
  end
64
64
 
65
65
  def from_file()
@@ -36,9 +36,9 @@ module DTK::Client
36
36
  inconsistent = external_dependencies["inconsistent"]||[]
37
37
  possibly_missing = external_dependencies["possibly_missing"]||[]
38
38
 
39
- OsUtil.print("There are inconsistent module dependencies mentioned in #{location}: #{inconsistent.join(', ')}", :red) unless inconsistent.empty?
40
- OsUtil.print("There are missing module dependencies mentioned in #{location}: #{possibly_missing.join(', ')}", :yellow) unless possibly_missing.empty?
41
- OsUtil.print("There are ambiguous module dependencies mentioned in #{location}: '#{amb_sorted.join(', ')}'. One of the namespaces should be selected by editing the module_refs file", :yellow) if ambiguous && !ambiguous.empty?
39
+ OsUtil.print("There are inconsistent module dependencies mentioned #{location}: #{inconsistent.join(', ')}", :red) unless inconsistent.empty?
40
+ OsUtil.print("There are missing module dependencies mentioned #{location}: #{possibly_missing.join(', ')}", :yellow) unless possibly_missing.empty?
41
+ OsUtil.print("There are ambiguous module dependencies mentioned #{location}: '#{amb_sorted.join(', ')}'. One of the namespaces should be selected by editing the module_refs file", :yellow) if ambiguous && !ambiguous.empty?
42
42
  end
43
43
 
44
44
  private
@@ -222,6 +222,7 @@ module DTK::Client
222
222
  end
223
223
 
224
224
  def import_git_module_aux(context_params)
225
+ OsUtil.print('Retrieving git module data, please wait ...')
225
226
  CommonModule::Import.new(self, context_params).from_git()
226
227
  end
227
228
 
@@ -348,7 +349,7 @@ module DTK::Client
348
349
  module_id, module_name = context_params.retrieve_arguments([REQ_MODULE_ID,REQ_MODULE_NAME,:option_1],method_argument_names)
349
350
 
350
351
  catalog = 'dtkn'
351
- version = options["version"]
352
+ version = options.version
352
353
  module_type = get_module_type(context_params)
353
354
  skip_recursive_pull = context_params.get_forwarded_options()[:skip_recursive_pull]
354
355
 
@@ -358,7 +359,12 @@ module DTK::Client
358
359
 
359
360
  if catalog.to_s.eql?("dtkn")
360
361
  clone_aux(module_type.to_sym, module_id, version, true, true) unless File.directory?(module_location)
361
- opts = {:version => version, :remote_namespace => options.namespace, :skip_recursive_pull => skip_recursive_pull}
362
+ opts = {
363
+ :force => options.force?,
364
+ :version => version,
365
+ :remote_namespace => options.namespace,
366
+ :skip_recursive_pull => skip_recursive_pull
367
+ }
362
368
 
363
369
  response = pull_from_remote_aux(module_type.to_sym, module_id, opts)
364
370
  return response unless response.ok?
@@ -469,13 +475,22 @@ module DTK::Client
469
475
  return response unless response.ok?
470
476
  end
471
477
 
472
-
473
- OsUtil.print("Pushing local content to remote #{target_remote['repo_url']} ... ", :yellow)
474
- push_to_git_remote_aux(module_name, module_type.to_sym, version, {
475
- :remote_repo_url => target_remote['repo_url'],
476
- :remote_branch => 'master',
477
- :remote_repo => "#{target_remote['display_name']}--remote"
478
- }, options.force?)
478
+ if target_remote['base_git_location']
479
+ OsUtil.print("Pushing local content to remote #{target_remote['base_git_url']} in folder #{target_remote['base_git_location']} ...")
480
+ return push_to_git_remote_location_aux(module_name, module_type.to_sym, version, {
481
+ :remote_repo_url => target_remote['base_git_url'],
482
+ :remote_repo_location => target_remote['base_git_location'],
483
+ :remote_branch => 'master',
484
+ :remote_repo => "#{target_remote['display_name']}--remote"
485
+ }, options.force?)
486
+ else
487
+ OsUtil.print("Pushing local content to remote #{target_remote['repo_url']} ... ", :yellow)
488
+ return push_to_git_remote_aux(module_name, module_type.to_sym, version, {
489
+ :remote_repo_url => target_remote['repo_url'],
490
+ :remote_branch => 'master',
491
+ :remote_repo => "#{target_remote['display_name']}--remote"
492
+ }, options.force?)
493
+ end
479
494
  end
480
495
 
481
496
  def push_dtkn_module_aux(context_params, internal_trigger=false)
@@ -616,6 +631,15 @@ module DTK::Client
616
631
 
617
632
  module_name = context_params.retrieve_arguments(["#{module_type}_name".to_sym],method_argument_names)
618
633
  namespace, name = get_namespace_and_name(module_name,':')
634
+
635
+ module_location = OsUtil.module_location(module_type, module_name, nil)
636
+ unless File.directory?(module_location)
637
+ if Console.confirmation_prompt("Module '#{module_name}' has not been cloned. Would you like to clone module now"+'?')
638
+ response = clone_aux(module_type.to_sym, module_id, nil, true)
639
+ return response unless response.ok?
640
+ end
641
+ end
642
+
619
643
  response = Helper(:git_repo).cp_r_to_new_namespace(module_type, name, namespace, fork_namespace)
620
644
  return response unless response.ok?
621
645
 
@@ -623,7 +647,7 @@ module DTK::Client
623
647
  new_context_params.add_context_to_params(module_type, module_type)
624
648
  new_context_params.method_arguments = ["#{fork_namespace}:#{name}"]
625
649
 
626
- create_response = CommonModule::Import.new(self, new_context_params).from_file()
650
+ create_response = DTK::Client::ContextRouter.routeTask(module_type, "import", new_context_params, @conn)
627
651
  unless create_response.ok?
628
652
  FileUtils.rm_rf("#{response['data']['module_directory']}")
629
653
  return create_response
@@ -28,13 +28,13 @@ module DTK::Client
28
28
  end
29
29
 
30
30
  # check whether a local module exists to determine whether pull from local clone or try to pull from server
31
- OsUtil.print("Pulling changes to remote: #{remote_params[:remote_repo]} @ #{remote_params[:remote_repo_url]}")
31
+ OsUtil.print("Pulling changes from remote: #{remote_params[:remote_repo]} @ #{remote_params[:remote_repo_url]}")
32
32
 
33
33
  if Helper(:git_repo).local_clone_dir_exists?(module_type,module_name,:full_module_name=>full_module_name,:version=>version)
34
34
  unless rsa_pub_key
35
35
  raise DtkError,"No 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)"
36
36
  end
37
- opts_perform_locally = remote_params.merge(:full_module_name => full_module_name)
37
+ opts_perform_locally = remote_params.merge(:full_module_name => full_module_name, :force => opts[:force])
38
38
  PullFromRemote.perform_locally(self,module_type,module_id,module_name,opts_perform_locally)
39
39
  else
40
40
  # TODO: see if this works correctly
@@ -14,7 +14,7 @@ module DTK::Client
14
14
  raise DtkError, "Puppet forge module name should be in format USERNAME-NAME" unless pf_module_name.match(NAME_REGEX)
15
15
 
16
16
  response = poller_response do
17
- post rest_url("component_module/install_puppet_forge_modules"),PostBody.new(post_body_hash)
17
+ post rest_url("component_module/install_puppet_forge_modules"), PostBody.new(post_body_hash)
18
18
  end
19
19
 
20
20
  return response unless response.ok?
@@ -35,6 +35,8 @@ module DTK::Client
35
35
  post_body.merge!(:modification_type => opts[:modification_type]) if opts[:modification_type]
36
36
  post_body.merge!(:force_parse => true) if options['force-parse'] || opts[:force_parse]
37
37
  post_body.merge!(:update_from_includes => true) if opts[:update_from_includes]
38
+ post_body.merge!(:service_instance_module => true) if opts[:service_instance_module]
39
+ post_body.merge!(:current_branch_sha => opts[:current_branch_sha]) if opts[:current_branch_sha]
38
40
 
39
41
  if opts[:set_parsed_false]
40
42
  post_body.merge!(:set_parsed_false => true)
@@ -1,4 +1,7 @@
1
1
  dtk_require_common_commands('thor/common')
2
+ dtk_require("../../../domain/git_adapter")
3
+
4
+
2
5
  module DTK::Client
3
6
  module PushToRemoteMixin
4
7
 
@@ -15,6 +18,38 @@ module DTK::Client
15
18
  Response::Ok.new()
16
19
  end
17
20
 
21
+ def push_to_git_remote_location_aux(full_module_name, module_type, version, opts, force = false)
22
+ opts.merge!(:force => force)
23
+
24
+ # staging dir which will be removed
25
+ temp_stage_dir = OsUtil.temp_git_remote_location()
26
+ content_dir = File::join(temp_stage_dir, opts[:remote_repo_location])
27
+
28
+ begin
29
+ # clone desired repo
30
+ ::DTK::Client::GitAdapter.clone(opts[:remote_repo_url], temp_stage_dir, opts[:remote_branch])
31
+ # make sure that content dir exist
32
+ FileUtils.mkdir_p(content_dir)
33
+ # copy content of module to new dir (overriding everything in process)
34
+ module_location = OsUtil.module_location(module_type, full_module_name, version)
35
+ FileUtils.cp_r(File.join(module_location, '/.'), content_dir)
36
+ # remove git folder
37
+ FileUtils.rm_rf(File.join(content_dir, '.git'))
38
+ # now we push it
39
+ opts.merge!(:override_repo_dir_location => temp_stage_dir)
40
+ response = Helper(:git_repo).push_changes(module_type, full_module_name, version, opts)
41
+ return response unless response.ok?
42
+
43
+ if response.data(:diffs).empty?
44
+ raise DtkError, "No changes to push"
45
+ end
46
+
47
+ Response::Ok.new()
48
+ ensure
49
+ FileUtils.rm_rf(temp_stage_dir)
50
+ end
51
+ end
52
+
18
53
  def push_to_remote_aux(remote_module_info, module_type, force = false)
19
54
  full_module_name = remote_module_info.data(:full_module_name)
20
55
  version = remote_module_info.data(:version)
@@ -33,7 +33,7 @@ module DTK::Client
33
33
  [response, key_exists_already]
34
34
  end
35
35
 
36
- def self.add_key(path_to_key, name=nil)
36
+ def self.add_key(path_to_key, name='dtk-client')
37
37
  match, matched_username = nil, nil
38
38
 
39
39
  unless File.file?(path_to_key)
@@ -120,7 +120,7 @@ module DTK::Client
120
120
  response, matched, matched_username = Account.add_key(path_to_key, name)
121
121
 
122
122
  if matched
123
- DTK::Client::OsUtil.print("Provided ssh pub key has already been added.", :yellow)
123
+ DTK::Client::OsUtil.print("Provided SSH pub key has already been added.", :yellow)
124
124
  elsif matched_username
125
125
  DTK::Client::OsUtil.print("User ('#{matched_username}') already exists.", :yellow)
126
126
  else
@@ -128,7 +128,7 @@ module DTK::Client
128
128
  end
129
129
 
130
130
  if response.ok? && !response.data(:registered_with_repoman)
131
- OsUtil.print("Warning: We were not able to register your key with remote catalog!", :yellow)
131
+ OsUtil.print("Warning: We were not able to register your key with remote catalog! Contact DTK team for more infromation.", :yellow)
132
132
  end
133
133
 
134
134
  response.ok? ? nil : response
@@ -127,6 +127,7 @@ module DTK::Client
127
127
  namespace, module_name = get_namespace_and_name(full_module_name, ModuleUtil::NAMESPACE_SEPERATOR)
128
128
  module_type = get_module_type(context_params)
129
129
 
130
+ OsUtil.print('Retrieving puppet module metadata, please wait ...')
130
131
  response = puppet_forge_install_aux(context_params, pf_module_name, module_name, namespace, nil, module_type)
131
132
 
132
133
  @@invalidate_map << :component_module
@@ -262,16 +263,19 @@ module DTK::Client
262
263
  publish_module_aux(context_params)
263
264
  end
264
265
 
265
- desc "COMPONENT-MODULE-NAME/ID pull-dtkn [-n NAMESPACE]", "Update local component module from remote repository."
266
- method_option "namespace",:aliases => "-n",
267
- :type => :string,
266
+ desc "COMPONENT-MODULE-NAME/ID pull-dtkn [-n NAMESPACE] [--force]", "Update local component module from remote repository."
267
+ method_option :namespace,:aliases => '-n',
268
+ :type => :string,
268
269
  :banner => "NAMESPACE",
269
- :desc => "Remote namespace"
270
+ :desc => "Remote namespace"
271
+ method_option :force,:aliases => '-f',
272
+ :type => :boolean,
273
+ :desc => "Force pull",
274
+ :default => false
270
275
  def pull_dtkn(context_params)
271
276
  pull_dtkn_aux(context_params)
272
277
  end
273
278
 
274
-
275
279
  =begin
276
280
  desc "COMPONENT-MODULE-NAME/ID chown REMOTE-USER", "Set remote module owner"
277
281
  method_option "namespace", :aliases => "-n", :type => :string, :banner => "NAMESPACE", :desc => "Remote namespace"