1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """Module implementing the parameter types code."""
23
24 from ganeti import compat
25
26
27
28
30 """Returns an empty list.
31
32 """
33 return []
34
35
37 """Returns an empty dict.
38
39 """
40 return {}
41
42
43
44 NoDefault = object()
45
46
47
48 NoType = object()
49
50
51
53 """Checks if the given value is not None.
54
55 """
56 return val is not None
57
58
60 """Checks if the given value is None.
61
62 """
63 return val is None
64
65
67 """Checks if the given value is a boolean.
68
69 """
70 return isinstance(val, bool)
71
72
74 """Checks if the given value is an integer.
75
76 """
77
78
79
80
81
82 return isinstance(val, int) and not isinstance(val, bool)
83
84
86 """Checks if the given value is a float.
87
88 """
89 return isinstance(val, float)
90
91
93 """Checks if the given value is a string.
94
95 """
96 return isinstance(val, basestring)
97
98
100 """Checks if a given value evaluates to a boolean True value.
101
102 """
103 return bool(val)
104
105
107 """Builds a function that checks if a given value is a member of a list.
108
109 """
110 return lambda val: val in target_list
111
112
113
115 """Checks if the given value is a list.
116
117 """
118 return isinstance(val, list)
119
120
122 """Checks if the given value is a dictionary.
123
124 """
125 return isinstance(val, dict)
126
127
129 """Check is the given container is of the given size.
130
131 """
132 return lambda container: len(container) == size
133
134
135
137 """Combine multiple functions using an AND operation.
138
139 """
140 def fn(val):
141 return compat.all(t(val) for t in args)
142 return fn
143
144
146 """Combine multiple functions using an AND operation.
147
148 """
149 def fn(val):
150 return compat.any(t(val) for t in args)
151 return fn
152
153
155 """Checks that a modified version of the argument passes the given test.
156
157 """
158 return lambda val: test(fn(val))
159
160
161
162
163
164 TNonEmptyString = TAnd(TString, TTrue)
165
166
167 TMaybeString = TOr(TNonEmptyString, TNone)
168
169
170 TMaybeBool = TOr(TBool, TNone)
171
172
173 TMaybeDict = TOr(TDict, TNone)
174
175
176 TPositiveInt = TAnd(TInt, lambda v: v >= 0)
177
178
179 TStrictPositiveInt = TAnd(TInt, lambda v: v > 0)
180
181
182 TNumber = TOr(TInt, TFloat)
183
184
186 """Checks if a given value is a list with all elements of the same type.
187
188 """
189 return TAnd(TList,
190 lambda lst: compat.all(my_type(v) for v in lst))
191
192
194 """Checks a dict type for the type of its key/values.
195
196 """
197 return TAnd(TDict,
198 lambda my_dict: (compat.all(key_type(v) for v in my_dict.keys())
199 and compat.all(val_type(v)
200 for v in my_dict.values())))
201