def processXmlAndCreateGRLoaderXmlFiles(operation, xmlResult): fileName = "%s-%s.xml" % (TIMESTAMP, operation) doc = Document() saxBuilder = SAXBuilder() xmlData = saxBuilder.build(StringReader(xmlResult)) try: # Process CIs cisData = xmlData.getRootElement().getChild('data').getChild( 'objects').getChildren('Object') (mamIdToAttributesMap, itemsRootElement) = addCIs(Element('GRLoader'), cisData) # Process Relationships relationsData = xmlData.getRootElement().getChild('data').getChild( 'links').getChildren('link') itemsRootElementWithLinks = addRelations(itemsRootElement, relationsData, mamIdToAttributesMap) if itemsRootElementWithLinks != None: doc.setRootElement(itemsRootElementWithLinks) createGRLoaderXmlInputFile(fileName, doc) except: raise Exception, "Unable to process inbound XML" return fileName
def buildIntermediateXML(objectMapFromARIS): try: ## Build XML intermediateXML = Document() rootElement = Element('data') intermediateXML.setRootElement(rootElement) cisElement = Element('cis') linksElement = Element('links') rootElement.addContent(cisElement) rootElement.addContent(linksElement) if objectMapFromARIS: ## Add CIs for objectFromARIS in objectMapFromARIS.values(): ciElement = Element('ci') if buildIntermediateCiXML(ciElement, objectFromARIS): cisElement.addContent(ciElement) ## Add relationships relationshipsFromObject = objectFromARIS.links if relationshipsFromObject: for relationshipFromObject in relationshipsFromObject: linkElement = Element('link') linkElement.setAttribute('type', relationshipFromObject.type) linkEndCount = 1 for linkEndCi in [ objectMapFromARIS[relationshipFromObject.end1], objectMapFromARIS[relationshipFromObject.end2] ]: endCiElement = Element('end' + str(linkEndCount) + 'ci') linkEndCount = linkEndCount + 1 if buildIntermediateCiXML(endCiElement, linkEndCi): linkElement.addContent(endCiElement) else: debugPrint( 3, '[' + SCRIPT_NAME + ':buildIntermediateXML] Error building link end for link with GUID <%s>! Skipping...' % relationshipFromObject.id) linksElement.addContent(linkElement) return intermediateXML except: excInfo = logger.prepareJythonStackTrace('') debugPrint('[' + SCRIPT_NAME + ':buildIntermediateXML] Exception: <%s>' % excInfo) pass
def processXmlAndCreateGRLoaderXmlFiles(operation, xmlResult): fileName = "%s-%s.xml" % (TIMESTAMP, operation) doc = Document() saxBuilder = SAXBuilder() xmlData = saxBuilder.build(StringReader(xmlResult)) try: # Process CIs cisData = xmlData.getRootElement().getChild('data').getChild('objects').getChildren('Object') (mamIdToAttributesMap, itemsRootElement) = addCIs(Element('GRLoader'), cisData) # Process Relationships relationsData = xmlData.getRootElement().getChild('data').getChild('links').getChildren('link') itemsRootElementWithLinks = addRelations(itemsRootElement, relationsData, mamIdToAttributesMap) if itemsRootElementWithLinks != None: doc.setRootElement(itemsRootElementWithLinks) createGRLoaderXmlInputFile(fileName, doc) except: raise Exception, "Unable to process inbound XML" return fileName
def testCaCmdbConnection(conn): logger.debug( "Testing CA CMDB connection for Server: %s, Port: %s, Username: %s" % (conn.host, conn.port, conn.username)) xmlInputFilePath = createGRLoaderXmlInputFile( TEST_FILE_NAME, Document(Element('GRLoader'))) params = getGRLoaderParams(xmlInputFilePath, conn, None) status = invokeGRLoader(params) deleteGRLoaderXmlInputFile(TEST_FILE_NAME) if status: return 1 else: return 0
def buildIntermediateXML(objectMapFromARIS): try: ## Build XML intermediateXML = Document() rootElement = Element('data') intermediateXML.setRootElement(rootElement) cisElement = Element('cis') linksElement = Element('links') rootElement.addContent(cisElement) rootElement.addContent(linksElement) if objectMapFromARIS: ## Add CIs for objectFromARIS in objectMapFromARIS.values(): ciElement = Element('ci') if buildIntermediateCiXML(ciElement, objectFromARIS): cisElement.addContent(ciElement) ## Add relationships relationshipsFromObject = objectFromARIS.links if relationshipsFromObject: for relationshipFromObject in relationshipsFromObject: linkElement = Element('link') linkElement.setAttribute('type', relationshipFromObject.type) linkEndCount = 1 for linkEndCi in [objectMapFromARIS[relationshipFromObject.end1], objectMapFromARIS[relationshipFromObject.end2]]: endCiElement = Element('end' + str(linkEndCount) + 'ci') linkEndCount = linkEndCount + 1 if buildIntermediateCiXML(endCiElement, linkEndCi): linkElement.addContent(endCiElement) else: debugPrint(3, '[' + SCRIPT_NAME + ':buildIntermediateXML] Error building link end for link with GUID <%s>! Skipping...' % relationshipFromObject.id) linksElement.addContent(linkElement) return intermediateXML except: excInfo = logger.prepareJythonStackTrace('') debugPrint('[' + SCRIPT_NAME + ':buildIntermediateXML] Exception: <%s>' % excInfo) pass