def do_argparse(sys_argv): desc_help = textwrap.dedent(''' Emulate md5sum, sha1sum, etc... as if all were run in parallel... ''') parser = argparse.ArgumentParser(description=desc_help, formatter_class=utils.AlmostRawFormatter) parser.add_argument('-d', '--directory', default='.', help='Directory where checksums files are output') parser.add_argument('-f', '--force', action='store_true', help='Overwrite checksum files') parser.add_argument('-v', '--verbose', action='store_true', help='Display additional information') parser.add_argument(dest='files', nargs='+', help='files to comute checksums of') args = parser.parse_args(sys_argv) if args.verbose: utils.set_verbose(True) vprint('verbose mode') return args
def do_argparse(sys_argv): '''Handle CLI options ''' parser = argparse.ArgumentParser(description=__doc__) parser.add_argument('-v', '--verbose', action='store_true', help='Display additional information') parser.add_argument('-l', '--vmlist', default=[], action='append', help='File containing a list of endorsed VM image ' 'marketplace IDs to upload in glance') parser.add_argument('-u', '--url', default=_DEFAULT_SL_MP_URL, help='Market place base URL (default should be OK)') args = parser.parse_args(sys_argv) if args.verbose: utils.set_verbose(True) vprint('verbose mode') return args
def main(args=sys.argv[1:]): '''Decompress all files given as CLI arguments''' utils.set_verbose(True) vprint('verbose mode') for fname in args: vprint('Decompressing archive: ' + fname) decomp = Decompressor(fname) decomp.doit() return True
def vprint_lines_verbose(self, verbosity, test_name): v = utils.get_verbose() utils.set_verbose(verbosity) with utils.stringio() as output: expected = '' if verbosity: expected = test_name + ': TOTO\n' + test_name + ': TITI\n' with utils.redirect('stdout', output): utils.vprint_lines('TOTO\nTITI', test_name) self.assertEqual(expected, output.getvalue()) self.assertEqual(expected, output.getvalue()) with self.assertRaises(ValueError): output.getvalue() utils.set_verbose(v)
def do_argparse(sys_argv): parser = argparse.ArgumentParser(description='Manage glance VM images') # Global options parser.add_argument('-v', '--verbose', action='store_true', help='display additional information') group = parser.add_mutually_exclusive_group() group.add_argument('-d', '--delete', dest='delete', metavar='NAME', nargs='+', help='delete all images with the same ' 'name as the specified VM') args = parser.parse_args(sys_argv) if args.verbose: utils.set_verbose(True) vprint('verbose mode') return args
def test_utils_set_verbose_value(self): v = utils.get_verbose() utils.set_verbose(True) self.assertTrue(utils.get_verbose() is True) utils.set_verbose(False) self.assertTrue(utils.get_verbose() is False) utils.set_verbose(v) self.assertTrue(utils.get_verbose() == v)
def setUp(self): self._v = utils.get_verbose() utils.set_verbose(True)
def test_utils_set_verbose_toggle(self): v = utils.get_verbose() utils.set_verbose() self.assertFalse(v == utils.get_verbose()) utils.set_verbose() self.assertTrue(v == utils.get_verbose())
#! /usr/bin/env python import unittest from tutils import local_pythonpath, get_local_path # Setup project-local PYTHONPATH local_pythonpath('..', '..', 'src') import utils import glance import glance_manager utils.set_verbose(True) # Check we have a cloud ready to import images into... _GLANCE_OK = False with utils.devnull('stderr'): _GLANCE_OK = glance.glance_run('image-list') is not None _OLDGMF = glance_manager.get_meta_file class GlanceManagerBasicTest(unittest.TestCase): def test_glance_manager_nolist(self): ret = glance_manager.main([]) self.assertFalse(ret) def test_glance_manager_badlistpath(self): ret = glance_manager.main(['-l', '/nonexistent']) self.assertFalse(ret)
def tearDown(self): utils.set_verbose(self._v)
def do_argparse(sys_argv): desc_help = textwrap.dedent(''' Import VM images into OpenStack glance image registry. Verify checksum(s), image size, etc... Backup old images being replaced. ''') parser = argparse.ArgumentParser(description=desc_help, formatter_class=utils.AlmostRawFormatter) group = parser.add_mutually_exclusive_group() group.add_argument('-f', '--force', action='store_true', help=('Import image into glance even if checksum ' 'verification failed')) group.add_argument('-d', '--dry-run', dest='dryrun', action='store_true', help='Do not import image into glance') parser.add_argument('-D', '--no-checksum', action='store_true', help='Do not verify checksums', dest='nocheck') parser.add_argument('-v', '--verbose', action='store_true', help='Display additional information') parser.add_argument('-n', '--name', dest='name', default=None, help=('Name of the image in glance registry. Default ' 'value derived from image file name.')) parser.add_argument('-k', '--keep-temps', dest='keeptemps', action='store_true', help='Keep temporary files (VM image & other)') parser.add_argument('-c', '--cern-list', dest='cernlist', help='Image list from CERN, as a JSON file') parser.add_argument('-b', '--backup-dir', dest='backupdir', help='Backup already existing images in this directory') digests_help = ('''>>> A colon-separated list of message digests of the image. This overrides / complements the checksums that are present in metadata, if using the StratusLab marketplace. It also overrides checksum files loaded with -S or --sums-files. Algorithms are deduced from checksum lengths. For example, an MD5 (32 chars) and a SHA-1 (40 chars): "3bea57666cdead13f0ed4a91beef2b98:1b5229d5dad92bc6662553be01608af2180eafbe" ''') parser.add_argument('-s', '--sums', dest='digests', help=digests_help) digests_files_help = ('''>>> A message digest file to load. This overrides / complements the checksums that are present in metadata, if using the StratusLab marketplace. Algorithms are deduced from checksum lengths. ''') parser.add_argument('-S', '--sums-files', dest='sums_files', nargs='*', help=digests_files_help) descriptor_help = ('''>>> This can be: * a local file path: - to an image file in "raw" format - to a StratusLab marketplace metadata file in JSON or XML format * a StratusLab marketplace ID * a network location (URL) * a CERN image list ID, with the VM image list passed in as --cern-list The StratusLab marketplace is located here: https://marketplace.stratuslab.eu ''') parser.add_argument('descriptor', metavar='STRING', help=descriptor_help) args = parser.parse_args(sys_argv) if args.verbose: utils.set_verbose(True) vprint('verbose mode') return args