pawnee 0.0.9 → 0.1.0

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.
data/docs/TODO.md CHANGED
@@ -9,6 +9,7 @@ TODO: Need to make a clear way for pawnee gems (and recipes) to provide actions
9
9
  TODO: Run actions in threads (across multiple servers)
10
10
  TODO: Test to make sure arguments work directly as well (they probably don't right now)
11
11
  TODO: System to check for and register updates/modifications
12
+ TODO: Add apt-get update to package stuff
12
13
 
13
14
 
14
15
  def setup
@@ -2,6 +2,19 @@ require 'pawnee/actions/base_model'
2
2
 
3
3
  module Pawnee
4
4
  module Actions
5
+ # Adds the user (specified by login) to the group
6
+ def add_user_to_group(login, group)
7
+ user = self.user(login)
8
+ user.groups << group
9
+ user.groups = user.groups.sort.uniq
10
+ user.save
11
+ end
12
+
13
+ # Return the user object for the login
14
+ def user(login)
15
+ return User.new(self, {:login => login})
16
+ end
17
+
5
18
  def create_user(attributes)
6
19
  User.new(self, attributes).save
7
20
  end
@@ -61,7 +74,7 @@ module Pawnee
61
74
  if exit_code == 0
62
75
  # The login exists, load in more data
63
76
  @gid = exec("id -g #{login}").strip
64
- @groups = exec("groups #{login}").gsub(/^[^:]+[:]/, '').strip.split(/ /)
77
+ @groups = exec("groups #{login}").gsub(/^[^:]+[:]/, '').strip.split(/ /).sort
65
78
  self.new_record = false
66
79
 
67
80
  # Reject any ones we just changed, so its as if we did a find with these
@@ -142,18 +142,18 @@ module Pawnee
142
142
  # role.
143
143
  next unless server.is_a?(String) || server.is_a?(Net::SSH::Connection::Session) || (server['roles'] && server['roles'].include?(self.class.class_role))
144
144
 
145
- # Set the server for this call
146
- self.server = server.is_a?(String) ? server : server['domain']
147
-
148
145
  # Setup the connection to the server
149
146
  if server.is_a?(Net::SSH::Connection::Session)
150
147
  self.destination_connection = server
148
+ self.server = server.host
151
149
  elsif server.is_a?(String)
152
150
  # Server name is a string, asume ubuntu
153
151
  self.destination_connection = Net::SSH.start(server, 'ubuntu')
152
+ self.server = server
154
153
  else
155
154
  # Server is a hash
156
155
  self.destination_connection = Net::SSH.start(server['domain'], server['user'] || 'ubuntu')
156
+ self.server = server['domain']
157
157
  end
158
158
 
159
159
 
@@ -165,7 +165,9 @@ module Pawnee
165
165
 
166
166
  # Close the connection
167
167
  if self.destination_connection
168
- self.destination_connection.close
168
+ # Close the conection only if we created it. If it was passed in as a connection
169
+ # then the creator is responsible for closing it
170
+ self.destination_connection.close unless server.is_a?(Net::SSH::Connection::Session)
169
171
  self.destination_connection = nil
170
172
  end
171
173
  end
@@ -1,3 +1,3 @@
1
1
  module Pawnee
2
- VERSION = "0.0.9"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1 +1 @@
1
- {"active":{"default":"21e9da4d-756c-4cf9-8cae-caf4f70820f7"}}
1
+ {"active":{"default":"9a7fbb28-386f-478a-b11c-6ce30056d085"}}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pawnee
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -307,7 +307,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
307
307
  version: '0'
308
308
  segments:
309
309
  - 0
310
- hash: 1438096213786121322
310
+ hash: -3847734814061536168
311
311
  required_rubygems_version: !ruby/object:Gem::Requirement
312
312
  none: false
313
313
  requirements:
@@ -316,7 +316,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
316
316
  version: '0'
317
317
  segments:
318
318
  - 0
319
- hash: 1438096213786121322
319
+ hash: -3847734814061536168
320
320
  requirements: []
321
321
  rubyforge_project:
322
322
  rubygems_version: 1.8.22