2

我安装了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/networkmyhost.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

从这些服务中,旧服务没有运行。

我想删除 host 的服务localhost.localdomain

我检查了nova-manage service --help但没有删除选项:(。

[root@test ~]# nova-manage service --help
--help does not match any options:
        describe_resource
        disable
        enable
        list
4

1 回答 1

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 工作代理进程报告。

于 2012-11-10T22:53:27.487 回答