#750: Using PEP 8 Style Guide for Python in new module; implementing basic {{{getconfig}}} operation.

oglive^2
Ramón M. Gómez 2018-06-18 20:47:35 +02:00
parent 983213c9df
commit be334a5c17
5 changed files with 71 additions and 97 deletions

View File

@ -0,0 +1,7 @@
#!/bin/bash
cd $(dirname "$0")
# Build package
dpkg-buildpackage -b -d

View File

@ -1,11 +0,0 @@
#!/bin/bash
cd $(dirname "$0")
top=`pwd`
[ -r ../src/VERSION ] && VERSION="$(cat ../src/VERSION)" || VERSION="1.1.0"
RELEASE="1"
# Debian based
dpkg-buildpackage -b -d

View File

@ -30,20 +30,20 @@
""" """
from __future__ import unicode_literals from __future__ import unicode_literals
import threading
import os import os
import platform
import time
import random import random
import shutil import shutil
import string import string
import threading
import time
import urllib import urllib
from opengnsys.workers import ServerWorker from opengnsys import REST
from opengnsys import REST, RESTError
from opengnsys import operations from opengnsys import operations
from opengnsys.log import logger from opengnsys.log import logger
from opengnsys.scriptThread import ScriptExecutorThread from opengnsys.scriptThread import ScriptExecutorThread
from opengnsys.workers import ServerWorker
# Check authorization header decorator # Check authorization header decorator
@ -313,3 +313,17 @@ class OpenGnSysWorker(ServerWorker):
def process_client_popup(self, params): def process_client_popup(self, params):
self.REST.sendMessage('popup_done', params) self.REST.sendMessage('popup_done', params)
def process_getconfig(self, path, get_params, post_params, server):
"""
Returns client configuration
:param path:
:param get_params:
:param post_params:
:param server:
:return: object
"""
logger.debug('Recieved getconfig operation')
self.checkSecret(server)
# Returns raw data
return {'config': operations.get_disk_config()}

View File

@ -26,17 +26,14 @@
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
''' """
@author: Ramón M. Gómez, ramongomez at us dot es @author: Ramón M. Gómez, ramongomez at us dot es
''' """
from __future__ import unicode_literals from __future__ import unicode_literals
import socket import socket
import platform import platform
import fcntl import fcntl
import os
import ctypes # @UnusedImport
import ctypes.util
import subprocess import subprocess
import struct import struct
import array import array
@ -44,37 +41,11 @@ import six
from opengnsys import utils from opengnsys import utils
def checkLockedPartition(sync=False):
'''
Decorator to check if a partition is locked
'''
def outer(fnc):
def wrapper(*args, **kwargs):
partId = 'None'
try:
this, path, getParams, postParams = args # @UnusedVariable
partId = postParams['disk'] + postParams['part']
if this.locked.get(partId, False):
this.locked[partId] = True
fnc(*args, **kwargs)
else:
return 'partition locked'
except Exception as e:
this.locked[partId] = False
return 'error {}'.format(e)
finally:
if sync is True:
this.locked[partId] = False
logger.debug('Lock status: {} {}'.format(fnc, this.locked))
return wrapper
return outer
def _getMacAddr(ifname): def _getMacAddr(ifname):
''' """
Returns the mac address of an interface Returns the mac address of an interface
Mac is returned as unicode utf-8 encoded Mac is returned as unicode utf-8 encoded
''' """
if isinstance(ifname, list): if isinstance(ifname, list):
return dict([(name, _getMacAddr(name)) for name in ifname]) return dict([(name, _getMacAddr(name)) for name in ifname])
if isinstance(ifname, six.text_type): if isinstance(ifname, six.text_type):
@ -88,10 +59,10 @@ def _getMacAddr(ifname):
def _getIpAddr(ifname): def _getIpAddr(ifname):
''' """
Returns the ip address of an interface Returns the ip address of an interface
Ip is returned as unicode utf-8 encoded Ip is returned as unicode utf-8 encoded
''' """
if isinstance(ifname, list): if isinstance(ifname, list):
return dict([(name, _getIpAddr(name)) for name in ifname]) return dict([(name, _getIpAddr(name)) for name in ifname])
if isinstance(ifname, six.text_type): if isinstance(ifname, six.text_type):
@ -108,9 +79,9 @@ def _getIpAddr(ifname):
def _getInterfaces(): def _getInterfaces():
''' """
Returns a list of interfaces names coded in utf-8 Returns a list of interfaces names coded in utf-8
''' """
max_possible = 128 # arbitrary. raise if needed. max_possible = 128 # arbitrary. raise if needed.
space = max_possible * 16 space = max_possible * 16
if platform.architecture()[0] == '32bit': if platform.architecture()[0] == '32bit':
@ -134,32 +105,32 @@ def _getInterfaces():
def _getIpAndMac(ifname): def _getIpAndMac(ifname):
ip, mac = _getIpAddr(ifname), _getMacAddr(ifname) ip, mac = _getIpAddr(ifname), _getMacAddr(ifname)
return (ip, mac) return ip, mac
def _exec_ogcommand(self, ogcmd): def _exec_ogcommand(ogcmd):
''' """
Loads OpenGnsys environment variables, executes the command and returns the result Loads OpenGnsys environment variables, executes the command and returns the result
''' """
ret = subprocess.check_output('source /opt/opengnsys/etc/preinit/loadenviron.sh >/dev/null; {}'.format(ogcmd), shell=True) ret = subprocess.check_output(ogcmd, shell=True)
return ret return ret
def getComputerName(): def getComputerName():
''' """
Returns computer name, with no domain Returns computer name, with no domain
''' """
return socket.gethostname().split('.')[0] return socket.gethostname().split('.')[0]
def getNetworkInfo(): def getNetworkInfo():
''' """
Obtains a list of network interfaces Obtains a list of network interfaces
@return: A "generator" of elements, that are dict-as-object, with this elements: :return: A "generator" of elements, that are dict-as-object, with this elements:
name: Name of the interface name: Name of the interface
mac: mac of the interface mac: mac of the interface
ip: ip of the interface ip: ip of the interface
''' """
for ifname in _getInterfaces(): for ifname in _getInterfaces():
ip, mac = _getIpAndMac(ifname) ip, mac = _getIpAndMac(ifname)
if mac != '00:00:00:00:00:00': # Skips local interfaces if mac != '00:00:00:00:00:00': # Skips local interfaces
@ -170,56 +141,44 @@ def getDomainName():
return '' return ''
def getOgliveVersion(): def get_oglive_version():
lv = platform.linux_distribution() """
return lv[0] + ', ' + lv[1] Returns ogLive Kernel version and architecture
:return: kernel version
"""
kv = platform.os.uname()
return kv[2] + ', ' + kv[4]
def reboot(): def reboot():
''' """
Simple reboot using OpenGnsys script Simple reboot using OpenGnsys script
''' """
# Workaround for dummy thread # Workaround for dummy thread
if six.PY3 is False: if six.PY3 is False:
import threading import threading
threading._DummyThread._Thread__stop = lambda x: 42 threading._DummyThread._Thread__stop = lambda x: 42
_exec_ogcommand('/opt/opengnsys/scripts/reboot', shell=True) _exec_ogcommand('/opt/opengnsys/scripts/reboot')
def poweroff(): def poweroff():
''' """
Simple poweroff using OpenGnsys script Simple poweroff using OpenGnsys script
''' """
# Workaround for dummy thread # Workaround for dummy thread
if six.PY3 is False: if six.PY3 is False:
import threading import threading
threading._DummyThread._Thread__stop = lambda x: 42 threading._DummyThread._Thread__stop = lambda x: 42
_exec_ogcommand('/opt/opengnsys/scripts/poweroff', shell=True) _exec_ogcommand('/opt/opengnsys/scripts/poweroff')
def logoff(): def get_disk_config():
pass """
Returns disk configuration
Warning: this operation may take some time
def renameComputer(newName): """
pass
def joinDomain(domain, ou, account, password, executeInOneStep=False):
pass
def changeUserPassword(user, oldPassword, newPassword):
pass
def diskconfig():
'''
Returns disk configuration.
Warning: this operation may take some time.
'''
try: try:
_exec_ogcommand('/opt/opengnsys/interfaceAdm/getConfiguration') _exec_ogcommand('/opt/opengnsys/interfaceAdm/getConfiguration')
# Returns content of configuration file. # Returns content of configuration file.

View File

@ -27,7 +27,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
""" """
@author: Adolfo Gómez, dkmaster at dkmon dot com @author: Ramón M. Gómez, ramongomez at us dot es
""" """
# pylint: disable=unused-wildcard-import,wildcard-import # pylint: disable=unused-wildcard-import,wildcard-import
@ -46,6 +46,11 @@ else:
os_type = 'MacOS' os_type = 'MacOS'
os_version = getMacosVersion().replace(',', '') os_version = getMacosVersion().replace(',', '')
else: else:
from .linux.operations import * # @UnusedWildImport if os.path.exists('/scripts/oginit'):
os_type = 'Linux' from .oglive.operations import * # @UnusedWildImport
os_version = getLinuxVersion() os_type = 'ogLive'
os_version = get_oglive_version()
else:
from .linux.operations import * # @UnusedWildImport
os_type = 'Linux'
os_version = getLinuxVersion().replace(',', '')