knife-opc 0.3.2 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,19 +1,59 @@
1
- require 'chef/org'
1
+ require_relative "../org"
2
2
 
3
3
  class Chef
4
4
  class Org
5
5
  module GroupOperations
6
+ def group(groupname)
7
+ @group ||= {}
8
+ @group[groupname] ||= chef_rest.get_rest "organizations/#{name}/groups/#{groupname}"
9
+ end
10
+
11
+ def user_member_of_group?(username, groupname)
12
+ group = group(groupname)
13
+ group["actors"].include? username
14
+ end
15
+
6
16
  def add_user_to_group(groupname, username)
7
- group = chef_rest.get_rest "organizations/#{name}/groups/#{groupname}"
17
+ group = group(groupname)
8
18
  body_hash = {
9
- :groupname => "#{groupname}",
10
- :actors => {
19
+ groupname: "#{groupname}",
20
+ actors: {
11
21
  "users" => group["actors"].concat([username]),
12
- "groups" => group["groups"]
13
- }
22
+ "groups" => group["groups"],
23
+ },
14
24
  }
15
25
  chef_rest.put_rest "organizations/#{name}/groups/#{groupname}", body_hash
16
26
  end
27
+
28
+ def remove_user_from_group(groupname, username)
29
+ group = group(groupname)
30
+ group["actors"].delete(username)
31
+ body_hash = {
32
+ groupname: "#{groupname}",
33
+ actors: {
34
+ "users" => group["actors"],
35
+ "groups" => group["groups"],
36
+ },
37
+ }
38
+ chef_rest.put_rest "organizations/#{name}/groups/#{groupname}", body_hash
39
+ end
40
+
41
+ def actor_delete_would_leave_admins_empty?
42
+ admins = group("admins")
43
+ if admins["groups"].empty?
44
+ # exclude 'pivotal' but don't mutate the group since we're caching it
45
+ if admins["actors"].include? "pivotal"
46
+ admins["actors"].length <= 2
47
+ else
48
+ admins["actors"].length <= 1
49
+ end
50
+ else
51
+ # We don't check recursively. If the admins group contains a group,
52
+ # and the user is the only member of that group,
53
+ # we'll still turn up a 'safe to delete'.
54
+ false
55
+ end
56
+ end
17
57
  end
18
58
  include Chef::Org::GroupOperations
19
59
  end
@@ -1,3 +1,3 @@
1
1
  module KnifeOPC
2
- VERSION = "0.3.2"
2
+ VERSION = "0.4.7".freeze
3
3
  end
metadata CHANGED
@@ -1,81 +1,22 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-opc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Danna
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-25 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: rake
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: rspec
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '0'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: chef
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: sdoc
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- description: Knife Tools for Opscode Chef Server
70
- email: steve@opscode.com
11
+ date: 2020-09-28 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Knife Tools for Chef Server
14
+ email: steve@chef.io
71
15
  executables: []
72
16
  extensions: []
73
- extra_rdoc_files:
74
- - README.md
75
- - LICENSE
17
+ extra_rdoc_files: []
76
18
  files:
77
19
  - LICENSE
78
- - README.md
79
20
  - lib/chef/knife/opc_org_create.rb
80
21
  - lib/chef/knife/opc_org_delete.rb
81
22
  - lib/chef/knife/opc_org_edit.rb
@@ -93,8 +34,9 @@ files:
93
34
  - lib/chef/org.rb
94
35
  - lib/chef/org/group_operations.rb
95
36
  - lib/knife-opc/version.rb
96
- homepage: http://wiki.opscode.com/display/chef
97
- licenses: []
37
+ homepage: https://github.com/knife-opc
38
+ licenses:
39
+ - Apache-2.0
98
40
  metadata: {}
99
41
  post_install_message:
100
42
  rdoc_options: []
@@ -111,10 +53,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
111
53
  - !ruby/object:Gem::Version
112
54
  version: '0'
113
55
  requirements: []
114
- rubyforge_project:
115
- rubygems_version: 2.4.4
56
+ rubygems_version: 3.0.3
116
57
  signing_key:
117
58
  specification_version: 4
118
- summary: Knife Tools for Opscode Chef Server
59
+ summary: Knife Tools for Chef Server
119
60
  test_files: []
120
- has_rdoc:
data/README.md DELETED
@@ -1,183 +0,0 @@
1
- # knife OPC #
2
-
3
- * Documentation: http://docs.opscode.com/
4
- * Tickets/Issues: http://tickets.opscode.com
5
- * IRC: [#chef](irc://irc.freenode.net/chef) and [#chef-hacking](irc://irc.freenode.net/chef-hacking) on Freenode
6
- * Mailing list: http://lists.opscode.com
7
-
8
- # Description
9
-
10
- This knife plugin supports basic organization and user operations in
11
- Enterprise Chef (formerly Opscode Private Chef) and Chef Server 12.
12
-
13
- # Installation
14
-
15
- This knife plugin is packaged as a gem. To install it, run:
16
-
17
- gem install knife-opc
18
-
19
- If you are using ChefDK, run:
20
-
21
- chef gem install knife-opc
22
-
23
- ## Development version
24
-
25
- To install the latest development version:
26
-
27
- git clone https://github.com/opscode/knife-opc.git
28
- cd knife-opc
29
- gem build knife-opc.gemspec
30
- gem install knife-opc-0.3.2.gem
31
-
32
- # Configuration
33
-
34
- ## knife.rb
35
- Unlike other knife subcommands the subcommands in the knife-opc
36
- plugin make API calls against the root of your OPC installations API
37
- endpoint.
38
-
39
- Typically the chef_server_url for your OPC installation may look like
40
- this:
41
-
42
- chef_server_url https://chef.yourdomain.com/organizations/ORGNAME
43
-
44
- To configure knife-opc, set the `chef_server_root` option to the root
45
- of your OPC installation:
46
-
47
- chef_server_root https://chef.yourdomain.com/
48
-
49
- Note that most users in an OPC installation lack the permissions to
50
- run most of the commands from this plugin. On Chef Server 12, the
51
- majority of the commands provided by this plugin can be accessed via
52
- `chef-server-ctl` wrapper commands that properly configure knife-opc
53
- for administrative action. We recommend you use the wrapper commands
54
- whenever possible
55
-
56
- When using knife-opc directly, many of the commands require special
57
- permissions. For instance, in order to use commands such as `knife opc
58
- org create`, you must authenticate as the 'pivotal' user.
59
-
60
- Note that the key for the pivotal user is in /etc/opscode on any node
61
- in your Chef Server cluster. We recommend that you only use the
62
- pivotal user from a Chef Server itself and not copy this key off the
63
- machine. In that case, you should run knife opc on the **Frontend
64
- server** as root, with a `knife.rb` in root's home directory.
65
-
66
- current_dir = File.dirname(__FILE__)
67
- log_level :info
68
- log_location STDOUT
69
- node_name "pivotal"
70
- client_key "/etc/opscode/pivotal.pem"
71
- chef_server_root "https://chef.yourdomain.com/"
72
-
73
- # Subcommands
74
-
75
- ## knife opc user list (options)
76
-
77
- *Options*
78
-
79
- * `-w`, `--with-uri`:
80
- Show corresponding URIs
81
-
82
- Show a list of all users in your OPC installation.
83
-
84
- ## knife opc user show USERNAME (options)
85
-
86
- * `-l`, `--with-orgs`:
87
- Show the organizations of which the user is a member.
88
-
89
- Shows the details of a user in your OPC installation.
90
-
91
- ## knife opc user create USERNAME FIRST_NAME [MIDDLE_NAME] LAST_NAME EMAIL PASSWORD (options)
92
-
93
- * `-f FILENAME`, `--filename FILENAME`:
94
- Write private key to FILENAME rather than STDOUT.
95
-
96
- Creates a new user in your OPC installation. The user's private key
97
- will be returned in response. Without this key, the user will need to
98
- log into the WebUI and regenerate their key before they can use knife.
99
-
100
- ## knife opc user delete USERNAME [-d]
101
-
102
- Deletes the given OPC user.
103
-
104
- ## knife opc user edit USERNAME
105
-
106
- Will open $EDITOR. When finished, Knife will update the given OPC user.
107
-
108
- ## knife opc user password USERNAME [PASSWORD | --enable_external_auth]
109
-
110
- Command for managing password and authentication for a user.
111
-
112
- The last argument should either be a string you want the password to or you can pass --enable_external_auth instead of a password to enable external authentication for this user.
113
-
114
- ## knife opc org list
115
-
116
- * `-w`, `--with-uri`:
117
- Show corresponding URIs
118
-
119
- * `-a`, `--all-orgs`:
120
- Display hidden orgs
121
-
122
- Show a list of all organizations in your OPC installation.
123
-
124
- ## knife opc org show ORG_NAME
125
-
126
- Shows description of given ORG_NAME.
127
-
128
- ## knife opc org create ORG_NAME ORG_FULL_NAME
129
-
130
- * `-f FILENAME`, `--filename FILENAME`:
131
- Write private key to FILENAME rather than STDOUT.
132
-
133
- * `-a USERNAME`, `--association_user USERNAME`,
134
- Associate USERNAME with the organization after creation.
135
-
136
- Creates a new OPC Organization. The private key for the organization's
137
- validator client is returned.
138
-
139
- ## knife opc org delete ORG_NAME
140
-
141
- Deletes the given OPC organization.
142
-
143
- ## knife opc org user add ORGNAME USERNAME
144
-
145
- Adds a user to an organization. Requires that the named organization
146
- and user both exist.
147
-
148
- ## knife opc org user remove ORGNAME USERNAME
149
-
150
- Removes a user from an organization. Requires that the named
151
- organization and user both exist, and that the user is currently
152
- associated with the organization.
153
-
154
- # KNOWN ISSUES
155
-
156
- * Attempting to delete and immediately recreate an organization will
157
- result in an error (a 500 or a 409 Conflict depending on the server
158
- version). This is because of a server-side cache that must be
159
- cleared. Restarting the frontend services before recreating the org
160
- is necessary to avoid the error.
161
-
162
- # TODO
163
-
164
- * `--with-users` option for `org show` subcommand.
165
-
166
- ## License ##
167
-
168
- | | |
169
- |:---------------------|:-----------------------------------------|
170
- | **Copyright:** | Copyright (c) 2011-2014 Opscode, Inc.
171
- | **License:** | Apache License, Version 2.0
172
-
173
- Licensed under the Apache License, Version 2.0 (the "License");
174
- you may not use this file except in compliance with the License.
175
- You may obtain a copy of the License at
176
-
177
- http://www.apache.org/licenses/LICENSE-2.0
178
-
179
- Unless required by applicable law or agreed to in writing, software
180
- distributed under the License is distributed on an "AS IS" BASIS,
181
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
182
- See the License for the specific language governing permissions and
183
- limitations under the License.