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 """Logical units for queries."""
32
33 from ganeti import constants
34 from ganeti import errors
35 from ganeti import query
36 from ganeti.cmdlib.backup import ExportQuery
37 from ganeti.cmdlib.base import NoHooksLU
38 from ganeti.cmdlib.cluster import ClusterQuery
39 from ganeti.cmdlib.group import GroupQuery
40 from ganeti.cmdlib.instance_query import InstanceQuery
41 from ganeti.cmdlib.misc import ExtStorageQuery
42 from ganeti.cmdlib.network import NetworkQuery
43 from ganeti.cmdlib.node import NodeQuery
44 from ganeti.cmdlib.operating_system import OsQuery
45
46
47
48 _QUERY_IMPL = {
49 constants.QR_CLUSTER: ClusterQuery,
50 constants.QR_INSTANCE: InstanceQuery,
51 constants.QR_NODE: NodeQuery,
52 constants.QR_GROUP: GroupQuery,
53 constants.QR_NETWORK: NetworkQuery,
54 constants.QR_OS: OsQuery,
55 constants.QR_EXTSTORAGE: ExtStorageQuery,
56 constants.QR_EXPORT: ExportQuery,
57 }
58
59 assert set(_QUERY_IMPL.keys()) == constants.QR_VIA_OP
60
61
63 """Returns the implemtnation for a query type.
64
65 @param name: Query type, must be one of L{constants.QR_VIA_OP}
66
67 """
68 try:
69 return _QUERY_IMPL[name]
70 except KeyError:
71 raise errors.OpPrereqError("Unknown query resource '%s'" % name,
72 errors.ECODE_INVAL)
73
74
76 """Query for resources/items of a certain kind.
77
78 """
79
80 REQ_BGL = False
81
83 qcls = _GetQueryImplementation(self.op.what)
84
85 self.impl = qcls(self.op.qfilter, self.op.fields, self.op.use_locking)
86
89
92
93 - def Exec(self, feedback_fn):
95
96
98 """Query for resources/items of a certain kind.
99
100 """
101
102 REQ_BGL = False
103
106
108 self.needed_locks = {}
109
110 - def Exec(self, feedback_fn):
112