改进密钥对通知¶
https://blueprints.launchpad.net/nova/+spec/keypair-notification
目前,密钥对状态改变时不会发送有用的通知。Nova 在创建/删除密钥对时仅通知 key_name。因此,用户无法使用外部系统(例如 searchlight)搜索密钥对信息(例如 ssh 公钥)。
问题描述¶
用例¶
外部系统希望索引密钥对,以便更快、更有效地查询大量密钥对。一些用户和系统希望搜索和检索 ssh 公钥和指纹,以便通过 ssh 穿透与外部系统协作。
提议的变更¶
此规范将遗留通知转换为关于以下密钥对事件的版本化通知,同时扩展通知内容,添加额外数据以支持上述用例。
keypair.create.start
keypair.create.end
keypair.delete.start
keypair.delete.end
keypair.import.start
keypair.import.end
备选方案¶
无
数据模型影响¶
不需要数据库模式更改。
以下新对象将被添加到密钥对中
@base.NovaObjectRegistry.register
class KeypairNotification(notification.NotificationBase):
# Version 1.0: Initial version
VERSION = '1.0'
fields = {
'payload': fields.ObjectField('KeypairPayload')
}
@base.NovaObjectRegistry.register
class KeypairPayload(notification.NotificationPayloadBase):
# Version 1.0: Initial version
SCHEMA = {
'name': ('keypair', 'name'),
'type': ('keypair', 'type'),
'fingerprint': ('keypair', 'fingerprint'),
'public_key': ('keypair', 'public_key'),
'user_id': ('keypair', 'user_id')
}
VERSION = '1.0'
fields = {
'name': fields.StringField(),
'type': fields.KeypairTypeField(),
'fingerprint': fields.StringField(),
'public_key': fields.StringField(),
'user_id': fields.StringField(),
}
def __init__(self, keypair):
super(KeypairPayload, self).__init__()
self.populate_schema(keypair=keypair)
class KeypairType(Enum):
"""Represents possible type values for a Keypair."""
SSH = 'ssh'
X509 = 'x509'
ALL = (SSH, X509)
def __init__(self):
super(KeypairType, self).__init__(
valid_values=KeypairType.ALL)
class KeypairTypeField(BaseEnumField):
AUTO_TYPE = KeypairType()
NotificationBase 的定义可以在 [1] 找到。
REST API 影响¶
无
安全影响¶
无
通知影响¶
密钥对的通知将更改如下
‘之前’:
{ "key_name": "key1" }
‘之后’:
{ "priority": "INFO", "payload": { "nova_object.namespace": "nova", "nova_object.name": "KeypairPayload", "nova_object.version": "1.0", "nova_object.data": { "id": 1, "name": "key1", "type": "ssh", "fingerprint": "6d:a1:2c:a3:.....", "public_key": "Public key: ssh-rsa AAAAB3Nza......", "user_id": "5ed98568284443b09b82f2a519a3f1d5", "created_at": "2016-04-04T04:18:30.000000", "deleted_at": None } }, "event_type": "keypair.create.end", "publisher_id": "nova-compute:host1" }
其他最终用户影响¶
无
性能影响¶
无
其他部署者影响¶
无
开发人员影响¶
无
实现¶
负责人¶
- 主要负责人
h-eguchi
工作项¶
添加具有版本化负载的新密钥对通知。
我们将并行提供两种通知一段时间。一旦版本化通知达到功能对等,我们将删除遗留通知。
依赖项¶
无
测试¶
除了单元测试,还将添加新的功能测试用例来覆盖改进的通知。并且需要添加通知样本和相关的测试。
文档影响¶
无
参考资料¶
[1]: 版本化通知:https://docs.openstack.org/developer/nova/notifications.html#versioned-notifications
历史¶
发布名称 |
描述 |
|---|---|
Newton |
引入 |