class CouchdbSync::Provisioner

Public Instance Methods

configure(root_config) click to toggle source
# File lib/couchdbSync/provisioner.rb, line 4
def configure(root_config)
end
provision() click to toggle source
# File lib/couchdbSync/provisioner.rb, line 7
def provision
  puts config.dbhosts
  couchHosts = config.dbhosts
  couchDB = config.couchdb
  firstDB = true
  couchHosts.each do |couchHost|

    firstCouch = Couch::Server.new(couchHost, "5984")
    if firstDB
      begin
      res = firstCouch.get("/" + couchDB)
      json = res.body
      puts json
      rescue
        firstCouch.put("/"+ couchDB +"/", "")
        firstDB = false
      end
    end

    replicateFromURL = "http://" + couchHost + ":5984/" + couchDB
    puts "createServer:" + couchHost + ":5984/" + couchDB

    couchHosts.each do |replicateTo|
      if replicateTo != couchHost

        #secondCouch = Couch::Server.new(replicateTo, "5984")

        replicateToURL = "http://" + replicateTo + ":5984/" + couchDB
        payload = '{ "source":' + '"' + replicateFromURL + '"' + ',' +
            ' "target":' + '"' + replicateToURL + '"' + ',' +
            ' "continuous": true,' +
            ' "create_target": true' +
            '}'
        replicateJSON = JSON.parse(payload)
        puts replicateJSON

        firstCouch.post("/_replicate", replicateJSON.to_json)
      end
    end
  end
end