def processCMDBManifest(pf): """ create the autodeploy file system from a released repository supposes a structure as in svn BuildDeliverables """ repoPath = pf.get("manifest.repository.root") manifest = CMDBManifest(pf.get("manifest.file")) releaseId = manifest.getReleaseId() pscs = manifest.getPSCs() deployables = [] # cater for different transport protocols - right now only file antFile = AntCopyProject("antBuildtmpFS.xml", pf.get("manifest.repository.protocol")) antFile.setName("createtmpfs") antFile.deleteDir("tmp/" + releaseId) # cater for getting metadata in different ways - right now only config registry metadata = DeploymentMetadata(pf.get("manifest.metadata.source"), pf.get("manifest.metadata.file")) for psc in pscs: deployable = metadata.getMetadataForPSC(psc) if deployable: deployables.append(deployable) source = repoPath + "/" + deployable["repo-path"] pattern = "**/**" target = "tmp/" + releaseId + "/" + deployable["name"] + "_" + deployable["version"] antFile.copyDir(source, pattern, target) # generic name for config folder DC-SR-ORAPP-XX_ROOT hard-coded antFile.copyDir(target + "/config", "**", "tmp/" + releaseId + "/DC-SR-ORAPP-XX_ROOT/PSCConfig") createAutodeployProperties(antFile, releaseId, deployables)
def processCIManifest(pf): """ create a file system for autodeploy from some file system - probably build-system output the CIManifest allows the inclusion of a pattern match so that we can get the latest build of a particular artefact """ manifest = CIManifest(pf.get("manifest.file")) releaseId = manifest.getReleaseId() deployPackageHome = "tmp/" + releaseId pscs = manifest.getPSCs() deployables = [] # cater for different repository types - file/ftp # TODO implement file for CI antFile = AntCopyProject("antBuildtmpFS.xml", pf.get("manifest.repository.protocol")) antFile.setName("createtmpfs") antFile.deleteDir(deployPackageHome) metadata = DeploymentMetadata(pf.get("manifest.metadata.source"), pf.get("manifest.metadata.file")) for psc in pscs: deployable = metadata.getMetadataForPSC(psc) if deployable: deployables.append(deployable) if pf.get("manifest.repository.protocol").lower() == "ftp": repoHome = "ftp://" + pf.get("manifest.repository.root") elif pf.get("manifest.repository.protocol").lower() == "file": repoHome = pf.get("manifest.repository.root") if deployable["artefact"].find("*") > 0 and pf.get("manifest.repository.protocol").lower() == "ftp": ftpSite = FTPSiteNav(pf.get("manifest.repository.root")) latest = ftpSite.getLatestFromPattern(deployable["repo-path"], deployable["artefact"])[0] deployable["artefact"] = latest artefact = deployable["artefact"] sourceDir = repoHome + "/" + deployable["repo-path"] target = deployPackageHome + "/" + deployable["name"] antFile.copyFile(sourceDir, artefact, target) createAutodeployProperties(antFile, releaseId, deployables)
def testGetMetadataForPSC(self): print "TestDeploymentMetadata : testGetMetadataForPSC" md = DeploymentMetadata("cr", "sample_properties/ConfigRegComponents.xls") self.assertNotEqual(md.CONFIG_REGISTRY, None) self.assertEqual(md.CI_METADATA, None) self.assertNotEqual(len(md.deployables), 0) for i in range(len(self.crPscs)): deployable = md.getMetadataForPSC(self.crPscs[i]) self.assertNotEqual(deployable, None) if self.crPscs[i][0] == "ENTERPRISECONTRACTSANDSCHEMAS": self.assertEqual(deployable["name"], "EnterpriseContractsAndSchemas") self.assertEqual(deployable["version"], "03_08_04") self.assertEqual(deployable["technology"], "OSB") self.assertEqual(deployable["packaging"], "JAR") self.assertEqual(deployable["artefact"], "EnterpriseContractsAndSchemas-trunk-build.73.jar") self.assertEqual(deployable["repo-path"], "EnterpriseContractsAndSchemas/03_08_04") if self.crPscs[i][0] == "REFERENCEDATALOOKUPSERVICEIMPL": self.assertEqual(deployable["name"], "ReferenceDataLookupServiceImpl") self.assertEqual(deployable["version"], "02_04_00") self.assertEqual(deployable["technology"], "Webapp") self.assertEqual(deployable["packaging"], "Exploded") self.assertEqual(deployable["artefact"], "ReferenceDataLookupServiceImpl") self.assertEqual(deployable["repo-path"], "ReferenceDataManagement/ReferenceDataLookupServiceImpl/02_04_00") self.assertEqual(deployable["deploy-target"], "GWIMP") md = DeploymentMetadata("ci", "sample_properties/CIDeploys.xls") for i in range(len(self.ciPscs)): deployable = md.getMetadataForPSC(self.ciPscs[i]) if self.ciPscs[i][0] == "TempBookingApplication": self.assertEqual(deployable["name"], "TempBookingApplication") self.assertEqual(deployable["version"], "SNAPSHOT") self.assertEqual(deployable["technology"], "Webapp") self.assertEqual(deployable["packaging"], "EAR") self.assertEqual(deployable["artefact"], "TempBookingApplicationEar-tempbookingbuild-3.0.0-SNAPSHOT-build.*.ear") self.assertEqual(deployable["repo-path"], "TempBookingParentPOM/trunk") self.assertEqual(deployable["deploy-target"], "GWAPP")