From 1adb97126e4ae68506fba046534fbe72d1110067 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Tue, 9 Dec 2014 17:31:52 -0800 Subject: [PATCH 1/8] Now that we're getting chef12 by default, fall back to the old ssl_verify_mode from 11 or else knife-opc will just throw SSL errors --- templates/default/knife-pivotal.rb.erb | 2 ++ 1 file changed, 2 insertions(+) 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 From 853141f8c804f592d20ea30d4f467617ab81c81f Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Tue, 9 Dec 2014 17:40:14 -0800 Subject: [PATCH 2/8] bump version --- metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata.rb b/metadata.rb index 1c6e8ce..5bc7d67 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.1.2' From 23e194b3cedc0aca4f895ecba84c6668fe488262 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Thu, 26 Mar 2015 10:51:08 -0700 Subject: [PATCH 3/8] Remove trailing whitespace --- libraries/chef_group.rb | 4 ++-- libraries/chef_group_provider.rb | 12 ++++++------ libraries/chef_org.rb | 6 +++--- libraries/chef_org_provider.rb | 8 ++++---- libraries/chef_org_resource.rb | 2 +- libraries/chef_user.rb | 6 +++--- libraries/chef_user_provider.rb | 8 ++++---- libraries/chef_user_resource.rb | 2 +- notes => notes.md | 0 9 files changed, 24 insertions(+), 24 deletions(-) rename notes => notes.md (100%) diff --git a/libraries/chef_group.rb b/libraries/chef_group.rb index eb608fd..9edb3ed 100644 --- a/libraries/chef_group.rb +++ b/libraries/chef_group.rb @@ -2,9 +2,9 @@ module EcTools class ChefGroup # 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..4156951 100644 --- a/libraries/chef_group_provider.rb +++ b/libraries/chef_group_provider.rb @@ -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::ChefGroup.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::ChefGroup.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.rb b/libraries/chef_org.rb index f48407f..6df5a7a 100644 --- a/libraries/chef_org.rb +++ b/libraries/chef_org.rb @@ -2,16 +2,16 @@ module EcTools class ChefOrg # 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..b589a22 100644 --- a/libraries/chef_org_provider.rb +++ b/libraries/chef_org_provider.rb @@ -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::ChefOrg.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..0f91021 100644 --- a/libraries/chef_org_resource.rb +++ b/libraries/chef_org_resource.rb @@ -6,7 +6,7 @@ class Chef::Resource::ChefOrg < Chef::Resource::LWRPBase 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..3f41c43 100644 --- a/libraries/chef_user.rb +++ b/libraries/chef_user.rb @@ -2,16 +2,16 @@ module EcTools class ChefUser # 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..32fe75c 100644 --- a/libraries/chef_user_provider.rb +++ b/libraries/chef_user_provider.rb @@ -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::ChefUser.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..adbcd7e 100644 --- a/libraries/chef_user_resource.rb +++ b/libraries/chef_user_resource.rb @@ -6,7 +6,7 @@ class Chef::Resource::ChefUser < Chef::Resource::LWRPBase 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/notes b/notes.md similarity index 100% rename from notes rename to notes.md From 4c6e6338729474bf320efad3349a7d17e365b022 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Thu, 26 Mar 2015 11:02:35 -0700 Subject: [PATCH 4/8] Rename ChefBlah to EcChefBlah to avoid conflicts with Cheffish --- libraries/chef_group.rb | 2 +- libraries/chef_group_provider.rb | 6 +++--- libraries/chef_group_resource.rb | 4 ++-- libraries/chef_org.rb | 2 +- libraries/chef_org_provider.rb | 4 ++-- libraries/chef_org_resource.rb | 4 ++-- libraries/chef_user.rb | 2 +- libraries/chef_user_provider.rb | 4 ++-- libraries/chef_user_resource.rb | 4 ++-- recipes/load.rb | 6 +++--- 10 files changed, 19 insertions(+), 19 deletions(-) diff --git a/libraries/chef_group.rb b/libraries/chef_group.rb index 9edb3ed..adeb055 100644 --- a/libraries/chef_group.rb +++ b/libraries/chef_group.rb @@ -1,5 +1,5 @@ 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 = {}) diff --git a/libraries/chef_group_provider.rb b/libraries/chef_group_provider.rb index 4156951..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,7 +9,7 @@ def whyrun_supported? action :add do converge_by("Create #{ @new_resource }") do - g = EcTools::ChefGroup.new(@new_resource, + 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']) @@ -18,7 +18,7 @@ def whyrun_supported? end def chef_group - @chef_group ||= EcTools::ChefGroup.new(@new_resource, + @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']) 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 6df5a7a..607758a 100644 --- a/libraries/chef_org.rb +++ b/libraries/chef_org.rb @@ -1,5 +1,5 @@ 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 = {}) diff --git a/libraries/chef_org_provider.rb b/libraries/chef_org_provider.rb index b589a22..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? @@ -27,7 +27,7 @@ def whyrun_supported? end def chef_org - @chef_org ||= EcTools::ChefOrg.new(@new_resource, + @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']) diff --git a/libraries/chef_org_resource.rb b/libraries/chef_org_resource.rb index 0f91021..4d7a430 100644 --- a/libraries/chef_org_resource.rb +++ b/libraries/chef_org_resource.rb @@ -1,7 +1,7 @@ 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 diff --git a/libraries/chef_user.rb b/libraries/chef_user.rb index 3f41c43..61a6a40 100644 --- a/libraries/chef_user.rb +++ b/libraries/chef_user.rb @@ -1,5 +1,5 @@ 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 = {}) diff --git a/libraries/chef_user_provider.rb b/libraries/chef_user_provider.rb index 32fe75c..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? @@ -24,7 +24,7 @@ def whyrun_supported? end def chef_user - @chef_user ||= EcTools::ChefUser.new(@new_resource, + @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']) diff --git a/libraries/chef_user_resource.rb b/libraries/chef_user_resource.rb index adbcd7e..e9fed6d 100644 --- a/libraries/chef_user_resource.rb +++ b/libraries/chef_user_resource.rb @@ -1,7 +1,7 @@ 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 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] From 9aed57686f0ce7844513d888e15c9d9295833f43 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Thu, 26 Mar 2015 11:09:30 -0700 Subject: [PATCH 5/8] Adding ChefSpec tests --- spec/spec_helper.rb | 1 + spec/unit/recipes/default_spec.rb | 23 ++++++++++++ spec/unit/recipes/load_spec.rb | 58 +++++++++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 spec/spec_helper.rb create mode 100644 spec/unit/recipes/default_spec.rb create mode 100644 spec/unit/recipes/load_spec.rb 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/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 From 90679033c6f91168a2e086a70563e29e9d29add1 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Thu, 26 Mar 2015 11:16:48 -0700 Subject: [PATCH 6/8] Version bump --- metadata.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/metadata.rb b/metadata.rb index 5bc7d67..ad75faf 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.2' +version '0.2.0' From 62642d41f6f1ebf78e8283b6743847abc1852288 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Tue, 25 Aug 2015 14:59:13 -0700 Subject: [PATCH 7/8] Make the knife-opc gem use compile_time true --- metadata.rb | 2 +- recipes/knife-opc.rb | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/metadata.rb b/metadata.rb index ad75faf..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.2.0' +version '0.2.1' 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'] From 48a0dcbee1e931796d476a6811d8d5db0dd6da39 Mon Sep 17 00:00:00 2001 From: Irving Popovetsky Date: Tue, 25 Aug 2015 14:59:36 -0700 Subject: [PATCH 8/8] add a basic test --- spec/unit/recipes/knife_opc_spec.rb | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 spec/unit/recipes/knife_opc_spec.rb 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