except IndexError:
	dest_client = Client(dest[0], 9292)

new_image_ids = {}

for image in args.images:
	meta, image_file = source_client.get_image(image)	
	f = open(TEMP_IMAGE_PATH, 'wb')
	for chunk in image_file:
		f.write(chunk)
	f.close()

	f = open(TEMP_IMAGE_PATH, 'rb')
	old_id = str(meta['id'])
	del meta['id']
	del meta['location']
	try:
		meta['properties']['kernel_id'] = new_image_ids[meta['properties']['kernel_id']]
	except KeyError:
		None
	try:
		meta['properties']['ramdisk_id'] = new_image_ids[meta['properties']['ramdisk_id']]
	except KeyError:
		None

	new_meta = dest_client.add_image(meta, f)
	new_image_ids[old_id] = str(new_meta['id'])
	print("Image transferred.  Got id: %s" % new_meta['id'])
	f.close()
	remove(TEMP_IMAGE_PATH)
Esempio n. 2
0
# Sort keys to that kernel/ramdisk images are transferred first, makes recreating
# associations easier later on
mapping = {'aki': 0, 'ari': 0, 'ami': 1}
sorted_ids = images.keys()
sorted_ids.sort(
    key=lambda image_id: mapping[images[image_id]['container_format']])

new_ids = {}

for image_id in sorted_ids:
    meta = images[image_id]
    del meta['id']
    del meta['location']
    try:
        meta['properties']['kernel_id'] = new_ids[meta['properties']
                                                  ['kernel_id']]
    except KeyError:
        pass
    try:
        meta['properties']['ramdisk_id'] = new_ids[meta['properties']
                                                   ['ramdisk_id']]
    except KeyError:
        pass

    new_meta = dest_client.add_image(meta, open(GLANCE_PATH + str(image_id)))
    print("Image %d transferred, new ID is %d" % (image_id, new_meta['id']))

    # Track new kernel/ramdisk IDs to recreate associations
    if meta['container_format'] in ['aki', 'ari']:
        new_ids[str(image_id)] = str(new_meta['id'])
Esempio n. 3
0
for image_id in args.images:
	images[image_id] = source_client.get_image_meta(image_id)

# Sort keys to that kernel/ramdisk images are transferred first, makes recreating
# associations easier later on
mapping = { 'aki': 0, 'ari': 0, 'ami': 1 }
sorted_ids = images.keys()
sorted_ids.sort(key=lambda image_id: mapping[images[image_id]['container_format']])

new_ids = {}

for image_id in sorted_ids:
	meta = images[image_id]
	del meta['id']
	del meta['location']
	try:
		meta['properties']['kernel_id'] = new_ids[meta['properties']['kernel_id']]
	except KeyError:
		pass
	try:
		meta['properties']['ramdisk_id'] = new_ids[meta['properties']['ramdisk_id']]
	except KeyError:
		pass	
	
	new_meta = dest_client.add_image(meta, open(GLANCE_PATH+str(image_id)))
	print("Image %d transferred, new ID is %d" % (image_id, new_meta['id']))

	# Track new kernel/ramdisk IDs to recreate associations
	if meta['container_format'] in ['aki', 'ari']:
		new_ids[str(image_id)] = str(new_meta['id'])