Как удалить дублирующийся сервис с помощью команды nova-manage?

Я установил опенстек. Все службы успешно работают.

[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

person Nilesh    schedule 06.11.2012    source источник


Ответы (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, которые сообщают о них.

person heckj    schedule 10.11.2012