Hello,

Thanks a lot for the hint.

On Tue, Oct 8, 2024 at 3:21 PM Takashi Kajinami <kajinamit@oss.nttdata.com> wrote:
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',
>          }
> )