def docker_pull(self, namespace, repos): # Test pull # Docker -> Index resp = requests.get('{0}/v1/repositories/{1}/{2}/images'.format( self.index_endpoint, namespace, repos), auth=tuple(self.user_credentials), headers={'X-Docker-Token': 'true'}) self.assertEqual(resp.status_code, 200) token = resp.headers.get('x-docker-token') # Here we should use the 'X-Endpoints' returned in a real environment # Docker -> Registry resp = requests.get('{0}/v1/repositories/{1}/{2}/tags/latest'.format( self.registry_endpoint, namespace, repos), headers={'Authorization': 'Token ' + token}) self.assertEqual(resp.status_code, 200, resp.text) self.cookies = resp.cookies # Docker -> Registry image_id = json.loads(resp.text) resp = requests.get('{0}/v1/images/{1}/ancestry'.format( self.registry_endpoint, image_id), cookies=self.cookies) self.update_cookies(resp) self.assertEqual(resp.status_code, 200, resp.text) ancestry = json.loads(resp.text) # We got the ancestry, let's fetch all the images there for image_id in ancestry: json_data, checksum, blob = self.fetch_image(image_id) # check queried checksum and local computed checksum from the image # are the same tmpfile = StringIO() tmpfile.write(blob) tmpfile.seek(0) computed_checksum = checksums.compute_simple(tmpfile, json_data) tmpfile.close() self.assertEqual(checksum, computed_checksum) # Remove image tags resp = requests.delete('{0}/v1/repositories/{1}/{2}/tags'.format( self.registry_endpoint, namespace, repos), cookies=self.cookies) self.assertEqual(resp.status_code, 200, resp.text) self.update_cookies(resp) # Remove image_id, then parent_id store = storage.load() store.remove(os.path.join(store.images, self.image_id)) store.remove(os.path.join(store.images, self.parent_id))
def write_POSCAR(poscar, filename): """ Write the contents of poscar to filename. """ global hashes f = StringIO() f.write("1.0\n") for i in range(3): f.write("{0[0]:>20.15f} {0[1]:>20.15f} {0[2]:>20.15f}\n".format( (poscar["lattvec"][:, i]).tolist())) f.write("{0}\n".format(" ".join(poscar["elements"]))) f.write("{0}\n".format(" ".join([str(i) for i in poscar["numbers"]]))) f.write("Direct\n") for i in range(poscar["positions"].shape[1]): f.write("{0[0]:>20.15f} {0[1]:>20.15f} {0[2]:>20.15f}\n".format( poscar["positions"][:, i].tolist())) if hashes: header = hashlib.sha1(f.getvalue().encode()).hexdigest() else: header = filename with open(filename, "w") as finalf: finalf.write("{0}\n".format(header)) finalf.write(f.getvalue()) f.close()
def getStatusText(self): sout = StringIO() if self.mStatus in (definitions.eStatus_VToDo_NeedsAction, definitions.eStatus_VToDo_InProcess): if self.hasEnd(): # Check due date today = DateTime() today.setToday() if self.getEnd() > today: sout.append("Due: ") whendue = self.getEnd() - today if (whendue.getDays() > 0) and (whendue.getDays() <= 7): sout.write(whendue.getDays()) sout.write(" days") else: sout.write(self.getEnd().getLocaleDate( DateTime.NUMERICDATE)) elif self.getEnd() == today: sout.write("Due today") else: sout.write("Overdue: ") overdue = today - self.getEnd() if overdue.getWeeks() != 0: sout.write(overdue.getWeeks()) sout.write(" weeks") else: sout.write(overdue.getDays() + 1) sout.write(" days") else: sout.write("Not Completed") elif self.mStatus == definitions.eStatus_VToDo_Completed: if self.hasCompleted(): sout.write("Completed: ") sout.write(self.getCompleted().getLocaleDate( DateTime.NUMERICDATE)) else: sout.write("Completed") elif definitions.eStatus_VToDo_Cancelled: sout.write("Cancelled") return sout.toString()
def getStatusText(self): sout = StringIO() if self.mStatus in (definitions.eStatus_VToDo_NeedsAction, definitions.eStatus_VToDo_InProcess): if self.hasEnd(): # Check due date today = DateTime() today.setToday() if self.getEnd() > today: sout.append("Due: ") whendue = self.getEnd() - today if (whendue.getDays() > 0) and (whendue.getDays() <= 7): sout.write(whendue.getDays()) sout.write(" days") else: sout.write(self.getEnd().getLocaleDate(DateTime.NUMERICDATE)) elif self.getEnd() == today: sout.write("Due today") else: sout.write("Overdue: ") overdue = today - self.getEnd() if overdue.getWeeks() != 0: sout.write(overdue.getWeeks()) sout.write(" weeks") else: sout.write(overdue.getDays() + 1) sout.write(" days") else: sout.write("Not Completed") elif self.mStatus == definitions.eStatus_VToDo_Completed: if self.hasCompleted(): sout.write("Completed: ") sout.write(self.getCompleted().getLocaleDate(DateTime.NUMERICDATE)) else: sout.write("Completed") elif definitions.eStatus_VToDo_Cancelled: sout.write("Cancelled") return sout.toString()