def testTostringWithListOfLocations(self): info1 = ManifestInfo() info1._template = self.template info1.parseManifest(self.rdfFull1) manifest = info1.tostring() info2 = ManifestInfo() info2.parseManifest(manifest) self.failUnlessEqual(info1.locations, info2.locations, "Lists of locations don't match. Serialization failed.")
def testListOfManifests(self): metadata = """<?xml version="1.0" encoding="UTF-8" standalone="no"?> <metadata> %s %s </metadata> """ % (self.rdfFull1, self.rdfFull2) info = ManifestInfo() info.parseManifest(metadata) self.failUnlessEqual(info.publisher, self._publisher1, "Failure in parsing list of manifests.") self.failUnlessEqual(info.locations, [self._location1_1, self._location1_2, self._location2_1, self._location2_2], "Failure in parsing list of manifests.")
def testGenerateManifest(self): manifest_info = ManifestInfo() manifest_info.parseManifest(self.TEST_MANIFEST) ManifestDownloader.getManifestInfo = Mock(return_value=manifest_info) PDISK_ENDPOINT = 'pdisk:0.0.0.0:8445' TMSaveCache._getAttachedVolumeURIs = Mock( return_value=[PDISK_ENDPOINT + ':48ac4190-9a11-4a06-8bef-03fd97080eba']) tm = TMSaveCache({TMSaveCache._ARG_SRC_POS: 'foo:/bar/1'}, conf_filename=self.conf_filename) tm._parseArgs() tm._retrieveAttachedVolumeInfo() tm.createImageInfo = {VmManager.CREATE_IMAGE_KEY_CREATOR_EMAIL: '*****@*****.**', VmManager.CREATE_IMAGE_KEY_CREATOR_NAME: 'Jay Random', VmManager.CREATE_IMAGE_KEY_NEWIMAGE_COMMENT: 'test', VmManager.CREATE_IMAGE_KEY_NEWIMAGE_VERSION: '0.0', VmManager.CREATE_IMAGE_KEY_NEWIMAGE_MARKETPLACE: 'http://new.markeplace.org'} tm.imageSha1 = 'ea7d0ddf7af4e2ea431db89639feb7036fb23062' tm.createdPDiskId = 'foo-bar-baz' try: tm._generateP12Cert() self.failUnless(os.path.exists(tm.p12cert)) tm._generateP12Cert() tm._retrieveManifestsPath() tm.pdiskPathNew = tm._buildPDiskPath(tm.createdPDiskId) tm._buildAndSaveManifest() self.failUnless(os.path.exists(tm.manifestNotSignedPath)) minfo = ManifestInfo() minfo.parseManifestFromFile(tm.manifestNotSignedPath) assert minfo.comment == 'test' assert minfo.creator == 'Jay Random' assert minfo.version == '0.0' assert minfo.sha1 == tm.imageSha1 assert minfo.locations == ['pdisk:' + Util.getHostnamePortFromUri(tm.persistentDiskPublicBaseUrl) + ':foo-bar-baz'] self.failUnless('foo-bar-baz' in str(tm._emailText())) if not Signator.findJar(): print "Skipping signature sub-test as Signator jar can not be found." return tm._signManifest() self.failUnless(os.path.exists(tm.manifestPath)) finally: tm._cleanup()
def testUpdateManifest(self): info = ManifestInfo() info._template = self.template info.parseManifest(ManifestInfoTest.manifestDcFull) self.assertEqual('machine', info.type) info.type = 'disk' xml = info.tostring() info = ManifestInfo() info.template = self.template info.parseManifest(xml) self.assertEqual('disk', info.type)
def upload(self, manifestFilename): client = HttpClient(self.confHolder) if not os.path.exists(manifestFilename): raise InputException('Can\'t find metadata file: %s' % manifestFilename) manifest = open(manifestFilename).read() info = ManifestInfo(self.confHolder) info.parseManifest(manifest) url = MarketplaceUtil.metadataEndpointUrl(self.marketplaceEndpoint) try: client.post(url, manifest) except ClientException, ex: error = '' try: error = etree_from_text(ex.content).text except: pass raise ExecutionException("Failed to upload: %s: %s" % (ex.reason, error))
def testGetInfo(self): infoDC = ManifestInfo() infoDC.parseManifest(ManifestInfoTest.manifestDcFull) self.assertEqual('2011-01-24T09:59:42Z', infoDC.created)