Merge "Fix sync function so that it doesn't remove nodes/envs wrong"
This commit is contained in:
commit
505e324c7c
|
@ -260,7 +260,9 @@ class DevopsDriver(object):
|
|||
|
||||
@retry()
|
||||
def node_list(self):
|
||||
return self.conn.listDefinedDomains()
|
||||
# virConnect.listDefinedDomains() only returns stopped domains
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=839259
|
||||
return [item.name() for item in self.conn.listAllDomains()]
|
||||
|
||||
@retry()
|
||||
def node_reset(self, node):
|
||||
|
|
|
@ -116,9 +116,9 @@ class Environment(DriverModel):
|
|||
volume.erase()
|
||||
self.delete()
|
||||
|
||||
@staticmethod
|
||||
def erase_empty():
|
||||
for env in Environment.objects.all():
|
||||
@classmethod
|
||||
def erase_empty(cls):
|
||||
for env in cls.objects.all():
|
||||
if len(env.nodes) == 0:
|
||||
env.delete()
|
||||
|
||||
|
@ -141,25 +141,33 @@ class Environment(DriverModel):
|
|||
for node in self.nodes:
|
||||
node.revert(name, destroy=False)
|
||||
|
||||
def synchronize_all(self):
|
||||
nodes = {self.get_driver()._get_name(e.name, n.name): n
|
||||
for e in Environment.objects.all()
|
||||
@classmethod
|
||||
def synchronize_all(cls):
|
||||
driver = cls.get_driver()
|
||||
nodes = {driver._get_name(e.name, n.name): n
|
||||
for e in cls.objects.all()
|
||||
for n in e.nodes}
|
||||
domains = set(self.driver.node_list())
|
||||
domains = set(driver.node_list())
|
||||
|
||||
# FIXME (AWoodward) This willy nilly wacks domains when you run this
|
||||
# on domains that are outside the scope of devops, if anything this
|
||||
# should cause domains to be imported into db instead of undefined.
|
||||
# It also leaves network and volumes around too
|
||||
# Disabled untill a safer implmentation arrives
|
||||
|
||||
# Undefine domains without devops nodes
|
||||
domains_to_undefine = domains - set(nodes.keys())
|
||||
for d in domains_to_undefine:
|
||||
self.driver.node_undefine_by_name(d)
|
||||
#domains_to_undefine = domains - set(nodes.keys())
|
||||
#for d in domains_to_undefine:
|
||||
# driver.node_undefine_by_name(d)
|
||||
|
||||
# Remove devops nodes without domains
|
||||
nodes_to_remove = set(nodes.keys()) - domains
|
||||
for n in nodes_to_remove:
|
||||
nodes[n].delete()
|
||||
Environment.erase_empty()
|
||||
cls.erase_empty()
|
||||
|
||||
logger.info('Undefined domains: %s, removed nodes: %s',
|
||||
(len(domains_to_undefine), len(nodes_to_remove)))
|
||||
(0, len(nodes_to_remove)))
|
||||
|
||||
|
||||
class ExternalModel(DriverModel):
|
||||
|
|
Loading…
Reference in New Issue