puppetclassify 0.1.4 → 0.1.5

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: 629f0cea233dad57716d3e00801a3b358ef5da4c
4
- data.tar.gz: 8d152b9204474c9af61a5efa37f06329b1e5ba66
3
+ metadata.gz: 523f6019b4d5b7deb67a65980e47f0be7f049b29
4
+ data.tar.gz: fc27b32eafa867ffabc950a03ec04ec42d2e5878
5
5
  SHA512:
6
- metadata.gz: 17e9ce78366de5cf1416610dc5c6049f3985848eb21303a0d6925dc56b91c227f538cec3ac1c81e7eb433da1b966a99078b79ddac809892b0a5cda0e54952a3a
7
- data.tar.gz: 97a064d5eed5b8b6c95e5a12246293eb9663ddf0f2575ed812c186c39c553a50aff6b408b173f473c0ffd6aa8f1f0a60c5d2cf56441bd01001b0821bc78647a7
6
+ metadata.gz: 7a9c9cc102ffe563c6237adbdd7b9e389c96103147f2b8126761acf73e6c871cbf906499c57541909c24e412b7c5a240dc8ea815116b8fb3b4572e138e2e212a
7
+ data.tar.gz: f6667db9fd1432e0852c0624f7d1b2899639501228eb4e5da68af248098d507ff640f67b7d22d5ad4a186c8bf8e846cfcdb170e38ef29a5e2b3213d29af44612
data/README.md CHANGED
@@ -25,9 +25,7 @@ Tickets: Open an issue or pull request directly on this repository
25
25
 
26
26
  ## How to use
27
27
 
28
- ### Basic case
29
-
30
- If you are wanting to get all of the groups the classifier knows about:
28
+ Here is the basic configuration you'll need to use the puppetclassify class:
31
29
 
32
30
  ```ruby
33
31
  require 'puppetclassify'
@@ -41,6 +39,13 @@ auth_info = {
41
39
 
42
40
  classifier_url = 'https://puppetmaster.local:4433/classifier-api'
43
41
  puppetclassify = PuppetClassify.new(classifier_url, auth_info)
42
+ ```
43
+
44
+ ### Basic case
45
+
46
+ If you are wanting to get all of the groups the classifier knows about:
47
+
48
+ ```ruby
44
49
  # Get all the groups
45
50
  puppetclassify.groups.get_groups
46
51
  ```
@@ -50,17 +55,6 @@ puppetclassify.groups.get_groups
50
55
  If you have a group you want to modify, but do not know the group ID:
51
56
 
52
57
  ```ruby
53
- require 'puppetclassify'
54
- # URL of classifier as well as certificates and private key for auth
55
- auth_info = {
56
- "ca_certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/ca.pem",
57
- "certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/myhostname.vm.pem",
58
- "private_key_path" => "/etc/puppetlabs/puppet/ssl/private_keys/myhostname.vm.pem"
59
- }
60
-
61
- classifier_url = 'https://puppetmaster.local:4433/classifier-api'
62
- puppetclassify = PuppetClassify.new(classifier_url, auth_info)
63
-
64
58
  my_group_id = puppetclassify.groups.get_group_id("My Group Name")
65
59
  group_delta = {"variables"=>{"key"=>"value"}, "id"=>my_group_id, "classes"=>{"motd"=>{"content"=>"hello!"}}} # an example to update a groups variables and classes
66
60
  puppetclassify.groups.update_group(group_delta)
@@ -98,15 +92,7 @@ Once you have the facts, retrieving classification of a node is simple:
98
92
  require 'facter'
99
93
  require 'puppetclassify'
100
94
 
101
- # URL of classifier as well as certificates and private key for auth
102
- auth_info = {
103
- "ca_certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/ca.pem",
104
- "certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/myhostname.vm.pem",
105
- "private_key_path" => "/etc/puppetlabs/puppet/ssl/private_keys/myhostname.vm.pem"
106
- }
107
-
108
- classifier_url = 'https://puppetmaster.local:4433/classifier-api'
109
- puppetclassify = PuppetClassify.new(classifier_url, auth_info)
95
+ # NOTE: Add setup information here for puppetclassify
110
96
 
111
97
  # gather facts
112
98
  facts = { 'fact' => Facter.to_hash }
@@ -121,18 +107,9 @@ If you want to "pin" a node to a specific group so it gets that classification,
121
107
  invoke the pin_nodes command. And if you want to remove nodes from that group, you can run
122
108
  the unpin_nodes command.
123
109
 
124
- ```
125
- require 'puppetclassify'
126
- # URL of classifier as well as certificates and private key for auth
127
- auth_info = {
128
- "ca_certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/ca.pem",
129
- "certificate_path" => "/etc/puppetlabs/puppet/ssl/certs/myhostname.vm.pem",
130
- "private_key_path" => "/etc/puppetlabs/puppet/ssl/private_keys/myhostname.vm.pem"
131
- }
132
-
133
- classifier_url = 'https://puppetmaster.local:4433/classifier-api'
134
- puppetclassify = PuppetClassify.new(classifier_url, auth_info)
110
+ If you want to remove nodes from every group they are pinned to, use the unpin_from_all command.
135
111
 
112
+ ```ruby
136
113
  my_group_id = puppetclassify.groups.get_group_id("My Super Awesome Group Name")
137
114
 
138
115
  nodes = ["hostname.com", "myotherhost.com", "anotherhost.com"]
@@ -141,6 +118,9 @@ puppetclassify.groups.pin_nodes(my_group_id, nodes)
141
118
 
142
119
  # unpin nodes from group
143
120
  puppetclassify.groups.unpin_nodes(my_group_id, nodes)
121
+
122
+ # unpin nodes from EVERY group
123
+ puppetlcassify.commands.unpin_from_all(nodes)
144
124
  ```
145
125
 
146
126
  ## Library Docs
@@ -9,6 +9,7 @@ require 'puppetclassify/validate'
9
9
  require 'puppetclassify/rules'
10
10
  require 'puppetclassify/last_class_update'
11
11
  require 'puppetclassify/classification'
12
+ require 'puppetclassify/commands'
12
13
 
13
14
  class PuppetClassify
14
15
  def initialize(nc_api_url, https_settings)
@@ -95,4 +96,12 @@ class PuppetClassify
95
96
  @classification = Classification.new(@nc_api_url, @puppet_https)
96
97
  end
97
98
  end
99
+
100
+ def commands
101
+ if @commands
102
+ @commands
103
+ else
104
+ @commands = Commands.new(@nc_api_url, @puppet_https)
105
+ end
106
+ end
98
107
  end
@@ -0,0 +1,23 @@
1
+ require 'puppet_https'
2
+ require 'json'
3
+
4
+ class Commands
5
+ def initialize(nc_api_url, puppet_https)
6
+ @puppet_https = puppet_https
7
+ @nc_api_url = nc_api_url
8
+ end
9
+
10
+ def unpin_from_all(nodes)
11
+ all_nodes = {}
12
+ all_nodes['nodes'] = nodes
13
+
14
+ response = @puppet_https.post("#{@nc_api_url}/v1/commands/unpin-from-all", all_nodes.to_json)
15
+
16
+ unless response.code.to_i != 200
17
+ nodez = JSON.parse(response.body)
18
+ else
19
+ STDERR.puts "An error occured with your request: HTTP #{response.code} #{response.message}"
20
+ STDERR.puts response.body
21
+ end
22
+ end
23
+ end
@@ -26,7 +26,6 @@ class Groups
26
26
  else
27
27
  STDERR.puts "An error occured with your request: HTTP #{groups_res.code} #{groups_res.message}"
28
28
  STDERR.puts groups_res.body
29
- exit 1
30
29
  end
31
30
 
32
31
  group_info = groups.find { |group| group['name'] == group_name }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: puppetclassify
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brian Cain
@@ -21,6 +21,7 @@ files:
21
21
  - lib/puppetclassify.rb
22
22
  - lib/puppetclassify/classes.rb
23
23
  - lib/puppetclassify/classification.rb
24
+ - lib/puppetclassify/commands.rb
24
25
  - lib/puppetclassify/environments.rb
25
26
  - lib/puppetclassify/groups.rb
26
27
  - lib/puppetclassify/import_hierarchy.rb
@@ -39,17 +40,17 @@ require_paths:
39
40
  - lib
40
41
  required_ruby_version: !ruby/object:Gem::Requirement
41
42
  requirements:
42
- - - '>='
43
+ - - ">="
43
44
  - !ruby/object:Gem::Version
44
45
  version: '0'
45
46
  required_rubygems_version: !ruby/object:Gem::Requirement
46
47
  requirements:
47
- - - '>='
48
+ - - ">="
48
49
  - !ruby/object:Gem::Version
49
50
  version: '0'
50
51
  requirements: []
51
52
  rubyforge_project:
52
- rubygems_version: 2.4.8
53
+ rubygems_version: 2.2.2
53
54
  signing_key:
54
55
  specification_version: 4
55
56
  summary: Puppet Classify!