The problem with you code is that it hits glance api to create these images but
it should use nova api instead. I think the correct interface is server.create_image
so the code may look like
servers = openstack_connection.compute.servers(details=True, hostname='my_server'):
openstack_connection.compute.create_server_image(servers[0], image_name, metadata)
IIRC the image may inherit the properties of the source image you initially used to
launch these instances, so you may need to call openstack_connection.image.update_image
to add the properties you want to add.
# by the way "servers = servers[0]" and "images = images[0]" look quite confusing
# because you use plural for both and I may suggest "serer = servers[0]".
On 10/8/24 17:29, Saeed Fazlollahzadeh wrote:
> Hello, this is my full code to create a snapshot from an instance.
>
> The code creates a new image with type snapshot, but after around 2 hours, its status is still in queue.
> But when I create another snapshot via the Openstack UI, it works fine.
>
> Would you please help me how can I create a snapshot?
>
> import openstack
> import datetime
>
> now = datetime.datetime.now()
> today = now.strftime('%Y_%m_%d_%H_%M_%S')
> openstack.enable_logging(debug=False)
> servers = []
> images = []
> openstack_connection = openstack.connect(cloud='region1') # clouds.yaml
> for server in openstack_connection.compute.servers(details=True, hostname='my_server'):
> servers.append(server.to_dict())
>
> servers = servers[0]
> for image in openstack_connection.compute.images(details=True, id=servers['image']['id']):
> images.append(image.to_dict())
>
> images = images[0]
> name = f'my_server_{today}'
> openstack_connection.image.create_image(
> name=name,
> disk_format='raw',
> container_format='bare',
> visibility='private',
> timeout=1,
> properties={
> 'hw_disk_bus': 'scsi',
> 'hw_qemu_guest_agent': 'yes',
> 'hw_scsi_model': 'virtio-scsi',
> 'hw_watchdog_action': 'reset',
> 'base_image_ref': servers['image']['id'],
> 'owner_user_name': 'whmcs',
> 'owner_project_name': 'admin',
> 'boot_roles': 'admin,reader,member',
> 'os_admin_user': 'administrator',
> 'os_distro': 'windows',
> 'os_type': 'windows',
> 'owner_specified.openstack.object': images['metadata']['owner_specified.openstack.object'],
> 'clean_attempts': '1',
> 'hw_machine_type': 'pc',
> 'password_0': '',
> 'password_1': '',
> 'password_2': '',
> 'password_3': '',
> 'hw_cdrom_bus': 'ide',
> 'hw_input_bus': 'usb',
> 'hw_pointer_model': 'usbtablet',
> 'hw_video_model': 'virtio',
> 'hw_vif_model': 'virtio',
> 'instance_uuid': servers['id'],
> 'image_type': 'snapshot',
> }
> )