# Usage: # couchdb::document { id: # db => "database", # data => "content", # ensure => {absent,present,*content*} # } # define couchdb::document( $db, $id, $host = '127.0.0.1:5984', $data = '{}', $netrc = '/etc/couchdb/couchdb.netrc', $ensure = 'content') { $url = "${host}/${db}/${id}" case $ensure { default: { err ( "unknown ensure value '${ensure}'" ) } content: { exec { "couch-doc-update --netrc-file ${netrc} --host ${host} --db ${db} --id ${id} --data \'${data}\'": require => Exec['wait_for_couchdb'], unless => "couch-doc-diff $url '$data'" } } present: { couchdb::query { "create_${db}_${id}": cmd => 'PUT', host => $host, path => "${db}/${id}", require => Exec['wait_for_couchdb'], unless => "/usr/bin/curl -s -f --netrc-file ${netrc} ${url}" } } absent: { couchdb::query { "destroy_${db}_${id}": cmd => 'DELETE', host => $host, path => "${db}/${id}", require => Exec['wait_for_couchdb'], unless => "/usr/bin/curl -s -f --netrc-file ${netrc} ${url}" } } } }