简单分析如何使用aggregate_instance_extra_spec filter

本文详细介绍了在Nova中如何使用aggregate_instance_extra_spec filter进行虚拟机主机匹配,包括如何设置主机元数据、flavor的extra spec,以及如何利用不同操作符进行条件匹配,如's!='、'<or>'等,以实现特定场景的需求,如避免在特定主机上创建虚拟机。
摘要由CSDN通过智能技术生成
在 Nova 中,aggregate_instance_extra_spec filter的一般的使用方法都是在host的metadata中写好需要用的键值对,并且也在flavor中写好相应的键值对。再使用aggregate_instance_extra_spec filter  进行匹配,当这两个值匹配时,就认为是合适的主机。但其实还有这样一种需求,我们可能会要求在创建虚拟机时让其不创建在某些主机上。其实aggregate_instance_extra_spec filter 已经提供了这种功能。在进行匹配的过程中,会调用extra_spec_ops的match方法:

for aggregate_val in aggregate_vals:
if extra_specs_ops.match(aggregate_val, req):
break
在extra_spec_ops中,预先定义好了一系列可使用的操作符:

op_methods = {
  '=': lambda x, y: float(x) >= float(y),
'<in>': lambda x, y: y in x,
'<all-in>': lambda x, y: all(val in x for val in y),
'==': lambda x, y: float(x) == float(y),
'!=': lambda x, y: float(x) != float(y),
'>=': lambda x, y: float(x) >= float(y),
'<=': lambda x, y: float(x) <= float(y),
's==': operator.eq,
's!=': operator.ne,
's<': operator.lt,
's<=': operator.le,
's>': operator.gt,
's>=': operator.ge}
以及 '<or>' 操作符

这些操作符的使用方式是这样的:
除 '<or>' 之外, 在flavor 中定义extra spec时这样定义: 'key': '操作符' '字段',
如定义不选择在aggragate1上创建 'key1':  's!=' 'aggragate1'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值