Explicit field lists

    Specify field lists for all selects where we had to add a primary key
    to the table. There are still some wild card selects that need to be
    cleaned up, but they are on tables that already have a primary key or
    not on mysql tables.

Change-Id: I87e13dc1c0c9eb6dd8b3856318b82f47d6bc42d7
Working on tape type lookup

 - fleshed out cv.cvv_ttype_lookup, cv_lib.ttype_lookup
 - new cv_lib.ttype_cart_lookup -- retrieve type and subtype numbers
   for a specific cartridge
 - new cv_lib.ttype_map_desc -- convert type and subtype number into
   a string media description
 - new util.lsp_parse -- take the output from an hsi 'ls -P' command
   and extract 1) the item type ('f' or 'd'), 2) the item name,
   3) the cartridge if any, and 4) the cos if any. These are returned
   as a tuple.

Change-Id: I3b354263246d663ea27b239c653f67e6bef00848
Updated test_duplicates to only look at hpssic files -- attempt 1

Change-Id: Iabf4cb1b7ddacdab7b4bffe2f876bd9653f0530c
Tape type lookups

 - Handle files on multiple tapes
 - Look up cartridge by physical volume id
 - In the DBI object, convert 'hpss' dbtype based on config
 - Support lookups from command line

Change-Id: Id5f1827f2585ec10e1adc3d64bb5525c6339bcb4
Add alter to support cv_ttype_add(), cv_ttype_drop()

 - Add dbi routines alter, describe
 - Tests for alter

Change-Id: Ic0d624b02286b25c51cad5b5368613bc96c33824
---------------
Finish support for tape types

 - Add cvv_ttype_populate()
 - In db.alter, bail if database is closed

Change-Id: Ib9bc8bd891d5286a50264d01265837303804fc1b
dbtype = {"hpss"|"crawler"}

 - Reworked DBI constructor so dbtype values are "hpss" and "crawler" and db2
   database names are in the config.

Change-Id: Ifb180475183e236f13158d4cc1d6add7ba8fc504
Support for py.test

Change-Id: Id5ad1b6c99834653fca0846e72bf331dd2c8116d
Updated test_duplicates to only look at hpssic files -- attempt 1

Change-Id: Iabf4cb1b7ddacdab7b4bffe2f876bd9653f0530c
Pep8 adjustments

Change-Id: I582576fcbc0632f13afcafcf62ebe9d3119ff3c9
Tape type lookups

 - Handle files on multiple tapes
 - Look up cartridge by physical volume id
 - In the DBI object, convert 'hpss' dbtype based on config
 - Support lookups from command line

Change-Id: Id5f1827f2585ec10e1adc3d64bb5525c6339bcb4
Add alter to support cv_ttype_add(), cv_ttype_drop()

 - Add dbi routines alter, describe
 - Tests for alter

Change-Id: Ic0d624b02286b25c51cad5b5368613bc96c33824
dbtype = {"hpss"|"crawler"}

 - Reworked DBI constructor so dbtype values are "hpss" and "crawler" and db2
   database names are in the config.

Change-Id: Ifb180475183e236f13158d4cc1d6add7ba8fc504
Section names "dbi-{hpss,crawler}"; dbtypes "{hpss,crawler}"

 - Provide variables with section names in CrawlDBI.py
 - Break make_tcfg() into separate routines for each db engine
 - Moved test_ctor_dbn_none() from DBI_in_Base to DBI_out_Base because it no
   long applies to db2 -- option 'dbname' is no longer required in the
   dbi-hpss section of the config file

Change-Id: If80e7407bafdd6a11c4a6d5c0eef4f7fb91fb3e4
WSREP retry, eliminate hard-coding

 - Make mysql select retry on WSREP failure
 - Soften references

Change-Id: I3472fc9ffb402141137b2d877904bb4e2a26521b
Add options to allow better control of 'cv ttype_populate'

 - Break monolithic cvv_ttype_populate code down into smaller pieces
 - New options --dryrun/-n, --limit N/-l N
 - Handle option/argument mutual exclusion
 - Handle cases where files don't have media info (eg., 0 length)
 - Report the number of records processed and skipped

Change-Id: I84176f9c2165b968c3757c002573660c1b08609d
Make dimensions configurable

 - Add dimensions to sample configuration
 - Define and load dimensions dict in Checkable.py
 - [cv] section required in test config for Checkable and Dimension tests
 - Improve message when no configuration is found, with test.

Change-Id: Ia3aff8b3ca453f043dbba6a4b4ae49e41b78d581
Moving DBI calls to library files, test tweaks

 - Move DBI call for interactive drop table down into crawl_lib.py
 - Move DBI calls for checksum, match, failure counts from cv_plugin.py into
   cv_lib.py
 - Added file messages.py where we'll put common messages used in multiple
   files
 - Added util.squash() which takes a string and returns a version of it with
   internal whitespace runs squeezed down to a single space and leading and
   trailing whitespace stripped off
 - There are still more DBI calls in plugins and tools to be moved to the
   library files

Change-Id: Icdeeb5fc9c7983fab5ef377b936a301dabf86fc8
Tweaks: test, setup

 - Clear environment where needed in test_CrawlConfig.py
 - Put routines in order in test_CrawlConfig.py
 - Improvement to strategy for finding crawl command
 - Eliminate ztool.py

Change-Id: I3b4adaec853c9dae8ebff77a03a4c1f26924c6de
Moving db ops down into _lib.py

 - More sophisticated args for crawl_lib.drop_table
 - Move functionality into cv_lib.py

Change-Id: I9e716ca534fb3e5876938149c299448804aede9b