def test_https_whole_disk(self): source = sources.detect('https:///image', checksum='abcd') self.assertIs(source.__class__, sources.HttpWholeDiskImage) self.assertEqual(source.url, 'https:///image') self.assertEqual(source.checksum, 'abcd') source._validate(mock.Mock(), None)
def test_file_partition_disk_missing_root(self): source = sources.detect('file:///image', checksum='abcd', kernel='file:///kernel', ramdisk='file:///ramdisk') self.assertRaises(exceptions.UnknownRootDiskSize, source._validate, mock.Mock(), None)
def test_file_whole_disk(self): source = sources.detect('file:///image') self.assertIs(source.__class__, sources.FileWholeDiskImage) self.assertEqual(source.location, 'file:///image') self.assertIsNone(source.checksum) source._validate(mock.Mock(), None)
def test_file_partition_disk(self): source = sources.detect('file:///image', kernel='file:///kernel', ramdisk='file:///ramdisk') self.assertIs(source.__class__, sources.FilePartitionImage) self.assertEqual(source.location, 'file:///image') self.assertIsNone(source.checksum) self.assertEqual(source.kernel_location, 'file:///kernel') self.assertEqual(source.ramdisk_location, 'file:///ramdisk') source._validate(mock.Mock(), 9)
def test_glance_partition_missing_root(self): source = sources.detect('foobar') self.assertIsInstance(source, sources.GlanceImage) self.assertEqual(source.image, 'foobar') conn = mock.Mock(spec=['image']) conn.image.find_image.return_value = mock.Mock(id=42, kernel_id=1, ramdisk_id=2) self.assertRaises(exceptions.UnknownRootDiskSize, source._validate, conn, None)
def test_glance_whole_disk(self): source = sources.detect('foobar') self.assertIsInstance(source, sources.GlanceImage) self.assertEqual(source.image, 'foobar') conn = mock.Mock(spec=['image']) conn.image.find_image.return_value = mock.Mock(id=42, kernel_id=None, ramdisk_id=None) source._validate(conn, None) self.assertEqual({'image_source': 42}, source._node_updates(conn))
def test_https_partition_disk_checksum(self): source = sources.detect( 'https:///image', # Can mix HTTP and HTTPs checksum='http://checksum', kernel='http:///kernel', ramdisk='https:///ramdisk') self.assertIs(source.__class__, sources.HttpPartitionImage) self.assertEqual(source.url, 'https:///image') self.assertEqual(source.checksum_url, 'http://checksum') self.assertEqual(source.kernel_url, 'http:///kernel') self.assertEqual(source.ramdisk_url, 'https:///ramdisk')
def test_http_whole_disk(self): source = sources.detect('http:///image', checksum='abcd') self.assertIs(source.__class__, sources.HttpWholeDiskImage) self.assertEqual(source.url, 'http:///image') self.assertEqual(source.checksum, 'abcd') source._validate(mock.Mock(), None) self.assertEqual( { 'image_checksum': 'abcd', 'image_source': 'http:///image' }, source._node_updates(None))
def test_glance_partition(self): source = sources.detect('foobar') self.assertIsInstance(source, sources.GlanceImage) self.assertEqual(source.image, 'foobar') conn = mock.Mock(spec=['image']) conn.image.find_image.return_value = mock.Mock(id=42, kernel_id=1, ramdisk_id=2) source._validate(conn, 9) self.assertEqual({ 'image_source': 42, 'kernel': 1, 'ramdisk': 2 }, source._node_updates(conn))
def test_http_partition_disk(self): source = sources.detect('http:///image', checksum='abcd', kernel='http:///kernel', ramdisk='http:///ramdisk') self.assertIs(source.__class__, sources.HttpPartitionImage) self.assertEqual(source.url, 'http:///image') self.assertEqual(source.checksum, 'abcd') self.assertEqual(source.kernel_url, 'http:///kernel') self.assertEqual(source.ramdisk_url, 'http:///ramdisk') source._validate(mock.Mock(), 9) self.assertEqual( { 'image_checksum': 'abcd', 'image_source': 'http:///image', 'kernel': 'http:///kernel', 'ramdisk': 'http:///ramdisk' }, source._node_updates(None))
def _do_deploy(api, args, formatter): wait = None if args.no_wait else args.wait capabilities = dict(item.split('=', 1) for item in args.capability) if args.ssh_public_key: with open(args.ssh_public_key) as fp: ssh_keys = [fp.read().strip()] else: ssh_keys = [] if args.hostname and not _utils.is_hostname_safe(args.hostname): raise RuntimeError("%s cannot be used as a hostname" % args.hostname) source = sources.detect(args.image, kernel=args.image_kernel, ramdisk=args.image_ramdisk, checksum=args.image_checksum) if args.user_name: config = instance_config.CloudInitConfig(ssh_keys=ssh_keys) config.add_user(args.user_name, sudo=args.passwordless_sudo) else: config = instance_config.GenericConfig(ssh_keys=ssh_keys) node = api.reserve_node(resource_class=args.resource_class, conductor_group=args.conductor_group, capabilities=capabilities, traits=args.trait, candidates=args.candidate, hostname=args.hostname) instance = api.provision_node(node, image=source, nics=args.nics, root_size_gb=args.root_size, swap_size_mb=args.swap_size, config=config, netboot=args.netboot, wait=wait, clean_up_on_failure=not args.no_clean_up) formatter.deploy(instance)
def _get_source(instance): return sources.detect(image=instance.get('image'), kernel=instance.get('image_kernel'), ramdisk=instance.get('image_ramdisk'), checksum=instance.get('image_checksum'))
def test_https_whole_disk_checksum(self): source = sources.detect('https:///image', checksum='https://checksum') self.assertIs(source.__class__, sources.HttpWholeDiskImage) self.assertEqual(source.url, 'https:///image') self.assertEqual(source.checksum_url, 'https://checksum')
def _get_source(instance): image = instance.get('image') return sources.detect(image=image.get('href'), kernel=image.get('kernel'), ramdisk=image.get('ramdisk'), checksum=image.get('checksum'))