summaryrefslogtreecommitdiff
path: root/manifests/document.pp
blob: afbd37a1817deb40a6cc9baae2a797729542b0d8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# Usage:
# couchdb::document { id:
#   db => "database",
#   data => "content",
#   ensure => {absent,present,*content*}
# }
#
define couchdb::document ( $host='127.0.0.1:5984', $db, $id, $data='{}', $ensure='content') {

  $url = "${host}/${db}/${id}"

  case $ensure {
    default: { err ( "unknown ensure value '${ensure}'" ) }
    content: {
      exec { "couch-doc-update --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}",
        unless => "/usr/bin/curl --netrc-file /etc/couchdb/couchdb.netrc ${url}"
      }
    }

    absent: {
      couchdb::query { "destroy_${db}_${id}":
        cmd => 'DELETE',
        host => $host,
        path => "${db}/${id}",
        onlyif => "/usr/bin/curl --netrc-file /etc/couchdb/couchdb.netrc ${url}"
      }
    }
  }
}