rs-api-tools 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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