1. 20 Oct, 2008 1 commit
    • Alexander Schreiber's avatar
      Set default hypervisor at cluster init · 02691904
      Alexander Schreiber authored
      During cluster init, set the default hypervisor to be used for instances.
      Ensure that the default hypervisor belongs to the set enabled hypervisors
      for this cluster. Also fix a small bug with setting the default enabled
      hypervisor list.
      
      Reviewed-by: imsnah
      
      02691904
  2. 14 Oct, 2008 3 commits
  3. 10 Oct, 2008 1 commit
    • Guido Trotter's avatar
      OS API: support for multiple versions in an OS · 082a7f91
      Guido Trotter authored
      Allow multiple api versions in an OS. This is according to the OS API
      changes design doc, by which an OS can support multiple versions of the
      Ganeti API and if one is supported by Ganeti it will work. Since up to
      version 5 of the API mandates an OS could support only one version, this
      change is retrocompatible with it and requires no version bump up.
      
      Reviewed-by: iustinp
      082a7f91
  4. 08 Oct, 2008 1 commit
    • Iustin Pop's avatar
      Move the hypervisor attribute to the instances · e69d05fd
      Iustin Pop authored
      This (big) patch moves the hypervisor type from the cluster to the
      instance level; the cluster attribute remains as the default hypervisor,
      and will be renamed accordingly in a next patch. The cluster also gains
      the ‘enable_hypervisors’ attribute, and instances can be created with
      any of the enabled ones (no provision yet for changing that attribute).
      
      The many many changes in the rpc/backend layer are due to the fact that
      all backend code read the hypervisor from the local copy of the config,
      and now we have to send it (either in the instance object, or as a
      separate parameter) for each function.
      
      The node list by default will list the node free/total memory for the
      default hypervisor, a new flag to it should exist to select another
      hypervisor. Instance list has a new field, hypervisor, that shows the
      instance hypervisor. Cluster verify runs for all enabled hypervisor
      types.
      
      The new FIXMEs are related to IAllocator, since now the node
      total/free/used memory counts are wrong (we can't reliably compute the
      free memory).
      
      Reviewed-by: imsnah
      e69d05fd
  5. 01 Oct, 2008 1 commit
  6. 29 Sep, 2008 1 commit
    • 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
      f9518d38
  7. 27 Sep, 2008 1 commit
    • 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
      be1fa613
  8. 22 Sep, 2008 1 commit
    • Iustin Pop's avatar
      Extend DRBD disks with minors attribute · ffa1c0dc
      Iustin Pop authored
      This patch converts the DRBD disks to contain also a minor (per each
      node) attribute. This minor is not yet used and is always initialized
      with None, so the patch does not have any real-world impact - except for
      automatically upgrading config files (it adds the minors as None, None).
      
      Reviewed-by: imsnah
      ffa1c0dc
  9. 29 Aug, 2008 1 commit
  10. 25 Jun, 2008 1 commit
    • Michael Hanselmann's avatar
      Cleanup old DRBD 0.7.x code · 00fb8246
      Michael Hanselmann authored
      Apparently there were still some leftovers. While removing an instance,
      I got the message "unhandled exception 'module' object has no attribute
      'LD_MD_R1'".
      
      Reviewed-by: iustinp
      00fb8246
  11. 23 Jun, 2008 1 commit
  12. 17 Jun, 2008 2 commits
    • Iustin Pop's avatar
      Allow disk object to set their own physical ID · 0402302c
      Iustin Pop authored
      Currently, the way to customize a DRBD disk from (node name 1, node name
      2, port) to (ip1, port, ip2, port) is to use the ConfigWriter method
      SetDiskID. However, since this needs a ConfigWriter object, it can be
      run only on the master, and therefore disk object can't be passed to
      more than one node unchanged. This, coupled with the rpc layer
      limitation that all nodes in a multi-node call receive the same
      arguments, prevent any kind of multi-node operation that has disks as an
      argument.
      
      This patch takes the SetDiskID method from ConfigWriter and ports it to
      the disk object itself, and instead of the full node configuration it
      uses a simple {node_name: replication_ip} mapping for all the nodes
      involved in the disk tree (currently we only pass primary and secondary
      node since we don't support nested drbd devices).
      
      This allows us to send disks to both the primary and secondary nodes at
      once and perform synchronized drbd activation on primary/secondary
      nodes.
      
      Note that while for the 1.2 branch this will not change old methods, it
      is worth to investigate and possible replace all such calls on the
      master to the nodes themselves for the 2.0 branch.
      
      Reviewed-by: ultrotter
      0402302c
    • Iustin Pop's avatar
      Add method to update a disk object size · acec9d51
      Iustin Pop authored
      This patch adds a method that implements updating of a disk
      (object.Disk) size, together with its children.
      
      While this will not track the exact disk size, it allows at least an
      approximate size to be recorded in the configuration (and queried).
      
      Reviewed-by: imsnah
      acec9d51
  13. 30 May, 2008 1 commit
    • Iustin Pop's avatar
      Complete removal of md/drbd 0.7 code · abdf0113
      Iustin Pop authored
      This patch removes the last of the md and drbd 0.7 code. Cluster which
      have the old device types will be broken if they have this applied.
      
      Reviewed-by: imsnah
      abdf0113
  14. 25 Apr, 2008 1 commit
  15. 21 Apr, 2008 1 commit
    • Iustin Pop's avatar
      Abstract the json functions into a separate module · 8d14b30d
      Iustin Pop authored
      This simple patch adds a new module that holds the simplejson functions
      for serialization/deserialization. This reduces the amount of redundant
      code.
      
      The patch also adds some normalizations to the json output:
        - the output text will always have an EOL as last char
        - extra spaces before EOL are removed
      
      Reviewed-by: ultrotter
      8d14b30d
  16. 25 Mar, 2008 1 commit
  17. 05 Mar, 2008 1 commit
  18. 09 Jan, 2008 1 commit
  19. 08 Jan, 2008 1 commit
    • Iustin Pop's avatar
      Add kernel/initrd paths to the instance object · 2d8c9c2e
      Iustin Pop authored
      This patch adds two new attributes to the instance object:
        - kernel_path
        - object_path
      
      The code ignores them and the configuration handling is not broken by
      this addition.
      
      Reviewed-by: imsnah
      2d8c9c2e
  20. 17 Dec, 2007 1 commit
  21. 06 Nov, 2007 2 commits
    • Iustin Pop's avatar
      Allow DRBD8 operation without backing storage · fc1dc9d7
      Iustin Pop authored
      This patch adds the following functionality:
        - DRBD8 devices can assemble without local storage (done by allowing
          None in the list of children, and making DRBD8 to ignore all
          children if any is None)
        - DRBD8 devices can attach (i.e. identify a device) which is not
          connected to backing storage but to the correct network ports; this
          is a rare case in normal operation (it's what would happen if one
          manually detaches the local disk, and the backing LV still exists)
      
      Reviewed-by: imsnah
      fc1dc9d7
    • Iustin Pop's avatar
      Add a support function to objects.Disk · 222f2dd5
      Iustin Pop authored
      This patch adds a function returning the device path if it is computable
      from the disk object (and we don't need to instantiate a bdev object on
      the target node in order to compute this). Only LVs support this.
      
      Reviewed-by: imsnah
      222f2dd5
  22. 05 Nov, 2007 2 commits
    • Guido Trotter's avatar
      Create OS from an InvalidOS error · d2c807e4
      Guido Trotter authored
      Add a new FromInvalidOS static function to objects.OS that makes it easy to
      create an object representing a broken OS starting from the relevant exception.
      
      Reviewed-By: iustinp
      
      d2c807e4
    • Guido Trotter's avatar
      Make the OS object able to represent broken OSes · 37482e7b
      Guido Trotter authored
      Till now the OS object just represents a correct OS instance.  Change it so it
      can represent a broken one too, by adding a "status" field: if this field is
      different from the OS_VALID_STATUS constant the object is considered to be an
      invalid OS, the "status" field to be a debugging message, and its boolean
      status is set to false.
      
      Reviewed-By: iustinp
      37482e7b
  23. 02 Nov, 2007 1 commit
  24. 01 Nov, 2007 1 commit
  25. 26 Oct, 2007 1 commit
  26. 24 Oct, 2007 1 commit
    • Iustin Pop's avatar
      Initial implementation of drbd8 template type · a1f445d3
      Iustin Pop authored
      This is a partially working drbd8 template type. It does:
        - add/remove
        - startup/failover/shutdown
      
      Not working is replace disks, which needs custom code for this template.
      
      Reviewed-by: imsnah
      a1f445d3
  27. 19 Oct, 2007 1 commit
    • Iustin Pop's avatar
      Abstract more strings values into constants · fe96220b
      Iustin Pop authored
      Currently, the disk types are defined using constants in the code.
      Convert those into constants so that we can easily find them and check
      their usage.
      
      Note that we don't rename the values of the constants as they are used
      in the configuration file, and as such it's best to leave them as they
      are.
      
      Reviewed-by: imsnah
      fe96220b
  28. 10 Oct, 2007 1 commit
    • Iustin Pop's avatar
      Remove the shebang from modules · 2f31098c
      Iustin Pop authored
      Since modules are not directly executables, remove the shebang from
      them. This helps with lintian warnings.
      
      Also make the autogenerated _autoconf.py contain two comment lines at
      the beginning, like the other modules.
      
      Reviewed-by: ultrotter
      2f31098c
  29. 08 Oct, 2007 2 commits
  30. 04 Oct, 2007 1 commit
    • Michael Hanselmann's avatar
      Change configuration storage format from Pickle to JSON. · 319856a9
      Michael Hanselmann authored
      - Add NEWS file with major changes between versions.
      - Bump RPC version number
      - No longer serialize in RPC, but just convert to dict
      
      Old Pickle based configuration files can be converted using the cfgupgrade
      utility.
      
      Reviewed-by: iustinp, ultrotter
      
      319856a9
  31. 24 Sep, 2007 1 commit
    • Iustin Pop's avatar
      Implement to/from dict conversion for ConfigObject(s) · ff9c047c
      Iustin Pop authored
      This change allows instances of ConfigObject and its children to be
      converted to and from standard python types. This will allow easier
      upgrade of the configuration and use of any serialization protocol (not
      only pickle).
      
      The code is not very nice (a little too verbose, I think) but it works.
      Tested on a 2-node, 3-instance cluster by doing repeated conversions and
      checking consistency of results.
      
      Reviewed-by: imsnah
      ff9c047c
  32. 21 Sep, 2007 2 commits
    • Iustin Pop's avatar
      Change class hierarchy in objects.py · ec29fe40
      Iustin Pop authored
      It makes sense to make the TaggableObject a child of the ConfigObject,
      since in this case we can derive the Instance, Node and Cluster objects
      only from the TaggableObject and have a cleaner hierarchy.
      
      For consistency child classes will have to declare their slots by adding
      their parents on top.
      
      Reviewed-by: imsnah,ultrotter
      ec29fe40
    • Iustin Pop's avatar
      Add __slots__ on TaggableObject · 2057f6c7
      Iustin Pop authored
      Unless we use __slots__ on all parents, we don't get the benefits that
      __slots__ bring. This patch adds this attribute to the TaggableObject so
      that Instances, Nodes and the Clusters behave as intended.
      
      Reviewed-by: schreiberal,imsnah
      2057f6c7
  33. 17 Sep, 2007 1 commit
    • Iustin Pop's avatar
      Add support for rename operation in the OS API · 386b57af
      Iustin Pop authored
      This patch adds support for renaming at OS level. Because of this, we
      need to bump up the version of the OS api from 4 to 5.
      
      The patch also documents the new script interface in the
      ganeti-os-interface(7) man page and adds a section on upgrading the OS
      definitions to the new version.
      
      Reviewed-by: imsnah
      386b57af