####################################################################### ### ### NOTE! ### ### Currently, mirrors do not work! The only thing that works is all ### nodes multimaster or a single master. ### ####################################################################### # # custom logic for couchdb json resolution # ============================================ # # There are three modes for a node: # # Multimaster # ----------- # # Multimaster uses bigcouch (soon to use couchdb in replication mode # similar to bigcouch). # # Use "multimaster" mode when: # # * multiple nodes are marked couch.master # * OR no nodes are marked couch.master # # Master # ------ # # Master uses plain couchdb that is readable and writable. # # Use "master" mode when: # # * Exactly one node, this one, is marked as master. # # Mirror # ------ # # Mirror creates a read-only copy of the database. It uses plain coucdhb # with legacy couchdb replication (http based). # # This does not currently work, because http replication can't handle # the number of user databases. # # Use "mirror" mode when: # # * some nodes are marked couch.master # * AND this node is not a master # master_count = nodes_like_me['services' => 'couchdb']['couch.master' => true].size if master_count == 0 apply_partial 'services/_couchdb_multimaster.json' elsif couch.master && master_count > 1 apply_partial 'services/_couchdb_multimaster.json' elsif couch.master && master_count == 1 apply_partial 'services/_couchdb_master.json' else apply_partial 'services/_couchdb_mirror.json' end