Ejemplo n.º 1
0
    def __init__(self, meta):
        # FIXME(aloga): DRY this
        meta = meta.get("hv:x509")

        keys = meta.keys()
        if not all([i in keys for i in self.required_fields]):
            reason = "Invalid image list, missing mandatory fields"
            raise exception.InvalidImageList(reason=reason)

        self.name = meta["dc:creator"]
        self.dn = meta["hv:dn"]
        self.ca = meta["hv:ca"]
        self.email = meta["hv:email"]
Ejemplo n.º 2
0
    def fetch(self):
        if self.enabled and self.url:
            self.contents = self._fetch()
            self.verified, self.signer, raw_list = self._verify()
            try:
                list_as_dict = json.loads(raw_list)
            except ValueError:
                LOG.error("Invalid JSON for image list '%s'", self.name)
                raise exception.InvalidImageList(reason="Invalid JSON.")

            image_list = HepixImageList(list_as_dict)
            self.image_list = image_list

            self.expired = self._check_expiry()
            self.trusted = self._check_endorser()
Ejemplo n.º 3
0
    def __init__(self, image_info):
        super(HepixImage, self).__init__(image_info)

        image_dict = image_info.get("hv:image", {})

        utils.ensure_ca_bundle(CONF.download_ca_file, [requests.certs.where()],
                               CONF.ca_path)

        for i in self.required_fields:
            value = image_dict.get(i, None)
            if value is None:
                reason = "Invalid image definition, missing '%s'" % i
                raise exception.InvalidImageList(reason=reason)

            attr = self.field_map.get(i)
            setattr(self, attr, value)
Ejemplo n.º 4
0
    def __init__(self, meta):
        meta = meta.get("hv:imagelist", {})
        keys = meta.keys()
        if not all([i in keys for i in self.required_fields]):
            reason = "Invalid image list, missing mandatory fields"
            raise exception.InvalidImageList(reason=reason)

        self.created = dateutil.parser.parse(meta["dc:date:created"])
        self.expires = dateutil.parser.parse(meta["dc:date:expires"])
        self.uuid = meta["dc:identifier"]
        self.description = meta["dc:description"]
        self.name = meta["dc:title"]
        self.source = meta["dc:source"]
        self.version = meta["hv:version"]
        self.uri = meta["hv:uri"]

        endorser_meta = meta.get("hv:endorser")
        self.endorser = endorser.Endorser(endorser_meta)

        self.images = []
        for img_meta in meta.get("hv:images"):
            self.images.append(image.HepixImage(img_meta))

        self.vo = meta.get('ad:vo', None)
Ejemplo n.º 5
0
 def fetch_list(self, image_list):
     """Fetch (and verify) an individual list."""
     l = self.lists.get(image_list)
     if l is None:
         raise exception.InvalidImageList(reason="not found in config")
     return self._fetch_and_verify(l)