1. 18 Jan, 2013 2 commits
  2. 16 Jan, 2013 6 commits
  3. 11 Jan, 2013 1 commit
  4. 07 Jan, 2013 1 commit
  5. 27 Dec, 2012 1 commit
    • Iustin Pop's avatar
      Fix LUInstanceRecreateDisks with iallocator · 8775e62a
      Iustin Pop authored
      Recent iallocator changes (commit fb60bc6a
      
      , “iallocator: Add node
      whitelist”) broke the parameter validation for LUInstanceRecreateDisks
      (the other LUs were manually fixed already):
      
        $ gnt-instance recreate-disks -I hail --dry-run instance3
        Failure: prerequisites not met for this operation:
        error type: wrong_input, error details:
        Request is missing 'node_whitelist' parameter
      
      By just defining the new parameter, the LU works normally (“INFO:
      Selected nodes for instance instance3 via iallocator hail: node2”).
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarGuido Trotter <ultrotter@google.com>
      8775e62a
  6. 22 Dec, 2012 1 commit
    • Constantinos Venetsanopoulos's avatar
      Add the gnt-storage client · b954f097
      Constantinos Venetsanopoulos authored
      
      
      Add a new client called 'gnt-storage'.
      The client interacts with the ExtStorage interface, similarly to
      the way gnt-os interacts with the OS interface.
      
      For now, only two commands are supported: 'info' and 'diagnose'.
      
      'diagnose' calculates the node status of each provider on each node,
      similarly to gnt-os diagnose. Furthermore, for every provider, it
      calculates it's nodegroup validity for each nodegroup. This is done
      inside the LU and not the client (marked as 'TODO' for the  global
      validity of gnt-os diagnose).
      
      In the future, gnt-storage can be used to manage storage pools,
      or even be extended to diagnose other storage types supported by
      Ganeti, such as lvm, drbd (INT_MIRROR) or rbd (EXT_MIRROR).
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      [iustin@google.com: fixed Haskell compatibility and style fixes]
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      b954f097
  7. 21 Dec, 2012 11 commits
  8. 20 Dec, 2012 5 commits
    • Constantinos Venetsanopoulos's avatar
      Adjust LUInstanceSetParams wrt the `ext' template · aa6c1bb1
      Constantinos Venetsanopoulos authored
      
      
      Initial support for the `ext' template in gnt-instance modify.
      Take care of all needed checks in CheckArguments and CheckPrereqs
      wrt ExtStorage Providers and ext-params.
      
      ExtStorage disk addition and specification of arbitrary ext-params
      during addition is supported.
      
      Currently, one cannot modify an existing disk's ExtStorage Provider,
      neither can change an existing disk's ext-params. Only an existing
      disk's `mode' can be modified.
      
      Removal is transparent of the disk template and is also supported.
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      [iustin@google.com: fix bug in disk changes, pylint fixes]
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      aa6c1bb1
    • Constantinos Venetsanopoulos's avatar
      Multiple ExtStorage Providers and ext-params · 938adc87
      Constantinos Venetsanopoulos authored
      
      
      Add support for passing parameters to the ext template (ext-params).
      Take advantage of disk-params, that don't seem to make much sense in
      this template (ExtStorage Providers are not predefined and we don't
      know their needs) and use them to pass the ext-params dynamically to
      the template.
      
      ext-params are correlated with gnt-os-interface's os-params.
      All ext-params are exported to the ExtStorage Provider through it's
      environment, with variables prefixed with 'EXTP_' (similarly to the
      OS interface's 'OSP_' params).
      
      ext-params are passed via the --disk option. If the disk template
      is of type `ext', then any additional options passed to --disk and
      are not in IDISK_PARAMS are considered ext-params e.g.:
      
       gnt-instance add -t ext --disk=0:size=2G,param1=value1,param2=value2
      
      Finally, we introduce a new IDISK_PARAM called IDISK_PROVIDER, that is
      mandatory for template `ext' and is used to select the desired
      ExtStorage Provider. This parameter is not a valid --disk option for
      any other template type.
      
      The IDISK_PROVIDER parameter becomes the first element of the
      disk's unique_id tuple e.g.:
      
       unique_id = ('sample_provider1', 'UUID.ext.diskX')
      
      Example selecting different ExtStorage Providers for each disk and
      passing different ext-params to them:
      
       -t ext --disk=0:size=2G,provider=sample_provider1,param1=value1
              --disk=1:size=3G,provider=sample_provider2,param2=value2
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      [iustin@google.com: small simplification in bdev code, pylint fixes]
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      938adc87
    • Constantinos Venetsanopoulos's avatar
      Implement the External Storage Interface · 376631d1
      Constantinos Venetsanopoulos authored
      
      
      With this commit we introduce the External Storage Interface
      to Ganeti, abbreviated: ExtStorage Interface.
      
      The ExtStorage Interface provides Ganeti with the ability to interact
      with externally connected shared storage pools, visible by all
      VM-capable nodes. This means that Ganeti is able to handle VM disks
      that reside inside a NAS/SAN or any distributed block storage provider.
      
      The ExtStorage Interface provides a clear API, heavily inspired by the
      gnt-os-interface API, that can be used by storage vendors or sysadmins
      to write simple ExtStorage Providers (correlated to gnt-os-interface's
      OS Definitions). Those Providers will glue externally attached shared
      storage with Ganeti, without the need of preprovisioned block devices
      on Ganeti VM-capable nodes as confined be the current `blockdev' disk
      template.
      
      To do so, we implement a new disk template called `ext' (of type
      DTS_EXT_MIRROR) that passes control to externally provided scripts
      (the ExtStorage Provider) for the template's basic functions:
      
       create / attach / detach / remove / grow
      
      The scripts reside under ES_SEARCH_PATH (correlated to OS_SEARCH_PATH)
      and only one ExtStorage Provider is supported called `ext'.
      
      The disk's logical id is the tuple ('ext', UUID.ext.diskX), where UUID
      is generated as in disk template `plain' and X is the disk's index.
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      [iustin@google.com: small simplification in bdev code, pylint fixes]
      Reviewed-by: default avatarIustin Pop <iustin@google.com>
      376631d1
    • Michael Hanselmann's avatar
      More style updates for network-related code · 044fff06
      Michael Hanselmann authored
      
      
      Error message formatting, else/if merging to elif, docstrings.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarHelga Velroyen <helgav@google.com>
      044fff06
    • Michael Hanselmann's avatar
      cmdlib: Additional opportunistic locking check · cfa79a23
      Michael Hanselmann authored
      
      
      If opportunistic locking is requested in the opcode, but no iallocator
      is used (not specified or no default), an error will be raised.
      Signed-off-by: default avatarMichael Hanselmann <hansmi@google.com>
      Reviewed-by: default avatarHelga Velroyen <helgav@google.com>
      cfa79a23
  9. 19 Dec, 2012 9 commits
  10. 18 Dec, 2012 2 commits
  11. 17 Dec, 2012 1 commit