+++ /dev/null
-# low_backup module
-# Authors: Nicholas Alexander && Otacilio Lacerda
-
-import commands
-import os
-
-BATTERY = os.environ['BATTERY_PATH'] + 'battery.py'
-EXECUTE = "./"
-USER_HOST = "root"
-
-def queryProductInformation(deviceIp):
- """ Update device name by getting device product name and os version
- informations.
-
- Use osso-product-info command to get the device and device OS short
- names and set each to it correspondent attribute.
-
- """
-
- info = commands.getoutput("ssh -l %s %s osso-product-info" %
- (USER_HOST, deviceIp))
-
- deviceName = _extractOssoInfo(info, "shortName")
- deviceOs = _extractOssoInfo(info, "shortOS")
- ossoVersion = _extractOssoInfo(info, "ossoVersion")
- if deviceName != -1 and deviceOs != -1:
- deviceName = deviceName.strip("'")
- deviceOs = deviceOs.strip("'")
- else:
- deviceName = "NO INFORMATION"
- deviceOs = "NO INFORMATION"
-
- return (deviceName, deviceOs, ossoVersion)
-
-def queryDeviceStorage(deviceIp):
- """Returns a list of tuples, each tuple representing a memory status.
-
- Tuples are in this format: (total, used)
-
- Returns:
- mem_infos -- List with all tuples holding memory info
-
- """
- info = commands.getoutput("ssh -l root %s df" %
- deviceIp).splitlines()
- mem_infos = [-1, -1, -1]
- for line in info:
- if line.find("/dev/mtdblock4") != -1:
- if line[-1] == "/":
- total_used = _get_memory(line, "/dev/mtdblock4")
- mem_infos.pop(0)
- mem_infos.insert(0, total_used)
-
- elif line.find("/media/mmc1") != -1:
- total_used = _get_memory(line, "/dev/mmcblk0p1")
- mem_infos.pop(1)
- mem_infos.insert(1, total_used)
-
- elif line.find("/media/mmc2") != -1:
- total_used = _get_memory(line, "/dev/mmcblk1p1")
- mem_infos.pop(2)
- mem_infos.insert(2, total_used)
-
- return mem_infos
-
-def queryDeviceBattery(deviceIp):
- """Return device current battery status in a string.
-
- This method runs a python script in the device that returns the battery
- status, this status is represented by one string with the percentage of
- battery current charge or the number -1 case battery is charging.
-
- Returns:
- text -- Text with the battery status
-
- """
-
- # Calls script that returns device battery status
- os.system("scp %s %s@%s:/tmp" % (BATTERY, USER_HOST, deviceIp))
- battery_status = commands.getoutput("ssh -l %s %s /usr/bin/python \
- /tmp/battery.py" % (USER_HOST,
- deviceIp))
- return battery_status
-
-def _get_memory(line, path):
- """Retrieve and return total and used memory information from the given
- line using the memory path to retrieve the right information.
-
- This function is to be used with a line of the return of a df command.
-
- Arguments:
- line -- The line where the memory information is
- path -- The path in the begining of the line
-
- Returns:
- total -- Total memory
- used -- Amount of used memory
-
- """
- number_of_infos = 0
- i = len(path) + 1
- while number_of_infos < 2:
- char = line[i]
- if char != " ":
- start = i
- end = line.find(" ", start + 1)
- if number_of_infos == 0:
- total = line[start: end]
- elif number_of_infos == 1:
- used = line[start: end]
- i = end
- number_of_infos += 1
- i += 1
- return total, used
-
-def _extractOssoInfo(osso_string, info_type="name"):
- """Read the osso-product-info command return string and extract the
- needed info depeding on info_type argument.
-
- Arguments:
- osso_string -- The string returned by osso-product-info command
- info_type -- the kind of information to b extracted, can be:
- name - returns device full name (default)
- OS - returns device OS full name
- shortName - returns device short name
- shortOS - returns device short OS name
-
- Returns:
- info -- String with the needed information
- -1 -- Case the information couldn't be found in the given string
-
- """
- detailed_type = ""
- if info_type == "shortName":
- detailed_type = "OSSO_PRODUCT_NAME"
- elif info_type == "shortOS":
- detailed_type = "OSSO_PRODUCT_RELEASE_NAME"
- elif info_type == "name":
- detailed_type = "OSSO_PRODUCT_FULL_NAME"
- elif info_type == "OS":
- detailed_type = "OSSO_PRODUCT_RELEASE_FULL_NAME"
- elif info_type == "ossoVersion":
- detailed_type = "OSSO_VERSION"
- else:
- detailed_type = "OSSO_PRODUCT_FULL_NAME"
-
- types_list = osso_string.splitlines()
- info = -1
- for type_line in types_list:
- if type_line.startswith(detailed_type):
- # The second argument is the information itself since informations
- # are displayed like: OSSO_PRODUCT_RELEASE_NAME='OS 2008'
- info = type_line.split("=")[1]
-
- return info