class PortTranslationService(object): def __init__(self, configFile=''): self.configFile = configFile configHolder = ConfigHolder(config=self._loadConfiguration()) self.portTranslation = PortTranslationDbClient(configHolder) def _loadConfiguration(self): return ConfigHolder.configFileToDict(self._findConfigFile()) def _findConfigFile(self): cgiConfig = os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), 'conf/stratuslab.cfg') paths = (self.configFile, cgiConfig) for path in paths: if os.path.exists(path): return path raise(ConfigurationException('Missing configuration file')) def _sendJson(self, data): jsonData = json.dumps(data) print "Content-type: application/json\r\n\r\n" print jsonData def _convertPortTranslationToJson(self, cleanPorts): rawPorts = {} for vmId, vmPorts in cleanPorts.iteritems(): rawPorts[vmId] = vmPorts.toList() return rawPorts def run(self): form = cgi.FieldStorage() vmId = form.getvalue('vmid') cleanPorts = self.portTranslation.getPortTranslation(vmId) rawPorts = self._convertPortTranslationToJson(cleanPorts) self._sendJson(rawPorts)
def __init__(self, configFile=''): self.configFile = configFile configHolder = ConfigHolder(config=self._loadConfiguration()) self.portTranslation = PortTranslationDbClient(configHolder)