2 Created on Feb 17, 2014 5 @link: http://hierarchical-cluster-engine.com/ 6 @copyright: Copyright © 2013-2014 IOIX Ukraine 7 @license: http://hierarchical-cluster-engine.com/license/ 11 from NodeManagerRequest
import NodeManagerRequest
12 from NodeManagerResponse
import NodeManagerResponse
14 import AdminExceptions
15 import Constants
as CONSTANTS
19 def __init__(self, errorCode=CONSTANTS.ERROR_NO):
41 for responseElement
in self.responses:
43 responseBody = responseElement[CONSTANTS.STRING_RESPONSE_MARKER].getBody()
45 fieldsList = responseBody.split(CONSTANTS.ITEM_DELIM)
46 if len(fieldsList) > 1:
47 if fieldsList[0] != CONSTANTS.ERROR_CODE_OK
and fieldsList[0] != CONSTANTS.ERROR_CODE_ERROR:
48 self.responsesDicts.append(responsesDict)
50 responsesDict = {CONSTANTS.RESPONSE_CODE_NAME:
"", CONSTANTS.RESPONSE_FIELDS_NAME: {}}
51 responsesDict[CONSTANTS.RESPONSE_CODE_NAME] = fieldsList[0]
52 for i
in xrange(1, len(fieldsList)):
53 field = fieldsList[i].split(CONSTANTS.FIELD_DELIM)
58 responsesDict[CONSTANTS.RESPONSE_FIELDS_NAME][field[0]] = fieldValue
59 self.responsesDicts.append(responsesDict)
65 self.responsesDicts = []
66 message = {CONSTANTS.STRING_MSGID_NAME :
"", CONSTANTS.STRING_BODY_NAME :
""}
68 for command
in commands:
69 responseElement = {CONSTANTS.STRING_NODE_MARKER : node, CONSTANTS.STRING_RESPONSE_MARKER :
None}
70 requestBody = command.generateBody()
71 if requestBody !=
None:
72 message[CONSTANTS.STRING_MSGID_NAME] = self.msgUidGenerator.get_uid()
73 message[CONSTANTS.STRING_BODY_NAME] = requestBody
75 response = self.request.
makeRequest(node, message, command.getRequestTimeout())
77 errorStr =
"ERR_AdminWrongConnectionKey" 80 errorStr =
"ERR_AdminTimeoutException" 82 responseElement[CONSTANTS.STRING_RESPONSE_MARKER] = response
83 self.responses.append(responseElement)
85 self.responsesParsing()
NodeManagerResponse class that represents admin modules response.
def __init__(self, errorCode=CONSTANTS.ERROR_NO)
def makeRequest(self, node, message, commandTimeout=None)
makeRequest main class method, it gets node and message params, interact with transport layer...
NodeManagerRequest class contents all data needed for admin level's request sending.
def execute(self, commands, nodes)
execute method execute incoming commands on nodes, keepts reult in responses and responsesDicts field...
def getResponsesDicts(self)
AdminExceptions module keepts admin module native exceptions.
UIDGenerator is used to generate unique message id.
NodeManager represents API for interraction with user-side (execute method)
def responsesParsing(self)
responsesParsing method parses data from self.responses into specific stucture (self.responsesDicts)