knife-opc 0.3.1 → 0.3.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c54f906018c0289af53b226e2c727b05316d7804
4
- data.tar.gz: 80b121d10fbedf271168accbb16d4aa3e4d9bf6a
3
+ metadata.gz: 3257cb3b536d35a41ec3fccb5c73162012fa9953
4
+ data.tar.gz: a439aff11ffa9bde8fe771cc4d39800875c26ae0
5
5
  SHA512:
6
- metadata.gz: 2924964157951a54db7916efec203806267910954516e1081559684fb0d3d7e1f52a4cccc18b1bce664db08f2726e44ee190a9e7c53e3d2fa66f828fd6b549cb
7
- data.tar.gz: 5bf0cb7097e45c2c8665bf53cb2cce2249f8d422f850ca0bfcc73534868889a7b430b95ba864ce0b18e75d8d1958c70fe6f3b23edbe3487b8c2f256aaef6d3d4
6
+ metadata.gz: 3195effbdcb420a5a81d75dcbdede8345174b733e0b6a8cfe0e71cded805592b5c941a09848d4cbbf09e0429128a42702949b9ef1b25901f5184c00ac698a1c2
7
+ data.tar.gz: df351c0d42dadc75f675121a6e39bb4da13a5e7abca00dd0392f2aae521300f5959549ad8d10ef69321777397050349ac164c6cf29f664d9993b4e76059dc91a
data/README.md CHANGED
@@ -27,7 +27,7 @@ To install the latest development version:
27
27
  git clone https://github.com/opscode/knife-opc.git
28
28
  cd knife-opc
29
29
  gem build knife-opc.gemspec
30
- gem install knife-opc-0.1.1.gem
30
+ gem install knife-opc-0.3.2.gem
31
31
 
32
32
  # Configuration
33
33
 
@@ -15,17 +15,19 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcOrgDelete < Chef::Knife
21
22
  category "OPSCODE PRIVATE CHEF ORGANIZATION MANAGEMENT"
22
23
  banner "knife opc org delete ORG_NAME"
23
24
 
25
+ include Chef::Mixin::RootRestv0
26
+
24
27
  def run
25
28
  org_name = @name_args[0]
26
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
27
29
  ui.confirm "Do you want to delete the organization #{org_name}"
28
- ui.output @chef_rest.delete_rest("organizations/#{org_name}")
30
+ ui.output root_rest.delete("organizations/#{org_name}")
29
31
  end
30
32
  end
31
33
  end
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcOrgEdit < Chef::Knife
@@ -30,8 +31,9 @@ module Opc
30
31
  exit 1
31
32
  end
32
33
 
33
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
34
- original_org = @chef_rest.get_rest("organizations/#{org_name}")
34
+ include Chef::Mixin::RootRestv0
35
+
36
+ original_org = root_rest.get("organizations/#{org_name}")
35
37
  edited_org = edit_data(original_org)
36
38
 
37
39
  if original_org == edited_org
@@ -39,9 +41,8 @@ module Opc
39
41
  exit
40
42
  end
41
43
 
42
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
43
44
  ui.msg edited_org
44
- result = @chef_rest.put_rest("organizations/#{org_name}", edited_org)
45
+ root_rest.put("organizations/#{org_name}", edited_org)
45
46
  ui.msg("Saved #{org_name}.")
46
47
  end
47
48
  end
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcOrgList < Chef::Knife
@@ -31,10 +32,11 @@ module Opc
31
32
  :short => "-a",
32
33
  :description => "Show auto-generated hidden orgs in output"
33
34
 
35
+ include Chef::Mixin::RootRestv0
36
+
34
37
  def run
35
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
36
- results = @chef_rest.get_rest("organizations")
37
- unless config[:all_orgs]
38
+ results = root_rest.get("organizations")
39
+ unless config[:all_orgs]
38
40
  results = results.select { |k,v| !(k.length == 20 && k =~ /^[a-z]+$/) }
39
41
  end
40
42
  ui.output(ui.format_list_for_display(results))
@@ -15,16 +15,18 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcOrgShow < Chef::Knife
21
22
  category "OPSCODE PRIVATE CHEF ORGANIZATION MANAGEMENT"
22
23
  banner "knife opc org show ORGNAME"
23
24
 
25
+ include Chef::Mixin::RootRestv0
26
+
24
27
  def run
25
28
  org_name = @name_args[0]
26
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
27
- ui.output @chef_rest.get_rest("organizations/#{org_name}")
29
+ ui.output root_rest.get("organizations/#{org_name}")
28
30
  end
29
31
  end
30
32
  end
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserCreate < Chef::Knife
@@ -31,6 +32,8 @@ module Opc
31
32
  :short => '-o ORGNAME',
32
33
  :description => 'Associate new user to an organization matching ORGNAME'
33
34
 
35
+ include Chef::Mixin::RootRestv0
36
+
34
37
  def run
35
38
  case @name_args.count
36
39
  when 6
@@ -63,8 +66,7 @@ module Opc
63
66
  end
64
67
  end
65
68
 
66
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
67
- result = @chef_rest.post_rest("users/", user_hash)
69
+ result = root_rest.post("users/", user_hash)
68
70
  if config[:filename]
69
71
  File.open(config[:filename], "w") do |f|
70
72
  f.print(result['private_key'])
@@ -74,9 +76,9 @@ module Opc
74
76
  end
75
77
  if config[:orgname]
76
78
  request_body = {:user => username}
77
- response = @chef_rest.post_rest "organizations/#{config[:orgname]}/association_requests", request_body
79
+ response = root_rest.post("organizations/#{config[:orgname]}/association_requests", request_body)
78
80
  association_id = response["uri"].split("/").last
79
- @chef_rest.put_rest "users/#{username}/association_requests/#{association_id}", { :response => 'accept' }
81
+ root_rest.put("users/#{username}/association_requests/#{association_id}", {:response => 'accept'})
80
82
  end
81
83
  end
82
84
  end
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserDelete < Chef::Knife
@@ -26,18 +27,19 @@ module Opc
26
27
  :short => "-d",
27
28
  :description => "Don't disassociate the user first"
28
29
 
30
+ include Chef::Mixin::RootRestv0
31
+
29
32
  def run
30
33
  username = @name_args[0]
31
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
32
34
  ui.confirm "Do you want to delete the user #{username}"
33
35
  unless config[:no_disassociate_user]
34
- orgs = @chef_rest.get_rest("users/#{username}/organizations")
36
+ orgs = root_rest.get("users/#{username}/organizations")
35
37
  org_names = orgs.map {|o| o['organization']['name']}
36
38
  org_names.each do |org|
37
- ui.output @chef_rest.delete_rest("organizations/#{org}/users/#{username}")
39
+ ui.output root_rest.delete("organizations/#{org}/users/#{username}")
38
40
  end
39
41
  end
40
- ui.output @chef_rest.delete_rest("users/#{username}")
42
+ ui.output root_rest.delete("users/#{username}")
41
43
  end
42
44
  end
43
45
  end
@@ -15,12 +15,13 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserEdit < Chef::Knife
21
22
  category "OPSCODE PRIVATE CHEF ORGANIZATION MANAGEMENT"
22
23
  banner "knife opc user edit USERNAME"
23
-
24
+
24
25
  option :input,
25
26
  :long => '--input FILENAME',
26
27
  :short => '-i FILENAME',
@@ -31,6 +32,8 @@ module Opc
31
32
  :short => '-f FILENAME',
32
33
  :description => 'Write private key to FILENAME rather than STDOUT'
33
34
 
35
+ include Chef::Mixin::RootRestv0
36
+
34
37
  def run
35
38
  user_name = @name_args[0]
36
39
 
@@ -40,16 +43,14 @@ module Opc
40
43
  exit 1
41
44
  end
42
45
 
43
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
44
- original_user = @chef_rest.get_rest("users/#{user_name}")
46
+ original_user = root_rest.get("users/#{user_name}")
45
47
  if config[:input]
46
48
  edited_user = JSON.parse(IO.read(config[:input]))
47
49
  else
48
50
  edited_user = edit_data(original_user)
49
51
  end
50
52
  if original_user != edited_user
51
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
52
- result = @chef_rest.put_rest("users/#{user_name}", edited_user)
53
+ result = root_rest.put("users/#{user_name}", edited_user)
53
54
  ui.msg("Saved #{user_name}.")
54
55
  if ! result['private_key'].nil?
55
56
  if config[:filename]
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserList < Chef::Knife
@@ -26,9 +27,10 @@ module Opc
26
27
  :short => "-w",
27
28
  :description => "Show corresponding URIs"
28
29
 
30
+ include Chef::Mixin::RootRestv0
31
+
29
32
  def run
30
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
31
- results = @chef_rest.get_rest("users")
33
+ results = root_rest.get("users")
32
34
  ui.output(ui.format_list_for_display(results))
33
35
  end
34
36
  end
@@ -15,17 +15,20 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserPassword < Chef::Knife
21
22
  category "OPSCODE PRIVATE CHEF ORGANIZATION MANAGEMENT"
22
- banner "knife opc user password USERNAME [PASSWORD | --enable_external_auth]"
23
+ banner "knife opc user password USERNAME [PASSWORD | --enable-external-auth]"
23
24
 
24
25
  option :enable_external_auth,
25
26
  :long => "--enable-external-auth",
26
27
  :short => "-e",
27
28
  :description => "Enable external authentication for this user (such as LDAP)"
28
29
 
30
+ include Chef::Mixin::RootRestv0
31
+
29
32
  def run
30
33
  # check that correct number of args was passed, should be either
31
34
  # USERNAME PASSWORD or USERNAME --enable-external-auth
@@ -43,13 +46,11 @@ module Opc
43
46
  # note that this will be nil if config[:enable_external_auth] is true
44
47
  password = @name_args[1]
45
48
 
46
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
47
-
48
49
  # since the API does not pass back whether recovery_authentication_enabled is
49
50
  # true or false, there is no way of knowing if the user is using ldap or not,
50
51
  # so we will update the user every time, instead of checking if we are actually
51
52
  # changing anything before we PUT.
52
- user = @chef_rest.get_rest("users/#{user_name}")
53
+ user = root_rest.get("users/#{user_name}")
53
54
 
54
55
  user["password"] = password if not password.nil?
55
56
 
@@ -59,9 +60,8 @@ module Opc
59
60
  # wants to disable ldap and put user in recover (if they are using ldap).
60
61
  user["recovery_authentication_enabled"] = !config[:enable_external_auth]
61
62
 
62
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
63
63
  begin
64
- result = @chef_rest.put_rest("users/#{user_name}", user)
64
+ root_rest.put("users/#{user_name}", user)
65
65
  rescue => e
66
66
  raise e
67
67
  exit 1
@@ -15,6 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
  #
18
+ require 'chef/mixin/root_rest'
18
19
 
19
20
  module Opc
20
21
  class OpcUserShow < Chef::Knife
@@ -25,12 +26,13 @@ module Opc
25
26
  :long => "--with-orgs",
26
27
  :short => "-l"
27
28
 
29
+ include Chef::Mixin::RootRestv0
30
+
28
31
  def run
29
32
  user_name = @name_args[0]
30
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
31
- results = @chef_rest.get_rest("users/#{user_name}")
33
+ results = root_rest.get("users/#{user_name}")
32
34
  if config[:with_orgs]
33
- orgs = @chef_rest.get_rest("users/#{user_name}/organizations")
35
+ orgs = root_rest.get("users/#{user_name}/organizations")
34
36
  results["organizations"] = orgs.map {|o| o['organization']['name']}
35
37
  end
36
38
  ui.output results
@@ -0,0 +1,31 @@
1
+ #
2
+ # Author:: Steven Danna (<steve@chef.io>)
3
+ # Copyright:: Copyright 2011 Chef Software, Inc
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ require 'chef/server_api'
19
+ class Chef
20
+ module Mixin
21
+ module RootRestv0
22
+ def root_rest
23
+ # Use v0 API for now
24
+ # Rather than upgrade all of this code to move to v1, the goal is to remove the
25
+ # need for this plugin. See
26
+ # https://github.com/chef/chef/issues/3517
27
+ @root_rest ||= Chef::ServerAPI.new(Chef::Config[:chef_server_root], {:api_version => "0"})
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module KnifeOPC
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: knife-opc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
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-03-13 00:00:00.000000000 Z
11
+ date: 2015-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -79,7 +79,6 @@ files:
79
79
  - lib/chef/knife/opc_org_create.rb
80
80
  - lib/chef/knife/opc_org_delete.rb
81
81
  - lib/chef/knife/opc_org_edit.rb
82
- - lib/chef/knife/opc_org_edit.rc~
83
82
  - lib/chef/knife/opc_org_list.rb
84
83
  - lib/chef/knife/opc_org_show.rb
85
84
  - lib/chef/knife/opc_org_user_add.rb
@@ -90,9 +89,9 @@ files:
90
89
  - lib/chef/knife/opc_user_list.rb
91
90
  - lib/chef/knife/opc_user_password.rb
92
91
  - lib/chef/knife/opc_user_show.rb
92
+ - lib/chef/mixin/root_rest.rb
93
93
  - lib/chef/org.rb
94
94
  - lib/chef/org/group_operations.rb
95
- - lib/chef/org/group_operations.rb~
96
95
  - lib/knife-opc/version.rb
97
96
  homepage: http://wiki.opscode.com/display/chef
98
97
  licenses: []
@@ -1,47 +0,0 @@
1
- #
2
- # Author:: Steven Danna (<steve@opscode.com>)
3
- # Copyright:: Copyright 2011 Opscode, Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- module Opc
20
- class OpcUserEdit < Chef::Knife
21
- category "OPSCODE PRIVATE CHEF ORGANIZATION MANAGEMENT"
22
- banner "knife opc user edit USERNAME"
23
-
24
- def run
25
- user_name = @name_args[0]
26
-
27
- if user_name.nil?
28
- show_usage
29
- ui.fatal("You must specify a user name")
30
- exit 1
31
- end
32
-
33
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
34
- original_user = @chef_rest.get_rest("users/#{user_name}")
35
- edited_user = edit_data(original_user)
36
- if original_user != edited_user
37
- @chef_rest = Chef::REST.new(Chef::Config[:chef_server_root])
38
- ui.msg edited_user
39
- result = @chef_rest.put_rest("users/#{user_name}", edited_user)
40
- ui.msg("Saved #{user_name}.")
41
- else
42
- ui.msg("User unchaged, not saving.")
43
- end
44
-
45
- end
46
- end
47
- end
@@ -1,21 +0,0 @@
1
- require 'chef/org'
2
-
3
- class Chef
4
- class Org
5
- module GroupOperations
6
- def add_user_to_group(groupname, username)
7
- group = chef_rest.get_rest "organizations/#{name}/groups/#{groupname}"
8
- body_hash = {
9
- :groupname => "#{groupname}",
10
- :actors => {
11
- "users" => group["actors"].concat([username]),
12
- "groups" => group["groups"]
13
- }
14
- }
15
- chef_rest.put_rest "organizations/#{name}/groups/#{groupname}", body_hash
16
- end
17
- end
18
- end
19
-
20
- include Chef::Org::GroupOperations
21
- end