Esempio n. 1
0
    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)
Esempio n. 2
0
    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)
Esempio n. 3
0
    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))
Esempio n. 4
0
 def _prependMarketplaceUrlIfImageId(self, image):
     if Image.isImageId(image):
         return MarketplaceUtil.metadataUrl(self.marketplaceEndpoint, image)
     else:
         return image
Esempio n. 5
0
    def test_metadataUrl(self):
        self.failUnlessEqual('http', Util.metadataUrl('', 'http'))

        self.failUnlessRaises(ValidationException, 
                              Util.metadataUrl, *('', ''))
Esempio n. 6
0
 def checkUploadOptions(options, parser):
     MarketplaceUtil.checkEndpointOption(options)
Esempio n. 7
0
 def buildUploadParser(parser):
     MarketplaceUtil.addEndpointOption(parser)
Esempio n. 8
0
        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