chefdore 0.0.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e54829ed0ae69cd26136fac9f26cbd8e7b542257
4
- data.tar.gz: 71e64a9e2121073c468fad0211b84cae09c540cd
3
+ metadata.gz: da1d16716d772aa3482523cbdbc05658ede58f67
4
+ data.tar.gz: db14b08e76f51ad2a3f55b5ff2ca1806e61a5f6f
5
5
  SHA512:
6
- metadata.gz: 76fbc4f165cf83e4cf24f1b64d1eda126c89c68ae133b429d3e5c5fbb7979d4fbd51a33638416ad31829ec94b0030f6f012a85473ae7ca97776503ba3cf5fb3d
7
- data.tar.gz: da274abb42dc6c351a984e2e9bd3ae309510724a8b5657dc5e94f356176efb60f51a40fb0459b5335ec520f43ab06bc4bb5a5b8bfcc20be9ae8268e240593690
6
+ metadata.gz: cfd2d8e196e2396c1244504ab29031607c73c11f62bf00ffc5eabd010d2bb0892bf50f267c9c92d3fccca209638ac32cf0670b1f2b436f2e57b42f0d6469e959
7
+ data.tar.gz: dd310f0adab513395a0d1d3d0bd3901c2cecc2d6c0b6692e369ed087f394709cf8bcf8a8e2b62e150f5edd0c82213d005c01bfc78ad1d42c2cd0520879315b53
data/README.md CHANGED
@@ -4,23 +4,11 @@ Chef tool that was named after Dumbledore.
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'chefdore'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
7
  $ gem install chefdore
20
8
 
21
9
  ## Usage
22
10
 
23
- TODO: Write usage instructions here
11
+ knife role show base --format json | chefdore convert
24
12
 
25
13
  ## Contributing
26
14
 
data/bin/chefdore ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env ruby
2
+ $:.push File.expand_path('../../lib', __FILE__)
3
+ require 'chefdore/cli'
4
+
5
+
6
+ Chefdore::Cli.start(ARGV)
@@ -0,0 +1,36 @@
1
+ require 'thor'
2
+ require 'chefdore'
3
+ require 'json'
4
+
5
+ module Chefdore
6
+ class Cli < Thor
7
+ namespace "chefdore"
8
+ map %w(v V -v -V ver --version) => :version
9
+
10
+ desc "convert", "Convert Chef role to a Chef cookbook. Expects the json formatted Chef Role to be piped to this command."
11
+ def convert
12
+ ARGV.replace []
13
+ stdin = ARGF.read
14
+
15
+ begin
16
+ json = JSON.parse(stdin)
17
+ rescue JSON::ParserError => e
18
+ puts e.message
19
+ exit 1
20
+ end
21
+
22
+ toa = %w(default_attributes override_attributes)
23
+
24
+ toa.each do |type|
25
+ attr = json[type]
26
+ prefix = type.split('_').first
27
+ Chefdore::Magic.convert(attr, prefix)
28
+ end
29
+ end
30
+
31
+ desc "version", "Display version information"
32
+ def version
33
+ say Chefdore::VERSION
34
+ end
35
+ end
36
+ end
@@ -6,9 +6,15 @@ module Chefdore
6
6
  convert(subval, prefix, path+[subkey])
7
7
  end
8
8
  elsif value.is_a?(Array)
9
- puts "#{prefix}#{path.map{|p| "['#{p}']"}.join('')} = #{value}"
9
+ value.each do |i|
10
+ if i.is_a?(Hash)
11
+ convert(i, prefix, path)
12
+ else
13
+ puts "#{prefix}#{path.map{|p| "[#{p.inspect}]"}.join('')} = #{value.inspect}"
14
+ end
15
+ end
10
16
  else
11
- puts "#{prefix}#{path.map{|p| "['#{p}']"}.join('')} = '#{value}'"
17
+ puts "#{prefix}#{path.map{|p| "[#{p.inspect}]"}.join('')} = #{value.inspect}"
12
18
  end
13
19
  end
14
20
  end
@@ -1,3 +1,3 @@
1
1
  module Chefdore
2
- VERSION = "0.0.1"
2
+ VERSION = "0.2.0"
3
3
  end
data/spec/test.rb CHANGED
@@ -13,5 +13,62 @@ my_stuff = {
13
13
  },
14
14
  }
15
15
 
16
- Chefdore::Magic.convert(my_stuff)
16
+ example = {
17
+ "developer_mode" => false,
18
+ "glance" => {
19
+ "image_upload" => true,
20
+ "images" => [
21
+ "cirros",
22
+ "precise"
23
+ ]
24
+ },
25
+ "monitoring" => {
26
+ "metric_provider" => "collectd",
27
+ "procmon_provider" => "monit"
28
+ },
29
+ "mysql" => {
30
+ "allow_remote_root" => true,
31
+ "root_network_acl" => "%"
32
+ },
33
+ "nova" => {
34
+ "libvirt" => {
35
+ "virt_type" => "qemu"
36
+ },
37
+ "networks" => {
38
+ "private" => {
39
+ "bridge" => "br101",
40
+ "bridge_dev" => "eth0.101",
41
+ "dns1" => "8.8.8.8",
42
+ "dns2" => "8.8.4.4",
43
+ "ipv4_cidr" => "172.16.101.0/24",
44
+ "label" => "private"
45
+ },
46
+ "public" => {
47
+ "bridge" => "br100",
48
+ "bridge_dev" => "eth0.100",
49
+ "dns1" => "8.8.8.8",
50
+ "dns2" => "8.8.4.4",
51
+ "ipv4_cidr" => "10.10.100.0/24",
52
+ "label" => "public"
53
+ }
54
+ },
55
+ "ratelimit" => {
56
+ "api" => {
57
+ "enabled" => true
58
+ },
59
+ "volume" => {
60
+ "enabled" => true
61
+ }
62
+ }
63
+ },
64
+ "osops_networks" => {
65
+ "management" => "192.168.1.0/24",
66
+ "nova" => "192.168.1.0/24",
67
+ "public" => "192.168.1.0/24"
68
+ },
69
+ "package_component" => "folsom"
70
+ }
71
+
72
+ Chefdore::Magic.convert(my_stuff, "my_stuff")
73
+ Chefdore::Magic.convert(example, "example")
17
74
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chefdore
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Barnett
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-17 00:00:00.000000000 Z
11
+ date: 2015-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -41,7 +41,8 @@ dependencies:
41
41
  description: Chef tool that can be used to do some helpful things.
42
42
  email:
43
43
  - jason.w.barnett@gmail.com
44
- executables: []
44
+ executables:
45
+ - chefdore
45
46
  extensions: []
46
47
  extra_rdoc_files: []
47
48
  files:
@@ -50,8 +51,10 @@ files:
50
51
  - LICENSE.txt
51
52
  - README.md
52
53
  - Rakefile
54
+ - bin/chefdore
53
55
  - chefdore.gemspec
54
56
  - lib/chefdore.rb
57
+ - lib/chefdore/cli.rb
55
58
  - lib/chefdore/utils.rb
56
59
  - lib/chefdore/version.rb
57
60
  - spec/test.rb