def doWork(self): # checking marketplace endpoint URL url_is_ok = Util.checkUrlExists(ENDPOINT_MKP, 30) if url_is_ok is True: req = urllib2.Request(ENDPOINT_MKP) response = urllib2.urlopen(req) content = response.read() xml = Util.etree_from_text(content) desc_nodes = xml.iter("{" + RDF + "}Description") all_desc = [] desc = {} for desc_node in desc_nodes: desc["description"] = desc_node.find('{' + DCTERMS + '}description').text desc["identifier"] = desc_node.find('{' + DCTERMS + '}identifier').text desc["creator"] = desc_node.find('{' + DCTERMS + '}creator').text desc["created"] = desc_node.find('{' + DCTERMS + '}created').text desc["os"] = desc_node.find('{' + SLTERMS + '}os').text desc["os-version"] = desc_node.find('{' + SLTERMS + '}os-version').text desc["os-arch"] = desc_node.find('{' + SLTERMS + '}os-arch').text # cast in str for NoneType object (otherwise, we should use try/Except) print "Description: " + str(desc["description"]) print "ID: " + str(desc["identifier"]) print "OS: " + str(desc["os"]), str(desc["os-version"]), "| Arch: " + str(desc["os-arch"]) print "Creator: " + str(desc["creator"]) print "Created at: " + str(desc["created"].replace("Z", "").split('T')) print "####\n" all_desc.append(desc)
def _checkImageByUrl(self, imageUrl): try: Util.checkUrlExists(imageUrl) except (Exceptions.ValidationException, Exceptions.ExecutionException), ex: raise Exceptions.ValidationException("Unable to access image '%s': %s" % (imageUrl, str(ex)))
def doWork(self): id = self.options.image # checking marketplace endpoint URL url_is_ok = Util.checkUrlExists(ENDPOINT_MKP, 30) if url_is_ok is True and id is not False: req = urllib2.Request(ENDPOINT_MKP) response = urllib2.urlopen(req) content = response.read() xml = Util.etree_from_text(content) desc_nodes = xml.iter("{" + RDF + "}Description") desc = {} for desc_node in desc_nodes: desc["identifier"] = desc_node.find('{' + DCTERMS + '}identifier').text if id == desc["identifier"]: desc["checksum"] = {} desc["checksum"]["val"] = [] desc["checksum"]["algo"] = [] desc["description"] = desc_node.find('{' + DCTERMS + '}description').text desc["creator"] = desc_node.find('{' + DCTERMS + '}creator').text desc["created"] = desc_node.find('{' + DCTERMS + '}created').text desc["valid"] = desc_node.find('{' + DCTERMS + '}valid').text desc["os"] = desc_node.find('{' + SLTERMS + '}os').text desc["os-version"] = desc_node.find('{' + SLTERMS + '}os-version').text desc["os-arch"] = desc_node.find('{' + SLTERMS + '}os-arch').text desc["version"] = desc_node.find('{' + SLTERMS + '}version').text desc["compression"] = desc_node.find('{' + DCTERMS + '}compression').text desc["location"] = desc_node.find('{' + SLTERMS + '}location').text desc["location"] = desc_node.find('{' + SLTERMS + '}location').text desc["format"] = desc_node.find('{' + DCTERMS + '}format').text desc["publisher"] = desc_node.find('{' + DCTERMS + '}publisher').text desc["hypervisor"] = desc_node.find('{' + SLTERMS + '}hypervisor').text for check in desc_node.findall('{' + SLREQ + '}checksum'): desc["checksum"]["algo"].append(check.find('{' + SLREQ + '}algorithm').text) desc["checksum"]["val"].append(check.find('{' + SLREQ + '}value').text) for endorsement in desc_node.findall('{' + SLREQ + '}endorsement'): for endorser in endorsement.findall('{' + SLREQ + '}endorser'): desc["email"] = endorser.find('{' + SLREQ + '}email').text # cast in str for None object (otherwise, I should use try/Except) print "Description: " + str(desc["description"]) print "ID: " + str(desc["identifier"]) print "Creator: " + str(desc["creator"]) print "Created at: " + str(desc["created"].replace("Z", "").split('T')) print "Validity: " + str(desc["valid"].replace("Z", "").split('T')) print "OS: " + str(desc["os"]), str(desc["os-version"]), "| Arch: " + str(desc["os-arch"]) print "Version: " + str(desc["version"]) print "Compression: " + str(desc["compression"]) print "Location: " + str(desc["location"]) print "Format: " + str(desc["format"]) print "Publisher: " + str(desc["publisher"]) print "Hypervisor: " + str(desc["hypervisor"]) print "Endorser: " + str(desc["email"]) for i in range(len(desc["checksum"]["algo"])): print str(desc["checksum"]["algo"][i]), str(desc["checksum"]["val"][i]) print "####\n"
def doWork(self): key_criteria = {"creator": "", "email": "", "os": "", "description": "", "regexp": "", "arch": ""} use_regexp = False if self.options.creator is not None: creator = self.options.creator key_criteria["creator"] = creator if self.options.email is not None: email = self.options.email key_criteria["email"] = email if self.options.os is not None: os = self.options.os key_criteria["os"] = os if self.options.description is not None: description = self.options.description key_criteria["description"] = description description_compile = None if self.options.regexp is not None: regexp = self.options.regexp use_regexp = True key_criteria["description"] = regexp description_compile = re.compile(regexp) if self.options.arch is not None: arch = self.options.arch key_criteria["arch"] = arch # checking marketplace endpoint URL url_is_ok = Util.checkUrlExists(ENDPOINT_MKP, 30) if url_is_ok is True: req = urllib2.Request(ENDPOINT_MKP) response = urllib2.urlopen(req) content = response.read() xml = Util.etree_from_text(content) desc_nodes = xml.iter("{" + RDF + "}Description") desc = {} found = 0 for desc_node in desc_nodes: if key_criteria["creator"] != "": desc["creator"] = desc_node.find('{' + DCTERMS + '}creator').text if key_criteria["creator"] == desc["creator"]: if found < 1: print "####" found += 1 print "CREATOR FOUND" if key_criteria["os"] != "": desc["os"] = desc_node.find('{' + SLTERMS + '}os').text if key_criteria["os"] == desc["os"]: if found < 1: print "####" found += 1 print "OS FOUND" if key_criteria["arch"] != "": desc["arch"] = desc_node.find('{' + SLTERMS + '}os-arch').text if key_criteria["arch"] == desc["arch"]: if found < 1: print "####" found += 1 print "ARCH FOUND" if key_criteria["description"] != "": desc["description"] = desc_node.find('{' + DCTERMS + '}description').text if use_regexp is False: if key_criteria["description"] == desc["description"]: if found < 1: print "####" found += 1 print "DESCRIPTION FOUND" else: if desc["description"] is not None and description_compile is not None: if description_compile.search(desc["description"]): if found < 1: print "####" found += 1 print "DESCRIPTION[REGEXP] FOUND" if key_criteria["email"] != "": for endorsement in desc_node.findall('{' + SLREQ + '}endorsement'): for endorser in endorsement.findall('{' + SLREQ + '}endorser'): desc["email"] = endorser.find('{' + SLREQ + '}email').text if key_criteria["email"] == desc["email"]: if found < 1: print "####" found += 1 print "EMAIL FOUND" if found >= 1: print "%d critera match your search for this image" % found print "####" self._print_image(desc_node) found = 0