summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSiddharth Ravikumar <sravik@bgsu.edu>2015-01-14 21:47:33 -0500
committerSiddharth Ravikumar <sravik@bgsu.edu>2015-01-14 21:47:33 -0500
commit0c1eb99d769be908322bb0bba16f2a6af35ebe25 (patch)
treed591c47e24a3f503b683ce415c26ff47418d5d88
parent82a0368d0c70e62975b59cc4bd68ac83b6b6eb68 (diff)
combox/file.py: new functions defined.
relative_path: returns relative path of directory or file w. r. t combox directory. mk_nodedir: creates a directory inside all node directories purge_dir: (1) purges a file or (2) purges everything inside a directory (except itself).
-rw-r--r--combox/file.py59
1 files changed, 53 insertions, 6 deletions
diff --git a/combox/file.py b/combox/file.py
index 2b6ac3c..650154a 100644
--- a/combox/file.py
+++ b/combox/file.py
@@ -16,23 +16,69 @@
# along with Combox (see COPYING). If not, see
# <http://www.gnu.org/licenses/>.
+import os
+
from os import path
from sys import exit
from glob import glob
+from combox.config import get_nodedirs
+
+
+def relative_path(p, config):
+ """Returns the relative path to the `p' w. r. t combox directory.
+
+ p: path to a directory or file.
+
+ config: a dictionary that contains configuration information about
+ combox.
-def mk_nodedir(nodes, directory):
"""
- Creates directory `dir' inside the nodes.
+ combox_dir = '%s/' % config['combox_dir']
+
+ return p.partition(combox_dir)[2]
+
+
+def mk_nodedir(directory, config):
"""
+ Creates directory `directory' inside the nodes.
+
+ config: a dictionary containing configuration info about combox.
+ """
+
+ nodes = get_nodedirs(config)
- abs_dir = path.abspath(directory)
+ rel_path = relative_path(directory, config)
for node in nodes:
+ dir_path = path.join(node, rel_path)
try:
- os.mkdir(abs_dir)
- except IOError:
- print "Something wrong. report bug to sravik@bgsu.edu"
+ os.mkdir(dir_path)
+ except OSError, e:
+ print e, "Something wrong. report bug to sravik@bgsu.edu"
+
+
+def purge_dir(p):
+ """
+ Purge everything under the given directory `p'.
+
+ Directory `p' itself is not deleted.
+ """
+
+ p = path.abspath(p)
+
+ if path.isfile(p):
+ return os.remove(p)
+
+ for f in os.listdir(p):
+ f_path = path.join(p, f)
+
+ if path.isfile(f_path):
+ os.remove(f_path)
+ else:
+ purge_dir(f_path)
+ os.rmdir(f_path)
+
def split_data(data, n):
"""Split data into `n' parts and return them as an array.
@@ -111,6 +157,7 @@ def write_shards(shards, directories, shard_basename):
"""Write shards to respective files respective files.
shard: list of strings (ciphers or data).
+
directories: absolute path of directories to which it shards must be written to.
shard_basename: base name of the shard.
"""