kitchen-scribe 0.3.0 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +3 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +13 -0
- data/CHANGELOG.md +19 -0
- data/Gemfile +2 -4
- data/README.md +6 -3
- data/gemfiles/Gemfile.chef-10 +5 -0
- data/gemfiles/Gemfile.chef-11 +5 -0
- data/kitchen-scribe.gemspec +1 -0
- data/lib/chef/knife/scribe_adjust.rb +1 -1
- data/lib/kitchen-scribe/version.rb +1 -1
- data/spec/chef/knife/scribe_adjust_spec.rb +3 -3
- data/spec/chef/knife/scribe_copy_spec.rb +3 -3
- data/spec/chef/knife/scribe_hire_spec.rb +3 -3
- data/spec/spec_helper.rb +4 -0
- metadata +10 -5
- data/.rvmrc +0 -34
- data/Gemfile.lock +0 -76
data/.gitignore
CHANGED
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
kitchen-scribe
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-1.9.3-p327
|
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
## 0.3.0
|
2
|
+
|
3
|
+
Bugfixes:
|
4
|
+
|
5
|
+
* Adjusting a node was overwriting normal attributes and erasing automatic attributes set by ohai. This is no longer the case.
|
6
|
+
* Updated all adjustment templates
|
7
|
+
* Changed the name for node attributes stored by scribe copy to `normal` to make loading configurations from chronicle backups more convinient
|
8
|
+
|
9
|
+
## 0.2.0
|
10
|
+
|
11
|
+
Features:
|
12
|
+
|
13
|
+
* Added `scribe hire` for making precise updates to environments, roles and nodes by using json data structure describing the change.
|
14
|
+
|
15
|
+
## 0.1.0
|
16
|
+
|
17
|
+
Features:
|
18
|
+
|
19
|
+
* First edition of `scribe` with a single directive called `copy`. It pulls the configuration of all your environements, roles, and nodes then saves them into json files in the place of your choosing and commits the changes to a local git repository. It can also pull/push them to a remote repostory for safekeeping.
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -17,8 +17,10 @@ The philosophy behind using scribe to update your environments, roles an nodes i
|
|
17
17
|
|
18
18
|
The plugin is still in the beta stage, I've tested it manualy to some extent, but I'm sure there are things I missed. Please submit any bugs you find through the github issue system and I promiss to take care of them as soon as possible.
|
19
19
|
|
20
|
-
[](https://codeclimate.com/github/khozlov/kitchen-scribe)
|
21
20
|
[](http://badge.fury.io/rb/kitchen-scribe)
|
21
|
+
[](https://travis-ci.org/khozlov/kitchen-scribe)
|
22
|
+
[](https://gemnasium.com/khozlov/kitchen-scribe)
|
23
|
+
[](https://codeclimate.com/github/khozlov/kitchen-scribe)
|
22
24
|
|
23
25
|
USAGE
|
24
26
|
-----
|
@@ -51,6 +53,8 @@ You can also specify all the params in your `knife.rb` not to type it in every t
|
|
51
53
|
:commit_message => "your_commit_message"
|
52
54
|
}
|
53
55
|
|
56
|
+
At this moment, when using ruby 1.8.7 or earlier the diff between subsequent revisions might be inaccurate due to non-deterministic hash ordering in versions prior to 1.9. I'll try to fix it in future releases.
|
57
|
+
|
54
58
|
### Making Changes
|
55
59
|
|
56
60
|
`adjust` action is your friend here.
|
@@ -116,8 +120,7 @@ Have fun!
|
|
116
120
|
WHAT'S NEXT
|
117
121
|
-----------
|
118
122
|
* Refactoring, refactoring, refactoring
|
119
|
-
*
|
120
|
-
* Bug fixes
|
123
|
+
* Ruby 1.8.7 fix
|
121
124
|
|
122
125
|
LICENSE
|
123
126
|
-------
|
data/kitchen-scribe.gemspec
CHANGED
@@ -12,6 +12,7 @@ Gem::Specification.new do |s|
|
|
12
12
|
s.summary = "Knife plugin for tracking your chef configuration changes"
|
13
13
|
s.description = s.summary
|
14
14
|
s.extra_rdoc_files = ["README.md", "LICENSE" ]
|
15
|
+
s.license = "Apache License (2.0)"
|
15
16
|
|
16
17
|
s.files = `git ls-files`.split("\n")
|
17
18
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
@@ -220,7 +220,7 @@ class Chef
|
|
220
220
|
def prepare_object_hash(chef_object)
|
221
221
|
prepared_hash = chef_object.to_hash
|
222
222
|
if prepared_hash["chef_type"] == "node"
|
223
|
-
prepared_hash.
|
223
|
+
prepared_hash.reject! { |key, value| !(["name","chef_type","chef_environment","run_list"].include? key) }
|
224
224
|
prepared_hash.merge!({ "normal" => chef_object.normal_attrs })
|
225
225
|
end
|
226
226
|
prepared_hash
|
@@ -133,7 +133,7 @@ describe Chef::Knife::ScribeAdjust do
|
|
133
133
|
|
134
134
|
it "prints errors but does not exit" do
|
135
135
|
@scribe.should_receive(:print_errors)
|
136
|
-
lambda { @scribe.parse_adjustments }.should_not raise_error(
|
136
|
+
lambda { @scribe.parse_adjustments }.should_not raise_error()
|
137
137
|
end
|
138
138
|
end
|
139
139
|
end
|
@@ -535,7 +535,7 @@ describe Chef::Knife::ScribeAdjust do
|
|
535
535
|
|
536
536
|
it "doesn't throw an exception" do
|
537
537
|
File.should_receive(:open).with(@filename, "r").and_yield('{"a" : 3, b => ]')
|
538
|
-
lambda { @scribe.parse_adjustment_file(@filename) }.should_not raise_error(
|
538
|
+
lambda { @scribe.parse_adjustment_file(@filename) }.should_not raise_error()
|
539
539
|
end
|
540
540
|
end
|
541
541
|
|
@@ -713,7 +713,7 @@ describe Chef::Knife::ScribeAdjust do
|
|
713
713
|
}
|
714
714
|
@chef_obj.stub(:to_hash).and_return( @node_data)
|
715
715
|
@chef_obj.stub(:normal_attrs).and_return({"nx" => "ny"})
|
716
|
-
@prepared_data = @node_data.
|
716
|
+
@prepared_data = @node_data.reject { |key, value| !(["name","chef_type","chef_environment","run_list"].include? key) }
|
717
717
|
@prepared_data.merge!({"normal" => {"nx" => "ny"}})
|
718
718
|
end
|
719
719
|
|
@@ -434,8 +434,8 @@ describe Chef::Knife::ScribeCopy do
|
|
434
434
|
describe "#deep_sort" do
|
435
435
|
describe "when it gets a hash as a parameter" do
|
436
436
|
it "sorts the hash" do
|
437
|
-
sorted_hash = @scribe.deep_sort({
|
438
|
-
sorted_values = [[
|
437
|
+
sorted_hash = @scribe.deep_sort({"c" => 3, "a" => 1, "x" => 0, "d" => -2})
|
438
|
+
sorted_values = [["a", 1], ["c",3], ["d",-2], ["x",0]]
|
439
439
|
i = 0
|
440
440
|
sorted_hash.each do |key, value|
|
441
441
|
key.should eql(sorted_values[i][0])
|
@@ -445,7 +445,7 @@ describe Chef::Knife::ScribeCopy do
|
|
445
445
|
end
|
446
446
|
|
447
447
|
it "calls itself recursively with each value" do
|
448
|
-
hash_to_sort = {
|
448
|
+
hash_to_sort = {"g" => 3, "b" => 1, "z" => 0, "h" => -2}
|
449
449
|
@scribe.should_receive(:deep_sort).with(hash_to_sort).and_call_original
|
450
450
|
hash_to_sort.values.each {|value| @scribe.should_receive(:deep_sort).with(value)}
|
451
451
|
@scribe.deep_sort(hash_to_sort)
|
@@ -20,8 +20,8 @@ require File.expand_path('../../../spec_helper', __FILE__)
|
|
20
20
|
|
21
21
|
describe Chef::Knife::ScribeHire do
|
22
22
|
before(:each) do
|
23
|
-
Dir.stub
|
24
|
-
Dir.stub
|
23
|
+
Dir.stub(:mkdir)
|
24
|
+
Dir.stub(:pwd) { "some_path" }
|
25
25
|
@scribe = Chef::Knife::ScribeHire.new
|
26
26
|
Chef::Config[:knife][:scribe] = {}
|
27
27
|
@scribe.configure
|
@@ -31,7 +31,7 @@ describe Chef::Knife::ScribeHire do
|
|
31
31
|
before(:each) do
|
32
32
|
@scribe.stub(:setup_remote)
|
33
33
|
@scribe.stub(:init_chronicle)
|
34
|
-
File.stub
|
34
|
+
File.stub(:directory?) { false }
|
35
35
|
end
|
36
36
|
|
37
37
|
it "calls #configure" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-scribe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: chef
|
@@ -85,11 +85,15 @@ extra_rdoc_files:
|
|
85
85
|
- LICENSE
|
86
86
|
files:
|
87
87
|
- .gitignore
|
88
|
-
- .
|
88
|
+
- .ruby-gemset
|
89
|
+
- .ruby-version
|
90
|
+
- .travis.yml
|
91
|
+
- CHANGELOG.md
|
89
92
|
- Gemfile
|
90
|
-
- Gemfile.lock
|
91
93
|
- LICENSE
|
92
94
|
- README.md
|
95
|
+
- gemfiles/Gemfile.chef-10
|
96
|
+
- gemfiles/Gemfile.chef-11
|
93
97
|
- kitchen-scribe.gemspec
|
94
98
|
- lib/chef/knife/scribe_adjust.rb
|
95
99
|
- lib/chef/knife/scribe_copy.rb
|
@@ -100,7 +104,8 @@ files:
|
|
100
104
|
- spec/chef/knife/scribe_hire_spec.rb
|
101
105
|
- spec/spec_helper.rb
|
102
106
|
homepage: https://github.com/khozlov/kitchen-scribe
|
103
|
-
licenses:
|
107
|
+
licenses:
|
108
|
+
- Apache License (2.0)
|
104
109
|
post_install_message:
|
105
110
|
rdoc_options: []
|
106
111
|
require_paths:
|
data/.rvmrc
DELETED
@@ -1,34 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bash
|
2
|
-
|
3
|
-
# This is an RVM Project .rvmrc file, used to automatically load the ruby
|
4
|
-
# development environment upon cd'ing into the directory
|
5
|
-
|
6
|
-
# First we specify our desired <ruby>[@<gemset>], the @gemset name is optional,
|
7
|
-
# Only full ruby name is supported here, for short names use:
|
8
|
-
# echo "rvm use 1.9.3" > .rvmrc
|
9
|
-
environment_id="ruby-1.9.3-p327@kitchen-scribe"
|
10
|
-
|
11
|
-
# Uncomment the following lines if you want to verify rvm version per project
|
12
|
-
# rvmrc_rvm_version="1.17.3 (stable)" # 1.10.1 seams as a safe start
|
13
|
-
# eval "$(echo ${rvm_version}.${rvmrc_rvm_version} | awk -F. '{print "[[ "$1*65536+$2*256+$3" -ge "$4*65536+$5*256+$6" ]]"}' )" || {
|
14
|
-
# echo "This .rvmrc file requires at least RVM ${rvmrc_rvm_version}, aborting loading."
|
15
|
-
# return 1
|
16
|
-
# }
|
17
|
-
|
18
|
-
# First we attempt to load the desired environment directly from the environment
|
19
|
-
# file. This is very fast and efficient compared to running through the entire
|
20
|
-
# CLI and selector. If you want feedback on which environment was used then
|
21
|
-
# insert the word 'use' after --create as this triggers verbose mode.
|
22
|
-
if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
|
23
|
-
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
|
24
|
-
then
|
25
|
-
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
|
26
|
-
[[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
|
27
|
-
\. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
|
28
|
-
else
|
29
|
-
# If the environment file has not yet been created, use the RVM CLI to select.
|
30
|
-
rvm --create "$environment_id" || {
|
31
|
-
echo "Failed to create RVM environment '${environment_id}'."
|
32
|
-
return 1
|
33
|
-
}
|
34
|
-
fi
|
data/Gemfile.lock
DELETED
@@ -1,76 +0,0 @@
|
|
1
|
-
GEM
|
2
|
-
remote: http://rubygems.org/
|
3
|
-
specs:
|
4
|
-
bunny (0.7.9)
|
5
|
-
chef (10.18.2)
|
6
|
-
bunny (>= 0.6.0, < 0.8.0)
|
7
|
-
erubis
|
8
|
-
highline (>= 1.6.9)
|
9
|
-
json (>= 1.4.4, <= 1.6.1)
|
10
|
-
mixlib-authentication (>= 1.3.0)
|
11
|
-
mixlib-cli (>= 1.1.0)
|
12
|
-
mixlib-config (>= 1.1.2)
|
13
|
-
mixlib-log (>= 1.3.0)
|
14
|
-
mixlib-shellout
|
15
|
-
moneta (< 0.7.0)
|
16
|
-
net-ssh (~> 2.2.2)
|
17
|
-
net-ssh-multi (~> 1.1.0)
|
18
|
-
ohai (>= 0.6.0)
|
19
|
-
rest-client (>= 1.0.4, < 1.7.0)
|
20
|
-
treetop (~> 1.4.9)
|
21
|
-
uuidtools
|
22
|
-
yajl-ruby (~> 1.1)
|
23
|
-
diff-lcs (1.1.3)
|
24
|
-
erubis (2.7.0)
|
25
|
-
highline (1.6.15)
|
26
|
-
ipaddress (0.8.0)
|
27
|
-
json (1.6.1)
|
28
|
-
kitchen-scribe (0.1.0)
|
29
|
-
chef (>= 0.10.10)
|
30
|
-
mime-types (1.19)
|
31
|
-
mixlib-authentication (1.3.0)
|
32
|
-
mixlib-log
|
33
|
-
mixlib-cli (1.3.0)
|
34
|
-
mixlib-config (1.1.2)
|
35
|
-
mixlib-log (1.4.1)
|
36
|
-
mixlib-shellout (1.1.0)
|
37
|
-
moneta (0.6.0)
|
38
|
-
net-ssh (2.2.2)
|
39
|
-
net-ssh-gateway (1.1.0)
|
40
|
-
net-ssh (>= 1.99.1)
|
41
|
-
net-ssh-multi (1.1)
|
42
|
-
net-ssh (>= 2.1.4)
|
43
|
-
net-ssh-gateway (>= 0.99.0)
|
44
|
-
ohai (6.16.0)
|
45
|
-
ipaddress
|
46
|
-
mixlib-cli
|
47
|
-
mixlib-config
|
48
|
-
mixlib-log
|
49
|
-
mixlib-shellout
|
50
|
-
systemu
|
51
|
-
yajl-ruby
|
52
|
-
polyglot (0.3.3)
|
53
|
-
rest-client (1.6.7)
|
54
|
-
mime-types (>= 1.16)
|
55
|
-
rspec (2.12.0)
|
56
|
-
rspec-core (~> 2.12.0)
|
57
|
-
rspec-expectations (~> 2.12.0)
|
58
|
-
rspec-mocks (~> 2.12.0)
|
59
|
-
rspec-core (2.12.2)
|
60
|
-
rspec-expectations (2.12.1)
|
61
|
-
diff-lcs (~> 1.1.3)
|
62
|
-
rspec-mocks (2.12.1)
|
63
|
-
systemu (2.5.2)
|
64
|
-
treetop (1.4.12)
|
65
|
-
polyglot
|
66
|
-
polyglot (>= 0.3.1)
|
67
|
-
uuidtools (2.1.3)
|
68
|
-
yajl-ruby (1.1.0)
|
69
|
-
|
70
|
-
PLATFORMS
|
71
|
-
ruby
|
72
|
-
|
73
|
-
DEPENDENCIES
|
74
|
-
chef
|
75
|
-
kitchen-scribe
|
76
|
-
rspec
|