Skip to content
Snippets Groups Projects
  1. Oct 16, 2012
  2. Oct 15, 2012
  3. Oct 03, 2012
  4. Sep 21, 2012
  5. Sep 12, 2012
  6. Sep 07, 2012
    • Iustin Pop's avatar
      Fix bug in non-mirrored instance allocation · 14b5d45f
      Iustin Pop authored
      
      The function `allocateOnSingle' has a bug in the calculation of the
      cluster score used for deciding which of the many target nodes to use
      in placing the instance: it uses the original node list for the score
      calculation.
      
      Due to this, since the original node list is the same for all target
      nodes, it means that basically `allocateOnSingle' returns the same
      score, no matter the target node, and hence the choosing of the node
      is arbitrary, instead of being done on the basis of the algorithm.
      
      This has gone uncaught until reported because the unittests only test
      1 allocation at a time on an empty cluster, and do not check the
      consistency of the score. I'll send separate patches on the master
      branch for adding more checks to prevent this in the future.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarAgata Murawska <agatamurawska@google.com>
      14b5d45f
  7. Sep 05, 2012
  8. Sep 04, 2012
  9. Sep 03, 2012
    • Iustin Pop's avatar
      Fix warnings/errors with newer pylint · 8ad0da1e
      Iustin Pop authored
      
      To help developing Ganeti on newer distributions, let's try to fix
      pylint warnings/errors. I'm using pylint from current Debian wheezy:
      pylint 0.25.1, astng 0.23.1, common 0.58.0, and we have 3 things that
      needs fixing.
      
      First, a really wide "except", with the silencing in the wrong
      place. I'm not sure why this doesn't have "except Exception", so let's
      add it. However, pylint still complains about "Catching too general
      exception", even though we do want to catch both system and our
      exception, so let's add a silence for W0703. It's true that we
      shouldn't catch KeyboardInterrupt and friends, but that should be
      cleaned up on the master branch.
      
      Second, pylint complains about "redefining name builtin tuple",
      because we do some pattern matching in the except blocks in
      netutils. This seems to be a false positive, but let's clean the code
      around this.
      
      And finally, type inference again goes bad, so let's silence E1103
      with its "boolean doesn't have 'get' method".
      
      After this, I can run "make lint", and by extension "make
      commit-check" on Debian Wheezy, yay! We might be able to bump our
      required pylint versions to something not ancient…
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      8ad0da1e
    • Iustin Pop's avatar
      Fix decorator uses which crash newer pylint · fc3f75dd
      Iustin Pop authored
      
      Pylint version:
      
        pylint 0.25.1,
        astng 0.23.1, common 0.58.0
      
      crashes when passing the fully-qualified decorator name with:
      
        File "/usr/lib/pymodules/python2.7/pylint/checkers/base.py", line 161, in visit_function
          if not redefined_by_decorator(node):
        File "/usr/lib/pymodules/python2.7/pylint/checkers/base.py", line 116, in redefined_by_decorator
          decorator.expr.name == node.name):
      AttributeError: 'Getattr' object has no attribute 'name'
      
      I found out that simply using a shortened name will 'fix' this issue,
      so let's do this to allow running newer pylint versions.
      
      Signed-off-by: default avatarIustin Pop <iustin@google.com>
      Reviewed-by: default avatarMichael Hanselmann <hansmi@google.com>
      fc3f75dd
  10. Aug 31, 2012
  11. Aug 30, 2012
  12. Aug 27, 2012
  13. Aug 22, 2012
    • Dimitris Aragiorgis's avatar
    • Dimitris Aragiorgis's avatar
    • Dimitris Aragiorgis's avatar
      Merge branch 'stable-esi' · c54ec0dc
      Dimitris Aragiorgis authored
      
      Conflicts:
      	Makefile.am
      	lib/cli.py
      	lib/client/gnt_instance.py
      	lib/cmdlib.py
      	lib/constants.py
      	lib/opcodes.py
      
      Signed-off-by: default avatarDimitris Aragiorgis <dimara@grnet.gr>
      c54ec0dc
    • Constantinos Venetsanopoulos's avatar
      Add external storage interface related man pages · 7c88c7af
      Constantinos Venetsanopoulos authored
      
       * ganeti-extstorage-interface man page
       * gnt-storage man page
      
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      7c88c7af
    • Constantinos Venetsanopoulos's avatar
      11d36c2e
    • Constantinos Venetsanopoulos's avatar
      Add the gnt-storage client · 9bcef16f
      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>
      9bcef16f
    • Constantinos Venetsanopoulos's avatar
    • Constantinos Venetsanopoulos's avatar
      Multiple ExtStorage Providers and ext-params · e74f6291
      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 through the --disk option. If the disk template
      is of type `ext' during instance add, then any additional options that
      are not in IDISK_PARAMS given to --disk 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 valid for other template
      types.
      
      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>
      e74f6291
    • Constantinos Venetsanopoulos's avatar
      Implement the External Storage Interface · 868eab67
      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>
      868eab67
    • Constantinos Venetsanopoulos's avatar
      Update the shared storage design document · f9a1f3eb
      Constantinos Venetsanopoulos authored
      
      Update the shared storage design document to reflect the current
      changes, after the implementation of the ExtStorage interface.
      
      Signed-off-by: default avatarConstantinos Venetsanopoulos <cven@grnet.gr>
      f9a1f3eb
Loading