On Tue, May 14, 2013 at 7:26 PM, Helga Velroyen <[email protected]> wrote:

> Hi!
>
>
> On Tue, May 14, 2013 at 7:14 PM, Bernardo Dal Seno <[email protected]>wrote:
>
>> On 14 May 2013 18:30, Helga Velroyen <[email protected]> wrote:
>> > This adds functionality to retrieve disk space information
>> > for file storage. It calls the 'df' tool and parses its
>> > output to extract the total and free amount of disk space
>> > on the disk where the given path is located.
>> > The code is not integrated yet, but thoroughly unit-tested.
>> >
>> > Signed-off-by: Helga Velroyen <[email protected]>
>>
>> > diff --git a/lib/storage/filestorage.py b/lib/storage/filestorage.py
>> > new file mode 100644
>> > index 0000000..47152c8
>> > --- /dev/null
>> > +++ b/lib/storage/filestorage.py
>> > @@ -0,0 +1,78 @@
>> > +#
>> > +#
>> > +
>> > +# Copyright (C) 2011, 2012 Google Inc.
>>
>> This should be just 2013.
>>
>
> Sure.
>
>
>>
>> > +def GetSpaceInfo(path, _parsefn=_ParseDfResult):
>> > +  """Retrieves the free and total space of the device where the file is
>> > +     located.
>> > +
>> > +     @type path: string
>> > +     @param path: Path of the file whose embracing device's capacity is
>> > +       reported.
>> > +     @type: _parse_fn: function
>> > +     @param: _parse_fn: Function that parses the output of the 'df'
>> command;
>> > +       given as parameter to make this code more testable.
>> > +     @return: a JSON dictionary containing 'vg_size' and 'vg_free'
>>
>> Why don't you return just a normal dictionary? Where do you plan to use
>> it?
>>
>
> In the RPC call NodeInfo. You are right, I guess it should be a normal
> dict at this point. I'll send an interdiff.
>
>
>>
>> > diff --git a/test/py/ganeti.storage.filestorage_unittest.py b/test/py/
>> ganeti.storage.filestorage_unittest.py
>> > new file mode 100755
>> > index 0000000..90d5c26
>> > --- /dev/null
>> > +++ b/test/py/ganeti.storage.filestorage_unittest.py
>> > @@ -0,0 +1,96 @@
>> > +#!/usr/bin/python
>> > +#
>> > +
>> > +# Copyright (C) 2006, 2007, 2010, 2012, 2013 Google Inc.
>>
>> Again, just 2013.
>>
>
> Sure.
>
>
>>
>> > +  def testParseDfOutputValidInput(self):
>> > +    """Tests that parsing of the out put of 'df' works correctly.
>>
>> s/out put/output/
>>
>
> Sure.
>
>
>>
>> > +  def testParseDfOutputInvalidInput(self):
>> > +    """Tests that parsing of the out put of 'df' works correctly.
>>
>> s/out put/output/
>>
>
> Sure.
>
>
>>
>> > +if __name__ == "__main__":
>> > +  testutils.GanetiTestProgram()
>> > +
>> > +if __name__ == "__main__":
>> > +  testutils.GanetiTestProgram()
>>
>> These lines are needlessly repeated.
>>
>
> Oops, true.
>
> Cheers,
> Helga
>

Interdiff:

diff --git a/lib/storage/filestorage.py b/lib/storage/filestorage.py
index 6080d8a..92cea2e 100644
--- a/lib/storage/filestorage.py
+++ b/lib/storage/filestorage.py
@@ -1,7 +1,7 @@
 #
 #

-# Copyright (C) 2011, 2012 Google Inc.
+# Copyright (C) 2013 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ def GetSpaceInfo(path, _parsefn=_ParseDfResult):
      @type _parse_fn: function
      @param _parse_fn: Function that parses the output of the 'df' command;
        given as parameter to make this code more testable.
-     @return: a JSON dictionary containing 'vg_size' and 'vg_free'
+     @return: a dictionary containing 'vg_size' and 'vg_free'
   """
   cmd = ['df', '-BM', path]
   result = utils.RunCmd(cmd)
@@ -75,4 +75,4 @@ def GetSpaceInfo(path, _parsefn=_ParseDfResult):
     raise errors.CommandError("Failed to run 'df' command: %s - %s" %
                               (result.fail_reason, result.output))
   (size, free) = _parsefn(result.stdout)
-  return '{"vg_size": %s, "vg_free": %s}' % (size, free)
+  return {"vg_size": size, "vg_free": free}
diff --git a/test/py/ganeti.storage.filestorage_unittest.py b/test/py/
ganeti.storage.filestorage_unittest.py
index 90d5c26..03b03b2 100755
--- a/test/py/ganeti.storage.filestorage_unittest.py
+++ b/test/py/ganeti.storage.filestorage_unittest.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 #

-# Copyright (C) 2006, 2007, 2010, 2012, 2013 Google Inc.
+# Copyright (C) 2013 Google Inc.
 #
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -46,7 +46,7 @@ class TestFileStorageSpaceInfo(unittest.TestCase):
     info = filestorage.GetSpaceInfo("/")

   def testParseDfOutputValidInput(self):
-    """Tests that parsing of the out put of 'df' works correctly.
+    """Tests that parsing of the output of 'df' works correctly.

     """
     valid_df_output = \
@@ -63,7 +63,8 @@ class TestFileStorageSpaceInfo(unittest.TestCase):


   def testParseDfOutputInvalidInput(self):
-    """Tests that parsing of the out put of 'df' works correctly.
+    """Tests that parsing of the output of 'df' works correctly when
invalid
+       input is given.

     """
     invalid_output_header_missing = \
@@ -91,6 +92,3 @@ class TestFileStorageSpaceInfo(unittest.TestCase):

 if __name__ == "__main__":
   testutils.GanetiTestProgram()
-
-if __name__ == "__main__":
-  testutils.GanetiTestProgram()

Reply via email to