TrueCar-chef 0.10.0.beta.3
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/LICENSE +201 -0
- data/README.rdoc +171 -0
- data/bin/chef-client +26 -0
- data/bin/chef-solo +25 -0
- data/bin/knife +26 -0
- data/bin/shef +34 -0
- data/distro/README +2 -0
- data/distro/arch/etc/conf.d/chef-client.conf +5 -0
- data/distro/arch/etc/conf.d/chef-server-webui.conf +10 -0
- data/distro/arch/etc/conf.d/chef-server.conf +10 -0
- data/distro/arch/etc/conf.d/chef-solr-indexer.conf +8 -0
- data/distro/arch/etc/conf.d/chef-solr.conf +8 -0
- data/distro/arch/etc/rc.d/chef-client +76 -0
- data/distro/arch/etc/rc.d/chef-server +78 -0
- data/distro/arch/etc/rc.d/chef-server-webui +78 -0
- data/distro/arch/etc/rc.d/chef-solr +78 -0
- data/distro/arch/etc/rc.d/chef-solr-indexer +78 -0
- data/distro/common/man/man1/chef-indexer.1 +42 -0
- data/distro/common/man/man1/chef-server-webui.1 +106 -0
- data/distro/common/man/man1/chef-server.1 +107 -0
- data/distro/common/man/man1/chef-solr-indexer.1 +55 -0
- data/distro/common/man/man1/chef-solr.1 +55 -0
- data/distro/common/man/man8/chef-client.8 +63 -0
- data/distro/common/man/man8/chef-solo.8 +57 -0
- data/distro/common/man/man8/chef-solr-rebuild.8 +37 -0
- data/distro/common/man/man8/knife.8 +1349 -0
- data/distro/common/man/man8/shef.8 +45 -0
- data/distro/common/markdown/README +3 -0
- data/distro/common/markdown/knife.mkd +865 -0
- data/distro/debian/etc/default/chef-client +4 -0
- data/distro/debian/etc/default/chef-server +9 -0
- data/distro/debian/etc/default/chef-server-webui +9 -0
- data/distro/debian/etc/default/chef-solr +8 -0
- data/distro/debian/etc/default/chef-solr-indexer +7 -0
- data/distro/debian/etc/init.d/chef-client +175 -0
- data/distro/debian/etc/init.d/chef-server +122 -0
- data/distro/debian/etc/init.d/chef-server-webui +123 -0
- data/distro/debian/etc/init.d/chef-solr +176 -0
- data/distro/debian/etc/init.d/chef-solr-indexer +176 -0
- data/distro/debian/etc/init/chef-client.conf +17 -0
- data/distro/debian/etc/init/chef-server-webui.conf +17 -0
- data/distro/debian/etc/init/chef-server.conf +17 -0
- data/distro/debian/etc/init/chef-solr-indexer.conf +17 -0
- data/distro/debian/etc/init/chef-solr.conf +17 -0
- data/distro/redhat/etc/init.d/chef-client +106 -0
- data/distro/redhat/etc/init.d/chef-server +112 -0
- data/distro/redhat/etc/init.d/chef-server-webui +112 -0
- data/distro/redhat/etc/init.d/chef-solr +104 -0
- data/distro/redhat/etc/init.d/chef-solr-indexer +104 -0
- data/distro/redhat/etc/logrotate.d/chef-client +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server +8 -0
- data/distro/redhat/etc/logrotate.d/chef-server-webui +8 -0
- data/distro/redhat/etc/logrotate.d/chef-solr +8 -0
- data/distro/redhat/etc/logrotate.d/chef-solr-indexer +8 -0
- data/distro/redhat/etc/sysconfig/chef-client +15 -0
- data/distro/redhat/etc/sysconfig/chef-server +14 -0
- data/distro/redhat/etc/sysconfig/chef-server-webui +14 -0
- data/distro/redhat/etc/sysconfig/chef-solr +8 -0
- data/distro/redhat/etc/sysconfig/chef-solr-indexer +7 -0
- data/lib/chef.rb +40 -0
- data/lib/chef/api_client.rb +264 -0
- data/lib/chef/application.rb +137 -0
- data/lib/chef/application/agent.rb +18 -0
- data/lib/chef/application/client.rb +242 -0
- data/lib/chef/application/knife.rb +169 -0
- data/lib/chef/application/solo.rb +217 -0
- data/lib/chef/applications.rb +4 -0
- data/lib/chef/certificate.rb +194 -0
- data/lib/chef/checksum.rb +182 -0
- data/lib/chef/checksum_cache.rb +189 -0
- data/lib/chef/client.rb +362 -0
- data/lib/chef/config.rb +244 -0
- data/lib/chef/cookbook/chefignore.rb +66 -0
- data/lib/chef/cookbook/cookbook_collection.rb +45 -0
- data/lib/chef/cookbook/cookbook_version_loader.rb +151 -0
- data/lib/chef/cookbook/file_system_file_vendor.rb +56 -0
- data/lib/chef/cookbook/file_vendor.rb +48 -0
- data/lib/chef/cookbook/metadata.rb +592 -0
- data/lib/chef/cookbook/remote_file_vendor.rb +87 -0
- data/lib/chef/cookbook/syntax_check.rb +136 -0
- data/lib/chef/cookbook_loader.rb +103 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +244 -0
- data/lib/chef/cookbook_uploader.rb +125 -0
- data/lib/chef/cookbook_version.rb +979 -0
- data/lib/chef/cookbook_version_selector.rb +163 -0
- data/lib/chef/couchdb.rb +247 -0
- data/lib/chef/daemon.rb +172 -0
- data/lib/chef/data_bag.rb +223 -0
- data/lib/chef/data_bag_item.rb +267 -0
- data/lib/chef/encrypted_data_bag_item.rb +126 -0
- data/lib/chef/environment.rb +386 -0
- data/lib/chef/exceptions.rb +153 -0
- data/lib/chef/file_access_control.rb +140 -0
- data/lib/chef/file_cache.rb +218 -0
- data/lib/chef/handler.rb +206 -0
- data/lib/chef/handler/json_file.rb +58 -0
- data/lib/chef/index_queue.rb +29 -0
- data/lib/chef/index_queue/amqp_client.rb +116 -0
- data/lib/chef/index_queue/consumer.rb +76 -0
- data/lib/chef/index_queue/indexable.rb +109 -0
- data/lib/chef/json_compat.rb +52 -0
- data/lib/chef/knife.rb +424 -0
- data/lib/chef/knife/bootstrap.rb +185 -0
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +47 -0
- data/lib/chef/knife/bootstrap/centos5-gems.erb +41 -0
- data/lib/chef/knife/bootstrap/client-install.vbs +80 -0
- data/lib/chef/knife/bootstrap/fedora13-gems.erb +38 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-apt.erb +32 -0
- data/lib/chef/knife/bootstrap/ubuntu10.04-gems.erb +46 -0
- data/lib/chef/knife/bootstrap/windows-gems.erb +34 -0
- data/lib/chef/knife/client_bulk_delete.rb +43 -0
- data/lib/chef/knife/client_create.rb +73 -0
- data/lib/chef/knife/client_delete.rb +48 -0
- data/lib/chef/knife/client_edit.rb +48 -0
- data/lib/chef/knife/client_list.rb +43 -0
- data/lib/chef/knife/client_reregister.rb +59 -0
- data/lib/chef/knife/client_show.rb +53 -0
- data/lib/chef/knife/configure.rb +136 -0
- data/lib/chef/knife/configure_client.rb +52 -0
- data/lib/chef/knife/cookbook_bulk_delete.rb +61 -0
- data/lib/chef/knife/cookbook_create.rb +274 -0
- data/lib/chef/knife/cookbook_delete.rb +149 -0
- data/lib/chef/knife/cookbook_download.rb +134 -0
- data/lib/chef/knife/cookbook_list.rb +50 -0
- data/lib/chef/knife/cookbook_metadata.rb +102 -0
- data/lib/chef/knife/cookbook_metadata_from_file.rb +44 -0
- data/lib/chef/knife/cookbook_show.rb +101 -0
- data/lib/chef/knife/cookbook_site_download.rb +58 -0
- data/lib/chef/knife/cookbook_site_list.rb +56 -0
- data/lib/chef/knife/cookbook_site_search.rb +51 -0
- data/lib/chef/knife/cookbook_site_share.rb +114 -0
- data/lib/chef/knife/cookbook_site_show.rb +57 -0
- data/lib/chef/knife/cookbook_site_unshare.rb +56 -0
- data/lib/chef/knife/cookbook_site_vendor.rb +145 -0
- data/lib/chef/knife/cookbook_test.rb +82 -0
- data/lib/chef/knife/cookbook_upload.rb +146 -0
- data/lib/chef/knife/data_bag_create.rb +94 -0
- data/lib/chef/knife/data_bag_delete.rb +51 -0
- data/lib/chef/knife/data_bag_edit.rb +94 -0
- data/lib/chef/knife/data_bag_from_file.rb +85 -0
- data/lib/chef/knife/data_bag_list.rb +46 -0
- data/lib/chef/knife/data_bag_show.rb +81 -0
- 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 +51 -0
- data/lib/chef/knife/index_rebuild.rb +50 -0
- data/lib/chef/knife/node_bulk_delete.rb +46 -0
- data/lib/chef/knife/node_create.rb +50 -0
- data/lib/chef/knife/node_delete.rb +47 -0
- data/lib/chef/knife/node_edit.rb +163 -0
- data/lib/chef/knife/node_from_file.rb +45 -0
- data/lib/chef/knife/node_list.rb +46 -0
- data/lib/chef/knife/node_run_list_add.rb +67 -0
- data/lib/chef/knife/node_run_list_remove.rb +48 -0
- data/lib/chef/knife/node_show.rb +62 -0
- data/lib/chef/knife/recipe_list.rb +33 -0
- data/lib/chef/knife/role_bulk_delete.rb +47 -0
- data/lib/chef/knife/role_create.rb +55 -0
- data/lib/chef/knife/role_delete.rb +47 -0
- data/lib/chef/knife/role_edit.rb +48 -0
- data/lib/chef/knife/role_from_file.rb +49 -0
- data/lib/chef/knife/role_list.rb +43 -0
- data/lib/chef/knife/role_show.rb +54 -0
- data/lib/chef/knife/search.rb +123 -0
- data/lib/chef/knife/ssh.rb +318 -0
- data/lib/chef/knife/status.rb +90 -0
- 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 +227 -0
- data/lib/chef/knife/windows_bootstrap.rb +157 -0
- data/lib/chef/log.rb +39 -0
- data/lib/chef/mash.rb +211 -0
- data/lib/chef/mixin/check_helper.rb +31 -0
- data/lib/chef/mixin/checksum.rb +32 -0
- data/lib/chef/mixin/command.rb +221 -0
- data/lib/chef/mixin/command/unix.rb +215 -0
- data/lib/chef/mixin/command/windows.rb +76 -0
- data/lib/chef/mixin/convert_to_class_name.rb +63 -0
- data/lib/chef/mixin/create_path.rb +56 -0
- data/lib/chef/mixin/deep_merge.rb +225 -0
- data/lib/chef/mixin/deprecation.rb +65 -0
- data/lib/chef/mixin/from_file.rb +50 -0
- data/lib/chef/mixin/language.rb +165 -0
- data/lib/chef/mixin/language_include_attribute.rb +61 -0
- data/lib/chef/mixin/language_include_recipe.rb +52 -0
- data/lib/chef/mixin/params_validate.rb +225 -0
- data/lib/chef/mixin/recipe_definition_dsl_core.rb +81 -0
- data/lib/chef/mixin/shell_out.rb +40 -0
- data/lib/chef/mixin/template.rb +95 -0
- data/lib/chef/mixin/xml_escape.rb +140 -0
- data/lib/chef/mixins.rb +15 -0
- data/lib/chef/monkey_patches/dir.rb +36 -0
- data/lib/chef/monkey_patches/numeric.rb +7 -0
- data/lib/chef/monkey_patches/regexp.rb +34 -0
- data/lib/chef/monkey_patches/string.rb +28 -0
- data/lib/chef/monkey_patches/tempfile.rb +64 -0
- data/lib/chef/nil_argument.rb +3 -0
- data/lib/chef/node.rb +661 -0
- data/lib/chef/node/attribute.rb +487 -0
- data/lib/chef/openid_registration.rb +187 -0
- data/lib/chef/platform.rb +409 -0
- data/lib/chef/provider.rb +124 -0
- data/lib/chef/provider/breakpoint.rb +36 -0
- data/lib/chef/provider/cookbook_file.rb +101 -0
- data/lib/chef/provider/cron.rb +186 -0
- data/lib/chef/provider/cron/solaris.rb +195 -0
- data/lib/chef/provider/deploy.rb +320 -0
- data/lib/chef/provider/deploy/revision.rb +80 -0
- data/lib/chef/provider/deploy/timestamped.rb +33 -0
- data/lib/chef/provider/directory.rb +72 -0
- data/lib/chef/provider/env.rb +152 -0
- data/lib/chef/provider/env/windows.rb +75 -0
- data/lib/chef/provider/erl_call.rb +100 -0
- data/lib/chef/provider/execute.rb +60 -0
- data/lib/chef/provider/file.rb +222 -0
- data/lib/chef/provider/git.rb +221 -0
- data/lib/chef/provider/group.rb +133 -0
- data/lib/chef/provider/group/aix.rb +70 -0
- data/lib/chef/provider/group/dscl.rb +121 -0
- data/lib/chef/provider/group/gpasswd.rb +53 -0
- data/lib/chef/provider/group/groupadd.rb +81 -0
- data/lib/chef/provider/group/pw.rb +84 -0
- data/lib/chef/provider/group/usermod.rb +57 -0
- data/lib/chef/provider/group/windows.rb +79 -0
- data/lib/chef/provider/http_request.rb +122 -0
- data/lib/chef/provider/ifconfig.rb +132 -0
- data/lib/chef/provider/link.rb +161 -0
- data/lib/chef/provider/log.rb +54 -0
- data/lib/chef/provider/mdadm.rb +91 -0
- data/lib/chef/provider/mount.rb +117 -0
- data/lib/chef/provider/mount/mount.rb +232 -0
- data/lib/chef/provider/mount/windows.rb +80 -0
- data/lib/chef/provider/ohai.rb +41 -0
- data/lib/chef/provider/package.rb +160 -0
- data/lib/chef/provider/package/apt.rb +110 -0
- data/lib/chef/provider/package/dpkg.rb +112 -0
- data/lib/chef/provider/package/easy_install.rb +136 -0
- data/lib/chef/provider/package/freebsd.rb +123 -0
- data/lib/chef/provider/package/macports.rb +105 -0
- data/lib/chef/provider/package/pacman.rb +101 -0
- data/lib/chef/provider/package/portage.rb +135 -0
- data/lib/chef/provider/package/rpm.rb +101 -0
- data/lib/chef/provider/package/rubygems.rb +462 -0
- data/lib/chef/provider/package/solaris.rb +127 -0
- data/lib/chef/provider/package/yum-dump.py +128 -0
- data/lib/chef/provider/package/yum.rb +261 -0
- data/lib/chef/provider/package/zypper.rb +133 -0
- data/lib/chef/provider/remote_directory.rb +138 -0
- data/lib/chef/provider/remote_file.rb +119 -0
- data/lib/chef/provider/route.rb +195 -0
- data/lib/chef/provider/ruby_block.rb +33 -0
- data/lib/chef/provider/script.rb +55 -0
- data/lib/chef/provider/service.rb +128 -0
- data/lib/chef/provider/service/arch.rb +109 -0
- data/lib/chef/provider/service/debian.rb +130 -0
- data/lib/chef/provider/service/freebsd.rb +156 -0
- data/lib/chef/provider/service/gentoo.rb +54 -0
- data/lib/chef/provider/service/init.rb +71 -0
- data/lib/chef/provider/service/insserv.rb +52 -0
- data/lib/chef/provider/service/redhat.rb +60 -0
- data/lib/chef/provider/service/simple.rb +118 -0
- data/lib/chef/provider/service/solaris.rb +85 -0
- data/lib/chef/provider/service/upstart.rb +192 -0
- data/lib/chef/provider/service/windows.rb +146 -0
- data/lib/chef/provider/subversion.rb +194 -0
- data/lib/chef/provider/template.rb +105 -0
- data/lib/chef/provider/user.rb +187 -0
- data/lib/chef/provider/user/dscl.rb +280 -0
- data/lib/chef/provider/user/pw.rb +113 -0
- data/lib/chef/provider/user/useradd.rb +137 -0
- data/lib/chef/provider/user/windows.rb +124 -0
- data/lib/chef/providers.rb +93 -0
- data/lib/chef/recipe.rb +128 -0
- data/lib/chef/resource.rb +530 -0
- data/lib/chef/resource/apt_package.rb +34 -0
- data/lib/chef/resource/bash.rb +33 -0
- data/lib/chef/resource/breakpoint.rb +35 -0
- data/lib/chef/resource/cookbook_file.rb +45 -0
- data/lib/chef/resource/cron.rb +188 -0
- data/lib/chef/resource/csh.rb +33 -0
- data/lib/chef/resource/deploy.rb +371 -0
- data/lib/chef/resource/deploy_revision.rb +35 -0
- data/lib/chef/resource/directory.rb +76 -0
- data/lib/chef/resource/dpkg_package.rb +34 -0
- data/lib/chef/resource/easy_install_package.rb +57 -0
- data/lib/chef/resource/env.rb +58 -0
- data/lib/chef/resource/erl_call.rb +83 -0
- data/lib/chef/resource/execute.rb +127 -0
- data/lib/chef/resource/file.rb +99 -0
- data/lib/chef/resource/freebsd_package.rb +35 -0
- data/lib/chef/resource/gem_package.rb +53 -0
- data/lib/chef/resource/git.rb +37 -0
- data/lib/chef/resource/group.rb +70 -0
- data/lib/chef/resource/http_request.rb +61 -0
- data/lib/chef/resource/ifconfig.rb +134 -0
- data/lib/chef/resource/link.rb +78 -0
- data/lib/chef/resource/log.rb +62 -0
- data/lib/chef/resource/macports_package.rb +29 -0
- data/lib/chef/resource/mdadm.rb +82 -0
- data/lib/chef/resource/mount.rb +135 -0
- data/lib/chef/resource/ohai.rb +40 -0
- data/lib/chef/resource/package.rb +80 -0
- data/lib/chef/resource/pacman_package.rb +33 -0
- data/lib/chef/resource/perl.rb +33 -0
- data/lib/chef/resource/portage_package.rb +33 -0
- data/lib/chef/resource/python.rb +33 -0
- data/lib/chef/resource/remote_directory.rb +109 -0
- data/lib/chef/resource/remote_file.rb +83 -0
- data/lib/chef/resource/route.rb +135 -0
- data/lib/chef/resource/rpm_package.rb +34 -0
- data/lib/chef/resource/ruby.rb +33 -0
- data/lib/chef/resource/ruby_block.rb +40 -0
- data/lib/chef/resource/scm.rb +147 -0
- data/lib/chef/resource/script.rb +60 -0
- data/lib/chef/resource/service.rb +160 -0
- data/lib/chef/resource/solaris_package.rb +36 -0
- data/lib/chef/resource/subversion.rb +36 -0
- data/lib/chef/resource/template.rb +69 -0
- data/lib/chef/resource/timestamped_deploy.rb +31 -0
- data/lib/chef/resource/user.rb +130 -0
- data/lib/chef/resource/yum_package.rb +43 -0
- data/lib/chef/resource_collection.rb +217 -0
- data/lib/chef/resource_collection/stepable_iterator.rb +124 -0
- data/lib/chef/resource_definition.rb +67 -0
- data/lib/chef/resource_definition_list.rb +38 -0
- data/lib/chef/resources.rb +64 -0
- data/lib/chef/rest.rb +386 -0
- data/lib/chef/rest/auth_credentials.rb +71 -0
- data/lib/chef/rest/cookie_jar.rb +31 -0
- data/lib/chef/rest/rest_request.rb +188 -0
- data/lib/chef/role.rb +341 -0
- data/lib/chef/run_context.rb +126 -0
- data/lib/chef/run_list.rb +165 -0
- data/lib/chef/run_list/run_list_expansion.rb +193 -0
- data/lib/chef/run_list/run_list_item.rb +92 -0
- data/lib/chef/run_list/versioned_recipe_list.rb +68 -0
- data/lib/chef/run_status.rb +121 -0
- data/lib/chef/runner.rb +99 -0
- data/lib/chef/sandbox.rb +153 -0
- data/lib/chef/search/query.rb +65 -0
- data/lib/chef/shef.rb +326 -0
- data/lib/chef/shef/ext.rb +569 -0
- data/lib/chef/shef/model_wrapper.rb +120 -0
- data/lib/chef/shef/shef_rest.rb +28 -0
- data/lib/chef/shef/shef_session.rb +284 -0
- data/lib/chef/shell_out.rb +238 -0
- data/lib/chef/shell_out/unix.rb +223 -0
- data/lib/chef/shell_out/windows.rb +98 -0
- data/lib/chef/solr_query.rb +187 -0
- data/lib/chef/solr_query/lucene.treetop +150 -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/streaming_cookbook_uploader.rb +201 -0
- data/lib/chef/tasks/chef_repo.rake +256 -0
- data/lib/chef/util/file_edit.rb +122 -0
- data/lib/chef/util/windows.rb +56 -0
- data/lib/chef/util/windows/net_group.rb +101 -0
- data/lib/chef/util/windows/net_use.rb +121 -0
- data/lib/chef/util/windows/net_user.rb +198 -0
- data/lib/chef/util/windows/volume.rb +59 -0
- data/lib/chef/version.rb +23 -0
- data/lib/chef/version_class.rb +70 -0
- data/lib/chef/version_constraint.rb +116 -0
- data/lib/chef/webui_user.rb +231 -0
- metadata +600 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Doug MacEachern (<dougm@vmware.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2010 VMware, 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
|
+
#simple wrapper around Volume APIs. might be possible with WMI, but possibly more complex.
|
|
20
|
+
|
|
21
|
+
require 'chef/util/windows'
|
|
22
|
+
require 'windows/volume'
|
|
23
|
+
|
|
24
|
+
class Chef::Util::Windows::Volume < Chef::Util::Windows
|
|
25
|
+
|
|
26
|
+
private
|
|
27
|
+
include Windows::Volume
|
|
28
|
+
#XXX not defined in the current windows-pr release
|
|
29
|
+
DeleteVolumeMountPoint =
|
|
30
|
+
Windows::API.new('DeleteVolumeMountPoint', 'S', 'B') unless defined? DeleteVolumeMountPoint
|
|
31
|
+
|
|
32
|
+
public
|
|
33
|
+
|
|
34
|
+
def initialize(name)
|
|
35
|
+
name += "\\" unless name =~ /\\$/ #trailing slash required
|
|
36
|
+
@name = name
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def device
|
|
40
|
+
buffer = 0.chr * 256
|
|
41
|
+
if GetVolumeNameForVolumeMountPoint(@name, buffer, buffer.size)
|
|
42
|
+
return buffer[0,buffer.size].unpack("Z*")[0]
|
|
43
|
+
else
|
|
44
|
+
raise ArgumentError, get_last_error
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def delete
|
|
49
|
+
unless DeleteVolumeMountPoint.call(@name)
|
|
50
|
+
raise ArgumentError, get_last_error
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def add(device)
|
|
55
|
+
unless SetVolumeMountPoint(@name, device)
|
|
56
|
+
raise ArgumentError, get_last_error
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
data/lib/chef/version.rb
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Daniel DeLeo (<dan@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright (c) 2010-2011 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
|
+
class Chef
|
|
19
|
+
CHEF_ROOT = File.dirname(File.expand_path(File.dirname(__FILE__)))
|
|
20
|
+
VERSION = '0.10.0.beta.3'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# NOTE: the Chef::Version class is defined in version_class.rb
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
|
2
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright 2010-2011 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
|
+
class Chef
|
|
19
|
+
class Version
|
|
20
|
+
include Comparable
|
|
21
|
+
attr_reader :major, :minor, :patch
|
|
22
|
+
|
|
23
|
+
def initialize(str="")
|
|
24
|
+
@major, @minor, @patch = parse(str)
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def inspect
|
|
28
|
+
"#{@major}.#{@minor}.#{@patch}"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def to_s
|
|
32
|
+
"#{@major}.#{@minor}.#{@patch}"
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def <=>(v)
|
|
36
|
+
[:major, :minor, :patch].each do |method|
|
|
37
|
+
ans = (self.send(method) <=> v.send(method))
|
|
38
|
+
return ans if ans != 0
|
|
39
|
+
end
|
|
40
|
+
0
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def hash
|
|
44
|
+
# Didn't put any thought or research into this, probably can be
|
|
45
|
+
# done better
|
|
46
|
+
to_s.hash
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
# For hash
|
|
50
|
+
def eql?(other)
|
|
51
|
+
other.is_a?(Version) && self == other
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
private
|
|
55
|
+
|
|
56
|
+
def parse(str="")
|
|
57
|
+
@major, @minor, @patch =
|
|
58
|
+
case str.to_s
|
|
59
|
+
when /^(\d+)\.(\d+)\.(\d+)$/
|
|
60
|
+
[ $1.to_i, $2.to_i, $3.to_i ]
|
|
61
|
+
when /^(\d+)\.(\d+)$/
|
|
62
|
+
[ $1.to_i, $2.to_i, 0 ]
|
|
63
|
+
else
|
|
64
|
+
msg = "'#{str.to_s}' does not match 'x.y.z' or 'x.y'"
|
|
65
|
+
raise Chef::Exceptions::InvalidCookbookVersion.new msg
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
end
|
|
70
|
+
end
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
# Author:: Seth Falcon (<seth@opscode.com>)
|
|
2
|
+
# Author:: Christopher Walters (<cw@opscode.com>)
|
|
3
|
+
# Copyright:: Copyright 2010-2011 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
|
+
require 'chef/version_class'
|
|
18
|
+
|
|
19
|
+
class Chef
|
|
20
|
+
class VersionConstraint
|
|
21
|
+
DEFAULT_CONSTRAINT = ">= 0.0.0"
|
|
22
|
+
STANDARD_OPS = %w(< > <= >=)
|
|
23
|
+
OPS = %w(< > = <= >= ~>)
|
|
24
|
+
PATTERN = /^(#{OPS.join('|')}) (.+)$/
|
|
25
|
+
|
|
26
|
+
attr_reader :op, :version
|
|
27
|
+
|
|
28
|
+
def initialize(constraint_spec=DEFAULT_CONSTRAINT)
|
|
29
|
+
case constraint_spec
|
|
30
|
+
when nil
|
|
31
|
+
parse(DEFAULT_CONSTRAINT)
|
|
32
|
+
when Array
|
|
33
|
+
parse_from_array(constraint_spec)
|
|
34
|
+
when String
|
|
35
|
+
parse(constraint_spec)
|
|
36
|
+
else
|
|
37
|
+
msg = "VersionConstraint should be created from a String. You gave: #{constraint_spec.inspect}"
|
|
38
|
+
raise Chef::Exceptions::InvalidVersionConstraint, msg
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def include?(v)
|
|
43
|
+
version = if v.respond_to? :version # a CookbookVersion-like object
|
|
44
|
+
Chef::Version.new(v.version.to_s)
|
|
45
|
+
else
|
|
46
|
+
Chef::Version.new(v.to_s)
|
|
47
|
+
end
|
|
48
|
+
do_op(version)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def inspect
|
|
52
|
+
"(#{@op} #{@version})"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def to_s
|
|
56
|
+
"#{@op} #{@version}"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def eql?(o)
|
|
60
|
+
o.class == self.class && @op == o.op && @version == o.version
|
|
61
|
+
end
|
|
62
|
+
alias_method :==, :eql?
|
|
63
|
+
|
|
64
|
+
private
|
|
65
|
+
|
|
66
|
+
def do_op(other_version)
|
|
67
|
+
if STANDARD_OPS.include? @op
|
|
68
|
+
other_version.send(@op.to_sym, @version)
|
|
69
|
+
elsif @op == '='
|
|
70
|
+
other_version == @version
|
|
71
|
+
elsif @op == '~>'
|
|
72
|
+
if @missing_patch_level
|
|
73
|
+
(other_version.major == @version.major &&
|
|
74
|
+
other_version.minor >= @version.minor)
|
|
75
|
+
else
|
|
76
|
+
(other_version.major == @version.major &&
|
|
77
|
+
other_version.minor == @version.minor &&
|
|
78
|
+
other_version.patch >= @version.patch)
|
|
79
|
+
end
|
|
80
|
+
else # should never happen
|
|
81
|
+
raise "bad op #{@op}"
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def parse_from_array(constraint_spec)
|
|
86
|
+
if constraint_spec.empty?
|
|
87
|
+
parse(DEFAULT_CONSTRAINT)
|
|
88
|
+
elsif constraint_spec.size == 1
|
|
89
|
+
parse(constraint_spec.first)
|
|
90
|
+
else
|
|
91
|
+
msg = "only one version constraint operation is supported, but you gave #{constraint_spec.size} "
|
|
92
|
+
msg << "['#{constraint_spec.join(', ')}']"
|
|
93
|
+
raise Chef::Exceptions::InvalidVersionConstraint, msg
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def parse(str)
|
|
98
|
+
@missing_patch_level = false
|
|
99
|
+
if str.index(" ").nil? && str =~ /^[0-9]/
|
|
100
|
+
# try for lone version, implied '='
|
|
101
|
+
@version = Chef::Version.new(str)
|
|
102
|
+
@op = "="
|
|
103
|
+
elsif PATTERN.match str
|
|
104
|
+
@op = $1
|
|
105
|
+
raw_version = $2
|
|
106
|
+
@version = Chef::Version.new(raw_version)
|
|
107
|
+
if raw_version.split('.').size == 2
|
|
108
|
+
@missing_patch_level = true
|
|
109
|
+
end
|
|
110
|
+
else
|
|
111
|
+
raise Chef::Exceptions::InvalidVersionConstraint, "'#{str}'"
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
end
|
|
116
|
+
end
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Adam Jacob (<adam@opscode.com>)
|
|
3
|
+
# Author:: Nuo Yan (<nuo@opscode.com>)
|
|
4
|
+
# Copyright:: Copyright (c) 2008 Opscode, Inc.
|
|
5
|
+
# License:: Apache License, Version 2.0
|
|
6
|
+
#
|
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
# you may not use this file except in compliance with the License.
|
|
9
|
+
# You may obtain a copy of the License at
|
|
10
|
+
#
|
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
#
|
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
# See the License for the specific language governing permissions and
|
|
17
|
+
# limitations under the License.
|
|
18
|
+
#
|
|
19
|
+
|
|
20
|
+
require 'chef/config'
|
|
21
|
+
require 'chef/mixin/params_validate'
|
|
22
|
+
require 'chef/couchdb'
|
|
23
|
+
require 'chef/index_queue'
|
|
24
|
+
require 'digest/sha1'
|
|
25
|
+
require 'chef/json_compat'
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class Chef
|
|
29
|
+
class WebUIUser
|
|
30
|
+
|
|
31
|
+
attr_accessor :name, :validated, :admin, :openid, :couchdb
|
|
32
|
+
attr_reader :password, :salt, :couchdb_id, :couchdb_rev
|
|
33
|
+
|
|
34
|
+
include Chef::Mixin::ParamsValidate
|
|
35
|
+
|
|
36
|
+
DESIGN_DOCUMENT = {
|
|
37
|
+
"version" => 3,
|
|
38
|
+
"language" => "javascript",
|
|
39
|
+
"views" => {
|
|
40
|
+
"all" => {
|
|
41
|
+
"map" => <<-EOJS
|
|
42
|
+
function(doc) {
|
|
43
|
+
if (doc.chef_type == "webui_user") {
|
|
44
|
+
emit(doc.name, doc);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
EOJS
|
|
48
|
+
},
|
|
49
|
+
"all_id" => {
|
|
50
|
+
"map" => <<-EOJS
|
|
51
|
+
function(doc) {
|
|
52
|
+
if (doc.chef_type == "webui_user") {
|
|
53
|
+
emit(doc.name, doc.name);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
EOJS
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
# Create a new Chef::WebUIUser object.
|
|
62
|
+
def initialize(opts={})
|
|
63
|
+
@name, @salt, @password = opts['name'], opts['salt'], opts['password']
|
|
64
|
+
@openid, @couchdb_rev, @couchdb_id = opts['openid'], opts['_rev'], opts['_id']
|
|
65
|
+
@admin = false
|
|
66
|
+
@couchdb = Chef::CouchDB.new
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def name=(n)
|
|
70
|
+
@name = n.gsub(/\./, '_')
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def admin?
|
|
74
|
+
admin
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Set the password for this object.
|
|
78
|
+
def set_password(password, confirm_password=password)
|
|
79
|
+
raise ArgumentError, "Passwords do not match" unless password == confirm_password
|
|
80
|
+
raise ArgumentError, "Password cannot be blank" if (password.nil? || password.length==0)
|
|
81
|
+
raise ArgumentError, "Password must be a minimum of 6 characters" if password.length < 6
|
|
82
|
+
generate_salt
|
|
83
|
+
@password = encrypt_password(password)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def set_openid(given_openid)
|
|
87
|
+
@openid = given_openid
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def verify_password(given_password)
|
|
91
|
+
encrypt_password(given_password) == @password
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
# Serialize this object as a hash
|
|
95
|
+
def to_json(*a)
|
|
96
|
+
attributes = Hash.new
|
|
97
|
+
recipes = Array.new
|
|
98
|
+
result = {
|
|
99
|
+
'name' => name,
|
|
100
|
+
'json_class' => self.class.name,
|
|
101
|
+
'salt' => salt,
|
|
102
|
+
'password' => password,
|
|
103
|
+
'openid' => openid,
|
|
104
|
+
'admin' => admin,
|
|
105
|
+
'chef_type' => 'webui_user',
|
|
106
|
+
}
|
|
107
|
+
result["_id"] = @couchdb_id if @couchdb_id
|
|
108
|
+
result["_rev"] = @couchdb_rev if @couchdb_rev
|
|
109
|
+
result.to_json(*a)
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
# Create a Chef::WebUIUser from JSON
|
|
113
|
+
def self.json_create(o)
|
|
114
|
+
me = new(o)
|
|
115
|
+
me.admin = o["admin"]
|
|
116
|
+
me
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
# List all the Chef::WebUIUser objects in the CouchDB. If inflate is set to true, you will get
|
|
120
|
+
# the full list of all registration objects. Otherwise, you'll just get the IDs
|
|
121
|
+
def self.cdb_list(inflate=false)
|
|
122
|
+
rs = Chef::CouchDB.new.list("users", inflate)
|
|
123
|
+
if inflate
|
|
124
|
+
rs["rows"].collect { |r| r["value"] }
|
|
125
|
+
else
|
|
126
|
+
rs["rows"].collect { |r| r["key"] }
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def self.list(inflate=false)
|
|
131
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
|
132
|
+
if inflate
|
|
133
|
+
response = Hash.new
|
|
134
|
+
Chef::Search::Query.new.search(:user) do |n|
|
|
135
|
+
response[n.name] = n unless n.nil?
|
|
136
|
+
end
|
|
137
|
+
response
|
|
138
|
+
else
|
|
139
|
+
r.get_rest("users")
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
# Load an WebUIUser by name from CouchDB
|
|
144
|
+
def self.cdb_load(name)
|
|
145
|
+
Chef::CouchDB.new.load("webui_user", name)
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
# Load a User by name
|
|
149
|
+
def self.load(name)
|
|
150
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
|
151
|
+
r.get_rest("users/#{name}")
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
# Whether or not there is an WebUIUser with this key.
|
|
156
|
+
def self.has_key?(name)
|
|
157
|
+
Chef::CouchDB.new.has_key?("webui_user", name)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
# Remove this WebUIUser from the CouchDB
|
|
161
|
+
def cdb_destroy
|
|
162
|
+
couchdb.delete("webui_user", @name, @couchdb_rev)
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
# Remove this WebUIUser via the REST API
|
|
166
|
+
def destroy
|
|
167
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
|
168
|
+
r.delete_rest("users/#{@name}")
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
# Save this WebUIUser to the CouchDB
|
|
172
|
+
def cdb_save
|
|
173
|
+
results = couchdb.store("webui_user", @name, self)
|
|
174
|
+
@couchdb_rev = results["rev"]
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
# Save this WebUIUser via the REST API
|
|
178
|
+
def save
|
|
179
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
|
180
|
+
begin
|
|
181
|
+
r.put_rest("users/#{@name}", self)
|
|
182
|
+
rescue Net::HTTPServerException => e
|
|
183
|
+
if e.response.code == "404"
|
|
184
|
+
r.post_rest("users", self)
|
|
185
|
+
else
|
|
186
|
+
raise e
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
self
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# Create the WebUIUser via the REST API
|
|
193
|
+
def create
|
|
194
|
+
r = Chef::REST.new(Chef::Config[:chef_server_url])
|
|
195
|
+
r.post_rest("users", self)
|
|
196
|
+
self
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
# Set up our CouchDB design document
|
|
200
|
+
def self.create_design_document(couchdb=nil)
|
|
201
|
+
couchdb ||= Chef::CouchDB.new
|
|
202
|
+
couchdb.create_design_document("users", DESIGN_DOCUMENT)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
#return true if an admin user exists. this is pretty expensive (O(n)), should think of a better way (nuo)
|
|
206
|
+
def self.admin_exist
|
|
207
|
+
users = self.cdb_list
|
|
208
|
+
users.each do |u|
|
|
209
|
+
user = self.cdb_load(u)
|
|
210
|
+
if user.admin
|
|
211
|
+
return user.name
|
|
212
|
+
end
|
|
213
|
+
end
|
|
214
|
+
nil
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
protected
|
|
218
|
+
|
|
219
|
+
def generate_salt
|
|
220
|
+
@salt = Time.now.to_s
|
|
221
|
+
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
|
|
222
|
+
1.upto(30) { |i| @salt << chars[rand(chars.size-1)] }
|
|
223
|
+
@salt
|
|
224
|
+
end
|
|
225
|
+
|
|
226
|
+
def encrypt_password(password)
|
|
227
|
+
Digest::SHA1.hexdigest("--#{salt}--#{password}--")
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
end
|
|
231
|
+
end
|