我如何从OpenStack中的图像IDfind图像名称?

例如ami-00000073被用作图像ID。 如何find与之相关的图像名称?

你的问题有点不清楚。 OpenStack中的每个镜像都有:

  • 整数ID(用作数据库键,但通常不可见),
  • 一个36个字符的UUID,如95e52709-0990-4f52-b192-2ba2c0fa6f7f
  • 一个显示名称

既然你的例子既不是一个整数,也不是一个UUID,它必须显示名称。 如果你可以提供更多的信息(例如,“当我运行这个命令时,我看到了这个输出;我怎么把这个输出转换成我需要的其他信息”,同时显示你input的命令的输出),我们可以提供一个更好的答案。

通常,您可以使用nova image-*命令与图像进行交互,也可以使用glance命令。 使用nova查看可用图像的列表:

 nova image-list 

或者使用glance

 glance index 

你可以使用nova image-show或者glance show来获得关于特定图像的详细信息,这会给你类似这样的东西:

 $ glance show f66ea2c4-21f2-4a5e-ad8f-9af6d5f8b9d1 URI: http://10.1.1.61:9292/v1/images/f66ea2c4-21f2-4a5e-ad8f-9af6d5f8b9d1 Id: f66ea2c4-21f2-4a5e-ad8f-9af6d5f8b9d1 Public: Yes Protected: No Name: CentOS 6 x86_64 Status: active Size: 1073741824 Disk format: raw Container format: bare Minimum Ram Required (MB): 0 Minimum Disk Required (GB): 0 Owner: a1af2e48a97549b787959618998a52f7 

你所说的是AMI ID,它与Glance image ID是分开的,它是新版OpenStack中的标准格式的UUID。

提供AMI ID是为了与使用EC2兼容层时的cloud-init或其他工具兼容。 通过查询http://169.154.169.154/latest/meta-data/ami-id或从configuration驱动器的metadata.json提取ami-id属性,从实例内部访问它。

nova.api.ec2.ec2utils提供了一个名为image_ec2_id的方法:

 def image_ec2_id(image_id, image_type='ami'): """Returns image ec2_id using id and three letter type.""" template = image_type + '-%08x' try: return id_to_ec2_id(image_id, template=template) except ValueError: #TODO(wwolf): once we have ec2_id -> glance_id mapping # in place, this wont be necessary return "ami-00000000" 

因此,AMI ID只是Glance图像的数字S3图像ID(不是UUID)的hex编码版本。 据我所知,这个值不是通过任何命令行工具或服务器API公开的,需要直接通过数据库查询。 这些数字映射存储在nova.s3_images

 mysql> SELECT s3_images.id, s3_images.uuid, images.name FROM nova.s3_images INNER JOIN glance.images ON s3_images.uuid = images.id WHERE images.id = 'd12a9b68-0194-4a88-b5dd-2de711dec05e'; +----+--------------------------------------+-------------------------+ | id | uuid | name | +----+--------------------------------------+-------------------------+ | 73 | d12a9b68-0194-4a88-b5dd-2de711dec05e | coreos-stable-v20150728 | +----+--------------------------------------+-------------------------+ 1 row in set (0.00 sec)