1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#
# Copyright (C) 2013 Red Hat, Inc.
#
# This work is licensed under the GNU GPLv2 or later.
# See the COPYING file in the top-level directory.
#
from .logger import log
def _new_poll_helper(origmap, typename, list_cb, build_cb, support_cb):
"""
Helper for new style listAll* APIs
"""
current = {}
new = {}
objs = []
try:
if support_cb():
objs = list_cb()
except Exception as e:
log.debug("Unable to list all %ss: %s", typename, e)
for obj in objs:
connkey = obj.name()
if connkey not in origmap:
# Object is brand new this period
current[connkey] = build_cb(obj, connkey)
new[connkey] = current[connkey]
else:
# Previously known object
current[connkey] = origmap[connkey]
del(origmap[connkey])
return (list(origmap.values()), list(new.values()), list(current.values()))
def fetch_nets(backend, origmap, build_cb):
name = "network"
list_cb = backend.listAllNetworks
support_cb = backend.support.conn_network
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
def fetch_pools(backend, origmap, build_cb):
name = "pool"
list_cb = backend.listAllStoragePools
support_cb = backend.support.conn_storage
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
def fetch_volumes(backend, pool, origmap, build_cb):
name = "volume"
list_cb = pool.listAllVolumes
support_cb = backend.support.conn_storage
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
def fetch_interfaces(backend, origmap, build_cb):
name = "interface"
list_cb = backend.listAllInterfaces
support_cb = backend.support.conn_interface
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
def fetch_nodedevs(backend, origmap, build_cb):
name = "nodedev"
list_cb = backend.listAllDevices
support_cb = backend.support.conn_nodedev
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
def fetch_vms(backend, origmap, build_cb):
name = "domain"
list_cb = backend.listAllDomains
support_cb = backend.support.conn_domain
return _new_poll_helper(origmap, name, list_cb, build_cb, support_cb)
|