dtk-client 0.5.10 → 0.5.12

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.
@@ -1,4 +1,3 @@
1
- dtk_require_from_base('command_helpers/ssh_processing')
2
1
  dtk_require_common_commands('thor/clone')
3
2
  dtk_require_common_commands('thor/list_diffs')
4
3
  dtk_require_common_commands('thor/push_to_remote')
@@ -7,6 +6,7 @@ dtk_require_common_commands('thor/push_clone_changes')
7
6
  dtk_require_common_commands('thor/edit')
8
7
  dtk_require_common_commands('thor/reparse')
9
8
  dtk_require_common_commands('thor/purge_clone')
9
+ dtk_require_common_commands('thor/common')
10
10
  dtk_require_from_base('configurator')
11
11
  dtk_require_from_base('command_helpers/service_importer')
12
12
 
@@ -127,6 +127,12 @@ module DTK::Client
127
127
  version = options.version
128
128
  component_module_name = get_module_name(component_module_id)
129
129
 
130
+ # if called from import-git first param will be git_url and second one will be component_module_id
131
+ git_import = context_params.get_forwarded_options()[:git_import] if context_params.get_forwarded_options()
132
+ if git_import
133
+ component_module_id = context_params.retrieve_arguments([:option_2!],method_argument_names)
134
+ end
135
+
130
136
  unless (options.force? || method_opts[:force_delete])
131
137
  # Ask user if really want to delete component module and all items contained in it, if not then return to dtk-shell without deleting
132
138
  return unless Console.confirmation_prompt("Are you sure you want to delete component-module #{version.nil? ? '' : 'version '}'#{component_module_name}#{version.nil? ? '' : ('-' + version.to_s)}' and all items contained in it"+'?')
@@ -215,9 +221,11 @@ TODO: might deprecate
215
221
  return module_info_about(context_params, :components, :component)
216
222
  end
217
223
 
218
- action = (options.remote? ? "list_remote" : "list")
219
- # post_body = (options.remote? ? { :rsa_pub_key => SshProcessing.rsa_pub_key_content() } : {:detail_to_include => ["remotes","versions"]})
220
- post_body = (options.remote? ? { :rsa_pub_key => SshProcessing.rsa_pub_key_content() } : {:detail_to_include => ["remotes"]})
224
+ forwarded_remote = context_params.get_forwarded_options()["remote"] if context_params.get_forwarded_options()
225
+ remote = options.remote? || forwarded_remote
226
+ action = (remote ? "list_remote" : "list")
227
+ # post_body = (options.remote? ? { :rsa_pub_key => SSHUtil.rsa_pub_key_content() } : {:detail_to_include => ["remotes","versions"]})
228
+ post_body = (remote ? { :rsa_pub_key => SSHUtil.rsa_pub_key_content() } : {:detail_to_include => ["remotes"]})
221
229
  post_body[:diff] = options.diff? ? options.diff : {}
222
230
  response = post rest_url("component_module/#{action}"),post_body
223
231
 
@@ -232,7 +240,7 @@ TODO: might deprecate
232
240
  post_body = {
233
241
  :component_module_id => component_module_id,
234
242
  :detail_to_include => ["remotes"],
235
- :rsa_pub_key => SshProcessing.rsa_pub_key_content()
243
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content()
236
244
  }
237
245
  response = post rest_url("component_module/versions"), post_body
238
246
 
@@ -374,7 +382,7 @@ TODO: might deprecate
374
382
  post_body = {
375
383
  :remote_module_name => remote_module_name,
376
384
  :local_module_name => local_module_name,
377
- :rsa_pub_key => SshProcessing.rsa_pub_key_content()
385
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content()
378
386
  }
379
387
  post_body.merge!(:do_not_raise => do_not_raise) if do_not_raise
380
388
  post_body.merge!(:ignore_component_error => ignore_component_error) if ignore_component_error
@@ -420,7 +428,6 @@ TODO: might deprecate
420
428
  context_params.forward_options({:git_import => true})
421
429
  # Reuse module create method to create module from local component_module
422
430
  create_response = import(context_params)
423
-
424
431
 
425
432
  if create_response.ok?
426
433
  if external_dependencies = create_response.data(:external_dependencies)
@@ -495,7 +502,7 @@ TODO: might deprecate
495
502
  post_body = {
496
503
  :remote_module_name => remote_name,
497
504
  :remote_module_namespace => remote_namespace,
498
- :rsa_pub_key => SshProcessing.rsa_pub_key_content()
505
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content()
499
506
  }
500
507
  post rest_url("component_module/delete_remote"), post_body
501
508
  end
@@ -508,7 +515,7 @@ TODO: might deprecate
508
515
  # post_body = {
509
516
  # :component_module_id => component_module_id,
510
517
  # :remote_component_name => input_remote_name,
511
- # :rsa_pub_key => SshProcessing.rsa_pub_key_content()
518
+ # :rsa_pub_key => SSHUtil.rsa_pub_key_content()
512
519
  # }
513
520
 
514
521
  # response = post rest_url("component_module/export"), post_body
@@ -523,7 +530,7 @@ TODO: might deprecate
523
530
  post_body = {
524
531
  :component_module_id => component_module_id,
525
532
  :remote_component_name => input_remote_name,
526
- :rsa_pub_key => SshProcessing.rsa_pub_key_content()
533
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content()
527
534
  }
528
535
 
529
536
  response = post rest_url("component_module/export"), post_body
@@ -571,39 +578,22 @@ TODO: might deprecate
571
578
  # push_to_remote_aux(:component_module, component_module_id, component_module_name, options["namespace"], version)
572
579
  # end
573
580
 
574
- # desc "COMPONENT-MODULE-NAME/ID pull-from-dtkn [-v VERSION]", "Update local component module from remote repository."
575
- # version_method_option
576
- # desc "COMPONENT-MODULE-NAME/ID pull-from-dtkn", "Update local component module from remote repository."
577
- # def pull_from_dtkn(context_params)
578
- # component_module_id, component_module_name = context_params.retrieve_arguments([:component_module_id!,:component_module_name],method_argument_names)
579
- # version = options["version"]
580
-
581
- # response = pull_from_remote_aux(:component_module,component_module_id,version)
582
- # return response unless response.ok?
583
-
584
- # if component_module_name.to_s =~ /^[0-9]+$/
585
- # component_module_id = component_module_name
586
- # component_module_name = get_module_name(component_module_id)
587
- # end
588
-
589
- # modules_path = OsUtil.module_clone_location()
590
- # module_location = "#{modules_path}/#{component_module_name}#{version && "-#{version}"}"
591
-
592
- # push_clone_changes_aux(:component_module,component_module_id,version,nil,true) if File.directory?(module_location)
593
- # Response::Ok.new()
594
- # end
581
+ # desc "COMPONENT-MODULE-NAME/ID pull-from-dtkn [-n NAMESPACE] [-v VERSION]", "Update local component module from remote repository."
582
+ desc "COMPONENT-MODULE-NAME/ID pull-dtkn [-n NAMESPACE]", "Update local component module from remote repository."
583
+ method_option "namespace",:aliases => "-n",
584
+ :type => :string,
585
+ :banner => "NAMESPACE",
586
+ :desc => "Remote namespace"
595
587
 
596
- desc "COMPONENT-MODULE-NAME/ID pull-dtkn", "Update local component module from remote repository."
597
588
  def pull_dtkn(context_params)
598
- # component_module_id, component_module_name, catalog = context_params.retrieve_arguments([:component_module_id!,:component_module_name,:option_1],method_argument_names)
599
589
  component_module_id, component_module_name = context_params.retrieve_arguments([:component_module_id!,:component_module_name,:option_1],method_argument_names)
600
590
  catalog = 'dtkn'
601
591
  version = options["version"]
602
-
603
592
  raise DtkValidationError, "You have to provide valid catalog to pull changes from! Valid catalogs: #{PullCatalogs}" unless catalog
604
593
 
605
594
  if catalog.to_s.eql?("dtkn")
606
- response = pull_from_remote_aux(:component_module,component_module_id,version)
595
+ opts = {:version => version, :remote_namespace => options.namespace}
596
+ response = pull_from_remote_aux(:component_module,component_module_id,opts)
607
597
  return response unless response.ok?
608
598
 
609
599
  if component_module_name.to_s =~ /^[0-9]+$/
@@ -634,7 +624,7 @@ TODO: might deprecate
634
624
 
635
625
  post_body = {
636
626
  :component_module_id => component_module_id,
637
- :rsa_pub_key => SshProcessing.rsa_pub_key_content()
627
+ :rsa_pub_key => SSHUtil.rsa_pub_key_content()
638
628
  }
639
629
  response = post rest_url("component_module/versions"), post_body
640
630
  return response unless response.ok?
@@ -770,23 +760,21 @@ TODO: might deprecate
770
760
  # if catalog.to_s.eql?("origin")
771
761
  # push_clone_changes_aux(:component_module,component_module_id,version,options["message"]||DEFAULT_COMMIT_MSG,internal_trigger)
772
762
  if catalog.to_s.eql?("dtkn")
763
+ remote_module_info = get_remote_module_info_aux(:component_module, component_module_id, options["namespace"], version)
764
+ return remote_module_info unless remote_module_info.ok?
765
+
773
766
  unless File.directory?(module_location)
774
- if Console.confirmation_prompt("Unable to push to remote because module '#{component_module_name}#{version && "-#{version}"}' has not been cloned. Would you like to clone module now"+'?')
775
- response = clone_aux(:component_module,component_module_id,version,false)
776
-
777
- if(response.nil? || response.ok?)
778
- reparse_aux(module_location)
779
- push_to_remote_aux(:component_module, component_module_id, component_module_name, options["namespace"], version) if Console.confirmation_prompt("Would you like to push changes to remote"+'?')
780
- end
767
+ response = clone_aux(:component_module, component_module_id, version, true, true)
781
768
 
782
- return response
783
- else
784
- # user choose not to clone needed module
785
- return
769
+ if(response.nil? || response.ok?)
770
+ reparse_aux(module_location)
771
+ response = push_to_remote_aux(remote_module_info, :component_module)
786
772
  end
773
+
774
+ return response
787
775
  end
788
776
 
789
- push_to_remote_aux(:component_module, component_module_id, component_module_name, options["namespace"], version)
777
+ push_to_remote_aux(remote_module_info, :component_module)
790
778
  else
791
779
  raise DtkValidationError, "You have to provide valid catalog to push changes to! Valid catalogs: #{PushCatalogs}"
792
780
  end
@@ -15,7 +15,7 @@ module DTK::Client
15
15
 
16
16
  ids = []
17
17
  # get all nodes which id starts with node_pattern
18
- nodes["data"].collect{|a| ids<<a["id"].to_i if a["id"].to_s.start_with?(node_pattern.to_s)}
18
+ nodes["data"].collect{|a| ids<<a["id"].to_i if a["id"].to_s.match(Regexp.new(node_pattern.to_s)) }
19
19
  raise DTK::Client::DtkValidationError, "Unable to find nodes to match this pattern: '#{node_pattern}'." if ids.empty?
20
20
 
21
21
  # if it doesn't contain extension upload both *.rb and *.ddl
@@ -15,7 +15,8 @@ module DTK::Client
15
15
  end
16
16
 
17
17
  def self.valid_children()
18
- [:component, :utils]
18
+ # [:component, :utils]
19
+ [:utils]
19
20
  end
20
21
 
21
22
  def self.multi_context_children()
@@ -85,32 +86,26 @@ module DTK::Client
85
86
  post rest_url("node/info"), post_body
86
87
  end
87
88
 
88
- desc "NODE-NAME/ID ssh [--keypair] [--remote-user]","SSH into node, optional parameters are path to keypair and remote user."
89
+ desc "NODE-NAME/ID ssh REMOTE-USER [--keypair PATH-TO-PEM]","SSH into node, optional parameters are path to keypair and remote user."
89
90
  method_option "--keypair",:type => :string, :desc => "Keypair used for connection, if not provided default is used", :banner => "KEYPAIR"
90
- method_option "--remote-user",:type => :string, :desc => "Remote user used for connection", :banner => "REMOTE USER"
91
91
  def ssh(context_params)
92
92
  if OsUtil.is_windows?
93
93
  puts "[NOTICE] SSH functionality is currenly not supported on Windows."
94
94
  return
95
95
  end
96
96
 
97
- node_id = context_params.retrieve_arguments([:node_id!],method_argument_names)
98
-
99
-
100
- keypair_location = options.keypair || OsUtil.dtk_keypair_location()
97
+ node_id, remote_user = context_params.retrieve_arguments([:node_id!,:option_1!],method_argument_names)
98
+ keypair_location = options.keypair
101
99
 
102
-
103
- remote_user = options.send('remote-user') || 'ubuntu'
104
-
105
- unless File.exists?(keypair_location||'')
106
- error_message = keypair_location ? "Not able to find keypair, '#{keypair_location}'" : "Default keypair not set, please provide one in 'ssh' command"
107
- raise ::DTK::Client::DtkError, error_message
100
+ if keypair_location
101
+ unless File.exists?(keypair_location)
102
+ raise ::DTK::Client::DtkError, "Not able to find keypair, '#{keypair_location}'"
103
+ end
108
104
  end
109
105
 
110
106
  context_params.forward_options({ :json_return => true })
111
107
  response = info_aux(context_params)
112
108
 
113
-
114
109
  if response.ok?
115
110
  node_info = response.data['nodes'].find { |n| node_id == n['node_id'] }
116
111
  public_dns = node_info ? node_info['external_ref']['ec2_public_address'] : nil
@@ -118,7 +113,28 @@ module DTK::Client
118
113
  raise ::DTK::Client::DtkError, "Not able to resolve instance address, has instance been stopped?" unless public_dns
119
114
 
120
115
  connection_string = "#{remote_user}@#{public_dns}"
121
- ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{keypair_location} #{connection_string}"
116
+
117
+ default_keypair = OsUtil.dtk_keypair_location()
118
+
119
+ # vanilla ssh command using only pub key
120
+ vanilla_ssh =
121
+
122
+ ssh_command = nil
123
+
124
+ if keypair_location
125
+ # provided PEM key
126
+ ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{keypair_location} #{connection_string}"
127
+ elsif SSHUtil.ssh_reachable?(remote_user, public_dns)
128
+ # it has PUB key access
129
+ ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" #{connection_string}"
130
+ else
131
+ # using default keypair
132
+ if default_keypair
133
+ ssh_command = "ssh -o \"StrictHostKeyChecking no\" -o \"UserKnownHostsFile /dev/null\" -i #{default_keypair} #{connection_string}"
134
+ end
135
+ end
136
+
137
+ raise ::DTK::Client::DtkError, "No public key access or PEM provided, please grant access or provide valid PEM key" if ssh_command.nil?
122
138
 
123
139
  OsUtil.print("You are entering SSH terminal (#{connection_string}) ...", :yellow)
124
140
  Kernel.system(ssh_command)
@@ -5,10 +5,6 @@ module DTK::Client
5
5
  PPColumns.get(:node)
6
6
  end
7
7
 
8
- def self.whoami()
9
- return :node_template, "node/list", {:subtype => 'template'}
10
- end
11
-
12
8
  def self.extended_context()
13
9
  {
14
10
  :context => {
@@ -16,6 +12,10 @@ module DTK::Client
16
12
  }
17
13
  }
18
14
  end
15
+
16
+ def self.validation_list(context_params)
17
+ get_cached_response(:node_template, "node/list", {:subtype => 'template'})
18
+ end
19
19
  =begin
20
20
  #Not implemented yet
21
21
  desc "NODE-TEMPLATE-NAME/ID info", "Get information about given node template."
@@ -1,10 +1,6 @@
1
1
  module DTK::Client
2
2
  class Provider < CommandBaseThor
3
3
 
4
- def self.whoami()
5
- return :provider, "target/list", { :subtype => :template }
6
- end
7
-
8
4
  def self.valid_children()
9
5
  [:target]
10
6
  end
@@ -13,6 +9,10 @@ module DTK::Client
13
9
  [:target]
14
10
  end
15
11
 
12
+ def self.validation_list(context_params)
13
+ get_cached_response(:provider, "target/list", {:subtype => :template })
14
+ end
15
+
16
16
  def self.override_allowed_methods()
17
17
  return DTK::Shell::OverrideTasks.new({
18
18
  :command_only => {
@@ -10,6 +10,7 @@ dtk_require_common_commands('thor/set_required_params')
10
10
  dtk_require_common_commands('thor/edit')
11
11
  dtk_require_common_commands('thor/purge_clone')
12
12
  dtk_require_common_commands('thor/assembly_workspace')
13
+ dtk_require_common_commands('thor/action_result_handler')
13
14
 
14
15
  LOG_SLEEP_TIME = DTK::Configuration.get(:tail_log_frequency)
15
16
  DEBUG_SLEEP_TIME = DTK::Configuration.get(:debug_task_frequency)
@@ -23,6 +24,7 @@ module DTK::Client
23
24
  include EditMixin
24
25
  include PurgeCloneMixin
25
26
  include AssemblyWorkspaceMixin
27
+ include ActionResultHandler
26
28
 
27
29
  def get_assembly_name(assembly_id)
28
30
  get_name_from_id_helper(assembly_id)
@@ -42,6 +44,8 @@ module DTK::Client
42
44
  raise DtkError,"[ERROR] Illegal name (#{assembly_name}) for service." unless assembly_id
43
45
  assembly_id
44
46
  end
47
+
48
+
45
49
 
46
50
  end
47
51
 
@@ -158,7 +162,7 @@ TODO: overlaps with different meaning
158
162
  ['set-attribute',"set-attribute ATTRIBUTE-NAME [VALUE] [-u]","# (Un)Set attribute value. The option -u will unset the attribute's value."],
159
163
  ['start', "start", "# Start node instance."],
160
164
  ['stop', "stop", "# Stop node instance."],
161
- ['ssh', "ssh [--keypair] [--remote-user]", "# SSH into node, optional parameters are path to keypair and remote user."]
165
+ ['ssh', "ssh REMOTE-USER [--keypair PATH-TO-PEM]", "# SSH into node, optional parameters are path to keypair and remote user."]
162
166
  ],
163
167
  :component => [
164
168
  ['info',"info","# Return info about component instance belonging to given node."],
@@ -197,36 +201,6 @@ TODO: overlaps with different meaning
197
201
  def cancel_task(context_params)
198
202
  cancel_task_aux(context_params)
199
203
  end
200
- =begin
201
- #TODO: until we investigate DTK-1349
202
- desc "rename SERVICE-NAME NEW-SERVICE-NAME","Change service name."
203
- def rename(context_params)
204
- assembly_name, new_assembly_name = context_params.retrieve_arguments([:option_1!,:option_2!],method_argument_names)
205
-
206
- if assembly_name.to_s =~ /^[0-9]+$/
207
- assembly_id = assembly_name
208
- else
209
- assembly_id = get_assembly_id(assembly_name)
210
- end
211
-
212
- post_body = {
213
- :assembly_id => assembly_id,
214
- :assembly_name => assembly_name,
215
- :new_assembly_name => new_assembly_name
216
- }
217
-
218
- response = post rest_url("assembly/rename"), post_body
219
- return response unless response.ok?
220
-
221
- @@invalidate_map << :service
222
- response
223
- end
224
- =end
225
-
226
- #desc "ASSEMBLY-NAME/ID clear-tasks", "Clears the tasks that have been run already."
227
- #def clear_tasks(context_params)
228
- # clear_tasks_aux(context_params)
229
- #end
230
204
 
231
205
  desc "SERVICE-NAME/ID create-assembly SERVICE-MODULE-NAME ASSEMBLY-NAME", "Create a new assembly from this service instance in the designated service module."
232
206
  def create_assembly(context_params)
@@ -340,21 +314,6 @@ TODO: will put in dot release and will rename to 'extend'
340
314
  task_status_aw_aux(context_params)
341
315
  end
342
316
 
343
- =begin
344
- desc "ASSEMBLY-NAME/ID run-smoketests", "Run smoketests associated with assembly instance"
345
- def run_smoketests(context_params)
346
- assembly_id = context_params.retrieve_arguments([:assembly_id!],method_argument_names)
347
- post_body = {
348
- :assembly_id => assembly_id
349
- }
350
- # create smoke test
351
- response = post rest_url("assembly/create_smoketests_task"), post_body
352
- return response unless response.ok?
353
- # execute
354
- task_id = response.data(:task_id)
355
- post rest_url("task/execute"), "task_id" => task_id
356
- end
357
- =end
358
317
 
359
318
  desc "SERVICE-NAME/ID list-nodes","List nodes associated with service."
360
319
  def list_nodes(context_params)
@@ -480,6 +439,63 @@ TODO: will put in dot release and will rename to 'extend'
480
439
  # post rest_url("assembly/list_smoketests"), post_body
481
440
  #end
482
441
 
442
+ desc "SERVICE-NAME/ID grant-access SYS-USER NAME [PATH-TO-PUB-KEY]", "Grant access to given service and its nodes"
443
+ def grant_access(context_params)
444
+ service_id, system_user, rsa_key_name, path_to_rsa_pub_key = context_params.retrieve_arguments([:service_id!,:option_1!, :option_2!, :option_3],method_argument_names)
445
+
446
+ path_to_rsa_pub_key ||= SSHUtil.default_rsa_pub_key_path()
447
+ rsa_pub_key_content = SSHUtil.read_and_validate_pub_key(path_to_rsa_pub_key)
448
+
449
+ response = post_file rest_url("assembly/initiate_ssh_pub_access"), {
450
+ :agent_action => :grant_access,
451
+ :system_user => system_user,
452
+ :rsa_pub_name => rsa_key_name,
453
+ :rsa_pub_key => rsa_pub_key_content,
454
+ :assembly_id => service_id
455
+ }
456
+
457
+ return response unless response.ok?
458
+
459
+ action_results_id = response.data(:action_results_id)
460
+
461
+ print_action_results(action_results_id)
462
+
463
+ nil
464
+ end
465
+
466
+ desc "SERVICE-NAME/ID revoke-access SYS-USER NAME", "Revoke access to given service and its nodes"
467
+ def revoke_access(context_params)
468
+ service_id, system_user, rsa_key_name = context_params.retrieve_arguments([:service_id!,:option_1!, :option_2!],method_argument_names)
469
+
470
+ response = post_file rest_url("assembly/initiate_ssh_pub_access"), {
471
+ :agent_action => :revoke_access,
472
+ :system_user => system_user,
473
+ :rsa_pub_name => rsa_key_name,
474
+ :assembly_id => service_id
475
+ }
476
+
477
+ return response unless response.ok?
478
+
479
+ action_results_id = response.data(:action_results_id)
480
+
481
+ print_action_results(action_results_id)
482
+
483
+ nil
484
+ end
485
+
486
+ desc "SERVICE-NAME/ID list-ssh-access", "List SSH access for each of the nodes"
487
+ def list_ssh_access(context_params)
488
+ service_id = context_params.retrieve_arguments([:service_id!],method_argument_names)
489
+
490
+ response = post_file rest_url("assembly/list_ssh_access"), {
491
+ :assembly_id => service_id
492
+ }
493
+
494
+ response.render_table(:ssh_access)
495
+ response
496
+ end
497
+
498
+
483
499
  desc "SERVICE-NAME/ID info", "Get info about content of the service."
484
500
  def info(context_params)
485
501
  info_aux(context_params)
@@ -500,16 +516,15 @@ TODO: will put in dot release and will rename to 'extend'
500
516
  else
501
517
  assembly_id = get_assembly_id(assembly_name)
502
518
  end
503
- # assembly_name = get_assembly_name(assembly_id)
504
519
 
505
520
  unless options.force?
506
521
  # Ask user if really want to delete assembly, if not then return to dtk-shell without deleting
507
- #used form "+'?' because ?" confused emacs ruby rendering
522
+ # used form "+'?' because ?" confused emacs ruby rendering
508
523
  what = "service"
509
524
  return unless Console.confirmation_prompt("Are you sure you want to delete and destroy #{what} '#{assembly_name}' and its nodes"+'?')
510
525
  end
511
526
 
512
- #purge local clone
527
+ # purge local clone
513
528
  response = purge_clone_aux(:all,:assembly_module => {:assembly_name => assembly_name})
514
529
  return response unless response.ok?
515
530
 
@@ -540,21 +555,6 @@ TODO: will put in dot release and will rename to 'extend'
540
555
  create_attribute_aux(context_params)
541
556
  end
542
557
 
543
- # desc "ASSEMBLY-NAME/ID add-assembly ASSEMBLY-TEMPLATE-NAME/ID", "Add (stage) an assembly template to become part of this assembly instance"
544
- # method_option "auto-complete",:aliases => "-a" ,
545
- # :type => :boolean,
546
- # :default=> false,
547
- # :desc => "Automatically add in connections"
548
- # def add_assembly(context_params)
549
- # assembly_id,assembly_template_id = context_params.retrieve_arguments([:assembly_id,:option_1!],method_argument_names)
550
- # post_body = {
551
- # :assembly_id => assembly_id,
552
- # :assembly_template_id => assembly_template_id
553
- # }
554
- # post_body.merge!(:auto_add_connections => true) if options.auto_complete?
555
- # post rest_url("assembly/add_assembly_template"), post_body
556
- # end
557
-
558
558
  # using ^^ before NODE-NAME to remove this command from assembly/assembly_id/node/node_id but show in assembly/assembly_id
559
559
  desc "SERVICE-NAME/ID create-node ^^NODE-NAME NODE-TEMPLATE", "Add (stage) a new node in the service."
560
560
  def create_node(context_params)