Esempio n. 1
0
 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)
Esempio n. 2
0
    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()))
Esempio n. 3
0
    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())