You are viewing a plain text version of this content. The canonical link for it is here.
Posted to tashi-commits@incubator.apache.org by rg...@apache.org on 2011/11/15 14:44:26 UTC
svn commit: r1202211 - in /incubator/tashi/trunk/src/tashi:
client/tashi-client.py clustermanager/data/getentoverride.py
rpycservices/rpyctypes.py util.py
Author: rgass
Date: Tue Nov 15 14:44:26 2011
New Revision: 1202211
URL: http://svn.apache.org/viewvc?rev=1202211&view=rev
Log:
adding imageSize to getimages
Modified:
incubator/tashi/trunk/src/tashi/client/tashi-client.py
incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py
incubator/tashi/trunk/src/tashi/rpycservices/rpyctypes.py
incubator/tashi/trunk/src/tashi/util.py
Modified: incubator/tashi/trunk/src/tashi/client/tashi-client.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/client/tashi-client.py?rev=1202211&r1=1202210&r2=1202211&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/client/tashi-client.py (original)
+++ incubator/tashi/trunk/src/tashi/client/tashi-client.py Tue Nov 15 14:44:26 2011
@@ -207,7 +207,7 @@ def getMyInstances():
# Used to define default views on functions and to provide extra functionality (getVmLayout)
extraViews = {
'getSlots': (getSlots, None),
-'getImages': (None, ['id', 'imageName']),
+'getImages': (None, ['id', 'imageName', 'imageSize']),
'copyImage': (None, None),
'createMany': (createMany, ['id', 'hostId', 'name', 'user', 'state', 'disk', 'memory', 'cores']),
'destroyMany': (destroyMany, None),
Modified: incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py?rev=1202211&r1=1202210&r2=1202211&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py (original)
+++ incubator/tashi/trunk/src/tashi/clustermanager/data/getentoverride.py Tue Nov 15 14:44:26 2011
@@ -20,7 +20,7 @@ import time
import os
from tashi.rpycservices.rpyctypes import User, LocalImages
from tashi.clustermanager.data import DataInterface
-from tashi.util import instantiateImplementation
+from tashi.util import instantiateImplementation, humanReadable
class GetentOverride(DataInterface):
def __init__(self, config):
@@ -74,7 +74,7 @@ class GetentOverride(DataInterface):
for i in self.dfs.list("images"):
myFile = self.dfs.getLocalHandle("images/" + i)
if os.path.isfile(myFile):
- image = LocalImages(d={'id':count, 'imageName':i})
+ image = LocalImages(d={'id':count, 'imageName':i, 'imageSize':humanReadable(self.dfs.stat(myFile)[6])})
myList.append(image)
count += 1
return myList
Modified: incubator/tashi/trunk/src/tashi/rpycservices/rpyctypes.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/rpycservices/rpyctypes.py?rev=1202211&r1=1202210&r2=1202211&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/rpycservices/rpyctypes.py (original)
+++ incubator/tashi/trunk/src/tashi/rpycservices/rpyctypes.py Tue Nov 15 14:44:26 2011
@@ -148,6 +148,7 @@ class LocalImages(object):
self.id = None
self.userId = None
self.imageName = None
+ self.imageSize = None
self.isPublic = None
self.explicitUserIds = None
if isinstance(d, dict):
@@ -157,6 +158,8 @@ class LocalImages(object):
self.userId = d['userId']
if 'imageName' in d:
self.imageName = d['imageName']
+ if 'imageSize' in d:
+ self.imageSize = d['imageSize']
if 'isPublic' in d:
self.isPublic = d['isPublic']
if 'explicitUserIds' in d:
Modified: incubator/tashi/trunk/src/tashi/util.py
URL: http://svn.apache.org/viewvc/incubator/tashi/trunk/src/tashi/util.py?rev=1202211&r1=1202210&r2=1202211&view=diff
==============================================================================
--- incubator/tashi/trunk/src/tashi/util.py (original)
+++ incubator/tashi/trunk/src/tashi/util.py Tue Nov 15 14:44:26 2011
@@ -289,5 +289,14 @@ def enumToStringDict(cls):
d[cls.__dict__[i]] = i
return d
+def humanReadable(size):
+ suffixes = [("B",2**10), ("K",2**20), ("M",2**30), ("G",2**40), ("T",2**50)]
+ for suf, lim in suffixes:
+ if size > lim:
+ continue
+ else:
+ return round(size/float(lim/2**10),2).__str__()+suf
+
+
vmStates = enumToStringDict(InstanceState)
hostStates = enumToStringDict(HostState)