31 |
31 |
from ganeti.rapi import baserlib
|
32 |
32 |
from ganeti.rapi import rlib2
|
33 |
33 |
|
|
34 |
|
|
35 |
_NAME_PATTERN = r"[\w\._-]+"
|
|
36 |
|
34 |
37 |
# the connection map is created at the end of this file
|
35 |
38 |
CONNECTOR = {}
|
36 |
39 |
|
... | ... | |
144 |
147 |
return baserlib.BuildUriList(_getResources("2"), "/2/%s")
|
145 |
148 |
|
146 |
149 |
|
147 |
|
CONNECTOR.update({
|
148 |
|
"/": R_root,
|
|
150 |
def GetHandlers(node_name_pattern, instance_name_pattern, job_id_pattern):
|
|
151 |
"""Returns all supported resources and their handlers.
|
|
152 |
|
|
153 |
"""
|
|
154 |
return {
|
|
155 |
"/": R_root,
|
|
156 |
|
|
157 |
"/version": rlib2.R_version,
|
149 |
158 |
|
150 |
|
"/version": rlib2.R_version,
|
|
159 |
"/2": R_2,
|
151 |
160 |
|
152 |
|
"/2": R_2,
|
153 |
|
"/2/jobs": rlib2.R_2_jobs,
|
154 |
|
"/2/nodes": rlib2.R_2_nodes,
|
155 |
|
re.compile(r'^/2/nodes/([\w\._-]+)$'): rlib2.R_2_nodes_name,
|
156 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/tags$'): rlib2.R_2_nodes_name_tags,
|
157 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/role$'): rlib2.R_2_nodes_name_role,
|
158 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/evacuate$'):
|
|
161 |
"/2/nodes": rlib2.R_2_nodes,
|
|
162 |
re.compile(r'^/2/nodes/(%s)$' % node_name_pattern):
|
|
163 |
rlib2.R_2_nodes_name,
|
|
164 |
re.compile(r'^/2/nodes/(%s)/tags$' % node_name_pattern):
|
|
165 |
rlib2.R_2_nodes_name_tags,
|
|
166 |
re.compile(r'^/2/nodes/(%s)/role$' % node_name_pattern):
|
|
167 |
rlib2.R_2_nodes_name_role,
|
|
168 |
re.compile(r'^/2/nodes/(%s)/evacuate$' % node_name_pattern):
|
159 |
169 |
rlib2.R_2_nodes_name_evacuate,
|
160 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/migrate$'):
|
|
170 |
re.compile(r'^/2/nodes/(%s)/migrate$' % node_name_pattern):
|
161 |
171 |
rlib2.R_2_nodes_name_migrate,
|
162 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/storage$'):
|
|
172 |
re.compile(r'^/2/nodes/(%s)/storage$' % node_name_pattern):
|
163 |
173 |
rlib2.R_2_nodes_name_storage,
|
164 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/storage/modify$'):
|
|
174 |
re.compile(r'^/2/nodes/(%s)/storage/modify$' % node_name_pattern):
|
165 |
175 |
rlib2.R_2_nodes_name_storage_modify,
|
166 |
|
re.compile(r'^/2/nodes/([\w\._-]+)/storage/repair$'):
|
|
176 |
re.compile(r'^/2/nodes/(%s)/storage/repair$' % node_name_pattern):
|
167 |
177 |
rlib2.R_2_nodes_name_storage_repair,
|
168 |
|
"/2/instances": rlib2.R_2_instances,
|
169 |
|
re.compile(r'^/2/instances/([\w\._-]+)$'): rlib2.R_2_instances_name,
|
170 |
|
re.compile(r'^/2/instances/([\w\._-]+)/info$'):
|
|
178 |
|
|
179 |
"/2/instances": rlib2.R_2_instances,
|
|
180 |
re.compile(r'^/2/instances/(%s)$' % instance_name_pattern):
|
|
181 |
rlib2.R_2_instances_name,
|
|
182 |
re.compile(r'^/2/instances/(%s)/info$' % instance_name_pattern):
|
171 |
183 |
rlib2.R_2_instances_name_info,
|
172 |
|
re.compile(r'^/2/instances/([\w\._-]+)/tags$'): rlib2.R_2_instances_name_tags,
|
173 |
|
re.compile(r'^/2/instances/([\w\._-]+)/reboot$'):
|
|
184 |
re.compile(r'^/2/instances/(%s)/tags$' % instance_name_pattern):
|
|
185 |
rlib2.R_2_instances_name_tags,
|
|
186 |
re.compile(r'^/2/instances/(%s)/reboot$' % instance_name_pattern):
|
174 |
187 |
rlib2.R_2_instances_name_reboot,
|
175 |
|
re.compile(r'^/2/instances/([\w\._-]+)/reinstall$'):
|
|
188 |
re.compile(r'^/2/instances/(%s)/reinstall$' % instance_name_pattern):
|
176 |
189 |
rlib2.R_2_instances_name_reinstall,
|
177 |
|
re.compile(r'^/2/instances/([\w\._-]+)/replace-disks$'):
|
|
190 |
re.compile(r'^/2/instances/(%s)/replace-disks$' % instance_name_pattern):
|
178 |
191 |
rlib2.R_2_instances_name_replace_disks,
|
179 |
|
re.compile(r'^/2/instances/([\w\._-]+)/shutdown$'):
|
|
192 |
re.compile(r'^/2/instances/(%s)/shutdown$' % instance_name_pattern):
|
180 |
193 |
rlib2.R_2_instances_name_shutdown,
|
181 |
|
re.compile(r'^/2/instances/([\w\._-]+)/startup$'):
|
|
194 |
re.compile(r'^/2/instances/(%s)/startup$' % instance_name_pattern):
|
182 |
195 |
rlib2.R_2_instances_name_startup,
|
183 |
|
re.compile(r'/2/jobs/(%s)$' % constants.JOB_ID_TEMPLATE): rlib2.R_2_jobs_id,
|
184 |
|
"/2/tags": rlib2.R_2_tags,
|
185 |
|
"/2/info": rlib2.R_2_info,
|
186 |
|
"/2/os": rlib2.R_2_os,
|
187 |
|
})
|
|
196 |
|
|
197 |
"/2/jobs": rlib2.R_2_jobs,
|
|
198 |
re.compile(r'/2/jobs/(%s)$' % job_id_pattern):
|
|
199 |
rlib2.R_2_jobs_id,
|
|
200 |
|
|
201 |
"/2/tags": rlib2.R_2_tags,
|
|
202 |
"/2/info": rlib2.R_2_info,
|
|
203 |
"/2/os": rlib2.R_2_os,
|
|
204 |
}
|
|
205 |
|
|
206 |
|
|
207 |
CONNECTOR.update(GetHandlers(_NAME_PATTERN, _NAME_PATTERN,
|
|
208 |
constants.JOB_ID_TEMPLATE))
|