gsyncd: fix missing import

Change-Id: Idc69e049c0cb5f541c728e10613684b0ed478b1d
Signed-off-by: Csaba Henk <csaba@redhat.com>
gsyncd: fix MultiDict for values that are qualified False

Retrieving a MultiDict key where the value exists but considered False
(eg. False, "", []) failed with KeyError. This defeated template
substitution for values of tunables where the value is left at an
empty default.

Change-Id: Ie6a77189fc0ccbd459d1d696295ee2a017582ee9
Signed-off-by: Csaba Henk <csaba@redhat.com>
geo-rep: calculate worker distribution scheme

- monitor: fetch and parse volume info, both local and remote
- gsynd.c: allow volume info request
- monitor: calulate local brick/remote node pairing a'la xsync
  - two variants actually:
    - default mode assumes master and slave is on the same network
      and that we can ssh directly to particular slave nodes
    - with "isolated-slave" mode we keep the originally
      given host as ssh target, and only within that host
      we specify gluster access to the various slave nodes

For now we don't make any use of the resultant pairing,
just log it.

Change-Id: I2a4239ac1761f75c4385c3a89815d0643de52d14
Signed-off-by: Csaba Henk <csaba@redhat.com>
geo-rep: adjust crawling to be suitable for bricks

- force ignore-deletes to be set

  On the process of moving to do crawls on bricks.
  The partial view provided by a brick allows only
  operation in ignore-deletes mode.

  This is a stop-gap change to survive until
  crawl backend revamp.

- implement and enforce "partial" special sync mode
  Now it differs from normal that we relax the check
  against xtime inversion (ie. when slave xtime is
  bigger than on master) -- it's now legitimate as
  the slave is synced from multiple sources

Change-Id: I3118c1d59a650b35bdae0006cb949d6c8cad2782
Signed-off-by: Csaba Henk <csaba@redhat.com>

Change-Id: Ib37a901111abaf3cfbd6cc78153dbf78744e9a4a
Signed-off-by: Csaba Henk <csaba@redhat.com>
geo-rep: multiplex workers over local bricks

- gsyncd/gsyncd: adjust command line processing so that worker args
  are easier to manipulate for monitor
  - add --resource-{local,remote} option as an alternative, position
    independent way of specify master and/or slave
  - add --local-path and --local-id options that allow the specification
    of the brick path and a per-brick suffix for the gluster log
  - use local-path as log label to be able to tell away workers
- gsyncd/monitor: implemented multiplexed worker invocation based on
  the worker spec that we already calculate; use aforementioned refinements
  to customize per-brick worker invocation
- glusterd:
  - reserve local-path and local-id tunables
  - include the local-id into log-file tunables as template variable

Nb. as of this patch, the multiplexed workers don't yet do anything
with the bricks they are spawned for; here we achieve only properly
parametrized multiple worker invocation.

Change-Id: If1991b50b015fe8db6e8700b43a3a2eb1e6f1497
Signed-off-by: Csaba Henk <csaba@redhat.com>
gsyncd: decouple scanning and syncing

- resource.Server class: modify the pathguard
  decorator to adjust the path argument of
  server methods by prefixing them with
  class' 'local_path' attribute. This allows
  the Server (or derivative) being used
  on a directory other than current one.
- if 'local_path' tunable is set, set
  up a FILEServer with appropriately
  set FILEServer.local_path (ie. Server
  on brick) and start GMaster with that
- also set up the Server on the aux mount,
  make it accessibe through 'aggregated' attribute
  of the primary Server
- master: crawl is done using GMaster's server,
  ie. on brick, but special actions that assume
  the aggregated view (in particular, retrieving
  volume mark and local xtime update enforcement
  by touch) are still done on aux mount

Change-Id: Id916c81ddcd93952a6b0ae5428ba39f6c1f334ad
Signed-off-by: Csaba Henk <csaba@redhat.com>