Ejemplo n.º 1
0
    def main(self):
        req = BundleAndUploadImage.from_other(
            self, image=self.args["image"], arch=self.args["arch"],
            bucket=self.args["bucket"], prefix=self.args.get("prefix"),
            destination=self.args.get("destination"),
            kernel=self.args.get("kernel"), ramdisk=self.args.get("ramdisk"),
            image_type=self.args.get("image_type"),
            image_size=self.args.get("image_size"), cert=self.args.get("cert"),
            privatekey=self.args.get("privatekey"),
            ec2cert=self.args.get("ec2cert"), user=self.args.get("user"),
            productcodes=self.args.get("productcodes"),
            enc_iv=self.args.get("enc_iv"), enc_key=self.args.get("enc_key"),
            max_pending_parts=self.args.get("max_pending_parts"),
            part_size=self.args.get("part_size"), batch=self.args.get("batch"),
            show_progress=self.args.get("show_progress"))
        result_bundle = req.main()
        image_location = result_bundle['manifests'][0]["key"]

        req = RegisterImage.from_other(
            self, service=self.args["ec2_service"], auth=self.args["ec2_auth"],
            Name=self.args["name"], Architecture=self.args["arch"],
            ImageLocation=image_location,
            Description=self.args.get("description"),
            VirtualizationType=self.args.get("virtualization_type"),
            Platform=self.args.get("platform"))
        result_register = req.main()
        return result_register
Ejemplo n.º 2
0
    def install(self, image_md, services, image_fileobj, image_size, args,
                tags=None):
        # If you're curious why this uses a generic "args" dict, see
        # ImageMetadata.install_profile's commentary.
        bundle_args = dict(self.bundle_args)
        for argname in ('privatekey', 'cert', 'ec2cert', 'user', 'bucket',
                        'location', 'kernel', 'ramdisk'):
            if args.get(argname):
                bundle_args[argname] = args[argname]
        req = BundleAndUploadImage(
            service=services['s3']['service'],
            config=services['s3']['service'].config,
            loglevel=services['s3']['service'].log.level,
            auth=services['s3']['auth'], image=image_fileobj,
            prefix=image_md.get_nvra(),
            image_type='machine',  # We only support machine images for now
            image_size=image_size, show_progress=args.get('show_progress'),
            max_pending_parts=2, part_size=10485760, **bundle_args)
        try:
            bundle_info = req.main()
        except KeyError as err:
            raise ValueError('{0} is required'.format(err.args[0]))

        register_args = dict(self.register_args)
        if args.get('kernel'):
            register_args['KernelId'] = args['kernel']
        if args.get('ramdisk'):
            register_args['RamdiskId'] = args['ramdisk']
        if not register_args.get('Description'):
            register_args['Description'] = image_md.description
        req = RegisterImage(
            service=services['ec2']['service'],
            config=services['ec2']['service'].config,
            loglevel=services['ec2']['service'].log.level,
            auth=services['ec2']['auth'],
            ImageLocation=bundle_info['manifests'][0]['key'],
            Name='{0}-{1}'.format(
                image_md.get_nvra(),
                datetime.datetime.utcnow().strftime('%F-%H-%m-%s')),
            **register_args)
        register_response = req.main()
        image_id = register_response['imageId']

        tag_args = dict(self.tag_args)
        tag_args['ResourceId'] = [image_id]
        tag_args.setdefault('Tag', [])
        if tags:
            for key, val in tags.iteritems():
                tag_args['Tag'].append({'Key': key, 'Value': val})
        req = CreateTags(
            service=services['ec2']['service'],
            config=services['ec2']['service'].config,
            loglevel=services['ec2']['service'].log.level,
            auth=services['ec2']['auth'], **tag_args)
        req.main()

        return image_id
Ejemplo n.º 3
0
    def install(self, image_md, services, image_fileobj, image_size, args,
                tags=None):
        # If you're curious why this uses a generic "args" dict, see
        # ImageMetadata.install_profile's commentary.
        bundle_args = dict(self.bundle_args)
        for argname in ('privatekey', 'cert', 'ec2cert', 'user', 'bucket',
                        'location', 'kernel', 'ramdisk'):
            if args.get(argname):
                bundle_args[argname] = args[argname]
        req = BundleAndUploadImage(
            service=services['s3']['service'],
            config=services['s3']['service'].config,
            loglevel=services['s3']['service'].log.level,
            auth=services['s3']['auth'], image=image_fileobj,
            prefix=image_md.get_nvra(),
            image_type='machine',  # We only support machine images for now
            image_size=image_size, show_progress=args.get('show_progress'),
            max_pending_parts=2, part_size=10485760, **bundle_args)
        try:
            bundle_info = req.main()
        except KeyError as err:
            raise ValueError('{0} is required'.format(err.args[0]))

        register_args = dict(self.register_args)
        if args.get('kernel'):
            register_args['KernelId'] = args['kernel']
        if args.get('ramdisk'):
            register_args['RamdiskId'] = args['ramdisk']
        if not register_args.get('Description'):
            register_args['Description'] = image_md.description
        req = RegisterImage(
            service=services['ec2']['service'],
            config=services['ec2']['service'].config,
            loglevel=services['ec2']['service'].log.level,
            auth=services['ec2']['auth'],
            ImageLocation=bundle_info['manifests'][0]['key'],
            Name='{0}-{1}'.format(
                image_md.get_nvra(),
                datetime.datetime.utcnow().strftime('%F-%H-%m-%s')),
            **register_args)
        register_response = req.main()
        image_id = register_response['imageId']

        tag_args = dict(self.tag_args)
        tag_args['ResourceId'] = [image_id]
        tag_args.setdefault('Tag', [])
        if tags:
            for key, val in tags.items():
                tag_args['Tag'].append({'Key': key, 'Value': val})
        req = CreateTags(
            service=services['ec2']['service'],
            config=services['ec2']['service'].config,
            loglevel=services['ec2']['service'].log.level,
            auth=services['ec2']['auth'], **tag_args)
        req.main()

        return image_id
Ejemplo n.º 4
0
    def main(self):
        req = BundleAndUploadImage.from_other(
            self,
            image=self.args["image"],
            arch=self.args["arch"],
            bucket=self.args["bucket"],
            prefix=self.args.get("prefix"),
            destination=self.args.get("destination"),
            kernel=self.args.get("kernel"),
            ramdisk=self.args.get("ramdisk"),
            image_type=self.args.get("image_type"),
            image_size=self.args.get("image_size"),
            cert=self.args.get("cert"),
            privatekey=self.args.get("privatekey"),
            ec2cert=self.args.get("ec2cert"),
            user=self.args.get("user"),
            productcodes=self.args.get("productcodes"),
            enc_iv=self.args.get("enc_iv"),
            enc_key=self.args.get("enc_key"),
            max_pending_parts=self.args.get("max_pending_parts"),
            part_size=self.args.get("part_size"),
            batch=self.args.get("batch"),
            show_progress=self.args.get("show_progress"))
        result_bundle = req.main()
        image_location = result_bundle['manifests'][0]["key"]

        req = RegisterImage.from_other(
            self,
            service=self.args["ec2_service"],
            auth=self.args["ec2_auth"],
            Name=self.args["name"],
            Architecture=self.args["arch"],
            ImageLocation=image_location,
            Description=self.args.get("description"),
            VirtualizationType=self.args.get("virtualization_type"),
            Platform=self.args.get("platform"))
        result_register = req.main()
        return result_register