4 changes: 0 additions & 4 deletions .fixtures.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,4 @@
---
fixtures:
repositories:
pe_gem:
repo: https://github.com/puppetlabs/puppetlabs-pe_gem
ref: 0.1.2
symlinks:
node_manager: "#{source_dir}"
23 changes: 23 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,28 @@
language: ruby
env:
- PUPPET_VERSION=4.7.0
- PUPPET_VERSION=4.7.0
- PUPPET_VERSION=4.6.2
- PUPPET_VERSION=4.6.1
- PUPPET_VERSION=4.5.2
- PUPPET_VERSION=4.5.2
- PUPPET_VERSION=4.5.1
- PUPPET_VERSION=4.5.0
- PUPPET_VERSION=4.4.2
- PUPPET_VERSION=4.4.1
- PUPPET_VERSION=4.4.0
- PUPPET_VERSION=4.3.2
- PUPPET_VERSION=4.3.2
- PUPPET_VERSION=4.3.2
- PUPPET_VERSION=4.3.1
- PUPPET_VERSION=4.3.1
- PUPPET_VERSION=4.3.0
- PUPPET_VERSION=4.2.3
- PUPPET_VERSION=4.2.2
- PUPPET_VERSION=4.2.2
- PUPPET_VERSION=4.2.2
- PUPPET_VERSION=4.2.1
- PUPPET_VERSION=4.2.0
- PUPPET_VERSION=4.2.0
- PUPPET_VERSION=4.1.0
- PUPPET_VERSION=4.0.0
Expand Down
15 changes: 15 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,18 @@
## 2017-08-20 - Release 0.5.0

### Summary

- Can remove parameters from classes
- Can upin nodes from a group
- Added a puppet-less provider for node_group in bash
- Removed puppet_environment type and provider
- Removed puppetclassify provider and gem dependency

#### Bugfixes
- Provider submits nulls for removed parameters to remove them
- Submitting `''` to rules can remove everything


## 2017-05-12 - Release 0.4.2

### Summary
Expand Down
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ source 'https://rubygems.org'
gem 'puppet', nil || ENV['PUPPET_VERSION']
gem 'puppetlabs_spec_helper', '0.10.3'
gem 'webmock', '1.22.1'
gem 'puppetclassify', '0.1.2'
gem 'puppetclassify', '0.1.7'
6 changes: 0 additions & 6 deletions Gemfile.old

This file was deleted.

10 changes: 7 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
1. [Authentication](#authentication)
1. [Types](#types)
* [Node_group](#node_group)
* [Puppet_environment](#puppet_environment)
1. [Functions](#functions)
* [node_groups()](#node_groups)
1. [Face](#face)
1. [Things to do](#things-to-do)
1. [Experimental](#experimental)

## Overview

Expand Down Expand Up @@ -121,7 +121,7 @@ node_group { 'PE MCollective':

* `rules`

An array of classification rules.
An array of classification rules. To submit an empty ruleset, use `''` as your value.

Default (empty array): `[]`

Expand Down Expand Up @@ -206,7 +206,11 @@ See 'puppet man node_manager' or 'man puppet-node_manager' for full help.

## Things to do

* Remove `puppetclassify` classes
* Nothing at the moment

## Experimental

New puppet-less provider with bash [here](scripts/README.md)

## Maintainers

Expand Down
24 changes: 20 additions & 4 deletions lib/puppet/provider/node_group/https.rb
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,10 @@ def classes
PuppetX::Node_manager::Common.sort_hash(@property_hash[:classes])
end

def rule
@property_hash[:rule].nil? ? [''] : @property_hash[:rule]
end

friendly_name.each do |property,friendly|
define_method "#{friendly}=" do |value|
if property == :parent
Expand Down Expand Up @@ -185,10 +189,22 @@ def get_id_index_from_name(name)
end

def add_nulls(current, new)
difference = current.keys - new.keys
nullhash = new
difference.each { |k| nullhash[k] = nil }
nullhash
if current.is_a?(Hash)
allkeys = (current.keys + new.keys).uniq
else
allkeys = new.keys
end
newhash = Hash.new

allkeys.each do |k|
if new[k].is_a?(Hash)
newhash[k] = add_nulls(current[k], new[k])
else
newhash[k] = new[k] || nil
end
end

newhash
end

end
83 changes: 0 additions & 83 deletions lib/puppet/provider/puppet_environment/puppetclassify.rb

This file was deleted.

10 changes: 0 additions & 10 deletions lib/puppet/type/puppet_environment.rb

This file was deleted.

4 changes: 4 additions & 0 deletions lib/puppet/util/nc_https.rb
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,10 @@ def delete_group(id)
end

def update_group(data)
# ISSUE 26
# Add nil for empty rules
data = Hash[data.map { |k,v| v == [''] ? [k,nil] : [k,v] }]

res = do_https("v1/groups/#{data['id']}", 'POST', data)
if res.code.to_i != 200
Puppet.debug("Response code: #{res.code}")
Expand Down
13 changes: 0 additions & 13 deletions manifests/init.pp

This file was deleted.

15 changes: 0 additions & 15 deletions manifests/params.pp

This file was deleted.

13 changes: 0 additions & 13 deletions manifests/puppetclassify/install.pp

This file was deleted.

2 changes: 1 addition & 1 deletion metadata.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "WhatsARanjit-node_manager",
"version": "0.4.2",
"version": "0.5.0",
"author": "WhatsARanjit",
"summary": "Create and manage PE Console node groups as resources.",
"license": "Apache-2.0",
Expand Down
86 changes: 86 additions & 0 deletions scripts/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Node_manager scripts

#### Table of Contents

1. [Overview](#overview)
1. [Example](#example)
1. [Setup](#setup)
1. [Usage](#usage)

## Overview

Manipulate node_groups from a system without Puppet installed.

## Example

```
[root@server ~/node_manager/scripts]# ./node_group.sh -n 'Example Group' \
--rule '["or", ["=", "name", "node.whatsaranjit.com"]]' \
--classes '{"vim": {}}' --variables '{"foo": "bar"}'
New group ID: 15e0c815-e3ca-48e3-a467-e86e5b9d025e
```

## Setup

Place a file at `~/.node_managerrc` following this example:

```
MASTER=master.whatsaranjit.com # Defaults to hostname -f
PORT=4433 # Defaults to 4433
TOKEN='<your_token>'
```

## Usage

```
Usage: ./node_group.sh [options] [UID]
-n| --name The name of the node_group.
*Required to create a new group.
-x| --ensure Set to [present|absent] for existence.
Default: present
-d| --description Description of group.
-e| --environment Puppet environment for group.
Default: production
-o| --override Set to [true|false] for environment group.
Default: false
-p| --parent Parent group UID.
Default: 00000000-0000-4000-8000-000000000000
-c| --classes Hash of classes and parameters.
Example: '{ "vim": {} }'
-r| --rule Array of rules for matching.
Example: '["or", ["=", "name", "node.whatsaranjit.com"]]'
-v| --variables Variables to set in the group.
Example: '{ "foo": "bar" }'
-h| --help Display this help message.
```

### Create a new group

```
[root@server ~/node_manager/scripts]# ./node_group.sh -n 'Example Group'
```
The `--name` flag is required. All other flags are optional.

### Update an existing group

```
[root@server ~/node_manager/scripts]# ./node_group.sh -d 'New description' 15e0c815-e3ca-48e3-a467-e86e5b9d025e
```
You must edit a group by giving the UID.

### Delete a group

```
[root@server ~/node_manager/scripts]# ./node_group.sh --ensure absent 15e0c815-e3ca-48e3-a467-e86e5b9d025e
```
You must delete a group by giving the UID.
Loading