right_link 5.9.2 → 5.9.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -68,11 +68,11 @@ module RightScale
68
68
  recipe_name = File.basename(path)
69
69
  @recipes[recipe_name] = script.nickname
70
70
  recipe_content = <<-EOS
71
- right_script '#{script.nickname.gsub("'", "\\\\'")}' do
72
- parameters(node["#{script.nickname}"]["parameters"])
71
+ right_script #{script.nickname.inspect} do
72
+ parameters(node[#{script.nickname.inspect}]["parameters"])
73
73
  cache_dir '#{cache_dir(script)}'
74
74
  source_file '#{path}'
75
- display_version '#{script.display_version.to_s.strip.gsub("'", "\\\\'")}'
75
+ display_version #{script.display_version.to_s.strip.inspect}
76
76
  end
77
77
  EOS
78
78
  File.open(path, 'w') { |f| f.puts script.source }
@@ -116,10 +116,11 @@ module Yum
116
116
  arch = Yum::execute("uname -i").strip
117
117
 
118
118
  major_ver = ver.strip.split(".").first
119
- repo_path = "#{major_ver}/#{opts[:repo_subpath]}/#{arch}"
120
119
 
121
120
  opts = { :enabled => true, :gpgkey_file => RPM_GPG_KEY_CentOS + major_ver, :frozen_date => "latest"}
122
121
  opts.merge!(params)
122
+ repo_path = "#{major_ver}/#{opts[:repo_subpath]}/#{arch}"
123
+
123
124
  raise "missing parameters to generate file!" unless opts[:repo_filename] && opts[:repo_name] && opts[:repo_subpath] &&
124
125
  opts[:base_urls] && opts[:frozen_date] && opts[:enabled] && opts[:gpgkey_file]
125
126
  # Old CentOS versions 5.0 and 5.1 were not versioned...so we just point to the base of the repo instead.
@@ -1,4 +1,8 @@
1
1
  module RightLink
2
- VERSION = "5.9.2"
2
+ module_function
3
+
4
+ def version
5
+ Gem.loaded_specs['right_link'].version.to_s
6
+ end
3
7
  end
4
8
 
@@ -100,7 +100,7 @@ module RightScale
100
100
  cmd[:name] = options[:bundle_type] == :right_script ? 'run_right_script' : 'run_recipe'
101
101
  AgentConfig.cfg_dir = options[:cfg_dir]
102
102
 
103
- exit_code = true
103
+ exit_code = true
104
104
  callback ||= lambda do |r|
105
105
  response = serialize_operation_result(r) rescue nil
106
106
  if r == 'OK'
@@ -120,7 +120,7 @@ module RightScale
120
120
  rescue Exception => e
121
121
  fail(e.message)
122
122
  end
123
- exit_code
123
+ exit_code
124
124
  rescue SystemExit => e
125
125
  raise e
126
126
  rescue Exception => e
@@ -257,7 +257,7 @@ protected
257
257
  end
258
258
  result
259
259
  end
260
-
260
+
261
261
  # Version information
262
262
  #
263
263
  # === Return
@@ -1,3 +1,8 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require 'right_link/version'
4
+ require 'right_agent/scripts/usage'
5
+
1
6
  module RightScale
2
7
  module CommandHelper
3
8
  def check_privileges
@@ -55,7 +60,7 @@ module RightScale
55
60
  #
56
61
  # === Return
57
62
  # R.I.P. does not return
58
- def fail(reason=nil)
63
+ def fail(reason=nil, print_usage=false)
59
64
  case reason
60
65
  when Errno::EACCES
61
66
  STDERR.puts reason.message
@@ -63,7 +68,7 @@ module RightScale
63
68
  code = 2
64
69
  when Exception
65
70
  STDERR.puts reason.message
66
- code = reason.respond_to(:code) ? reason.code : 50
71
+ code = reason.respond_to?(:code) ? reason.code : 50
67
72
  when String
68
73
  STDERR.puts reason
69
74
  code = 50
@@ -73,6 +78,7 @@ module RightScale
73
78
  code = 1
74
79
  end
75
80
 
81
+ puts usage if print_usage
76
82
  exit(code)
77
83
  end
78
84
 
@@ -86,7 +92,7 @@ module RightScale
86
92
  STDOUT.puts(usage)
87
93
  succeed
88
94
  rescue Trollop::CommandlineError => e
89
- puts e.message + "\nUse --help for additional information"
95
+ STDERR.puts e.message + "\nUse --help for additional information"
90
96
  fail
91
97
  rescue SystemExit => e
92
98
  raise e
@@ -94,8 +100,7 @@ module RightScale
94
100
  end
95
101
 
96
102
  def right_link_version
97
- gemspec = eval(File.read(File.join(File.dirname(__FILE__), '..', 'right_link.gemspec')))
98
- gemspec.version
103
+ RightLink.version
99
104
  end
100
105
  end
101
106
  end
@@ -17,7 +17,7 @@
17
17
  #
18
18
  # Options:
19
19
  # --log-level, -l LVL Set log level(for Chef/RightScript by default)
20
- # --agent Set/get log level of RightLink agent
20
+ # --agent, -a Set/get log level of RightLink agent
21
21
  # --verbose, -v Display debug information
22
22
  # --help: Display help
23
23
  # --version: Display version information
@@ -97,7 +97,7 @@ module RightScale
97
97
  options
98
98
  end
99
99
  end
100
-
100
+
101
101
  protected
102
102
 
103
103
  # Writes to STDOUT (and a placeholder for spec mocking).
@@ -41,6 +41,7 @@ module RightScale
41
41
  # === Return
42
42
  # true:: Always return true
43
43
  def run(options)
44
+ check_privileges
44
45
  AgentConfig.root_dir = AgentConfig.right_link_root_dirs
45
46
 
46
47
  if RightScale::Platform.windows?
@@ -81,10 +82,6 @@ module RightScale
81
82
  res = system("/etc/init.d/rightlink #{action} > /dev/null")
82
83
  end
83
84
  true
84
- rescue Errno::EACCES => e
85
- STDERR.puts e.message
86
- STDERR.puts "Try elevating privilege (sudo/runas) before invoking this command."
87
- exit(2)
88
85
  end
89
86
 
90
87
  # Create options hash from command line arguments
@@ -149,7 +146,7 @@ module RightScale
149
146
  rescue Errno::ESRCH
150
147
  false
151
148
  end
152
-
149
+
153
150
  # Version information
154
151
  #
155
152
  # === Return
@@ -25,7 +25,6 @@
25
25
  # --help: Display help
26
26
  # --version: Display version information
27
27
  #
28
- # No options prints the current RightLink agent log level
29
28
  #
30
29
 
31
30
  require 'rubygems'
@@ -0,0 +1,98 @@
1
+ # === Synopsis:
2
+ # RightScale run state reporter (rs_state) - (c) 2013 RightScale Inc
3
+ #
4
+ # Report current run state of an instance
5
+ #
6
+ # === Examples:
7
+ # Print the run state:
8
+ # rs_state --type=run
9
+ # Possible values: booting, booting:reboot, operational, stranded,
10
+ # shutting-down:reboot, shutting-down:terminate, shutting-down:stop
11
+ #
12
+ # Print the agent state:
13
+ # rs_state --type=agent
14
+ # Possible values: pending, booting, operational, stranded, decommissioning, decommissioned
15
+ #
16
+ # === Usage
17
+ # rs_state --type <type>
18
+ #
19
+ # Options:
20
+ # --type, -t TYPE Display desired state(run or agent)
21
+ # --help: Display help
22
+ # --version: Display version information
23
+ #
24
+ #
25
+ require 'trollop'
26
+ require 'right_agent'
27
+ require File.expand_path(File.join(File.dirname(__FILE__), 'command_helper'))
28
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'instance', 'json_utilities'))
29
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'instance', 'agent_config'))
30
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'instance', 'instance_state'))
31
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib', 'instance', 'shutdown_request'))
32
+
33
+ module RightScale
34
+
35
+ class RightLinkStateController
36
+ include CommandHelper
37
+
38
+ def self.run
39
+ m = RightLinkStateController.new
40
+ m.control(m.parse_args)
41
+ end
42
+
43
+ def silence_stdout
44
+ save_stdout = STDOUT.dup
45
+ STDOUT.reopen(RUBY_PLATFORM =~ /mswin/ ? 'NUL:' : '/dev/null')
46
+ STDOUT.sync = true
47
+ yield
48
+ ensure
49
+ STDOUT.reopen(save_stdout)
50
+ end
51
+
52
+ def control(options)
53
+ silence_stdout { InstanceState.init(nil, true) } # RightScale::Log will log to STDOUT if no log file is provided
54
+ result = case options[:type]
55
+ when 'run'
56
+ case InstanceState.value
57
+ when 'booting'
58
+ "booting#{InstanceState.reboot? ? ':reboot' : ''}"
59
+ when 'operational'
60
+ "operational"
61
+ when 'stranded'
62
+ "stranded"
63
+ when 'decommissioning', 'decommissioned'
64
+ decom_reason = "unknown"
65
+ decom_reason = InstanceState.decommission_type if ShutdownRequest::LEVELS.include?(InstanceState.decommission_type)
66
+ "shutting-down:#{decom_reason}"
67
+ end
68
+ when 'agent'
69
+ InstanceState.value
70
+ end
71
+ fail("Failed to get #{options[:type]} state") unless result
72
+ puts result
73
+ rescue Exception => e
74
+ fail(e)
75
+ end
76
+
77
+ def parse_args
78
+ parser = Trollop::Parser.new do
79
+ opt :type, "", :type => :string
80
+ version ""
81
+ end
82
+ parse do
83
+ options = parser.parse
84
+ fail("No type specified on the command line.") unless options[:type]
85
+ fail("Unknown state type '#{options[:type]}'. Use 'run' or 'agent'") unless ['run', 'agent'].include?(options[:type])
86
+ options
87
+ end
88
+ end
89
+
90
+ def usage
91
+ Usage.scan(__FILE__)
92
+ end
93
+
94
+ def version
95
+ "rs_state #{right_link_version} - RightLink's run state reporter(c) 2013 RightScale"
96
+ end
97
+ end
98
+ end
@@ -357,5 +357,9 @@ module RightScale
357
357
  def unset_proxy_variables
358
358
  runshell("unset http_proxy ; unset HTTP_PROXY ; unset no_proxy; unset NO_PROXY")
359
359
  end
360
+
361
+ def usage
362
+ Usage.scan(__FILE__)
363
+ end
360
364
  end
361
365
  end
data/scripts/tagger.rb CHANGED
@@ -2,7 +2,7 @@
2
2
  # RightScale Tagger (rs_tag) - (c) 2009-2013 RightScale Inc
3
3
  #
4
4
  # Tagger allows listing, adding and removing tags on the current instance and
5
- # querying for all instances with a given set of tags
5
+ # querying for instances with a given set of tags
6
6
  #
7
7
  # === Examples:
8
8
  # Retrieve all tags:
@@ -17,9 +17,9 @@
17
17
  # rs_tag --remove a_tag
18
18
  # rs_tag -r a_tag
19
19
  #
20
- # Retrieve all instances with any of the tags in a set:
21
- # rs_tag --query "a_tag b_tag"
22
- # rs_tag -q "a_tag b_tag"
20
+ # Retrieve instances with any of the tags in a set:
21
+ # rs_tag --query "a_tag b:machine=tag"
22
+ # rs_tag -q "a_tag b:machine=tag"
23
23
  #
24
24
  # === Usage
25
25
  # rs_tag (--list, -l | --add, -a TAG | --remove, -r TAG | --query, -q TAG_LIST)
@@ -28,8 +28,8 @@
28
28
  # --list, -l List current server tags
29
29
  # --add, -a TAG Add tag named TAG
30
30
  # --remove, -r TAG Remove tag named TAG
31
- # --query, -q TAG_LIST Query for all instances that have any of the tags in TAG_LIST
32
- # with the TAG_LIST being quoted if it contains spaces
31
+ # --query, -q TAG_LIST Query for instances that have any of the tags in TAG_LIST
32
+ # with the TAG_LIST being quoted if it contains spaces used as delimiter
33
33
  # --die, -e Exit with error if query/list fails
34
34
  # --format, -f FMT Output format: json, yaml, text
35
35
  # --verbose, -v Display debug information
@@ -228,11 +228,13 @@ protected
228
228
  STDERR.puts(message)
229
229
  end
230
230
 
231
- # Splits the TAG_LIST parameter on space unless an equals is present in
232
- # order to support both the "x:y a:b" and the "x:y=a b c" (tag value
233
- # contains space(s)) cases. the "x:y=a b c:d=x y" case is ambiguous and will
234
- # be interpreted as follows:
235
- # namespace=x, name=y, value=a b c:d=x y
231
+ # Splits the TAG_LIST parameter on tags
232
+ # ATTENTION: Tag value should not contains space(s)).
233
+ # The "x:y=a b c:d=x y" case will be interpreted as 4 tags:
234
+ # 1. namespace=x, predicate=y, value=a
235
+ # 2. b
236
+ # 3. namespace=c, predicate=d, value=x
237
+ # 4. y
236
238
  #
237
239
  # === Parameters
238
240
  # @param [String] tag_list to parse
@@ -240,12 +242,7 @@ protected
240
242
  # === Return
241
243
  # @return [Array] tags to query
242
244
  def parse_tag_list(tag_list)
243
- tag_list = tag_list.to_s
244
- if tag_list.index('=')
245
- [tag_list.strip]
246
- else
247
- tag_list.split
248
- end
245
+ tag_list = tag_list.to_s.strip.split
249
246
  end
250
247
 
251
248
  # Format output for display to user
data/scripts/thunker.rb CHANGED
@@ -54,10 +54,10 @@ module RightScale
54
54
  # === Return
55
55
  # true:: Always return true
56
56
  def run(options)
57
- check_privileges
58
57
  @log_sink = StringIO.new
59
58
  @log = Logger.new(@log_sink)
60
59
  RightScale::Log.force_logger(@log)
60
+ check_privileges
61
61
 
62
62
  username = options.delete(:username)
63
63
  email = options.delete(:email)
@@ -86,14 +86,11 @@ module RightScale
86
86
  # Create user just-in-time; idempotent if user already exists
87
87
  # Note that username == chosen here, they just get used in two different contexts
88
88
  username = LoginUserManager.create_user(username, uuid, superuser ? true : false) do |chosen|
89
- if :shell == access
90
- puts "Creating your user profile (#{chosen}) on this machine."
91
- end
89
+ puts "Creating your user profile (#{chosen}) on this machine." if (:shell == access)
92
90
  end
93
91
 
94
92
  create_audit_entry(email, username, access, orig, client_ip)
95
93
  chown_tty(username)
96
- create_profile(access, username, profile, force) if profile
97
94
 
98
95
  # Note that when execing sudo we use the N-argument form of Kernel.exec,
99
96
  # which does not invoke a shell, but rather directly invokes the command specified
@@ -174,13 +171,19 @@ module RightScale
174
171
  # R.I.P. does not return
175
172
  def fail(reason=nil, options={})
176
173
  case reason
174
+ when Errno::EACCES
175
+ STDERR.puts reason.message
176
+ STDERR.puts "Try elevating privilege (sudo/runas) before invoking this command."
177
+ code = 2
177
178
  when Exception
178
179
  STDOUT.puts "Unexpected #{reason.class.name}: #{reason.message}"
179
180
  STDOUT.puts "We apologize for the inconvenience. You may try connecting as root"
180
181
  STDOUT.puts "to work around this problem, if you have sufficient privilege."
181
- STDERR.puts
182
- STDERR.puts("Debugging information:")
183
- STDERR.puts(@log_sink.string)
182
+ unless @log_sink.string.empty?
183
+ STDERR.puts
184
+ STDERR.puts("Debugging information:")
185
+ STDERR.puts(@log_sink.string)
186
+ end
184
187
  code = 50
185
188
  when String
186
189
  STDOUT.puts reason
@@ -254,25 +257,6 @@ module RightScale
254
257
  false
255
258
  end
256
259
 
257
- # Download an archive from given path; extracts files and moves
258
- # them to username's home directory.
259
- #
260
- # === Parameters
261
- # username(String):: account's username
262
- # custom_data(String):: custom data, e.g. personal tarball URL
263
- # force(Boolean):: rewrite existing files if true; otherwise skip them
264
- #
265
- # === Return
266
- # extracted(Boolean):: true if profile downloaded and copied; false
267
- # if profile has been created earlier or error occured
268
- def create_profile(access, username, custom_data, force = false)
269
- home_dir = Etc.getpwnam(username).dir
270
-
271
- LoginUserManager.setup_profile(username, home_dir, custom_data, force) do |msg|
272
- puts msg if [:command, :shell].include?(access)
273
- end
274
- end
275
-
276
260
  # Display the Message of the Day if it exists.
277
261
  def display_motd
278
262
  if File.exist?(MOTD)
@@ -307,7 +291,7 @@ module RightScale
307
291
  def usage
308
292
  Usage.scan(__FILE__)
309
293
  end
310
-
294
+
311
295
  end # Thunker
312
296
 
313
297
  end # RightScale
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_link
3
3
  version: !ruby/object:Gem::Version
4
- hash: 23
5
- prerelease: false
4
+ hash: 25
5
+ prerelease:
6
6
  segments:
7
7
  - 5
8
8
  - 9
9
- - 2
10
- version: 5.9.2
9
+ - 5
10
+ version: 5.9.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - RightScale
@@ -15,11 +15,12 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2013-10-07 00:00:00 -07:00
19
- default_executable:
18
+ date: 2013-12-31 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- version_requirements: &id001 !ruby/object:Gem::Requirement
21
+ name: right_agent
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
23
24
  none: false
24
25
  requirements:
25
26
  - - ~>
@@ -29,12 +30,12 @@ dependencies:
29
30
  - 0
30
31
  - 10
31
32
  version: "0.10"
32
- requirement: *id001
33
33
  type: :runtime
34
- name: right_agent
35
- prerelease: false
34
+ version_requirements: *id001
36
35
  - !ruby/object:Gem::Dependency
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
36
+ name: right_scraper
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
38
39
  none: false
39
40
  requirements:
40
41
  - - ~>
@@ -44,12 +45,12 @@ dependencies:
44
45
  - 3
45
46
  - 2
46
47
  version: "3.2"
47
- requirement: *id002
48
48
  type: :runtime
49
- name: right_scraper
50
- prerelease: false
49
+ version_requirements: *id002
51
50
  - !ruby/object:Gem::Dependency
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
51
+ name: right_popen
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
53
54
  none: false
54
55
  requirements:
55
56
  - - ~>
@@ -59,12 +60,12 @@ dependencies:
59
60
  - 1
60
61
  - 1
61
62
  version: "1.1"
62
- requirement: *id003
63
63
  type: :runtime
64
- name: right_popen
65
- prerelease: false
64
+ version_requirements: *id003
66
65
  - !ruby/object:Gem::Dependency
67
- version_requirements: &id004 !ruby/object:Gem::Requirement
66
+ name: right_http_connection
67
+ prerelease: false
68
+ requirement: &id004 !ruby/object:Gem::Requirement
68
69
  none: false
69
70
  requirements:
70
71
  - - ~>
@@ -74,12 +75,12 @@ dependencies:
74
75
  - 1
75
76
  - 3
76
77
  version: "1.3"
77
- requirement: *id004
78
78
  type: :runtime
79
- name: right_http_connection
80
- prerelease: false
79
+ version_requirements: *id004
81
80
  - !ruby/object:Gem::Dependency
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
81
+ name: right_support
82
+ prerelease: false
83
+ requirement: &id005 !ruby/object:Gem::Requirement
83
84
  none: false
84
85
  requirements:
85
86
  - - ~>
@@ -89,12 +90,12 @@ dependencies:
89
90
  - 2
90
91
  - 0
91
92
  version: "2.0"
92
- requirement: *id005
93
93
  type: :runtime
94
- name: right_support
95
- prerelease: false
94
+ version_requirements: *id005
96
95
  - !ruby/object:Gem::Dependency
97
- version_requirements: &id006 !ruby/object:Gem::Requirement
96
+ name: chef
97
+ prerelease: false
98
+ requirement: &id006 !ruby/object:Gem::Requirement
98
99
  none: false
99
100
  requirements:
100
101
  - - ">="
@@ -105,12 +106,12 @@ dependencies:
105
106
  - 10
106
107
  - 10
107
108
  version: 0.10.10
108
- requirement: *id006
109
109
  type: :runtime
110
- name: chef
111
- prerelease: false
110
+ version_requirements: *id006
112
111
  - !ruby/object:Gem::Dependency
113
- version_requirements: &id007 !ruby/object:Gem::Requirement
112
+ name: encryptor
113
+ prerelease: false
114
+ requirement: &id007 !ruby/object:Gem::Requirement
114
115
  none: false
115
116
  requirements:
116
117
  - - ~>
@@ -120,12 +121,12 @@ dependencies:
120
121
  - 1
121
122
  - 1
122
123
  version: "1.1"
123
- requirement: *id007
124
124
  type: :runtime
125
- name: encryptor
126
- prerelease: false
125
+ version_requirements: *id007
127
126
  - !ruby/object:Gem::Dependency
128
- version_requirements: &id008 !ruby/object:Gem::Requirement
127
+ name: trollop
128
+ prerelease: false
129
+ requirement: &id008 !ruby/object:Gem::Requirement
129
130
  none: false
130
131
  requirements:
131
132
  - - ">="
@@ -134,12 +135,12 @@ dependencies:
134
135
  segments:
135
136
  - 0
136
137
  version: "0"
137
- requirement: *id008
138
138
  type: :runtime
139
- name: trollop
140
- prerelease: false
139
+ version_requirements: *id008
141
140
  - !ruby/object:Gem::Dependency
142
- version_requirements: &id009 !ruby/object:Gem::Requirement
141
+ name: extlib
142
+ prerelease: false
143
+ requirement: &id009 !ruby/object:Gem::Requirement
143
144
  none: false
144
145
  requirements:
145
146
  - - ~>
@@ -150,10 +151,8 @@ dependencies:
150
151
  - 9
151
152
  - 15
152
153
  version: 0.9.15
153
- requirement: *id009
154
154
  type: :runtime
155
- name: extlib
156
- prerelease: false
155
+ version_requirements: *id009
157
156
  description: A daemon that connects systems to the RightScale cloud management platform.
158
157
  email: support@rightscale.com
159
158
  executables:
@@ -171,6 +170,7 @@ executables:
171
170
  - rs_run_recipe
172
171
  - rs_run_right_script
173
172
  - rs_shutdown
173
+ - rs_state
174
174
  - rs_tag
175
175
  - rs_thunk
176
176
  - rstat
@@ -204,6 +204,7 @@ files:
204
204
  - bin/rs_run_recipe
205
205
  - bin/rs_run_right_script
206
206
  - bin/rs_shutdown
207
+ - bin/rs_state
207
208
  - bin/rs_tag
208
209
  - bin/rs_thunk
209
210
  - bin/rstat
@@ -301,7 +302,6 @@ files:
301
302
  - lib/clouds/clouds/google.rb
302
303
  - lib/clouds/clouds/none.rb
303
304
  - lib/clouds/clouds/openstack.rb
304
- - lib/clouds/clouds/rackspace-ng.rb
305
305
  - lib/clouds/clouds/rackspace.rb
306
306
  - lib/clouds/clouds/softlayer.rb
307
307
  - lib/clouds/metadata_formatter.rb
@@ -380,11 +380,11 @@ files:
380
380
  - scripts/reenroller.rb
381
381
  - scripts/server_importer.rb
382
382
  - scripts/shutdown_client.rb
383
+ - scripts/state_controller.rb
383
384
  - scripts/system_configurator.rb
384
385
  - scripts/tagger.rb
385
386
  - scripts/thunker.rb
386
387
  - lib/instance/cook/ca-bundle.crt
387
- has_rdoc: true
388
388
  homepage: https://github.com/rightscale/right_link
389
389
  licenses: []
390
390
 
@@ -416,7 +416,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
416
416
  requirements: []
417
417
 
418
418
  rubyforge_project:
419
- rubygems_version: 1.3.7
419
+ rubygems_version: 1.8.15
420
420
  signing_key:
421
421
  specification_version: 3
422
422
  summary: RightScale management agent.