def save_tree(self, target, new_tree): now_dt = datetime.utcnow() now_dt_str = now_dt.strftime(TREE_DT_FMT) tree_local_fname = os.path.join(self.trees_dir, '{}-{}'.format(target, now_dt_str)) with open(tree_local_fname, 'wb') as f: tree.save_tree(new_tree, f) with open('{}.meta'.format(tree_local_fname), 'wb') as f: json.dump({'pf:target': target, 'pf:saved_dt': now_dt_str}, f)
def testLocalStorageKey(self): newt = tree.Tree() self.ls.save_tree(TEST_FILES_TGT, newt) trees = self.ls.get_stored_info(TEST_FILES_TGT).all_trees for t in trees: self.assertEqual(t.get_metadata('pf:target'), TEST_FILES_TGT) self.assertEqual(len(t.get_metadata('pf:saved_dt')), len(TREE_DT_FMT)+2) with self.assertRaises(KeyError): t.get_metadata('doesnt_exist') sio = StringIO() tree.save_tree(newt, sio) self.assertEqual(len(t.get_contents_as_string()), len(sio.getvalue()))
def save_tree(self, target, new_tree): self.connect() now_dt = datetime.utcnow() now_dt_str = now_dt.strftime('%Y%m%dT%H%M') sio = StringIO() tree.save_tree(new_tree, sio) # Save to S3 print("Saving tree to S3") s3_pf_prefix = self.cp.get('options', 's3-pf-prefix') k = Key(self.s3_bucket) k.key = '{}/trees/{}.{}'.format( s3_pf_prefix, target, now_dt_str ) k.set_metadata('pf:target', target) k.set_metadata('pf:saved_dt', now_dt_str) k.set_contents_from_string(sio.getvalue())