Revision a1a7bc78

b/lib/mcpu.py
1 1
#
2 2
#
3 3

  
4
# Copyright (C) 2006, 2007 Google Inc.
4
# Copyright (C) 2006, 2007, 2011 Google Inc.
5 5
#
6 6
# This program is free software; you can redistribute it and/or modify
7 7
# it under the terms of the GNU General Public License as published by
......
41 41
from ganeti import utils
42 42

  
43 43

  
44
_OP_PREFIX = "Op"
45
_LU_PREFIX = "LU"
46

  
47

  
44 48
class LockAcquireTimeout(Exception):
45 49
  """Exception to report timeouts on acquiring locks.
46 50

  
......
140 144
    """
141 145

  
142 146

  
147
def _LUNameForOpName(opname):
148
  """Computes the LU name for a given OpCode name.
149

  
150
  """
151
  assert opname.startswith(_OP_PREFIX), \
152
      "Invalid OpCode name, doesn't start with %s: %s" % (_OP_PREFIX, opname)
153

  
154
  return _LU_PREFIX + opname[len(_OP_PREFIX):]
155

  
156

  
157
def _ComputeDispatchTable():
158
  """Computes the opcode-to-lu dispatch table.
159

  
160
  """
161
  return dict((op, getattr(cmdlib, _LUNameForOpName(op.__name__)))
162
              for op in opcodes.OP_MAPPING.values()
163
              if op.WITH_LU)
164

  
165

  
143 166
class Processor(object):
144 167
  """Object which runs OpCodes"""
145
  DISPATCH_TABLE = {
146
    # Cluster
147
    opcodes.OpPostInitCluster: cmdlib.LUPostInitCluster,
148
    opcodes.OpDestroyCluster: cmdlib.LUDestroyCluster,
149
    opcodes.OpQueryClusterInfo: cmdlib.LUQueryClusterInfo,
150
    opcodes.OpVerifyCluster: cmdlib.LUVerifyCluster,
151
    opcodes.OpQueryConfigValues: cmdlib.LUQueryConfigValues,
152
    opcodes.OpRenameCluster: cmdlib.LURenameCluster,
153
    opcodes.OpVerifyDisks: cmdlib.LUVerifyDisks,
154
    opcodes.OpSetClusterParams: cmdlib.LUSetClusterParams,
155
    opcodes.OpRedistributeConfig: cmdlib.LURedistributeConfig,
156
    opcodes.OpRepairDiskSizes: cmdlib.LURepairDiskSizes,
157
    opcodes.OpQuery: cmdlib.LUQuery,
158
    opcodes.OpQueryFields: cmdlib.LUQueryFields,
159
    # node lu
160
    opcodes.OpAddNode: cmdlib.LUAddNode,
161
    opcodes.OpQueryNodes: cmdlib.LUQueryNodes,
162
    opcodes.OpQueryNodeVolumes: cmdlib.LUQueryNodeVolumes,
163
    opcodes.OpQueryNodeStorage: cmdlib.LUQueryNodeStorage,
164
    opcodes.OpModifyNodeStorage: cmdlib.LUModifyNodeStorage,
165
    opcodes.OpRepairNodeStorage: cmdlib.LURepairNodeStorage,
166
    opcodes.OpRemoveNode: cmdlib.LURemoveNode,
167
    opcodes.OpSetNodeParams: cmdlib.LUSetNodeParams,
168
    opcodes.OpPowercycleNode: cmdlib.LUPowercycleNode,
169
    opcodes.OpMigrateNode: cmdlib.LUMigrateNode,
170
    opcodes.OpNodeEvacuationStrategy: cmdlib.LUNodeEvacuationStrategy,
171
    # instance lu
172
    opcodes.OpCreateInstance: cmdlib.LUCreateInstance,
173
    opcodes.OpReinstallInstance: cmdlib.LUReinstallInstance,
174
    opcodes.OpRemoveInstance: cmdlib.LURemoveInstance,
175
    opcodes.OpRenameInstance: cmdlib.LURenameInstance,
176
    opcodes.OpActivateInstanceDisks: cmdlib.LUActivateInstanceDisks,
177
    opcodes.OpShutdownInstance: cmdlib.LUShutdownInstance,
178
    opcodes.OpStartupInstance: cmdlib.LUStartupInstance,
179
    opcodes.OpRebootInstance: cmdlib.LURebootInstance,
180
    opcodes.OpDeactivateInstanceDisks: cmdlib.LUDeactivateInstanceDisks,
181
    opcodes.OpReplaceDisks: cmdlib.LUReplaceDisks,
182
    opcodes.OpRecreateInstanceDisks: cmdlib.LURecreateInstanceDisks,
183
    opcodes.OpFailoverInstance: cmdlib.LUFailoverInstance,
184
    opcodes.OpMigrateInstance: cmdlib.LUMigrateInstance,
185
    opcodes.OpMoveInstance: cmdlib.LUMoveInstance,
186
    opcodes.OpConnectConsole: cmdlib.LUConnectConsole,
187
    opcodes.OpQueryInstances: cmdlib.LUQueryInstances,
188
    opcodes.OpQueryInstanceData: cmdlib.LUQueryInstanceData,
189
    opcodes.OpSetInstanceParams: cmdlib.LUSetInstanceParams,
190
    opcodes.OpGrowDisk: cmdlib.LUGrowDisk,
191
    # node group lu
192
    opcodes.OpAddGroup: cmdlib.LUAddGroup,
193
    opcodes.OpQueryGroups: cmdlib.LUQueryGroups,
194
    opcodes.OpSetGroupParams: cmdlib.LUSetGroupParams,
195
    opcodes.OpRemoveGroup: cmdlib.LURemoveGroup,
196
    opcodes.OpRenameGroup: cmdlib.LURenameGroup,
197
    # os lu
198
    opcodes.OpDiagnoseOS: cmdlib.LUDiagnoseOS,
199
    # exports lu
200
    opcodes.OpQueryExports: cmdlib.LUQueryExports,
201
    opcodes.OpPrepareExport: cmdlib.LUPrepareExport,
202
    opcodes.OpExportInstance: cmdlib.LUExportInstance,
203
    opcodes.OpRemoveExport: cmdlib.LURemoveExport,
204
    # tags lu
205
    opcodes.OpGetTags: cmdlib.LUGetTags,
206
    opcodes.OpSearchTags: cmdlib.LUSearchTags,
207
    opcodes.OpAddTags: cmdlib.LUAddTags,
208
    opcodes.OpDelTags: cmdlib.LUDelTags,
209
    # test lu
210
    opcodes.OpTestDelay: cmdlib.LUTestDelay,
211
    opcodes.OpTestAllocator: cmdlib.LUTestAllocator,
212
    opcodes.OpTestJobqueue: cmdlib.LUTestJobqueue,
213
    # OOB lu
214
    opcodes.OpOobCommand: cmdlib.LUOobCommand,
215
    }
168
  DISPATCH_TABLE = _ComputeDispatchTable()
216 169

  
217 170
  def __init__(self, context, ec_id):
218 171
    """Constructor for Processor

Also available in: Unified diff