chef 0.9.18 → 0.10.0.beta.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +0 -3
- data/distro/arch/etc/rc.d/chef-server +0 -4
- data/distro/arch/etc/rc.d/chef-server-webui +0 -4
- data/distro/arch/etc/rc.d/chef-solr +0 -4
- data/distro/arch/etc/rc.d/chef-solr-indexer +0 -4
- data/lib/chef.rb +3 -3
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/application.rb +11 -1
- data/lib/chef/application/client.rb +18 -22
- data/lib/chef/application/knife.rb +28 -29
- data/lib/chef/application/solo.rb +14 -12
- data/lib/chef/client.rb +112 -54
- data/lib/chef/config.rb +4 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +6 -5
- data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +10 -8
- data/lib/chef/cookbook/metadata.rb +200 -108
- data/lib/chef/cookbook_loader.rb +39 -163
- data/lib/chef/cookbook_uploader.rb +100 -78
- data/lib/chef/cookbook_version.rb +92 -47
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +9 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +82 -1
- data/lib/chef/index_queue/amqp_client.rb +15 -12
- data/lib/chef/index_queue/indexable.rb +38 -4
- data/lib/chef/json_compat.rb +3 -3
- data/lib/chef/knife.rb +97 -202
- data/lib/chef/knife/bootstrap.rb +27 -61
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +4 -2
- data/lib/chef/knife/bootstrap/centos5-gems.erb +6 -15
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +3 -4
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +2 -2
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +6 -5
- data/lib/chef/knife/client_bulk_delete.rb +6 -3
- data/lib/chef/knife/client_create.rb +13 -10
- data/lib/chef/knife/client_delete.rb +10 -7
- data/lib/chef/knife/client_edit.rb +9 -6
- data/lib/chef/knife/client_list.rb +8 -5
- data/lib/chef/knife/client_reregister.rb +9 -6
- data/lib/chef/knife/client_show.rb +9 -6
- data/lib/chef/knife/configure.rb +15 -19
- data/lib/chef/knife/configure_client.rb +4 -4
- data/lib/chef/knife/cookbook_bulk_delete.rb +11 -8
- data/lib/chef/knife/cookbook_create.rb +120 -55
- data/lib/chef/knife/cookbook_delete.rb +18 -12
- data/lib/chef/knife/cookbook_download.rb +10 -6
- data/lib/chef/knife/cookbook_list.rb +15 -6
- data/lib/chef/knife/cookbook_metadata.rb +41 -21
- data/lib/chef/knife/cookbook_metadata_from_file.rb +4 -0
- data/lib/chef/knife/cookbook_show.rb +16 -5
- data/lib/chef/knife/cookbook_site_download.rb +2 -2
- data/lib/chef/knife/cookbook_site_share.rb +18 -13
- data/lib/chef/knife/cookbook_site_unshare.rb +7 -4
- data/lib/chef/knife/cookbook_site_vendor.rb +21 -18
- data/lib/chef/knife/cookbook_test.rb +14 -14
- data/lib/chef/knife/cookbook_upload.rb +91 -40
- data/lib/chef/knife/data_bag_create.rb +41 -6
- data/lib/chef/knife/data_bag_delete.rb +5 -3
- data/lib/chef/knife/data_bag_edit.rb +55 -11
- data/lib/chef/knife/data_bag_from_file.rb +47 -7
- data/lib/chef/knife/data_bag_list.rb +4 -1
- data/lib/chef/knife/data_bag_show.rb +44 -4
- data/lib/chef/knife/environment_create.rb +53 -0
- data/lib/chef/knife/environment_delete.rb +45 -0
- data/lib/chef/knife/environment_edit.rb +45 -0
- data/lib/chef/knife/environment_from_file.rb +39 -0
- data/lib/chef/knife/environment_list.rb +42 -0
- data/lib/chef/knife/environment_show.rb +46 -0
- data/lib/chef/knife/exec.rb +1 -1
- data/lib/chef/knife/index_rebuild.rb +8 -9
- data/lib/chef/knife/node_bulk_delete.rb +9 -6
- data/lib/chef/knife/node_create.rb +9 -6
- data/lib/chef/knife/node_delete.rb +10 -7
- data/lib/chef/knife/node_edit.rb +129 -10
- data/lib/chef/knife/node_from_file.rb +10 -7
- data/lib/chef/knife/node_list.rb +11 -6
- data/lib/chef/knife/node_run_list_add.rb +10 -7
- data/lib/chef/knife/node_run_list_remove.rb +9 -6
- data/lib/chef/knife/node_show.rb +15 -7
- data/lib/chef/knife/recipe_list.rb +4 -3
- data/lib/chef/knife/role_bulk_delete.rb +9 -6
- data/lib/chef/knife/role_create.rb +9 -6
- data/lib/chef/knife/role_delete.rb +10 -7
- data/lib/chef/knife/role_edit.rb +11 -8
- data/lib/chef/knife/role_from_file.rb +10 -7
- data/lib/chef/knife/role_list.rb +8 -5
- data/lib/chef/knife/role_show.rb +11 -8
- data/lib/chef/knife/search.rb +33 -10
- data/lib/chef/knife/ssh.rb +33 -61
- data/lib/chef/knife/status.rb +7 -4
- data/lib/chef/knife/subcommand_loader.rb +101 -0
- data/lib/chef/knife/tag_create.rb +31 -0
- data/lib/chef/knife/tag_delete.rb +31 -0
- data/lib/chef/knife/tag_list.rb +29 -0
- data/lib/chef/knife/ui.rb +229 -0
- data/lib/chef/knife/windows_bootstrap.rb +8 -5
- data/lib/chef/log.rb +5 -59
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixins.rb +1 -2
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +96 -34
- data/lib/chef/platform.rb +27 -0
- data/lib/chef/provider/cookbook_file.rb +21 -20
- data/lib/chef/provider/deploy/revision.rb +3 -0
- data/lib/chef/provider/file.rb +20 -11
- data/lib/chef/provider/git.rb +26 -26
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/groupadd.rb +7 -4
- data/lib/chef/provider/group/usermod.rb +1 -1
- data/lib/chef/provider/package.rb +28 -28
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/portage.rb +50 -39
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +3 -20
- data/lib/chef/provider/remote_directory.rb +0 -2
- data/lib/chef/provider/remote_file.rb +2 -3
- data/lib/chef/provider/service/arch.rb +28 -35
- data/lib/chef/provider/service/simple.rb +1 -1
- data/lib/chef/provider/subversion.rb +22 -22
- data/lib/chef/providers.rb +1 -0
- data/lib/chef/recipe.rb +10 -12
- data/lib/chef/resource.rb +49 -42
- data/lib/chef/resource/gem_package.rb +7 -3
- data/lib/chef/resource/git.rb +5 -5
- data/lib/chef/resource/package.rb +7 -7
- data/lib/chef/resource/scm.rb +2 -1
- data/lib/chef/resource/solaris_package.rb +0 -1
- data/lib/chef/resource/yum_package.rb +0 -1
- data/lib/chef/rest.rb +7 -16
- data/lib/chef/rest/rest_request.rb +0 -16
- data/lib/chef/role.rb +67 -13
- data/lib/chef/run_context.rb +37 -21
- data/lib/chef/run_list.rb +30 -15
- data/lib/chef/run_list/run_list_expansion.rb +41 -20
- data/lib/chef/run_list/run_list_item.rb +20 -6
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/runner.rb +7 -15
- data/lib/chef/search/query.rb +12 -7
- data/lib/chef/shef.rb +6 -7
- data/lib/chef/shef/shef_session.rb +40 -35
- data/lib/chef/shell_out.rb +22 -201
- data/lib/chef/shell_out/unix.rb +224 -0
- data/lib/chef/shell_out/windows.rb +95 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +145 -0
- data/lib/chef/solr_query/lucene_nodes.rb +285 -0
- data/lib/chef/solr_query/query_transform.rb +65 -0
- data/lib/chef/solr_query/solr_http_request.rb +118 -0
- data/lib/chef/version.rb +4 -2
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- metadata +68 -37
- data/lib/chef/cookbook/metadata/version.rb +0 -87
- data/lib/chef/knife/bluebox_images_list.rb +0 -54
- data/lib/chef/knife/bluebox_server_create.rb +0 -157
- data/lib/chef/knife/bluebox_server_delete.rb +0 -63
- data/lib/chef/knife/bluebox_server_list.rb +0 -59
- data/lib/chef/knife/ec2_instance_data.rb +0 -46
- data/lib/chef/knife/ec2_server_create.rb +0 -218
- data/lib/chef/knife/ec2_server_delete.rb +0 -87
- data/lib/chef/knife/ec2_server_list.rb +0 -89
- data/lib/chef/knife/rackspace_server_create.rb +0 -184
- data/lib/chef/knife/rackspace_server_delete.rb +0 -57
- data/lib/chef/knife/rackspace_server_list.rb +0 -59
- data/lib/chef/knife/slicehost_images_list.rb +0 -53
- data/lib/chef/knife/slicehost_server_create.rb +0 -103
- data/lib/chef/knife/slicehost_server_delete.rb +0 -61
- data/lib/chef/knife/slicehost_server_list.rb +0 -64
- data/lib/chef/knife/terremark_server_create.rb +0 -152
- data/lib/chef/knife/terremark_server_delete.rb +0 -87
- data/lib/chef/knife/terremark_server_list.rb +0 -77
- data/lib/chef/mixin/find_preferred_file.rb +0 -92
@@ -17,13 +17,15 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/knife'
|
20
|
-
require 'chef/data_bag'
|
21
|
-
require 'chef/json_compat'
|
22
20
|
|
23
21
|
class Chef
|
24
22
|
class Knife
|
25
23
|
class DataBagDelete < Knife
|
26
24
|
|
25
|
+
deps do
|
26
|
+
require 'chef/data_bag'
|
27
|
+
end
|
28
|
+
|
27
29
|
banner "knife data bag delete BAG [ITEM] (options)"
|
28
30
|
category "data bag"
|
29
31
|
|
@@ -38,7 +40,7 @@ class Chef
|
|
38
40
|
end
|
39
41
|
else
|
40
42
|
show_usage
|
41
|
-
|
43
|
+
ui.fatal("You must specify at least a data bag name")
|
42
44
|
exit 1
|
43
45
|
end
|
44
46
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
3
|
-
#
|
3
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
4
|
+
# Copyright:: Copyright (c) 2009-2010 Opscode, Inc.
|
4
5
|
# License:: Apache License, Version 2.0
|
5
6
|
#
|
6
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -17,30 +18,73 @@
|
|
17
18
|
#
|
18
19
|
|
19
20
|
require 'chef/knife'
|
20
|
-
require 'chef/data_bag_item'
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
class Knife
|
24
24
|
class DataBagEdit < Knife
|
25
25
|
|
26
|
+
deps do
|
27
|
+
require 'chef/data_bag_item'
|
28
|
+
require 'chef/encrypted_data_bag_item'
|
29
|
+
end
|
30
|
+
|
26
31
|
banner "knife data bag edit BAG ITEM (options)"
|
27
32
|
category "data bag"
|
28
33
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
34
|
+
option :secret,
|
35
|
+
:short => "-s SECRET",
|
36
|
+
:long => "--secret ",
|
37
|
+
:description => "The secret key to use to encrypt data bag item values"
|
38
|
+
|
39
|
+
option :secret_file,
|
40
|
+
:long => "--secret_file SECRET_FILE",
|
41
|
+
:description => "A file containing the secret key to use to encrypt data bag item values"
|
42
|
+
|
43
|
+
def read_secret
|
44
|
+
if config[:secret]
|
45
|
+
config[:secret]
|
33
46
|
else
|
34
|
-
|
47
|
+
Chef::EncryptedDataBagItem.load_secret(config[:secret_file])
|
48
|
+
end
|
49
|
+
end
|
35
50
|
|
36
|
-
|
51
|
+
def use_encryption
|
52
|
+
if config[:secret] && config[:secret_file]
|
53
|
+
stdout.puts "please specify only one of --secret, --secret_file"
|
54
|
+
exit(1)
|
55
|
+
end
|
56
|
+
config[:secret] || config[:secret_file]
|
57
|
+
end
|
37
58
|
|
38
|
-
|
59
|
+
def load_item(bag, item_name)
|
60
|
+
item = Chef::DataBagItem.load(bag, item_name)
|
61
|
+
if use_encryption
|
62
|
+
Chef::EncryptedDataBagItem.new(item, read_secret).to_hash
|
63
|
+
else
|
64
|
+
item
|
65
|
+
end
|
66
|
+
end
|
39
67
|
|
40
|
-
|
68
|
+
def edit_item(item)
|
69
|
+
output = edit_data(item)
|
70
|
+
if use_encryption
|
71
|
+
Chef::EncryptedDataBagItem.encrypt_data_bag_item(output, read_secret)
|
72
|
+
else
|
73
|
+
output
|
74
|
+
end
|
75
|
+
end
|
41
76
|
|
42
|
-
|
77
|
+
def run
|
78
|
+
if @name_args.length != 2
|
79
|
+
stdout.puts "You must supply the data bag and an item to edit!"
|
80
|
+
stdout.puts opt_parser
|
81
|
+
exit 1
|
43
82
|
end
|
83
|
+
item = load_item(@name_args[0], @name_args[1])
|
84
|
+
output = edit_item(item)
|
85
|
+
rest.put_rest("data/#{@name_args[0]}/#{@name_args[1]}", output)
|
86
|
+
stdout.puts("Saved data_bag_item[#{@name_args[1]}]")
|
87
|
+
output(format_for_display(object)) if config[:print_after]
|
44
88
|
end
|
45
89
|
end
|
46
90
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
3
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
3
4
|
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
4
5
|
# License:: Apache License, Version 2.0
|
5
6
|
#
|
@@ -17,24 +18,63 @@
|
|
17
18
|
#
|
18
19
|
|
19
20
|
require 'chef/knife'
|
20
|
-
require 'chef/data_bag'
|
21
|
-
require 'chef/data_bag_item'
|
22
|
-
require 'chef/json_compat'
|
23
21
|
|
24
22
|
class Chef
|
25
23
|
class Knife
|
26
24
|
class DataBagFromFile < Knife
|
27
25
|
|
26
|
+
deps do
|
27
|
+
require 'chef/data_bag'
|
28
|
+
require 'chef/data_bag_item'
|
29
|
+
require 'chef/json_compat'
|
30
|
+
require 'chef/encrypted_data_bag_item'
|
31
|
+
end
|
32
|
+
|
28
33
|
banner "knife data bag from file BAG FILE (options)"
|
29
34
|
category "data bag"
|
30
35
|
|
31
|
-
|
32
|
-
|
36
|
+
option :secret,
|
37
|
+
:short => "-s SECRET",
|
38
|
+
:long => "--secret ",
|
39
|
+
:description => "The secret key to use to encrypt data bag item values"
|
40
|
+
|
41
|
+
option :secret_file,
|
42
|
+
:long => "--secret_file SECRET_FILE",
|
43
|
+
:description => "A file containing the secret key to use to encrypt data bag item values"
|
44
|
+
|
45
|
+
def read_secret
|
46
|
+
if config[:secret]
|
47
|
+
config[:secret]
|
48
|
+
else
|
49
|
+
Chef::EncryptedDataBagItem.load_secret(config[:secret_file])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def use_encryption
|
54
|
+
if config[:secret] && config[:secret_file]
|
55
|
+
stdout.puts "please specify only one of --secret, --secret_file"
|
56
|
+
exit(1)
|
57
|
+
end
|
58
|
+
config[:secret] || config[:secret_file]
|
59
|
+
end
|
60
|
+
|
61
|
+
def run
|
62
|
+
if @name_args.size != 2
|
63
|
+
stdout.puts opt_parser
|
64
|
+
exit(1)
|
65
|
+
end
|
66
|
+
item = load_from_file(Chef::DataBagItem, @name_args[1], @name_args[0])
|
67
|
+
item = if use_encryption
|
68
|
+
secret = read_secret
|
69
|
+
Chef::EncryptedDataBagItem.encrypt_data_bag_item(item, secret)
|
70
|
+
else
|
71
|
+
item
|
72
|
+
end
|
33
73
|
dbag = Chef::DataBagItem.new
|
34
74
|
dbag.data_bag(@name_args[0])
|
35
|
-
dbag.raw_data =
|
75
|
+
dbag.raw_data = item
|
36
76
|
dbag.save
|
37
|
-
|
77
|
+
ui.info("Updated data_bag_item[#{@name_args[1]}]")
|
38
78
|
end
|
39
79
|
end
|
40
80
|
end
|
@@ -17,12 +17,15 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'chef/knife'
|
20
|
-
require 'chef/data_bag'
|
21
20
|
|
22
21
|
class Chef
|
23
22
|
class Knife
|
24
23
|
class DataBagList < Knife
|
25
24
|
|
25
|
+
deps do
|
26
|
+
require 'chef/data_bag'
|
27
|
+
end
|
28
|
+
|
26
29
|
banner "knife data bag list (options)"
|
27
30
|
category "data bag"
|
28
31
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#
|
2
2
|
# Author:: Adam Jacob (<adam@opscode.com>)
|
3
|
-
#
|
3
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
4
|
+
# Copyright:: Copyright (c) 2009-2010 Opscode, Inc.
|
4
5
|
# License:: Apache License, Version 2.0
|
5
6
|
#
|
6
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
@@ -17,21 +18,60 @@
|
|
17
18
|
#
|
18
19
|
|
19
20
|
require 'chef/knife'
|
20
|
-
require 'chef/data_bag'
|
21
21
|
|
22
22
|
class Chef
|
23
23
|
class Knife
|
24
24
|
class DataBagShow < Knife
|
25
25
|
|
26
|
+
deps do
|
27
|
+
require 'chef/data_bag'
|
28
|
+
require 'chef/encrypted_data_bag_item'
|
29
|
+
end
|
30
|
+
|
26
31
|
banner "knife data bag show BAG [ITEM] (options)"
|
27
32
|
category "data bag"
|
28
33
|
|
34
|
+
option :secret,
|
35
|
+
:short => "-s SECRET",
|
36
|
+
:long => "--secret ",
|
37
|
+
:description => "The secret key to use to decrypt data bag item values"
|
38
|
+
|
39
|
+
option :secret_file,
|
40
|
+
:long => "--secret_file SECRET_FILE",
|
41
|
+
:description => "A file containing the secret key to use to decrypt data bag item values"
|
42
|
+
|
43
|
+
def read_secret
|
44
|
+
if config[:secret]
|
45
|
+
config[:secret]
|
46
|
+
else
|
47
|
+
Chef::EncryptedDataBagItem.load_secret(config[:secret_file])
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def use_encryption
|
52
|
+
if config[:secret] && config[:secret_file]
|
53
|
+
stdout.puts "please specify only one of --secret, --secret_file"
|
54
|
+
exit(1)
|
55
|
+
end
|
56
|
+
config[:secret] || config[:secret_file]
|
57
|
+
end
|
58
|
+
|
29
59
|
def run
|
30
60
|
display = case @name_args.length
|
31
61
|
when 2
|
32
|
-
|
33
|
-
|
62
|
+
if use_encryption
|
63
|
+
raw = Chef::EncryptedDataBagItem.load(@name_args[0],
|
64
|
+
@name_args[1],
|
65
|
+
read_secret)
|
66
|
+
format_for_display(raw.to_hash)
|
67
|
+
else
|
68
|
+
format_for_display(Chef::DataBagItem.load(@name_args[0], @name_args[1]))
|
69
|
+
end
|
70
|
+
when 1
|
34
71
|
format_list_for_display(Chef::DataBag.load(@name_args[0]))
|
72
|
+
else
|
73
|
+
stdout.puts opt_parser
|
74
|
+
exit(1)
|
35
75
|
end
|
36
76
|
output(display)
|
37
77
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stephen Delano (<stephen@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class EnvironmentCreate < Knife
|
24
|
+
|
25
|
+
deps do
|
26
|
+
require 'chef/environment'
|
27
|
+
require 'chef/json_compat'
|
28
|
+
end
|
29
|
+
|
30
|
+
banner "knife environment create ENVIRONMENT (options)"
|
31
|
+
|
32
|
+
option :description,
|
33
|
+
:short => "-d DESCRIPTION",
|
34
|
+
:long => "--description DESCRIPTION",
|
35
|
+
:description => "The environment description"
|
36
|
+
|
37
|
+
def run
|
38
|
+
env_name = @name_args[0]
|
39
|
+
|
40
|
+
if env_name.nil?
|
41
|
+
show_usage
|
42
|
+
ui.fatal("You must specify an environment name")
|
43
|
+
exit 1
|
44
|
+
end
|
45
|
+
|
46
|
+
env = Chef::Environment.new
|
47
|
+
env.name(env_name)
|
48
|
+
env.description(config[:description]) if config[:description]
|
49
|
+
create_object(env)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stephen Delano (<stephen@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class EnvironmentDelete < Knife
|
24
|
+
|
25
|
+
deps do
|
26
|
+
require 'chef/environment'
|
27
|
+
require 'chef/json_compat'
|
28
|
+
end
|
29
|
+
|
30
|
+
banner "knife environment delete ENVIRONMENT (options)"
|
31
|
+
|
32
|
+
def run
|
33
|
+
env_name = @name_args[0]
|
34
|
+
|
35
|
+
if env_name.nil?
|
36
|
+
show_usage
|
37
|
+
ui.fatal("You must specify an environment name")
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
|
41
|
+
delete_object(Chef::Environment, env_name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stephen Delano (<stephen@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'chef/knife'
|
20
|
+
|
21
|
+
class Chef
|
22
|
+
class Knife
|
23
|
+
class EnvironmentEdit < Knife
|
24
|
+
|
25
|
+
deps do
|
26
|
+
require 'chef/environment'
|
27
|
+
require 'chef/json_compat'
|
28
|
+
end
|
29
|
+
|
30
|
+
banner "knife environment edit ENVIRONMENT (options)"
|
31
|
+
|
32
|
+
def run
|
33
|
+
env_name = @name_args[0]
|
34
|
+
|
35
|
+
if env_name.nil?
|
36
|
+
show_usage
|
37
|
+
ui.fatal("You must specify an environment name")
|
38
|
+
exit 1
|
39
|
+
end
|
40
|
+
|
41
|
+
edit_object(Chef::Environment, env_name)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Stephen Delano (<stephen@opscode.com>)
|
3
|
+
# Copyright:: Copyright (c) 2010 Opscode, Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
class Chef
|
20
|
+
class Knife
|
21
|
+
class EnvironmentFromFile < Knife
|
22
|
+
|
23
|
+
banner "knife environment from file FILE (options)"
|
24
|
+
|
25
|
+
def run
|
26
|
+
if @name_args[0].nil?
|
27
|
+
show_usage
|
28
|
+
ui.fatal("You must specify a file to load")
|
29
|
+
exit 1
|
30
|
+
end
|
31
|
+
|
32
|
+
updated = load_from_file(Chef::Environment, @name_args[0])
|
33
|
+
updated.save
|
34
|
+
output(format_for_display(updated)) if config[:print_after]
|
35
|
+
ui.warn("Updated Environment #{updated.name}!")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|