1. 01 Oct, 2008 4 commits
    • Michael Hanselmann's avatar
      Fix unittests broken by revision 1727 · 36b8c2c1
      Michael Hanselmann authored
      Reviewed-by: iustinp
    • Michael Hanselmann's avatar
      Add cluster options from ssconf to configuration · f6bd6e98
      Michael Hanselmann authored
      ssconf will become write-only from ganeti-masterd's point of view,
      therefore all settings in there need to go into the main configuration
      Reviewed-by: iustinp
    • Michael Hanselmann's avatar
      Move instantiation of config into bootstrap.py · b9eeeb02
      Michael Hanselmann authored
      Future patches will add even more variables to the cluster config.
      Adding more parameters wouldn't make the function easier to use and
      it doesn't make sense to pass them to another function, as it's
      only done once in bootstrap.py on cluster initialization.
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      Change the results from cli.PollJob · 53c04d04
      Iustin Pop authored
      Curently PollJob accepts a generic job, but will return (history
      artifact) only the first opcode result. This is wrong, as it doesn't
      allow polling of a job with multiple results.
      Its only caller (for now) is also changed, so no functional changes
      should happen.
      Reviewed-by: ultrotter, amishchenko
  2. 30 Sep, 2008 12 commits
  3. 29 Sep, 2008 9 commits
    • Michael Hanselmann's avatar
      Add job queue design document · b2cee5e5
      Michael Hanselmann authored
      Reviewed-by: iustinp
    • Iustin Pop's avatar
      Add an 'index' of design documents · 84f4dc28
      Iustin Pop authored
      This will be an overview document, enumerating the changes without going
      into details and pointing to the actual documents.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Add opcode execution log in job info · 5b23c34c
      Iustin Pop authored
      This patch adds the job execution log in “gnt-job info” and also allows
      its selection in “gnt-job list” (however here it's not very useful as
      it's not easy to parse). It does this by adding a new field in the query
      job call, named ‘oplog’.
      With this, one can get a very clear examination of the job. What remains
      to be added would be timestamps for start/stop of the processing for the
      job itself and its opcodes.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Move a hardcoded constant to constants.py · 3c03759a
      Iustin Pop authored
      For now we only use the ‘C’ protocol so we can put it in constants.py
      instead of hardcoding it.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Enable the use of shared secrets · 2899d9de
      Iustin Pop authored
      This patch enables the use of the shared secrets for DRBD8 disks, using
      (hardcoded in constants.py) the md5 digest algorithm.
      For making this more flexible, either we implement a cluster parameter
      (once the new model is in place), or we can make it ./configure-time
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Extend DRBD disks with shared secret attribute · f9518d38
      Iustin Pop authored
      This patch, which is similar to r1679 (Extend DRBD disks with minors
      attribute), extends the logical and physical id of the DRBD disks with a
      shared secret attribute. This is generated at disk creation time and
      saved in the config file.
      The generation of the secret is done so that we don't have duplicates in
      the configuration (otherwise the goal of preventing cross-connection
      will not be reached), so we add to config.py more than just a simple
      call to utils.GenerateSecret().
      The patch does not yet enable the use of the secrets.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Add a info subcommand to gnt-job · 191712c0
      Iustin Pop authored
      Currently, it is hard to examine a job in detail; the output of ‘gnt-job
      list’ is not easy to parse.
      The patch adds a ‘gnt-job info’ command that is (vaguely) similar to
      ‘gnt-instance info’ in that it shows in a somewhat easy to understand
      format the details of a job.
      The result formatter is the most complicated part, since the results are
      not standardized; the code attempts to format nicely the most common
      result types (as taken from a random job list), via a generic algorithm.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Implement job summary in gnt-job list · 60dd1473
      Iustin Pop authored
      It is not currently possibly to show a summary of the job in the output
      of “gnt-job list”. The closes is listing the whole opcode(s), but that
      is too verbose. Also, the default output (id, status) is not very
      useful, unless one looks for (and knows about) an exact job ID.
      The patch adds a “summary” description of a job composed of the list of
      OP_ID of the individual opcodes. Moreover, if an opcode has a ‘logical’
      target in a certain opcode field (e.g. start instance has the instance
      name as the target), then it is included in the formatting also. It's
      easier to explain via a sample output:
      gnt-job list
      ID Status  Summary
      1  error   NODE_QUERY
      2  success NODE_ADD(gnta2)
      3  success CLUSTER_QUERY
      4  success NODE_REMOVE(gnta2.example.com)
      5  error   NODE_QUERY
      6  success NODE_ADD(gnta2)
      7  success NODE_QUERY
      8  success OS_DIAGNOSE
      9  success INSTANCE_CREATE(instance1.example.com)
      10 success INSTANCE_REMOVE(instance1.example.com)
      11 error   INSTANCE_CREATE(instance1.example.com)
      12 success INSTANCE_CREATE(instance1.example.com)
      13 success INSTANCE_SHUTDOWN(instance1.example.com)
      14 success INSTANCE_ACTIVATE_DISKS(instance1.example.com)
      15 error   INSTANCE_CREATE(instance2.example.com)
      16 error   INSTANCE_CREATE(instance2.example.com)
      17 success INSTANCE_CREATE(instance2.example.com)
      18 success INSTANCE_ACTIVATE_DISKS(instance1.example.com)
      19 success INSTANCE_ACTIVATE_DISKS(instance2.example.com)
      20 success INSTANCE_SHUTDOWN(instance1.example.com)
      21 success INSTANCE_SHUTDOWN(instance2.example.com)
      This is done by a simple change to the opcode classes, which allows an
      opcode to format itself. The additional function is small enough that it
      can go in opcodes.py, where it could also be used by a client if needed.
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Nicely sort the job list · 3b87986e
      Iustin Pop authored
      Unless we decide to change the job identifiers to integer, we should at
      least sort the list returned by _GetJobIDsUnlocked.
      Reviewed-by: imsnah
  4. 28 Sep, 2008 2 commits
    • Iustin Pop's avatar
      Move the pseudo-secret generation to utils.py · 33081d90
      Iustin Pop authored
      The bootstrap code needs a pseudo-secret and this is currently generated
      inside the InitGanetiServerSetup function. Since more users will need
      this, move it to utils.py
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Fix a bug related to static minors · d48663e4
      Iustin Pop authored
      When the node does not yet have any minors allocated, the first minor
      (0) will not be entered in the ConfigWriter._temporary_drbds structure.
      This does not happen for our current usage, since we always ask for two
      minors (so the next call will not match this case), but it will be
      triggered if we only ask for one minor, and then ask again before adding
      the instance to the config file.
      Reviewed-by: ultrotter
  5. 27 Sep, 2008 8 commits
    • Iustin Pop's avatar
      Add checks for tcp/udp port collisions · 48ce9fd9
      Iustin Pop authored
      In case the config file is manually modified, or in case of bugs, the
      tcp/udp ports could be reused, which will create various problems
      (instances not able to start, or drbd disks not able to communicate).
      This patch extends the ConfigWriter.VerifyConfig() method (which is used
      in cluster verify) to check for duplicates between:
        - the ports used for DRBD disks
        - the ports used for network console
        - the ports marked as free in the config file
      Also, if the cluster parameter ‘highest_used_port’ is actually lower
      than the computed highest used port, this is also flagged as an error.
      The output from gnt-cluster verify will show (output manually wrapped):
      node1 # gnt-cluster verify
      * Verifying global settings
        - ERROR: tcp/udp port 11006 has duplicates: instance3.example.com/network port,
      instance2.example.com/drbd disk sda
        - ERROR: tcp/udp port 11017 has duplicates: instance3.example.com/drbd disk sda,
      instance3.example.com/drbd disk sdb, cluster/port marked as free
        - ERROR: Highest used port mismatch, saved 11010, computed 11017
      * Gathering data (2 nodes)
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Update the cluster serial_no on certain operations · b9f72b4e
      Iustin Pop authored
      This patch adds update of the cluster serial number for:
        - add/remove node (as the cluster's node list is changed)
        - add/remove/rename instance (as the cluster's instance list is changed)
        - change the volume group name
      The rule for updating this attribute is when cluster-wide properties are
      changed, but not individual node/instance ones.
      There are other remaining cases to handle, pending on the ssconf
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Allow listing of the serial_no via gnt-* list · 38d7239a
      Iustin Pop authored
      This patch adds listing of the serial_no attribute in gnt-instance and
      gnt-node list, and updates to the manpages to reflect the change.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Initialize and update the serial_no on objects · b989e85d
      Iustin Pop authored
      This patch add initialization of the serial_no on instance and nodes,
      and update of the field whenever an object is updated in the generic
      case, via ConfigWriter.Update(obj) and in the specific case of
      instances' state being modified manually.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Switch the global serial_no to the top object · 9d38c6e1
      Iustin Pop authored
      Currently the serial_no that is incremented every time the configuration
      file is written is located on the 'cluster' object in the configuration
      structure. However, this is wrong as the cluster serial_no should be
      incremented only when the cluster state is changed (for whatever
      definition of “changed” we will use), not simply because the
      configuration file is written.
      This patch changes so that the ConfigWriter._BumpSerialNo affects the
      top-level ConfigData object.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Add serial_no attributes to objects · be1fa613
      Iustin Pop authored
      This patch adds the ‘serial_no’ attribute to the other top-level objects
      (the configuration object itself, the nodes and the instances).
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Replace a cfg.AddInstance with UpdateInstance · 97abc79f
      Iustin Pop authored
      This seems to be the last (deprecated) use of AddInstance in order to
      update an instance.
      The patch also removes a whitespace-at-eol case.
      Reviewed-by: ultrotter
    • Iustin Pop's avatar
      Add design doc for the disk changes · fbd6f863
      Iustin Pop authored
      Reviewed-by: imsnah
  6. 25 Sep, 2008 2 commits
    • René Nussbaumer's avatar
      Fix iallocator name · 1ce4bbe3
      René Nussbaumer authored
      port forward of patch from revision 1690 with following message:
      Patch on revision 1686 used the wrong field: ial.name, which is the instance
      name and not the iallocator name. self.op.iallocator is the right field.
      Sorry for this inconvenience.
      Reviewed-by: imsnah
    • René Nussbaumer's avatar
      Fix a broken format string · 207a6c74
      René Nussbaumer authored
      This patch fixes a broken format string. It's expecting 3 parameters, but only
      gets 2. This change will add the missing parameter. This is a forward-port
      of the fix in Ganeti 1.2
      Reviewed-by: imsnah
  7. 24 Sep, 2008 2 commits
    • Iustin Pop's avatar
      Design doc for the master daemon · bb083b25
      Iustin Pop authored
      It's not complete, but I hope it's up to date. It's restructured text,
      but no make rules or such for html output are needed, it's readable
      Reviewed-by: imsnah
    • Iustin Pop's avatar
      Switch config.py to logging · 74a48621
      Iustin Pop authored
      A couple of more modules are using the obsolete logger functions, config
      being one of them.
      Reviewed-by: imsnah
  8. 23 Sep, 2008 1 commit
    • Iustin Pop's avatar
      Switch to static minors for DRBD · a1578d63
      Iustin Pop authored
      With some todos remaining, this patch switches the DRBD devices to use
      the passed minors, and the cmdlib code (add instance and replace disks)
      to request and assign minors to the DRBD disks.
        - look at the disk RPC calls to see which can be optimized away, since
          we now know the minor beforehand
        - remove the _FindUnusedMinor usage from the few places it's still
          used (not for actual disks, but for temporary use in meta devs) and
          eventually replace with _CheckMinorUnused or such
      Of course, this and/or the previous two patches break existing clusters.
      Reviewed-by: imsnah