我安装了openstack。所有服务都成功运行。
[root@test ~]# nova-manage service list
Binary Host Zone Status State Updated_At
nova-cert localhost.localdomain nova enabled :-) 2012-11-06 04:25:36.396817
nova-scheduler localhost.localdomain nova enabled :-) 2012-11-06 04:25:41.735192
nova-network compute nova enabled :-) 2012-11-06 04:25:42.109157
nova-compute compute nova enabled :-) 2012-11-06 04:25:43.240902
之后,我将HOSTNAME
中的/etc/sysconfig/network
更改为myhost.mydomain
。然后重启服务。
现在我得到了服务的重复条目。
[root@test ~]# nova-manage service list
Binary Host Zone Status State Updated_At
nova-cert localhost.localdomain nova enabled XXX 2012-11-06 04:25:36.396817
nova-cert myhost.mydomain nova enabled :-) 2012-11-06 05:25:36.396817
nova-scheduler localhost.localdomain nova enabled XXX 2012-11-06 04:25:41.735192
nova-scheduler myhost.mydomain nova enabled :-) 2012-11-06 05:25:41.735192
nova-network compute nova enabled :-) 2012-11-06 04:25:42.109157
nova-compute compute nova enabled :-) 2012-11-06 04:25:43.240902
从这些服务中,旧服务没有运行。
我想删除主机localhost.localdomain
的服务。
我检查nova-manage service --help
,但没有删除选项:(。
[root@test ~]# nova-manage service --help
--help does not match any options:
describe_resource
disable
enable
list
答案 0 :(得分:1)
看看上面的示例,我怀疑你看到了重复,因为你有两个主机设置相同的主机。如果是这种情况,以下代码/答案可能不会帮助您太多。在整个设置中有一个隐含的假设,即nova工作进程运行的节点的主机名将是唯一的。
在最新的分支中,没有为此明确启用的命令,但API存在于下面以执行您所需的操作。这是一段代码(未经测试!)应该做你想做的事情;或者至少如果您有兴趣,请至少指向相关的API。
from nova import context
from nova import db
hostname = 'some_hostname'
service_name = 'nova_service_you_want_to_destroy'
ctxt = context.get_admin_context()
service = db.service_get_by_args(ctxt, hostname, service_name)
#... pick one of these services ...
#... assign it to 'service'
db.service_destroy(ctxt, service[id])
注意:这将从数据库中删除服务,或者如果不存在(或出现其他问题)则引发异常。如果服务正在运行,则期望它将再次“显示”,因为服务列表由报告的各种nova工作人员代理进程填充。