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,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