forked from shaba/openuds
Refactoring fixing some code issues
This commit is contained in:
parent
240be81f26
commit
55dd16d508
1
.gitignore
vendored
1
.gitignore
vendored
@ -7,6 +7,7 @@
|
||||
*_enterprise.*
|
||||
.settings/
|
||||
.ipynb_checkpoints
|
||||
.idea/
|
||||
|
||||
# Debian buildings
|
||||
*.debhelper*
|
||||
|
@ -13,16 +13,22 @@ middleware here, or combine a Django application with an application of another
|
||||
framework.
|
||||
|
||||
"""
|
||||
import sys
|
||||
reload(sys)
|
||||
sys.setdefaultencoding('UTF-8') # @UndefinedVariable
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
|
||||
import six
|
||||
import os
|
||||
|
||||
if six.PY2:
|
||||
import sys
|
||||
|
||||
# noinspection PyCompatibility
|
||||
reload(sys)
|
||||
sys.setdefaultencoding('UTF-8') # @UndefinedVariable
|
||||
|
||||
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings")
|
||||
|
||||
# This application object is used by any WSGI server configured to use this
|
||||
# file. This includes Django's development server, if the WSGI_APPLICATION
|
||||
# setting points here.
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
@ -1,4 +1,10 @@
|
||||
import sys
|
||||
reload(sys)
|
||||
import six
|
||||
|
||||
sys.setdefaultencoding('utf-8') # @UndefinedVariable
|
||||
if six.PY2:
|
||||
import sys
|
||||
|
||||
# noinspection PyCompatibility
|
||||
reload(sys)
|
||||
|
||||
# noinspection PyUnresolvedReferences
|
||||
sys.setdefaultencoding('utf-8') # @UndefinedVariable
|
||||
|
@ -150,7 +150,7 @@ class RegexLdap(auths.Authenticator):
|
||||
for line in field.splitlines():
|
||||
equalPos = line.find('=')
|
||||
if equalPos == -1:
|
||||
line = line + '=(.*)'
|
||||
line += '=(.*)'
|
||||
equalPos = line.find('=')
|
||||
attr, pattern = (line[:equalPos], line[equalPos + 1:])
|
||||
attr = attr.lower()
|
||||
|
@ -305,4 +305,4 @@ class SampleAuth(auths.Authenticator):
|
||||
this this kind of things) modify the userName to a new one, the original plus '-1'
|
||||
'''
|
||||
usrData['real_name'] = usrData['name'] + ' ' + usrData['name']
|
||||
usrData['name'] = usrData['name'] + '-1'
|
||||
usrData['name'] += '-1'
|
||||
|
@ -197,7 +197,7 @@ class Authenticator(Module):
|
||||
|
||||
user param is a database user object
|
||||
'''
|
||||
if self.isExternalSource == True:
|
||||
if self.isExternalSource:
|
||||
groupsManager = GroupsManager(self._dbAuth)
|
||||
self.getGroups(user.name, groupsManager)
|
||||
user.groups = [g.dbGroup() for g in groupsManager.getValidGroups()]
|
||||
|
@ -35,6 +35,7 @@ from __future__ import unicode_literals
|
||||
from uds.core.services.BaseServiceProvider import ServiceProvider
|
||||
from uds.core.util.Config import GlobalConfig
|
||||
|
||||
import six
|
||||
import logging
|
||||
|
||||
__updated__ = '2016-02-26'
|
||||
@ -85,7 +86,7 @@ class ClusteredServiceProvider(ServiceProvider):
|
||||
maxCpuLoad = GlobalConfig.CLUSTER_MIGRATE_CPULOAD.getInt(True)
|
||||
minFreeMemPercent = GlobalConfig.CLUSTER_MIGRATE_MEMORYLOAD.getInt(True)
|
||||
|
||||
for nodeName, nodeStats in nodesStats.iteritems():
|
||||
for nodeName, nodeStats in six.iteritems(nodesStats):
|
||||
if nodeStats['freeMemory'] is None or nodeStats['totalMemory'] is None or nodeStats['cpuLoad'] is None:
|
||||
continue
|
||||
freeMemPercent = (nodeStats['freeMemory'] * 100) / nodeStats['totalMemory']
|
||||
@ -123,7 +124,7 @@ class ClusteredServiceProvider(ServiceProvider):
|
||||
maxCpuLoad = GlobalConfig.CLUSTER_ELEGIBLE_CPULOAD.getInt(True)
|
||||
minFreeMemPercent = GlobalConfig.CLUSTER_ELEGIBLE_MEMORYLOAD.getInt(True)
|
||||
|
||||
for nodeName, nodeStats in nodesStats.iteritems():
|
||||
for nodeName, nodeStats in six.iteritems(nodesStats):
|
||||
if nodeStats['freeMemory'] is None or nodeStats['totalMemory'] is None or nodeStats['cpuLoad'] is None:
|
||||
continue
|
||||
freeMemPercent = (nodeStats['freeMemory'] * 100) / nodeStats['totalMemory']
|
||||
@ -144,7 +145,7 @@ class ClusteredServiceProvider(ServiceProvider):
|
||||
def getClusterBestNodeForDeploy(self):
|
||||
|
||||
nodesStats = self.clusterStats()
|
||||
nodes = [name for name in nodesStats.iterkeys()]
|
||||
nodes = [name for name in six.iteritems(nodesStats)]
|
||||
|
||||
def getNodeStatsKey(name):
|
||||
ns = nodesStats[name]
|
||||
|
@ -71,9 +71,9 @@ class FileStorage(Storage):
|
||||
|
||||
self.cache._cache.flush_all() # On start, ensures that cache is empty to avoid surprises
|
||||
|
||||
# noinspection PyArgumentList
|
||||
Storage.__init__(self, *args, **kwargs)
|
||||
|
||||
|
||||
def get_valid_name(self, name):
|
||||
return name.replace('\\', os.path.sep)
|
||||
|
||||
|
@ -46,11 +46,15 @@ logger = logging.getLogger(__name__)
|
||||
|
||||
# Decorator that protects pages that needs at least a browser version
|
||||
# Default is to deny IE < 9
|
||||
def denyBrowsers(browsers=['ie<9'], errorResponse=lambda request: errors.errorView(request, errors.BROWSER_NOT_SUPPORTED)):
|
||||
def denyBrowsers(browsers=None, errorResponse=lambda request: errors.errorView(request, errors.BROWSER_NOT_SUPPORTED)):
|
||||
'''
|
||||
Decorator to set protection to access page
|
||||
Look for samples at uds.core.web.views
|
||||
'''
|
||||
|
||||
if browsers is None:
|
||||
browsers = ['ie<9']
|
||||
|
||||
def wrap(view_func):
|
||||
@wraps(view_func)
|
||||
def _wrapped_view(request, *args, **kwargs):
|
||||
|
@ -64,7 +64,7 @@ def longToIp(n):
|
||||
while d > 0:
|
||||
m, n = divmod(n, d)
|
||||
q.append(str(m))
|
||||
d = d / 256
|
||||
d /= 256
|
||||
|
||||
return '.'.join(q)
|
||||
except:
|
||||
|
@ -165,9 +165,9 @@ class ClusterMigrationTask(DelayedTask):
|
||||
logger.debug("uService instance class: {0}".format(ci.__class__))
|
||||
state = ci.checkState()
|
||||
ClusterMigrationTask.checkAndUpdateState(uService, ci, state)
|
||||
except UserService.DoesNotExist, e:
|
||||
except UserService.DoesNotExist as e:
|
||||
logger.error('User service not found (erased from database?) {0} : {1}'.format(e.__class__, e))
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
# Exception caught, mark service as errored
|
||||
logger.exception("Error {0}, {1} :".format(e.__class__, e))
|
||||
if uService is not None:
|
||||
|
@ -83,7 +83,7 @@ class DeployedServiceRemover(Job):
|
||||
u.cancel()
|
||||
# Nice start of removal, maybe we need to do some limitation later, but there should not be too much services nor publications cancelable at once
|
||||
ds.state = State.REMOVING
|
||||
ds.name = ds.name + ' (removed)'
|
||||
ds.name += ' (removed)'
|
||||
ds.save()
|
||||
|
||||
def continueRemovalOf(self, ds):
|
||||
|
@ -34,9 +34,9 @@ from __future__ import unicode_literals
|
||||
|
||||
from django.http import HttpResponse
|
||||
from uds.models import TicketStore
|
||||
from uds.core.util import net
|
||||
from uds.core.auths import auth
|
||||
|
||||
import six
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -48,7 +48,7 @@ CONTENT_TYPE = 'text/plain'
|
||||
|
||||
|
||||
def dict2resp(dct):
|
||||
return '\r'.join((k + '\t' + v for k, v in dct.iteritems()))
|
||||
return '\r'.join((k + '\t' + v for k, v in six.iteritems(dct)))
|
||||
|
||||
|
||||
@auth.trustedSourceRequired
|
||||
|
@ -225,8 +225,8 @@ class WindowsOsManager(osmanagers.OSManager):
|
||||
'password': password,
|
||||
'domain': domain
|
||||
}
|
||||
ticket = TicketStore.create(creds, validator=None, validity=300, owner=SECURE_OWNER, secure=True)
|
||||
return (ticket, '')
|
||||
ticket = TicketStore.create(creds, validator=None, validity=300) # , owner=SECURE_OWNER, secure=True)
|
||||
return ticket, ''
|
||||
else:
|
||||
return osmanagers.OSManager.processUserPassword(self, service, username, password)
|
||||
|
||||
|
@ -39,4 +39,7 @@ __updated__ = '2015-06-21'
|
||||
|
||||
|
||||
class ListReport(reports.Report):
|
||||
def generate(self):
|
||||
raise NotImplementedError('ListReport generate invoked and not implemented')
|
||||
|
||||
group = _('Lists') # So we can make submenus with reports
|
||||
|
@ -64,6 +64,7 @@ from . import template
|
||||
from . import vm
|
||||
from . import storage
|
||||
|
||||
|
||||
# Decorator
|
||||
def ensureConnected(fnc):
|
||||
def inner(*args, **kwargs):
|
||||
@ -71,19 +72,22 @@ def ensureConnected(fnc):
|
||||
return fnc(*args, **kwargs)
|
||||
return inner
|
||||
|
||||
|
||||
# Result checker
|
||||
def checkResult(lst, parseResult=True):
|
||||
if lst[0] == False:
|
||||
if not lst[0]:
|
||||
raise Exception('OpenNebula error {}: "{}"'.format(lst[2], lst[1]))
|
||||
if parseResult:
|
||||
return xml2dict.parse(lst[1])
|
||||
else:
|
||||
return lst[1]
|
||||
|
||||
|
||||
def asList(element):
|
||||
if isinstance(element, (tuple, list)):
|
||||
return element
|
||||
return (element,)
|
||||
return element,
|
||||
|
||||
|
||||
class OpenNebulaClient(object):
|
||||
def __init__(self, username, password, endpoint):
|
||||
|
@ -65,7 +65,7 @@ def ensureResponseIsValid(response, errMsg=None):
|
||||
if response.ok is False:
|
||||
try:
|
||||
_x, err = response.json().popitem() # Extract any key, in case of error is expected to have only one top key so this will work
|
||||
errMsg = errMsg + ': {message}'.format(**err)
|
||||
errMsg += ': {message}'.format(**err)
|
||||
except Exception:
|
||||
pass # If error geting error message, simply ignore it (will be loged on service log anyway)
|
||||
if errMsg is None:
|
||||
|
@ -37,13 +37,14 @@ from django.utils.translation import ugettext_noop as _
|
||||
from uds.core.util.State import State
|
||||
from uds.core.services import ServiceProvider
|
||||
from uds.core.ui import gui
|
||||
from uds.core.util import validators
|
||||
# from uds.core.util import validators
|
||||
|
||||
from xen_client import XenServer
|
||||
from xen_client import XenFailure, XenFault
|
||||
# from xen_client import XenFailure, XenFault
|
||||
|
||||
from XenLinkedService import XenLinkedService
|
||||
|
||||
import six
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
@ -395,4 +396,4 @@ class Provider(ServiceProvider):
|
||||
xe.testConnection()
|
||||
return [True, _('Connection test successful')]
|
||||
except Exception as e:
|
||||
return [False, _("Connection failed: {0}").format(unicode(e))]
|
||||
return [False, _("Connection failed: {0}").format(six.text_type(e))]
|
||||
|
@ -68,7 +68,6 @@ class NXPassword(object):
|
||||
for i in range(len(p)):
|
||||
sPass += '{}:'.format(ord(p[i]) + i + 1)
|
||||
|
||||
print sPass
|
||||
return sPass
|
||||
|
||||
@staticmethod
|
||||
|
@ -200,6 +200,6 @@ class NXTransport(Transport):
|
||||
}.get(os['OS'])
|
||||
|
||||
if os is None:
|
||||
return super(NXTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/direct.py'.format(os)).format(r=r)
|
||||
|
@ -236,7 +236,7 @@ class TSNXTransport(Transport):
|
||||
}.get(os['OS'])
|
||||
|
||||
if os is None:
|
||||
return super(TSNXTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/tunnel.py'.format(os)).format(
|
||||
r=r,
|
||||
|
@ -145,6 +145,6 @@ class RDPTransport(BaseRDPTransport):
|
||||
}.get(m.os)
|
||||
|
||||
if os is None:
|
||||
return super(RDPTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/direct.py'.format(os)).format(m=m)
|
||||
|
@ -179,6 +179,6 @@ class TRDPTransport(BaseRDPTransport):
|
||||
}.get(m.os)
|
||||
|
||||
if os is None:
|
||||
return super(TRDPTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/tunnel.py'.format(os)).format(m=m)
|
||||
|
@ -83,6 +83,6 @@ class SPICETransport(BaseSpiceTransport):
|
||||
}.get(os.OS)
|
||||
|
||||
if os is None:
|
||||
return super(SPICETransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/direct.py'.format(os)).format(m=m)
|
||||
|
@ -108,6 +108,6 @@ class TSPICETransport(BaseSpiceTransport):
|
||||
}.get(os.OS)
|
||||
|
||||
if os is None:
|
||||
return super(TSPICETransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/tunnel.py'.format(os)).format(m=m)
|
||||
|
@ -140,6 +140,6 @@ class TX2GOTransport(BaseX2GOTransport):
|
||||
}.get(m.os)
|
||||
|
||||
if os is None:
|
||||
return super(BaseX2GOTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/tunnel.py'.format(os)).format(m=m)
|
||||
|
@ -38,6 +38,7 @@ from uds.core.util import tools
|
||||
from .BaseX2GOTransport import BaseX2GOTransport
|
||||
from . import x2gofile
|
||||
|
||||
import six
|
||||
import logging
|
||||
|
||||
__updated__ = '2017-01-30'
|
||||
@ -113,6 +114,6 @@ class X2GOTransport(BaseX2GOTransport):
|
||||
}.get(m.os)
|
||||
|
||||
if os is None:
|
||||
return super(X2GOTransport, self).getUDSTransportScript(self, userService, transport, ip, os, user, password, request)
|
||||
return super(self.__class__, self).getUDSTransportScript(userService, transport, ip, os, user, password, request)
|
||||
|
||||
return self.getScript('scripts/{}/direct.py'.format(os)).format(m=m)
|
||||
|
@ -29,7 +29,7 @@ def updateAuthorizedKeys(user, pubKey):
|
||||
sshFolder = '{}/.ssh'.format(home)
|
||||
if not os.path.exists(sshFolder):
|
||||
try:
|
||||
os.makedirs(sshFolder, 0700)
|
||||
os.makedirs(sshFolder, 0o0700)
|
||||
os.chown(sshFolder, uid, -1)
|
||||
except OSError as e:
|
||||
if e.errno != errno.EEXIST:
|
||||
@ -53,7 +53,7 @@ def updateAuthorizedKeys(user, pubKey):
|
||||
|
||||
# Ensure access is correct
|
||||
os.chown(authorizedKeys, uid, -1)
|
||||
os.chmod(authorizedKeys, 0600)
|
||||
os.chmod(authorizedKeys, 0o0600)
|
||||
|
||||
# Done
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.shortcuts import render_to_response
|
||||
from django.shortcuts import render
|
||||
from django.template import RequestContext
|
||||
|
||||
from django.http import HttpResponseRedirect
|
||||
@ -148,4 +148,4 @@ def error(request, idError):
|
||||
if code != 0:
|
||||
errStr += ' (code {0:04X})'.format(code)
|
||||
|
||||
return render_to_response(theme.template('error.html'), {'errorString': errStr}, context_instance=RequestContext(request))
|
||||
return render(request, theme.template('error.html'), {'errorString': errStr})
|
||||
|
@ -75,7 +75,7 @@ def index(request):
|
||||
:param request: http request
|
||||
'''
|
||||
if request.session.get('ticket') == '1':
|
||||
return webLogout()
|
||||
return webLogout(request)
|
||||
|
||||
# Session data
|
||||
os = request.os
|
||||
@ -222,7 +222,8 @@ def index(request):
|
||||
|
||||
logger.debug('Groups: {}'.format(groups))
|
||||
|
||||
response = render(request,
|
||||
response = render(
|
||||
request,
|
||||
theme.template('index.html'),
|
||||
{
|
||||
'groups': groups,
|
||||
|
Loading…
Reference in New Issue
Block a user