虚拟机秘钥疑惑

        openstack中创建虚拟机时使用秘钥,然后删除秘钥,重启,出错!!

        查看日志,如下:

  File "/usr/lib/python2.7/site-packages/nova/virt/configdrive.py", line 69, in __init__
    self.add_instance_metadata(instance_md)
  File "/usr/lib/python2.7/site-packages/nova/virt/configdrive.py", line 90, in add_instance_metadata
    for (path, data) in instance_md.metadata_for_config_drive():
  File "/usr/lib/python2.7/site-packages/nova/api/metadata/base.py", line 450, in metadata_for_config_drive
    yield (path, self.lookup(path))
  File "/usr/lib/python2.7/site-packages/nova/api/metadata/base.py", line 418, in lookup
    data = self.get_openstack_item(path_tokens[1:])
  File "/usr/lib/python2.7/site-packages/nova/api/metadata/base.py", line 297, in get_openstack_item
    return self._route_configuration().handle_path(path_tokens)
  File "/usr/lib/python2.7/site-packages/nova/api/metadata/base.py", line 491, in handle_path
    return path_handler(version, path)
  File "/usr/lib/python2.7/site-packages/nova/api/metadata/base.py", line 316, in _metadata_as_json
    #    self.instance.key_name)
  File "/usr/lib/python2.7/site-packages/nova/objects/base.py", line 161, in wrapper
    args, kwargs)
  File "/usr/lib/python2.7/site-packages/nova/conductor/rpcapi.py", line 335, in object_class_action
    objver=objver, args=args, kwargs=kwargs)
  File "/usr/lib/python2.7/site-packages/oslo_messaging/rpc/client.py", line 156, in call
    retry=self.retry)
  File "/usr/lib/python2.7/site-packages/oslo_messaging/transport.py", line 90, in _send
    timeout=timeout, retry=retry)
  File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 350, in send
    retry=retry)
  File "/usr/lib/python2.7/site-packages/oslo_messaging/_drivers/amqpdriver.py", line 341, in _send
    raise result

KeypairNotFound_Remote: Keypair xxx not found for user f5817c8499eb4252b2a1ca8a2c2c4e66

        秘钥已经删除了,还要去查找这个keypair,表示不解,跟踪代码,有如下一段:

def _metadata_as_json(self, version, path):
    metadata = {'uuid': self.uuid}
    ......
    if self.instance.key_name:
        metadata['public_keys'] = {
            self.instance.key_name: self.instance.key_data
        }

        keypair = keypair_obj.KeyPair.get_by_name(
            context.get_admin_context(), self.instance.user_id,
            self.instance.key_name)
        metadata['keys'] = [
            {'name': keypair.name,
             'type': keypair.type,
             'data': keypair.public_key}
        ]
          查看数据库中instance的数据,对应的虚拟机key_name与key_data字段分别对应秘钥的key跟value。以上代码中去了两次key,第一次从数据库instance表中取到key,第二次从key_pairs表中取得key,第二次取出出错。

        感觉这两处有冲突的地方。再研究下设计看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值