Exemplo n.º 1
0
	def parseApplicationElement(self, node):
		if node.localName == "ApplicationName":
			applicationName = XMLUtils.getElementTextContents(node)	
		elif node.localName == "POSIXApplication":
			for posixNode in node.childNodes:
				if node.nodeType == Node.ELEMENT_NODE and node.namespaceURI == JSDL_POSIX_NS and not node.localName == None:
					self.parsePosixApplicationElement(posixNode)
Exemplo n.º 2
0
	def parseDataStagingElement(self, node, dataStagingElement):
		if node.localName == "FileName":
			fileName = XMLUtils.getElementTextContents(node)	
			dataStagingElement.setFileName(fileName)
		elif node.localName == "DeleteOnTermination":
			deleteOnTermination = XMLUtils.getElementTextContents(node)
			dataStagingElement.setDeleteOnTermination(deleteOnTermination)
		elif node.localName == "CreationFlag":
			creationFlag = XMLUtils.getElementTextContents(node)
			dataStagingElement.setCreationFlag(creationFlag)
		elif node.localName == "Source":
			srcUriElement = node.getElementsByTagNameNS(JSDL_NS, "URI")
			srcUri = XMLUtils.getElementTextContents(srcUriElement[0])
			dataStagingElement.setSource(srcUri)
		elif node.localName == "Target":
			targetUriElement = node.getElementsByTagNameNS(JSDL_NS, "URI")
			targetUri = XMLUtils.getElementTextContents(targetUriElement[0])
			dataStagingElement.setTarget(targetUri)
Exemplo n.º 3
0
	def _parseJsdl(self, fileName):
		doc = minidom.parse(fileName)
		jobDef = doc.documentElement
		jobDesc = jobDef.getElementsByTagNameNS(JSDL_NS, "JobDescription")[0]

		# Application element
		app = jobDesc.getElementsByTagNameNS(JSDL_NS, "Application")[0]
		self.applicationName = XMLUtils.getSingletonTextContents(app, JSDL_NS, "ApplicationName")
		self.applicationVersion = XMLUtils.getSingletonTextContents(app, JSDL_NS, "ApplicationVersion")
		
		jobId = jobDesc.getElementsByTagNameNS(JSDL_NS, "JobIdentification")
		if jobId.length > 0:
			self.jobName = XMLUtils.getSingletonTextContents(jobId[0], JSDL_NS, "JobName")
		
		# POSIXApplication element
		posix = app.getElementsByTagNameNS(JSDL_POSIX_NS, "POSIXApplication")
		if posix.length > 0:
			for node in posix[0].childNodes:
				if node.nodeType != Node.ELEMENT_NODE or node.namespaceURI != JSDL_POSIX_NS:
					continue
				data = XMLUtils.getElementTextContents(node)
				if node.localName == 'Argument':
					self.arguments.append(data)
				elif node.localName == 'Executable':
					self.executableName = data
					#platformUtils.formatCygwinPath(data)
				else:
					self.posixConstraints[node.localName] = data
		
		# Resources element
		resources = jobDesc.getElementsByTagNameNS(JSDL_NS, "Resources")
		if resources.length > 0:
			for node in resources[0].childNodes:
				if node.nodeType == Node.ELEMENT_NODE and node.namespaceURI == JSDL_NS:
					self._parseResourcesElement(node)
					
		# DataStaging element
		dataStaging = jobDesc.getElementsByTagNameNS(JSDL_NS, "DataStaging")
		if dataStaging.length > 0:
			dsIndex = 0
			for ds in dataStaging:
				dataStagingElement  =  DataStagingElement()
				for node in ds.childNodes:
					if node.nodeType == Node.ELEMENT_NODE and node.namespaceURI == JSDL_NS:
						self.parseDataStagingElement(node, dataStagingElement)
				self.dataStaging.append(dataStagingElement)	
				dsIndex = dsIndex + 1	
									
		# Application element
		application = jobDesc.getElementsByTagNameNS(JSDL_NS, "Application")
		for node in application[0].childNodes:
			if node.nodeType == Node.ELEMENT_NODE:
				self.parseApplicationElement(node)		
Exemplo n.º 4
0
	def _parseRangeElement(self, rangeElement):
		lower = None
		upper = None
		for node in rangeElement.childNodes:
			if node.nodeType != Node.ELEMENT_NODE or node.namespaceURI != JSDL_NS:
				continue
			if node.localName == "LowerBoundedRange":
				val = float(XMLUtils.getElementTextContents(node))
				lower = _min(val, lower)
			elif node.localName == "UpperBoundedRange":
				val = float(XMLUtils.getElementTextContents(node))
				upper = max([val, upper])
			elif node.localName == "Exact":
				val = float(XMLUtils.getElementTextContents(node))
				lower = _min(val, lower)
				upper = max([val, upper])
			elif node.localName == "Range":
				val = float(XMLUtils.getSingletonTextContents(node, JSDL_NS, "LowerBound"))
				lower = _min(val, lower)
				val = float(XMLUtils.getSingletonTextContents(node, JSDL_NS, "UpperBound"))
				upper = max([val, upper])
		return {"lower": lower, "upper": upper}
Exemplo n.º 5
0
	def parsePosixApplicationElement(self, node):
		if node.localName == "Executable":
			execName = XMLUtils.getElementTextContents(node)
		elif node.localName == "Argument":
			argument = XMLUtils.getElementTextContents(node)
		elif node.localName == "Input":
			argument = XMLUtils.getElementTextContents(node)
		elif node.localName == "Output":
			argument = XMLUtils.getElementTextContents(node)
		elif node.localName == "Error":
			argument = XMLUtils.getElementTextContents(node)
		elif node.localName == "Environment":
			envVariableValue = XMLUtils.getElementTextContents(node)
			envVariableName = node.getAttribute('name')
Exemplo n.º 6
0
	def _parseResourcesElement(self, node):
		if node.localName == "FileSystem":
			node = node.getElementsByTagNameNS(JSDL_NS, "DiskSpace")[0]
		if node.localName == "CPUArchitecture":
			self.cpuArchitecture = XMLUtils.getSingletonTextContents(node, JSDL_NS, "CPUArchitectureName")
		elif node.localName == "OperatingSystem":
			osType = XMLUtils.getSingletonElement(node, JSDL_NS, "OperatingSystemType")
			self.operatingSystem = XMLUtils.getSingletonTextContents(osType, JSDL_NS, "OperatingSystemName")	
		elif node.localName == "CandidateHost":
			hostNames = node.getElementsByTagNameNS(JSDL_NS, "HostName")
			for hostName in hostNames:
				self.candidateHosts.append(XMLUtils.getElementTextContents(hostName))
		elif node.localName in SUPPORTED_RANGE_RESOURCES:
			name = node.localName
			value = self._parseRangeElement(node)
			
			self.rangeResources[name] = {
				"lower": value["lower"],
				"upper": value["upper"]
			}