1010class NodeGroupUnpin
1111 def initialize ( params )
1212 @params = params
13- raise "Missing required parameter 'node_certname'" unless @params [ 'node_certname' ]
13+ raise "Missing required parameter 'node_certnames'" unless @params [ 'node_certnames' ]
14+ raise "'node_certnames' must be an array" unless @params [ 'node_certnames' ] . is_a? ( Array )
1415 raise "Missing required parameter 'group_name'" unless @params [ 'group_name' ]
1516 @auth = YAML . load_file ( '/etc/puppetlabs/puppet/classifier.yaml' )
1617 rescue Errno ::ENOENT
@@ -44,12 +45,12 @@ def groups
4445 end
4546 end
4647
47- def unpin_node ( group , node )
48+ def unpin_node ( group , nodes )
4849 raise 'Invalid group object' unless group . is_a? ( Hash ) && group [ 'id' ] && group [ 'name' ]
4950
5051 net = https_client
5152 begin
52- data = { "nodes" : [ node ] } . to_json
53+ data = { "nodes" : nodes } . to_json
5354 url = "/classifier-api/v1/groups/#{ group [ 'id' ] } /unpin"
5455
5556 req = Net ::HTTP ::Post . new ( url )
@@ -60,11 +61,11 @@ def unpin_node(group, node)
6061
6162 case res . code
6263 when '204'
63- puts "Successfully unpinned node '#{ node } ' from group '#{ group [ 'name' ] } '"
64+ puts "Successfully unpinned nodes '#{ nodes . join ( ', ' ) } ' from group '#{ group [ 'name' ] } '"
6465 else
6566 begin
6667 error_body = JSON . parse ( res . body . to_s )
67- raise "Failed to unpin node : #{ error_body [ 'kind' ] || error_body } "
68+ raise "Failed to unpin nodes : #{ error_body [ 'kind' ] || error_body } "
6869 rescue JSON ::ParserError
6970 raise "Invalid response from server (status #{ res . code } ): #{ res . body } "
7071 end
@@ -98,11 +99,11 @@ def dig(name, *args)
9899
99100 def execute!
100101 group_name = @params [ 'group_name' ]
101- node_certname = @params [ 'node_certname ' ]
102+ node_certnames = @params [ 'node_certnames ' ]
102103 group = groups . dig ( group_name )
103104 if group
104- unpin_node ( group , node_certname )
105- puts "Unpinned #{ node_certname } from #{ group_name } "
105+ unpin_node ( group , node_certnames )
106+ puts "Unpinned #{ node_certnames . join ( ', ' ) } from #{ group_name } "
106107 else
107108 puts "Group #{ group_name } not found"
108109 end
0 commit comments