diff --git a/libraries/chef_group.rb b/libraries/chef_group.rb index eb608fd..adeb055 100644 --- a/libraries/chef_group.rb +++ b/libraries/chef_group.rb @@ -1,10 +1,10 @@ module EcTools - class ChefGroup + class EcChefGroup # make this a parent class "or some cool ruby thing" that gets inherited for "opc" classes - def initialize(new_resource, config = {}) + def initialize(new_resource, config = {}) @new_resource = new_resource - + # make setting Chef::Config dynamic by iterating through options # currently sets chef_server_root (and it doesn't have to) config.each do |k, v| diff --git a/libraries/chef_group_provider.rb b/libraries/chef_group_provider.rb index c207837..e92bc58 100644 --- a/libraries/chef_group_provider.rb +++ b/libraries/chef_group_provider.rb @@ -1,6 +1,6 @@ require 'chef/provider/lwrp_base' -class Chef::Provider::ChefGroup < Chef::Provider::LWRPBase +class Chef::Provider::EcChefGroup < Chef::Provider::LWRPBase use_inline_resources if defined?(:use_inline_resources) def whyrun_supported? @@ -9,18 +9,18 @@ def whyrun_supported? action :add do converge_by("Create #{ @new_resource }") do - g = EcTools::ChefGroup.new(@new_resource, - :node_name => node['chef']['config']['node_name'], - :client_key => node['chef']['config']['client_key'], + g = EcTools::EcChefGroup.new(@new_resource, + :node_name => node['chef']['config']['node_name'], + :client_key => node['chef']['config']['client_key'], :chef_server_root => node['chef']['config']['chef_server_root']) g.add end end def chef_group - @chef_group ||= EcTools::ChefGroup.new(@new_resource, - :node_name => node['chef']['config']['node_name'], - :client_key => node['chef']['config']['client_key'], + @chef_group ||= EcTools::EcChefGroup.new(@new_resource, + :node_name => node['chef']['config']['node_name'], + :client_key => node['chef']['config']['client_key'], :chef_server_root => node['chef']['config']['chef_server_root']) end end diff --git a/libraries/chef_group_resource.rb b/libraries/chef_group_resource.rb index e8bd3f0..ec4a04d 100644 --- a/libraries/chef_group_resource.rb +++ b/libraries/chef_group_resource.rb @@ -1,7 +1,7 @@ require 'chef/resource/lwrp_base' -class Chef::Resource::ChefGroup < Chef::Resource::LWRPBase - self.resource_name = 'chef_group' +class Chef::Resource::EcChefGroup < Chef::Resource::LWRPBase + self.resource_name = 'ec_chef_group' actions :add, :remove # group must currently exist default_action :add diff --git a/libraries/chef_org.rb b/libraries/chef_org.rb index f48407f..607758a 100644 --- a/libraries/chef_org.rb +++ b/libraries/chef_org.rb @@ -1,17 +1,17 @@ module EcTools - class ChefOrg + class EcChefOrg # make this a parent class "or some cool ruby thing" that gets inherited for "opc" classes - def initialize(new_resource, config = {}) + def initialize(new_resource, config = {}) @new_resource = new_resource - + # make setting Chef::Config dynamic by iterating through options # currently sets chef_server_root (and it doesn't have to) config.each do |k, v| Chef::Config[k] = v end @rest = Chef::REST.new(config[:chef_server_root]) - + @org_databag = Chef::DataBag.new @org_databag.name('org') @org_databag.save diff --git a/libraries/chef_org_provider.rb b/libraries/chef_org_provider.rb index 7e9a969..82d2821 100644 --- a/libraries/chef_org_provider.rb +++ b/libraries/chef_org_provider.rb @@ -1,6 +1,6 @@ require 'chef/provider/lwrp_base' -class Chef::Provider::ChefOrg < Chef::Provider::LWRPBase +class Chef::Provider::EcChefOrg < Chef::Provider::LWRPBase use_inline_resources if defined?(:use_inline_resources) def whyrun_supported? @@ -8,7 +8,7 @@ def whyrun_supported? end action :create do - unless chef_org.exists? + unless chef_org.exists? converge_by("Create #{ @new_resource }") do @chef_org.create end @@ -27,9 +27,9 @@ def whyrun_supported? end def chef_org - @chef_org ||= EcTools::ChefOrg.new(@new_resource, - :node_name => node['chef']['config']['node_name'], - :client_key => node['chef']['config']['client_key'], + @chef_org ||= EcTools::EcChefOrg.new(@new_resource, + :node_name => node['chef']['config']['node_name'], + :client_key => node['chef']['config']['client_key'], :chef_server_root => node['chef']['config']['chef_server_root']) end end diff --git a/libraries/chef_org_resource.rb b/libraries/chef_org_resource.rb index a786710..4d7a430 100644 --- a/libraries/chef_org_resource.rb +++ b/libraries/chef_org_resource.rb @@ -1,12 +1,12 @@ require 'chef/resource/lwrp_base' -class Chef::Resource::ChefOrg < Chef::Resource::LWRPBase - self.resource_name = 'chef_org' +class Chef::Resource::EcChefOrg < Chef::Resource::LWRPBase + self.resource_name = 'ec_chef_org' actions :create, :delete, :associate_user default_action :create - attribute :name, :name_attribute => true, :required => true, :kind_of => String + attribute :name, :name_attribute => true, :required => true, :kind_of => String attribute :description, :kind_of => String attribute :users, :kind_of => [ String, Array ] end diff --git a/libraries/chef_user.rb b/libraries/chef_user.rb index f8ab5ca..61a6a40 100644 --- a/libraries/chef_user.rb +++ b/libraries/chef_user.rb @@ -1,17 +1,17 @@ module EcTools - class ChefUser + class EcChefUser # make this a parent class "or some cool ruby thing" that gets inherited for "opc" classes - def initialize(new_resource, config = {}) + def initialize(new_resource, config = {}) @new_resource = new_resource - + # make setting Chef::Config dynamic by iterating through options # currently sets chef_server_root (and it doesn't have to) config.each do |k, v| Chef::Config[k] = v end @rest = Chef::REST.new(config[:chef_server_root]) - + @user_databag = Chef::DataBag.new @user_databag.name('user') @user_databag.save diff --git a/libraries/chef_user_provider.rb b/libraries/chef_user_provider.rb index 210e487..acaecb2 100644 --- a/libraries/chef_user_provider.rb +++ b/libraries/chef_user_provider.rb @@ -1,6 +1,6 @@ require 'chef/provider/lwrp_base' -class Chef::Provider::ChefUser < Chef::Provider::LWRPBase +class Chef::Provider::EcChefUser < Chef::Provider::LWRPBase use_inline_resources if defined?(:use_inline_resources) def whyrun_supported? @@ -8,7 +8,7 @@ def whyrun_supported? end action :create do - unless chef_user.exists? + unless chef_user.exists? converge_by("Create #{ @new_resource }") do @chef_user.create end @@ -24,9 +24,9 @@ def whyrun_supported? end def chef_user - @chef_user ||= EcTools::ChefUser.new(@new_resource, - :node_name => node['chef']['config']['node_name'], - :client_key => node['chef']['config']['client_key'], + @chef_user ||= EcTools::EcChefUser.new(@new_resource, + :node_name => node['chef']['config']['node_name'], + :client_key => node['chef']['config']['client_key'], :chef_server_root => node['chef']['config']['chef_server_root']) end end diff --git a/libraries/chef_user_resource.rb b/libraries/chef_user_resource.rb index 8f38e1b..e9fed6d 100644 --- a/libraries/chef_user_resource.rb +++ b/libraries/chef_user_resource.rb @@ -1,12 +1,12 @@ require 'chef/resource/lwrp_base' -class Chef::Resource::ChefUser < Chef::Resource::LWRPBase - self.resource_name = 'chef_user' +class Chef::Resource::EcChefUser < Chef::Resource::LWRPBase + self.resource_name = 'ec_chef_user' actions :create, :delete, :modify default_action :create - attribute :username, :name_attribute => true, :required => true, :kind_of => String + attribute :username, :name_attribute => true, :required => true, :kind_of => String attribute :first_name, :required => true, :kind_of => String attribute :middle_name, :kind_of => String attribute :last_name, :required => true, :kind_of => String diff --git a/metadata.rb b/metadata.rb index 1c6e8ce..cec6e9d 100644 --- a/metadata.rb +++ b/metadata.rb @@ -4,4 +4,4 @@ license 'All rights reserved' description 'Installs/Configures ec-tools' long_description IO.read(File.join(File.dirname(__FILE__), 'README.md')) -version '0.1.1' +version '0.2.1' diff --git a/notes b/notes.md similarity index 100% rename from notes rename to notes.md diff --git a/recipes/knife-opc.rb b/recipes/knife-opc.rb index 46d8fbe..0759059 100644 --- a/recipes/knife-opc.rb +++ b/recipes/knife-opc.rb @@ -1,6 +1,8 @@ include_recipe 'ec-tools::default' -chef_gem 'knife-opc' +chef_gem 'knife-opc' do + compile_time true +end # create the client key file if private key content is provided if node['chef']['config']['private_key_raw'] diff --git a/recipes/load.rb b/recipes/load.rb index 498195b..9caf3c3 100644 --- a/recipes/load.rb +++ b/recipes/load.rb @@ -1,6 +1,6 @@ data_bag('user').each do |u| user = data_bag_item('user', u) - chef_user user['id'] do + ec_chef_user user['id'] do first_name user['first_name'] middle_name user['middle_name'] last_name user['last_name'] @@ -11,13 +11,13 @@ data_bag('org').each do |o| org = data_bag_item('org', o) - chef_org org['id'] do + ec_chef_org org['id'] do description org['description'] users org['users'] end org['groups'].each do |group| - chef_group group[0] do + ec_chef_group group[0] do action :add org org['id'] users group[1] diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb new file mode 100644 index 0000000..468d080 --- /dev/null +++ b/spec/spec_helper.rb @@ -0,0 +1 @@ +require 'chefspec' diff --git a/spec/unit/recipes/default_spec.rb b/spec/unit/recipes/default_spec.rb new file mode 100644 index 0000000..55bf88b --- /dev/null +++ b/spec/unit/recipes/default_spec.rb @@ -0,0 +1,23 @@ +# +# Cookbook Name:: ec-tools +# Spec:: default +# +# Copyright (c) 2015 Irving Popovetsky, All Rights Reserved. + +require 'spec_helper' + +describe 'ec-tools::default' do + + context 'When all attributes are default, on an unspecified platform' do + + let(:chef_run) do + runner = ChefSpec::ServerRunner.new + runner.converge(described_recipe) + end + + it 'converges successfully' do + chef_run # This should not raise an error + end + + end +end diff --git a/spec/unit/recipes/knife_opc_spec.rb b/spec/unit/recipes/knife_opc_spec.rb new file mode 100644 index 0000000..5c57efb --- /dev/null +++ b/spec/unit/recipes/knife_opc_spec.rb @@ -0,0 +1,23 @@ +# +# Cookbook Name:: ec-tools +# Spec:: knife-opc +# +# Copyright (c) 2015 Irving Popovetsky, All Rights Reserved. + +require 'spec_helper' + +describe 'ec-tools::knife-opc' do + + context 'When all attributes are default, on an unspecified platform' do + + let(:chef_run) do + runner = ChefSpec::ServerRunner.new + runner.converge(described_recipe) + end + + it 'converges successfully' do + chef_run # This should not raise an error + end + + end +end diff --git a/spec/unit/recipes/load_spec.rb b/spec/unit/recipes/load_spec.rb new file mode 100644 index 0000000..96bdeb3 --- /dev/null +++ b/spec/unit/recipes/load_spec.rb @@ -0,0 +1,58 @@ +# +# Cookbook Name:: ec-tools +# Spec:: load +# +# Copyright (c) 2015 Irving Popovetsky, All Rights Reserved. + +require 'spec_helper' + +describe 'ec-tools::load' do + + context 'When all attributes are default, on an unspecified platform' do + + let(:chef_run) do + runner = ChefSpec::ServerRunner.new do |node, server| + server.create_data_bag('user', { + 'pinkiepie' => { + 'id' => 'pinkiepie', + 'first_name' => 'pinkiepie', + 'middle_name' => 'pinkiepie', + 'last_name' => 'pinkiepie', + 'email' => 'pinkiepie@chef.io', + 'password' => 'pinkiepie' + }, + 'soarin' => { + 'id' => 'soarin', + 'first_name' => 'pinkiepie', + 'middle_name' => 'pinkiepie', + 'last_name' => 'pinkiepie', + 'email' => 'pinkiepie@chef.io', + 'password' => 'pinkiepie' + } + }) + + server.create_data_bag('org', { + 'ponyville' => { + 'id' => 'ponyville', + 'description' => 'The Ville of Ponies', + 'groups' => ['foobars'], + 'users' => ['pinkiepie'] + }, + 'wonderbolts' => { + 'id' => 'wonderbolts', + 'description' => 'The Bolts of Wonder', + 'groups' => ['foobars'], + 'users' => ['soarin'] + } + }) + + end + runner.converge(described_recipe) + end + + it 'converges successfully' do + chef_run # This should not raise an error + end + + end +end diff --git a/templates/default/knife-pivotal.rb.erb b/templates/default/knife-pivotal.rb.erb index 21310d6..a143292 100644 --- a/templates/default/knife-pivotal.rb.erb +++ b/templates/default/knife-pivotal.rb.erb @@ -1,3 +1,5 @@ node_name '<%= @node_name %>' client_key '<%= @client_key %>' +chef_server_url '<%= @chef_server_root %>' chef_server_root '<%= @chef_server_root %>' +ssl_verify_mode :verify_none