diff options
Diffstat (limited to 'chef/lib/chef/sandbox.rb')
-rw-r--r-- | chef/lib/chef/sandbox.rb | 153 |
1 files changed, 0 insertions, 153 deletions
diff --git a/chef/lib/chef/sandbox.rb b/chef/lib/chef/sandbox.rb deleted file mode 100644 index 4d05a1db70..0000000000 --- a/chef/lib/chef/sandbox.rb +++ /dev/null @@ -1,153 +0,0 @@ -# -# Author:: Tim Hinderliter (<tim@opscode.com>) -# Copyright:: Copyright (c) 2010 Opscode, Inc. -# License:: Apache License, Version 2.0 -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -require 'chef/log' -require 'uuidtools' - -class Chef - class Sandbox - attr_accessor :is_completed, :create_time - alias_method :is_completed?, :is_completed - attr_reader :guid - - alias :name :guid - - attr_accessor :couchdb, :couchdb_id, :couchdb_rev - - # list of checksum ids - attr_accessor :checksums - - DESIGN_DOCUMENT = { - "version" => 1, - "language" => "javascript", - "views" => { - "all" => { - "map" => <<-EOJS - function(doc) { - if (doc.chef_type == "sandbox") { - emit(doc.guid, doc); - } - } - EOJS - }, - "all_id" => { - "map" => <<-EOJS - function(doc) { - if (doc.chef_type == "sandbox") { - emit(doc.guid, doc.guid); - } - } - EOJS - }, - "all_incomplete" => { - "map" => <<-EOJS - function(doc) { - if (doc.chef_type == "sandbox" && !doc.is_completed) { - emit(doc.guid, doc.guid); - } - } - EOJS - }, - "all_completed" => { - "map" => <<-EOJS - function(doc) { - if (doc.chef_type == "sandbox" && doc.is_completed) { - emit(doc.guid, doc.guid); - } - } - EOJS - }, - } - } - - # Creates a new Chef::Sandbox object. - # - # === Returns - # object<Chef::Sandbox>:: Duh. :) - def initialize(guid=nil, couchdb=nil) - @guid = guid || UUIDTools::UUID.random_create.to_s.gsub(/\-/,'').downcase - @is_completed = false - @create_time = Time.now.iso8601 - @checksums = Array.new - end - - def include?(checksum) - @checksums.include?(checksum) - end - - alias :member? :include? - - def to_json(*a) - result = { - :guid => guid, - :name => name, # same as guid, used for id_map - :checksums => checksums, - :create_time => create_time, - :is_completed => is_completed, - :json_class => self.class.name, - :chef_type => 'sandbox' - } - result["_rev"] = @couchdb_rev if @couchdb_rev - result.to_json(*a) - end - - def self.json_create(o) - sandbox = new(o['guid']) - sandbox.checksums = o['checksums'] - sandbox.create_time = o['create_time'] - sandbox.is_completed = o['is_completed'] - if o.has_key?('_rev') - sandbox.couchdb_rev = o["_rev"] - o.delete("_rev") - end - if o.has_key?("_id") - sandbox.couchdb_id = o["_id"] - #sandbox.index_id = sandbox.couchdb_id - o.delete("_id") - end - sandbox - end - - ## - # Couchdb - ## - - def self.create_design_document(couchdb=nil) - (couchdb || Chef::CouchDB.new).create_design_document("sandboxes", DESIGN_DOCUMENT) - end - - def self.cdb_list(inflate=false, couchdb=nil) - rs = (couchdb || Chef::CouchDB.new).list("sandboxes", inflate) - lookup = (inflate ? "value" : "key") - rs["rows"].collect { |r| r[lookup] } - end - - def self.cdb_load(guid, couchdb=nil) - # Probably want to look for a view here at some point - (couchdb || Chef::CouchDB.new).load("sandbox", guid) - end - - def cdb_destroy - (couchdb || Chef::CouchDB.new).delete("sandbox", guid, @couchdb_rev) - end - - def cdb_save(couchdb=nil) - @couchdb_rev = (couchdb || Chef::CouchDB.new).store("sandbox", guid, self)["rev"] - end - - end -end |