LGTM, thanks.

On Thu, Apr 10, 2014 at 1:46 PM, Hrvoje Ribicic <[email protected]> wrote:

> commit 50ac855d8efaedea4119ce51a085e3fac7ddd091
> Merge: c1cbe30 2d15929
> Author: Hrvoje Ribicic <[email protected]>
> Date:   Thu Apr 10 11:31:17 2014 +0000
>
>     Merge branch 'stable-2.10' into stable-2.11
>
>     * stable-2.10
>       Revision bump for 2.10.3
>       Update NEWS file for 2.10.3
>       Warn in UPGRADE about not tar'ing exported insts
>       Fix non-running test and remove custom_nicparams rename
>       Acccount for NODE_RES lock in opportunistic locking
>       Fix request flooding of noded during disk sync
>
>     * stable-2.9
>       Allow QA asserts to produce more messages
>       Add messages about skipped QA disk template tests
>       Fix list-drbd QA test
>       Update installation guide wrt to DRBD version
>       Update NEWS for 2.9.6
>       Revision bump for 2.9.6
>
>     Conflicts:
>     NEWS: Used both entries
>     configure.ac: Taken 2.11 version numbers
>     qa/ganeti-qa.py: Moved coloring into ReportTestSkip
>
> diff --cc NEWS
> index 45f3611,225d999..fa2f6f0
> --- a/NEWS
> +++ b/NEWS
> @@@ -2,97 -2,30 +2,121 @@@ New
>   ====
>
>
>  +Version 2.11.0 rc1
>  +------------------
>  +
>  +*(Released Thu, 20 Mar 2014)*
>  +
>  +Incompatible/important changes
>  +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>  +
>  +- ``gnt-node list`` no longer shows disk space information for shared
> file
>  +  disk templates because it is not a node attribute. (For example, if
> you have
>  +  both the file and shared file disk templates enabled, ``gnt-node
> list`` now
>  +  only shows information about the file disk template.)
>  +- The shared file disk template is now in the new 'sharedfile' storage
> type.
>  +  As a result, ``gnt-node list-storage -t file`` now only shows
> information
>  +  about the file disk template and you may use ``gnt-node list-storage -t
>  +  sharedfile`` to query storage information for the shared file disk
> template.
>  +- Over luxi, syntactially incorrect queries are now rejected as a whole;
>  +  before, a 'SumbmitManyJobs' request was partially executed, if the
> outer
>  +  structure of the request was syntactically correct. As the luxi
> protocol
>  +  is internal (external applications are expected to use RAPI), the
> impact
>  +  of this incompatible change should be limited.
>  +- Queries for nodes, instances, groups, backups and networks are now
>  +  exclusively done via the luxi daemon. Legacy python code was removed,
>  +  as well as the --enable-split-queries configuration option.
>  +- Orphan volumes errors are demoted to warnings and no longer affect the
> exit
>  +  code of ``gnt-cluster verify``.
>  +- RPC security got enhanced by using different client SSL certificates
>  +  for each node. In this context 'gnt-cluster renew-crypto' got a new
>  +  option '--renew-node-certificates', which renews the client
>  +  certificates of all nodes. After a cluster upgrade from pre-2.11, run
>  +  this to create client certificates and activate this feature.
>  +
>  +New features
>  +~~~~~~~~~~~~
>  +
>  +- Instance moves, backups and imports can now use compression to
> transfer the
>  +  instance data.
>  +- Node groups can be configured to use an SSH port different than the
>  +  default 22.
>  +- Added experimental support for Gluster distributed file storage as the
>  +  ``gluster`` disk template under the new ``sharedfile`` storage type
> through
>  +  automatic management of per-node FUSE mount points. You can configure
> the
>  +  mount point location at ``gnt-cluster init`` time by using the new
>  +  ``--gluster-storage-dir`` switch.
>  +- Job scheduling is now handled by luxid, and the maximal number of jobs
> running
>  +  in parallel is a run-time parameter of the cluster.
>  +
>  +New dependencies
>  +~~~~~~~~~~~~~~~~
>  +
>  +The following new dependencies have been added:
>  +
>  +For Haskell:
>  +
>  +- ``zlib`` library (http://hackage.haskell.org/package/base64-bytestring
> )
>  +
>  +- ``base64-bytestring`` library (http://hackage.haskell.org/package/zlib
> ),
>  +  at least version 1.0.0.0
>  +
>  +Since 2.11.0 beta1
>  +~~~~~~~~~~~~~~~~~~
>  +
>  +This was the first RC release of the 2.11 series. Since 2.11.0 beta1:
>  +
>  +- Convert int to float when checking config. consistency
>  +- Rename compression option in gnt-backup export
>  +
>  +Inherited from the 2.9 branch:
>  +
>  +- Fix error introduced during merge
>  +- gnt-cluster copyfile: accept relative paths
>  +
>  +Inherited from the 2.8 branch:
>  +
>  +- Improve RAPI detection of the watcher
>  +- Add patching QA configuration files on buildbots
>  +- Enable a timeout for instance shutdown
>  +- Allow KVM commands to have a timeout
>  +- Allow xen commands to have a timeout
>  +- Fix wrong docstring
>  +
>  +
>  +Version 2.11.0 beta1
>  +--------------------
>  +
>  +*(Released Wed, 5 Mar 2014)*
>  +
>  +This was the first beta release of the 2.11 series. All important changes
>  +are listed in the latest 2.11 entry.
>  +
>  +
> + Version 2.10.3
> + --------------
> +
> + *(Released Mon, 14 Apr 2014)*
> +
> + - Fix filtering of pending jobs with -o id (issue 778)
> + - Make RAPI API calls more symmetric (issue 770)
> + - Make parsing of old cluster configuration more robust (issue 783)
> + - Fix wrong output of gnt-instance info after migrations
> + - Fix reserved PCI slots for KVM hotplugging
> + - Use runtime hypervisor parameters to calculate bockdevice options for
> KVM
> + - Fix high node daemon load during disk sync if the sync is paused
> manually
> +   (issue 792)
> + - Improve opportunistic locking during instance creation (issue 791)
> +
> + Inherited from the 2.9 branch:
> +
> + - Make watcher submit queries low priority (issue 772)
> + - Add reason parameter to RAPI client functions (issue 776)
> + - Fix failing gnt-node list-drbd command (issue 777)
> + - Properly display fake job locks in gnt-debug.
> + - small fixes in documentation
> +
> +
>   Version 2.10.2
>   --------------
>
> diff --cc qa/ganeti-qa.py
> index e49a1f4,f21768a..1f9fe4a
> --- a/qa/ganeti-qa.py
> +++ b/qa/ganeti-qa.py
> @@@ -107,10 -97,25 +107,27 @@@ def RunTest(fn, *args, **kwargs)
>     finally:
>       tstop = datetime.datetime.now()
>       tdelta = tstop - tstart
>  -    print _FormatHeader("%s time=%s %s" % (tstop, tdelta, desc))
>  +    print _FormatHeader("%s time=%s %s" % (tstop, tdelta, desc),
>  +                        color=colors.MAGENTA, mark=">")
>
>
> + def ReportTestSkip(desc, testnames):
> +   """Reports that tests have been skipped.
> +
> +   @type desc: string
> +   @param desc: string
> +   @type testnames: string or list of string
> +   @param testnames: either a single test name in the configuration
> +       file, or a list of testnames (which will be AND-ed together)
> +
> +   """
> +   tstart = datetime.datetime.now()
> +   # TODO: Formatting test names when non-string names are involved
> +   print _FormatHeader("%s skipping %s, test(s) %s disabled" %
>  -                      (tstart, desc, testnames))
> ++                      (tstart, desc, testnames),
> ++                      color=colors.BLUE, mark="*")
> +
> +
>   def RunTestIf(testnames, fn, *args, **kwargs):
>     """Runs a test conditionally.
>
> @@@ -121,46 -126,42 +138,42 @@@
>     if qa_config.TestEnabled(testnames):
>       RunTest(fn, *args, **kwargs)
>     else:
> -     tstart = datetime.datetime.now()
>       desc = _DescriptionOf(fn)
> -     # TODO: Formatting test names when non-string names are involved
> -     print _FormatHeader("%s skipping %s, test(s) %s disabled" %
> -                         (tstart, desc, testnames),
> -                         color=colors.BLUE, mark="*")
> +     ReportTestSkip(desc, testnames)
>
>
>  -def RunEnvTests():
>  -  """Run several environment tests.
>  +def RunTestBlock(fn, *args, **kwargs):
>  +  """Runs a block of tests after printing a header.
>
>     """
>  -  RunTestIf("env", qa_env.TestSshConnection)
>  -  RunTestIf("env", qa_env.TestIcmpPing)
>  -  RunTestIf("env", qa_env.TestGanetiCommands)
>  +  tstart = datetime.datetime.now()
>
>  +  desc = _DescriptionOf(fn)
>
>  -def _LookupRapiSecret(rapi_user):
>  -  """Find the RAPI secret for the given user.
>  +  print
>  +  print _FormatHeader("BLOCK %s start %s" % (tstart, desc),
>  +                      color=[colors.YELLOW, colors.BOLD], mark="v")
>  +
>  +  try:
>  +    return fn(*args, **kwargs)
>  +  except Exception, e:
>  +    print _FormatHeader("BLOCK FAILED %s: %s" % (desc, e),
>  +                        color=[colors.RED, colors.BOLD])
>  +    raise
>  +  finally:
>  +    tstop = datetime.datetime.now()
>  +    tdelta = tstop - tstart
>  +    print _FormatHeader("BLOCK %s time=%s %s" % (tstop, tdelta, desc),
>  +                        color=[colors.MAGENTA, colors.BOLD], mark="^")
>
>  -  @param rapi_user: Login user
>  -  @return: Login secret for the user
>  +
>  +def RunEnvTests():
>  +  """Run several environment tests.
>
>     """
>  -  CTEXT = "{CLEARTEXT}"
>  -  master = qa_config.GetMasterNode()
>  -  cmd = ["cat", qa_utils.MakeNodePath(master, pathutils.RAPI_USERS_FILE)]
>  -  file_content = qa_utils.GetCommandOutput(master.primary,
>  -                                           utils.ShellQuoteArgs(cmd))
>  -  users = ParsePasswordFile(file_content)
>  -  entry = users.get(rapi_user)
>  -  if not entry:
>  -    raise qa_error.Error("User %s not found in RAPI users file" %
> rapi_user)
>  -  secret = entry.password
>  -  if secret.upper().startswith(CTEXT):
>  -    secret = secret[len(CTEXT):]
>  -  elif secret.startswith("{"):
>  -    raise qa_error.Error("Unsupported password schema for RAPI user %s:"
>  -                         " not a clear text password" % rapi_user)
>  -  return secret
>  +  RunTestIf("env", qa_env.TestSshConnection)
>  +  RunTestIf("env", qa_env.TestIcmpPing)
>  +  RunTestIf("env", qa_env.TestGanetiCommands)
>
>
>   def SetupCluster(rapi_user):
>



-- 
Thomas Thrainer | Software Engineer | [email protected] |

Google Germany GmbH
Dienerstr. 12
80331 München

Registergericht und -nummer: Hamburg, HRB 86891
Sitz der Gesellschaft: Hamburg
Geschäftsführer: Graham Law, Christine Elizabeth Flores

Reply via email to