def buildUploadParser(parser): parser.usage = '''usage: %prog [options] <image-file>''' parser.add_option('-C', '--compress', dest='compressionFormat', help='Compression format. One of: %s, none' % ', '.join(Compressor.compressionFormats), default='gz', metavar='FORMAT') parser.add_option('--image-only', dest='imageOnly', help='Do not upload metadata file to Marketplace', action='store_true', default=False) MarketplaceUtil.addEndpointOption(parser) PDiskEndpoint.addOptions(parser) PDiskVolume.addOptions(parser)
def checkUploadOptions(options, parser): if options.marketplaceEndpoint: options.withMarketPlace = True if not options.imageOnly: MarketplaceUtil.checkEndpointOption(options) allowedFormats = list(Compressor.compressionFormats) allowedFormats.append('none') if options.compressionFormat not in allowedFormats: parser.error('Unknown compression format') # Do NOT check the validity of the pdisk options, so that the # values can be taken from non-pdisk options when necessary. # PDiskEndpoint.checkOptions(options) # This essentially just checks that the volume tag is acceptable. PDiskVolume.checkOptions(options)
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 _prependMarketplaceUrlIfImageId(self, image): if Image.isImageId(image): return MarketplaceUtil.metadataUrl(self.marketplaceEndpoint, image) else: return image
def test_metadataUrl(self): self.failUnlessEqual('http', Util.metadataUrl('', 'http')) self.failUnlessRaises(ValidationException, Util.metadataUrl, *('', ''))
def checkUploadOptions(options, parser): MarketplaceUtil.checkEndpointOption(options)
def buildUploadParser(parser): MarketplaceUtil.addEndpointOption(parser)
MarketplaceUtil.checkEndpointOption(options) 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)) except AttributeError, ex: raise ExecutionException("Failed to upload (post) to URL: %s" % url) finalUrl = MarketplaceUtil.metadataCompleteUrl(self.marketplaceEndpoint, info.identifier, info.email, info.created) return finalUrl