diff options
| author | Micah Anderson <micah@leap.se> | 2013-11-26 14:49:53 -0500 | 
|---|---|---|
| committer | Micah Anderson <micah@leap.se> | 2013-11-27 14:48:00 -0500 | 
| commit | dc6c48cbc25216417a02304ec2c23663688cd99d (patch) | |
| tree | 46b86e9354246e95fb0c894387a5496b15af6069 | |
| parent | ab278941346cc868aad7a3900a2cd5a1007986ea (diff) | |
enable uploading a document to couch from a file (#4256)
deploy design documents during couch deploy (#3771)
Change-Id: I4679e066303ac9b02582214c48e2e7dcfe5bd651
| m--------- | puppet/modules/couchdb | 0 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/customers.json | 18 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/identities.json | 28 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/sessions.json | 8 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/tickets.json | 50 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/tokens.json | 14 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/files/designs/users.json | 26 | ||||
| -rw-r--r-- | puppet/modules/site_couchdb/manifests/designs.pp | 20 | 
8 files changed, 164 insertions, 0 deletions
| diff --git a/puppet/modules/couchdb b/puppet/modules/couchdb -Subproject 4c7bc8b661250bb7fe1000ae1515507c5bf4beb +Subproject e49066146ffeb91ce7c8e2100cdc4eca0ceb3a9 diff --git a/puppet/modules/site_couchdb/files/designs/customers.json b/puppet/modules/site_couchdb/files/designs/customers.json new file mode 100644 index 00000000..1b4bbddd --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/customers.json @@ -0,0 +1,18 @@ +{ +  "_id": "_design/Customer", +  "language": "javascript", +  "views": { +    "by_user_id": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Customer') && (doc['user_id'] != null)) {\n                    emit(doc['user_id'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_braintree_customer_id": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Customer') && (doc['braintree_customer_id'] != null)) {\n                    emit(doc['braintree_customer_id'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "all": { +      "map": "                function(doc) {\n                  if (doc['type'] == 'Customer') {\n                    emit(doc._id, null);\n                  }\n                }\n" +    } +  }, +  "couchrest-hash": "688c401ec0230b75625c176a88fc4a02" +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/files/designs/identities.json b/puppet/modules/site_couchdb/files/designs/identities.json new file mode 100644 index 00000000..8cf8c39b --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/identities.json @@ -0,0 +1,28 @@ +{ +  "_id": "_design/Identity", +  "language": "javascript", +  "views": { +    "by_user_id": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Identity') && (doc['user_id'] != null)) {\n                    emit(doc['user_id'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_address_and_destination": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Identity') && (doc['address'] != null) && (doc['destination'] != null)) {\n                    emit([doc['address'], doc['destination']], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_address": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Identity') && (doc['address'] != null)) {\n                    emit(doc['address'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "pgp_key_by_email": { +      "map": "      function(doc) {\n        if (doc.type != 'Identity') {\n          return;\n        }\n        emit(doc.address, doc.keys[\"pgp\"]);\n      }\n" +    }, +    "disabled": { +      "map": "      function(doc) {\n        if (doc.type != 'Identity') {\n          return;\n        }\n        if (typeof doc.user_id === \"undefined\") {\n          emit(doc._id, 1);\n        }\n      }\n" +    }, +    "all": { +      "map": "                function(doc) {\n                  if (doc['type'] == 'Identity') {\n                    emit(doc._id, null);\n                  }\n                }\n" +    } +  }, +  "couchrest-hash": "5b0ece9d28b3025d18ea71fddf3a532f" +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/files/designs/sessions.json b/puppet/modules/site_couchdb/files/designs/sessions.json new file mode 100644 index 00000000..70202780 --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/sessions.json @@ -0,0 +1,8 @@ +{ +   "views": { +       "by_expires": { +           "reduce": "_sum", +           "map": "function(doc) {\n  if(typeof doc.expires !== \"undefined\") {\n    emit(doc.expires, 1);\n  }\n}\n" +       } +   } +} diff --git a/puppet/modules/site_couchdb/files/designs/tickets.json b/puppet/modules/site_couchdb/files/designs/tickets.json new file mode 100644 index 00000000..2c9408b8 --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/tickets.json @@ -0,0 +1,50 @@ +{ +  "_id": "_design/Ticket", +  "language": "javascript", +  "views": { +    "by_updated_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Ticket') && (doc['updated_at'] != null)) {\n                    emit(doc['updated_at'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_created_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Ticket') && (doc['created_at'] != null)) {\n                    emit(doc['created_at'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_created_by": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Ticket') && (doc['created_by'] != null)) {\n                    emit(doc['created_by'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_is_open_and_created_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Ticket') && (doc['is_open'] != null) && (doc['created_at'] != null)) {\n                    emit([doc['is_open'], doc['created_at']], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_is_open_and_updated_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Ticket') && (doc['is_open'] != null) && (doc['updated_at'] != null)) {\n                    emit([doc['is_open'], doc['updated_at']], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "by_includes_post_by_and_is_open_and_created_at": { +      "map": "function(doc) {\n  var arr = {}\n  if (doc['type'] == 'Ticket' && doc.comments) {\n    doc.comments.forEach(function(comment){\n      if (comment.posted_by && !arr[comment.posted_by]) {\n        //don't add duplicates\n        arr[comment.posted_by] = true;\n        emit([comment.posted_by, doc.is_open, doc.created_at], 1);\n      }\n    });\n  }\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_includes_post_by_and_is_open_and_updated_at": { +      "map": "function(doc) {\n  var arr = {}\n  if (doc['type'] == 'Ticket' && doc.comments) {\n    doc.comments.forEach(function(comment){\n      if (comment.posted_by && !arr[comment.posted_by]) {\n        //don't add duplicates\n        arr[comment.posted_by] = true;\n        emit([comment.posted_by, doc.is_open, doc.updated_at], 1);\n      }\n    });\n  }\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_includes_post_by_and_updated_at": { +      "map": "function(doc) {\n  var arr = {}\n  if (doc['type'] == 'Ticket' && doc.comments) {\n    doc.comments.forEach(function(comment){\n      if (comment.posted_by && !arr[comment.posted_by]) {\n        //don't add duplicates\n        arr[comment.posted_by] = true;\n        emit([comment.posted_by, doc.updated_at], 1);\n      }\n    });\n  }\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_includes_post_by": { +      "map": "// TODO: This view is only used in tests--should we keep it?\nfunction(doc) {\n  var arr = {}\n  if (doc['type'] == 'Ticket' && doc.comments) {\n    doc.comments.forEach(function(comment){\n      if (comment.posted_by && !arr[comment.posted_by]) {\n        //don't add duplicates\n        arr[comment.posted_by] = true;\n        emit(comment.posted_by, 1);\n      }\n    });\n  }\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_includes_post_by_and_created_at": { +      "map": "function(doc) {\n  var arr = {}\n  if (doc['type'] == 'Ticket' && doc.comments) {\n    doc.comments.forEach(function(comment){\n      if (comment.posted_by && !arr[comment.posted_by]) {\n        //don't add duplicates\n        arr[comment.posted_by] = true;\n        emit([comment.posted_by, doc.created_at], 1);\n      }\n    });\n  }\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "all": { +      "map": "                function(doc) {\n                  if (doc['type'] == 'Ticket') {\n                    emit(doc._id, null);\n                  }\n                }\n" +    } +  }, +  "couchrest-hash": "9978e2cbeacbe8622c2a7f103bf8130f" +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/files/designs/tokens.json b/puppet/modules/site_couchdb/files/designs/tokens.json new file mode 100644 index 00000000..b9025f15 --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/tokens.json @@ -0,0 +1,14 @@ +{ +  "_id": "_design/Token", +  "language": "javascript", +  "views": { +    "by_last_seen_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'Token') && (doc['last_seen_at'] != null)) {\n                    emit(doc['last_seen_at'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "all": { +      "map": "                function(doc) {\n                  if (doc['type'] == 'Token') {\n                    emit(doc._id, null);\n                  }\n                }\n" +    } +  }, +  "couchrest-hash": "541dd924551c42a2317b345effbe65cc" +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/files/designs/users.json b/puppet/modules/site_couchdb/files/designs/users.json new file mode 100644 index 00000000..c500822b --- /dev/null +++ b/puppet/modules/site_couchdb/files/designs/users.json @@ -0,0 +1,26 @@ +{ +  "_id": "_design/User", +  "language": "javascript", +  "views": { +    "by_login": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'User') && (doc['login'] != null)) {\n                    emit(doc['login'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    }, +    "all": { +      "map": "                function(doc) {\n                  if (doc['type'] == 'User') {\n                    emit(doc._id, null);\n                  }\n                }\n" +    }, +    "by_alias": { +      "map": "function(doc) {\n  if (doc.type != 'User') {\n    return;\n  }\n  doc.email_aliases.forEach(function(alias){\n    emit(alias.username, 1);\n  });\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_login_or_alias": { +      "map": "function(doc) {\n  if (doc.type != 'User') {\n    return;\n  }\n  emit(doc.login, 1);\n  doc.email_aliases.forEach(function(alias){\n    emit(alias.username, 1);\n  });\n}\n", +      "reduce": "function(key, values, rereduce) { return sum(values); }" +    }, +    "by_created_at": { +      "map": "                function(doc) {\n                  if ((doc['type'] == 'User') && (doc['created_at'] != null)) {\n                    emit(doc['created_at'], 1);\n                  }\n                }\n", +      "reduce": "_sum" +    } +  }, +  "couchrest-hash": "26adb5c9480663de3fe60d959b60a7b2" +}
\ No newline at end of file diff --git a/puppet/modules/site_couchdb/manifests/designs.pp b/puppet/modules/site_couchdb/manifests/designs.pp new file mode 100644 index 00000000..2d0a8326 --- /dev/null +++ b/puppet/modules/site_couchdb/manifests/designs.pp @@ -0,0 +1,20 @@ +class site_couchdb::designs { + +  Class['site_couchdb::create_dbs'] +    -> Class['site_couchdb::designs'] + +  file { '/srv/leap/couchdb/designs': +    ensure  => directory, +    source  => 'puppet:///modules/site_couchdb/designs', +    recurse => true, +    mode    => '0755' +  } + +  exec { '/srv/leap/couchdb/scripts/load_design_documents.sh': +    subscribe   => File['/srv/leap/couchdb/designs'], +    refreshonly => true, +    require     => Vcsrepo['/srv/leap/couchdb/scripts'] +  } + +} + | 
