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,2 @@
1
+ #!/bin/sh
2
+ echo 'This command is todo; please feel free to submit it via a GitHub pull request.'
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-ping-active-servers
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+ require 'rest_connection'
8
+
9
+ def usage
10
+ puts("rs-ping-active-servers")
11
+ exit
12
+ end
13
+
14
+ opts = GetoptLong.new(
15
+ [ '--private', '-p', GetoptLong::OPTIONAL_ARGUMENT ]
16
+ )
17
+
18
+ private_ip = false
19
+
20
+ opts.each do |opt, arg|
21
+ case opt
22
+ when '--private'
23
+ private_ip = true
24
+ end
25
+ end
26
+
27
+ puts 'Finding operational servers...'
28
+ servers = Server.find(:all) {|server| server.state =~ /operational/ }
29
+
30
+ ip_address = String.new
31
+ private_ip_address = false
32
+
33
+ servers.each {|server|
34
+ server.settings
35
+ if private_ip
36
+ ip_address = server.private_ip_address
37
+ else
38
+ ip_address = server.ip_address
39
+ end
40
+ puts ''
41
+ puts "-- Server: '#{server.nickname}'; AWS ID: #{server.aws_id}; IP: "+ip_address
42
+ system("ping -c 3 #{ip_address}")
43
+ puts ''
44
+ }
@@ -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-reboot-server
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+
8
+ def usage
9
+ puts("usage: rs-reboot-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,74 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-relaunch-server
4
+
5
+ require 'getoptlong'
6
+
7
+ def usage
8
+ puts("usage: rs-relaunch-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 'Relaunches a RightScale server.'
20
+ puts ''
21
+ puts "examples: rs-relaunch-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
+ )
32
+
33
+ require 'rubygems'
34
+
35
+ server_name = false
36
+ server_id = false
37
+ show_help = false
38
+ verbose = false
39
+
40
+ opts.each do |opt, arg|
41
+ case opt
42
+ when '--name'
43
+ server_name = arg
44
+ when '--id'
45
+ server_id = arg
46
+ when '--help'
47
+ show_help = true
48
+ when '--verbose'
49
+ verbose = true
50
+ end
51
+ end
52
+
53
+ help if show_help
54
+
55
+ require 'json'
56
+ require 'rest_connection'
57
+
58
+ usage_exit if !(server_name || server_id)
59
+
60
+ # get server
61
+ if server_name
62
+ puts "Finding server: '%#{server_name}%'"
63
+ server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
64
+ puts "Found server, '#{server.nickname}'."
65
+ puts server.to_yaml if verbose
66
+ elsif server_id
67
+ server = Server.find(server_id.to_i)
68
+ else
69
+ usage_exit
70
+ end
71
+
72
+ # reboot server
73
+ puts "Relaunching server, '#{server.nickname}'."
74
+ server.relaunch()
@@ -0,0 +1,94 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-run-all-boot-executables
4
+
5
+ def usage
6
+ puts("rs-run-all-boot-executables")
7
+ puts(" usage: rs-run-all-boot-executables [--id <server_id>] [--api [<api_version>]]")
8
+ end
9
+
10
+ def usage_exit
11
+ usage; exit
12
+ end
13
+
14
+ def help
15
+ usage
16
+ puts ''
17
+ puts 'Runs all boot scripts (RightScripts/Recipes) on a RightScale server, synchronously.'
18
+ puts ''
19
+ puts "examples: rs-run-all-boot-execuables --id 1234 --api 1.5 --verbose"
20
+ puts ''
21
+ puts 'Note: Use --api 1.5 for non-EC2 servers.'
22
+ exit
23
+ end
24
+
25
+ require 'getoptlong'
26
+
27
+ server_id = false
28
+ api_version = false
29
+ show_help = false
30
+ verbose = false
31
+
32
+ opts = GetoptLong.new(
33
+ [ '--id', '-i', GetoptLong::REQUIRED_ARGUMENT ],
34
+ [ '--api', '-a', GetoptLong::OPTIONAL_ARGUMENT ],
35
+ [ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
36
+ [ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
37
+ [ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
38
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
39
+ )
40
+
41
+ opts.each do |opt, arg|
42
+ case opt
43
+ when '--id'
44
+ server_id = arg
45
+ when '--api'
46
+ api_version = arg
47
+ when '--help'
48
+ show_help = true
49
+ when '--verbose'
50
+ verbose = true
51
+ end
52
+ end
53
+
54
+ help if show_help
55
+ usage_exit unless server_id
56
+
57
+ require 'rubygems'
58
+ require 'json'
59
+ require 'rest_connection'
60
+
61
+ # get server
62
+ puts "Fetching server with ID, #{server_id}."
63
+ if api_version.to_s == '1.5'
64
+ server = McServer.find(server_id.to_i)
65
+ server_settings = server.settings
66
+ puts server_settings.to_yaml if verbose
67
+ template_href = server_settings['current_instance']['links'].select { |link| link['rel'] == 'server_template' }.first['href']
68
+ puts "ServerTemplate HREF: #{template_href}" if verbose
69
+ else
70
+ server = Server.find(server_id.to_i)
71
+ server_settings = server.settings
72
+ template_href = server_settings['server_template_href']
73
+ puts server_settings.to_yaml if verbose
74
+ end
75
+
76
+ # get template
77
+ template_id = template_href.match("[^/]+$")[0]
78
+ puts "Fetching ServerTemplate with ID, #{template_id}."
79
+ template = ServerTemplate.find(template_id.to_i)
80
+
81
+ # run executables
82
+ #puts "Executables found:\n#{template.executables.to_yaml}" if debug (todo)
83
+ puts 'Running executables.'
84
+ template.executables.each { |executable|
85
+ unless executable['apply'] != 'boot'
86
+ if executable['recipe']
87
+ puts "#{executable['position']}. #{executable['recipe']}"
88
+ elsif executable['right_script']
89
+ puts "#{executable['position']}. #{executable['right_script']['name']}"
90
+ end
91
+ server.run_executable(executable)
92
+ #state.wait_for_completed (todo)
93
+ end
94
+ }
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-run-rightscript
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+
8
+ def usage
9
+ puts("usage: rs-run-rightscript [--name <right_script_name> | --id <right_script_id>]")
10
+ puts(" [--server-name <server_name> | --server-id <server_id>]")
11
+ puts(" [[--verbose]]")
12
+ end
13
+
14
+ def usage_exit
15
+ usage; exit
16
+ end
17
+
18
+ def help
19
+ usage
20
+ puts ''
21
+ puts 'Run a RightScript on a RightScale server.'
22
+ puts ''
23
+ puts "examples: rs-run-rightscript --name 'Hello World' --server-name 'Holly'"
24
+ puts " rs-run-rightscript --id 1337 --server-id 10111101"
25
+ puts ''
26
+ exit
27
+ end
28
+
29
+ opts = GetoptLong.new(
30
+ [ '--name', '-n', GetoptLong::OPTIONAL_ARGUMENT ],
31
+ [ '--id', '-i', GetoptLong::OPTIONAL_ARGUMENT ],
32
+ [ '--server-name', '-s', GetoptLong::OPTIONAL_ARGUMENT ],
33
+ [ '--server-id', '-S', GetoptLong::OPTIONAL_ARGUMENT ],
34
+ [ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
35
+ [ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
36
+ [ '--help', '-h', GetoptLong::OPTIONAL_ARGUMENT ],
37
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
38
+ )
39
+
40
+ script_name = false
41
+ script_id = false
42
+ server_name = false
43
+ server_id = false
44
+ show_help = false
45
+ verbose = false
46
+
47
+ opts.each do |opt, arg|
48
+ case opt
49
+ when '--name'
50
+ script_name = arg
51
+ when '--id'
52
+ script_id = arg
53
+ when '--server-name'
54
+ server_name = arg
55
+ when '--server-id'
56
+ server_id = arg
57
+ when '--help'
58
+ show_help = true
59
+ when '--verbose'
60
+ verbose = true
61
+ end
62
+ end
63
+
64
+ help if show_help
65
+
66
+ require 'json'
67
+ require 'rest_connection'
68
+
69
+ usage_exit if !(script_name || script_id || server_name || server_id)
70
+
71
+ # get script
72
+ if script_name
73
+ puts "Finding script: '%#{script_name}%'"
74
+ right_script = RightScript.find(:first) { |s| s.name =~ /#{script_name}/ }
75
+ puts "Found script, '#{right_script.name}'."
76
+ puts right_script.to_yaml if verbose
77
+ elsif script_id
78
+ right_script = RightScript.find(script_id.to_i)
79
+ else
80
+ usage_exit
81
+ end
82
+
83
+ # get server
84
+ if server_name
85
+ puts "Finding server: '%#{server_name}%'"
86
+ server = Server.find(:first) { |s| s.nickname =~ /#{server_name}/ }
87
+ puts "Found server, '#{server.nickname}'."
88
+ puts server.to_yaml if verbose
89
+ elsif server_id
90
+ server = Server.find(server_id.to_i)
91
+ else
92
+ usage_exit
93
+ end
94
+
95
+ # run script on server
96
+ puts "Running RightScript, '#{right_script.name}' on server, '#{server.nickname}'."
97
+ state = server.run_executable(right_script)
98
+ state.wait_for_completed
@@ -0,0 +1,69 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # rs-search-tags
4
+
5
+ require 'rubygems'
6
+ require 'getoptlong'
7
+
8
+ def usage
9
+ puts("usage: rs-search-tags [options] --resource <taggable_resource> <tag>")
10
+ end
11
+
12
+ def usage_exit
13
+ usage; exit
14
+ end
15
+
16
+ def help
17
+ usage
18
+ puts ''
19
+ puts 'Searches for machine tags.'
20
+ puts ''
21
+ puts "examples: rs-search-tags --resource Ec2Instance \"foo:bar=foobar\""
22
+ puts ''
23
+ exit
24
+ end
25
+
26
+ json = false
27
+ xml = false
28
+ verbose = false
29
+ resource = false
30
+
31
+ opts = GetoptLong.new(
32
+ [ '--resource', '-r', GetoptLong::REQUIRED_ARGUMENT ],
33
+ [ '--xml', '-x', GetoptLong::OPTIONAL_ARGUMENT ],
34
+ [ '--json', '-j', GetoptLong::OPTIONAL_ARGUMENT ],
35
+ [ '--verbose', '-v', GetoptLong::OPTIONAL_ARGUMENT ]
36
+ )
37
+
38
+ opts.each do |opt, arg|
39
+ case opt
40
+ when '--resource'
41
+ resource = arg
42
+ when '--json'
43
+ json = true
44
+ when '--xml'
45
+ xml = true
46
+ when '--verbose'
47
+ verbose = true
48
+ end
49
+ end
50
+
51
+ tag = ARGV[0] if ARGV[0]
52
+ usage_exit if !(tag || resource || ARGV[0])
53
+
54
+ require 'json'
55
+ require 'rest_connection'
56
+
57
+ tags_search = Array.new
58
+ tags_search.push(tag)
59
+ #puts Gem.datadir('rest_connection')
60
+
61
+ servers = Tag.search(resource, ["#{tag}"])
62
+
63
+ if json
64
+ puts servers.to_json
65
+ elsif xml
66
+ puts JSON.parse(servers.to_json).to_xml(:root => 'servers', :skip_instruct => true)
67
+ else
68
+ puts servers.to_yaml
69
+ end