rs-api-tools 0.0.1

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.
Files changed (48) hide show
  1. data/bin/.DS_Store +0 -0
  2. data/bin/rs-clone-deployment +58 -0
  3. data/bin/rs-clone-rightscript +79 -0
  4. data/bin/rs-clone-server +2 -0
  5. data/bin/rs-describe-alerts +42 -0
  6. data/bin/rs-describe-attached-vols +83 -0
  7. data/bin/rs-describe-deployment +85 -0
  8. data/bin/rs-describe-deployments +42 -0
  9. data/bin/rs-describe-ec2-ebs-snapshots +41 -0
  10. data/bin/rs-describe-ec2-ebs-volumes +42 -0
  11. data/bin/rs-describe-ec2-security-groups +42 -0
  12. data/bin/rs-describe-keys +42 -0
  13. data/bin/rs-describe-multi-cloud-images +42 -0
  14. data/bin/rs-describe-rightscript +81 -0
  15. data/bin/rs-describe-rightscripts +42 -0
  16. data/bin/rs-describe-server +97 -0
  17. data/bin/rs-describe-server-array +80 -0
  18. data/bin/rs-describe-server-arrays +42 -0
  19. data/bin/rs-describe-server-self +67 -0
  20. data/bin/rs-describe-server-templates +42 -0
  21. data/bin/rs-describe-servers +42 -0
  22. data/bin/rs-fetch-rightscripts +126 -0
  23. data/bin/rs-get-array-instances +64 -0
  24. data/bin/rs-get-server-input +2 -0
  25. data/bin/rs-get-server-monitoring +64 -0
  26. data/bin/rs-get-server-sketchy-data +42 -0
  27. data/bin/rs-launch-deployment +2 -0
  28. data/bin/rs-launch-server +2 -0
  29. data/bin/rs-ping-active-servers +44 -0
  30. data/bin/rs-reboot-deployment +2 -0
  31. data/bin/rs-reboot-server +75 -0
  32. data/bin/rs-relaunch-deployment +2 -0
  33. data/bin/rs-relaunch-server +74 -0
  34. data/bin/rs-run-all-boot-executables +94 -0
  35. data/bin/rs-run-rightscript +98 -0
  36. data/bin/rs-search-tags +69 -0
  37. data/bin/rs-start-deployment +2 -0
  38. data/bin/rs-start-server +75 -0
  39. data/bin/rs-stop-deployment +2 -0
  40. data/bin/rs-stop-server +2 -0
  41. data/bin/rs-terminate-all +2 -0
  42. data/bin/rs-terminate-deployment +2 -0
  43. data/bin/rs-terminate-self +70 -0
  44. data/bin/rs-terminate-server +90 -0
  45. data/bin/rs-update-input +71 -0
  46. data/bin/rs-update-inputs +71 -0
  47. data/bin/rs-update-server-array +63 -0
  48. metadata +194 -0
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-start-server
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+
8
+ def usage
9
+ puts("usage: rs-start-server [--name <server_nickname> | --id <server_id>]")
10
+ puts(" [[--verbose]]")
11
+ end
12
+
13
+ def usage_exit
14
+ usage; exit
15
+ end
16
+
17
+ def help
18
+ usage
19
+ puts ''
20
+ puts 'Reboots a RightScale server.'
21
+ puts ''
22
+ puts "examples: rs-reboot-server --name 'Sandbox'"
23
+ puts ''
24
+ exit
25
+ end
26
+
27
+ opts = GetoptLong.new(
28
+ [ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
29
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
30
+ [ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
31
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
32
+ )
33
+
34
+ server_name = false
35
+ server_id = false
36
+ show_help = false
37
+ verbose = false
38
+
39
+ opts.each do |opt, arg|
40
+ case opt
41
+ when '--name'
42
+ server_name = arg
43
+ when '--id'
44
+ server_id = arg
45
+ when '--help'
46
+ show_help = true
47
+ when '--verbose'
48
+ verbose = true
49
+ end
50
+ end
51
+
52
+ help if show_help
53
+
54
+ require 'json'
55
+ require 'rest_connection'
56
+
57
+ usage_exit if !(server_name || server_id)
58
+
59
+ # get server
60
+ if server_name
61
+ puts "Finding server: '%#{server_name}%'"
62
+ server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
63
+ puts "Found server, '#{server.nickname}'."
64
+ puts server.to_yaml if verbose
65
+ elsif server_id
66
+ server = Server.find(server_id.to_i)
67
+ else
68
+ usage_exit
69
+ end
70
+
71
+ # reboot server
72
+ server.reboot()
73
+ #puts "Running RightScript, '#{right_script.name}' on server, '#{server.nickname}'."
74
+ #state = server.run_executable(right_script)
75
+ #state.wait_for_completed
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-terminate-self
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+ require 'json'
8
+ require 'rest_connection'
9
+
10
+ def usage
11
+ puts("usage: rs-terminate-self [[--array]] [[--verbose]]")
12
+ end
13
+
14
+ def usage_exit
15
+ usage; exit
16
+ end
17
+
18
+ def help
19
+ usage
20
+ puts ''
21
+ puts 'Terminates self via RightScale API.'
22
+ puts ''
23
+ puts "examples: rs-terminate-self"
24
+ puts ''
25
+ exit
26
+ end
27
+
28
+ opts = GetoptLong.new(
29
+ [ '--settings', '-s', GetoptLong::OPTIONAL_ARGUMENT ],
30
+ [ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
31
+ [ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ]
32
+ )
33
+
34
+ settings = false
35
+ json = false
36
+ xml = false
37
+ verbose = false
38
+
39
+ opts.each do |opt, arg|
40
+ case opt
41
+ when '--settings'
42
+ settings = ".settings"
43
+ when '--verbose'
44
+ verbose = true
45
+ end
46
+ end
47
+
48
+ instance_id = File.read('/var/spool/cloud/meta-data/instance-id')
49
+
50
+ # server-side filtering
51
+ if settings
52
+ server = Server.find_with_filter('aws_id' => "#{instance_id}")[0].settings
53
+ else
54
+ server = Server.find_with_filter('aws_id' => "#{instance_id}")[0]
55
+ end
56
+
57
+ # client-side filtering=expensive and lengthy on accounts with many servers
58
+ #server = Server.find(:all) {|server| server.settings['aws-id'] == "#{instance_id}"}
59
+
60
+ if server
61
+ puts "Found server, '#{server['nickname']}'."
62
+ server.terminate
63
+ else
64
+ array_instance = Server.find_with_filter('aws_id' => "#{instance_id}")[0]
65
+ end
66
+
67
+
68
+
69
+ Tag.search('Ec2Instance', "server:private_ip_0=10.128.74.253")
70
+
@@ -0,0 +1,90 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-terminate-server
4
+
5
+ require 'getoptlong'
6
+
7
+ def usage
8
+ puts("usage: rs-terminate-server [--name <server_nickname> | --id <server_id>]")
9
+ puts(" [[--verbose]]")
10
+ end
11
+
12
+ def usage_exit
13
+ usage; exit
14
+ end
15
+
16
+ def help
17
+ usage
18
+ puts ''
19
+ puts 'Terminates a RightScale server.'
20
+ puts ''
21
+ puts "examples: rs-terminate-server --name 'Sandbox'"
22
+ puts ''
23
+ exit
24
+ end
25
+
26
+ opts = GetoptLong.new(
27
+ [ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
28
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
29
+ [ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
30
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ],
31
+ [ '--decomm', '-d', GetoptLong::OPTIONAL_ARGUMENT ]
32
+ )
33
+
34
+ server_name = false
35
+ decommission = false
36
+ term_self = false
37
+ server_id = false
38
+ show_help = false
39
+ verbose = false
40
+
41
+ opts.each do |opt, arg|
42
+ case opt
43
+ when '--name'
44
+ server_name = arg
45
+ when '--decomm'
46
+ decommission = arg
47
+ when '--id'
48
+ server_id = arg
49
+ when '--help'
50
+ show_help = true
51
+ when '--verbose'
52
+ verbose = true
53
+ end
54
+ end
55
+
56
+ help if show_help
57
+
58
+ usage_exit if !(server_name || server_id || decommission)
59
+
60
+ require 'rubygems'
61
+
62
+ # get server
63
+ if server_name || server_id
64
+ require 'json'
65
+ require 'rest_connection'
66
+ if server_name
67
+ puts "Finding server: '%#{server_name}%'"
68
+ server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
69
+ puts "Found server, '#{server.nickname}'."
70
+ puts server.to_yaml if verbose
71
+ elsif server_id
72
+ server = Server.find(server_id.to_i)
73
+ end
74
+ # terminate server
75
+ puts "Terminating server, '#{server.nickname}'."
76
+ server.stop()
77
+ exit
78
+ end
79
+
80
+ if decommission
81
+ if File.exist?("/etc/init.d/rightlink")
82
+ puts 'Decommissioning self.'
83
+ system('sleep 3; service rightlink decommission && shutdown -h now &')
84
+ #puts `shutdown -h now`
85
+ else
86
+ puts 'RightLink init.d script does not exist, exiting.'
87
+ exit
88
+ end
89
+ exit
90
+ end
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-set-input
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+ require 'json'
8
+ require 'rest_connection'
9
+
10
+ def usage
11
+ puts("rs-set-input [[--current]] [--server --id <server_id> | --deployment --id <deployment_id>] <input_name> <input_value>")
12
+ puts 'e.g. rs-set-input --server'
13
+ exit
14
+ end
15
+
16
+ opts = GetoptLong.new(
17
+ [ '--current', '-c', GetoptLong::OPTIONAL_ARGUMENT ],
18
+ [ '--server', '-s', GetoptLong::OPTIONAL_ARGUMENT ],
19
+ [ '--deployment', '-d', GetoptLong::OPTIONAL_ARGUMENT ],
20
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
21
+ [ '--name', '-n', GetoptLong::REQUIRED_ARGUMENT ],
22
+ [ '--value', '-V', GetoptLong::REQUIRED_ARGUMENT ],
23
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
24
+ )
25
+
26
+ server = false
27
+ name = false
28
+ current = false
29
+ deployment = false
30
+ id = false
31
+ show_help = false
32
+ input_name = false
33
+ input_value = false
34
+ verbose = false
35
+
36
+ opts.each do |opt, arg|
37
+ case opt
38
+ when '--current'
39
+ current = true
40
+ when '--server'
41
+ server = true
42
+ when '--deployment'
43
+ deployment = true
44
+ when '--id'
45
+ id = arg
46
+ when '--name'
47
+ name = arg
48
+ end
49
+ end
50
+
51
+ usage if !(server || deployment)
52
+ usage if !(id || name || ARGV[0] || ARGV[1])
53
+
54
+ input_name = ARGV[0] if ARGV[0]
55
+ input_value = ARGV[1] if ARGV[1]
56
+
57
+ # get server
58
+ if server
59
+ if name
60
+ puts "Finding server: '%#{name}%'"
61
+ server = Server.find(:first) { |s| s.nickname =~ /#{name}/ }
62
+ puts "Found server, '#{server.nickname}'."
63
+ puts server.to_yaml if verbose
64
+ elsif id
65
+ server = Server.find(server_id.to_i)
66
+ end
67
+ end
68
+
69
+ # update input
70
+ server.reload_current() if current
71
+ server.set_input(input_name, input_value)
@@ -0,0 +1,71 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-set-input
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+ require 'json'
8
+ require 'rest_connection'
9
+
10
+ def usage
11
+ puts("rs-set-input [[--current]] [--server --id <server_id> | --deployment --id <deployment_id>] <input_name> <input_value>")
12
+ puts 'e.g. rs-set-input --server'
13
+ exit
14
+ end
15
+
16
+ opts = GetoptLong.new(
17
+ [ '--current', '-c', GetoptLong::OPTIONAL_ARGUMENT ],
18
+ [ '--server', '-s', GetoptLong::OPTIONAL_ARGUMENT ],
19
+ [ '--deployment', '-d', GetoptLong::OPTIONAL_ARGUMENT ],
20
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
21
+ [ '--name', '-n', GetoptLong::REQUIRED_ARGUMENT ],
22
+ [ '--value', '-V', GetoptLong::REQUIRED_ARGUMENT ],
23
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
24
+ )
25
+
26
+ server = false
27
+ name = false
28
+ current = false
29
+ deployment = false
30
+ id = false
31
+ show_help = false
32
+ input_name = false
33
+ input_value = false
34
+ verbose = false
35
+
36
+ opts.each do |opt, arg|
37
+ case opt
38
+ when '--current'
39
+ current = true
40
+ when '--server'
41
+ server = true
42
+ when '--deployment'
43
+ deployment = true
44
+ when '--id'
45
+ id = arg
46
+ when '--name'
47
+ name = arg
48
+ end
49
+ end
50
+
51
+ usage if !(server || deployment)
52
+ usage if !(id || name || ARGV[0] || ARGV[1])
53
+
54
+ input_name = ARGV[0] if ARGV[0]
55
+ input_value = ARGV[1] if ARGV[1]
56
+
57
+ # get server
58
+ if server
59
+ if name
60
+ puts "Finding server: '%#{name}%'"
61
+ server = Server.find(:first) { |s| s.nickname =~ /#{name}/ }
62
+ puts "Found server, '#{server.nickname}'."
63
+ puts server.to_yaml if verbose
64
+ elsif id
65
+ server = Server.find(server_id.to_i)
66
+ end
67
+ end
68
+
69
+ # update input
70
+ server.reload_current() if current
71
+ server.set_input(input_name, input_value)
@@ -0,0 +1,63 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-update-server-array
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+ require 'json'
8
+ require 'rest_connection'
9
+
10
+ def usage
11
+ puts("rs-update-server-array [--id <server_array_id> | --nickname <server_array_nickname>] [ OPTIONS ]")
12
+ puts("e.g. rs-update-server-array --nickname 'PHP App Server Array' --elasticity max_count=1,min_count=1,resize_up_by=1,resize_down_by=1,resize_calm_time=10,decision_threshold=51")
13
+ exit
14
+ end
15
+
16
+ opts = GetoptLong.new(
17
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
18
+ [ '--nickname', '-n', GetoptLong::REQUIRED_ARGUMENT ],
19
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ],
20
+ [ '--elasticity', '-e', GetoptLong::OPTIONAL_ARGUMENT ]
21
+ )
22
+
23
+ nickname = false
24
+ id = false
25
+ elasticity = false
26
+ show_help = false
27
+ verbose = false
28
+
29
+ opts.each do |opt, arg|
30
+ case opt
31
+ when '--nickname'
32
+ nickname = arg
33
+ when '--id'
34
+ id = arg
35
+ when '--elasticity'
36
+ elasticity = arg
37
+ end
38
+ end
39
+
40
+ usage if !(nickname || id)
41
+
42
+ # get server array
43
+ if nickname
44
+ puts "Finding server array: '%#{nickname}%'"
45
+ server_array = Ec2ServerArray.find(:first) { |s| s.nickname =~ /#{nickname}/ }
46
+ puts server.to_yaml if verbose
47
+ elsif id
48
+ server = Server.find(server_id.to_i)
49
+ end
50
+ puts "Found server array, '#{server_array.nickname}'."
51
+
52
+ if elasticity
53
+ elasticity_params = Array.new
54
+ elasticity.split(",").each do |pair|
55
+ elasticity_params.push(pair.split('='))
56
+ end
57
+ elasticity_params.each do |k,v|
58
+ server_array.elasticity[k] = v
59
+ end
60
+ end
61
+
62
+ puts 'Saving to API.'
63
+ server_array.save