1
0
mirror of https://github.com/dkmstr/openuds.git synced 2025-03-13 08:58:35 +03:00

Merge remote-tracking branch 'origin/v1.7'

This commit is contained in:
Adolfo Gómez García 2015-05-06 05:47:23 +02:00
commit dad83c5c50
4 changed files with 25 additions and 9 deletions

View File

@ -515,7 +515,7 @@ class gui(object):
'''
Checks that the value is true
'''
return self.value == gui.TRUE
return self.value is True or self.value == gui.TRUE
class ChoiceField(InputField):
'''

View File

@ -35,6 +35,7 @@ from django.utils.translation import ugettext_noop as _, ugettext
from uds.core.services import Service
from .OVirtPublication import OVirtPublication
from .OVirtLinkedDeployment import OVirtLinkedDeployment
from .Helpers import oVirtHelpers
from uds.core.ui import gui
@ -42,8 +43,6 @@ import logging
logger = logging.getLogger(__name__)
from .Helpers import oVirtHelpers
class OVirtLinkedService(Service):
'''
@ -150,6 +149,9 @@ class OVirtLinkedService(Service):
if int(self.memoryGuaranteed.value) > int(self.memory.value):
self.memoryGuaranteed.value = self.memory.value
self.ov.value = self.parent().serialize()
self.ev.value = self.parent().env().key()
def initGui(self):
'''
Loads required values inside

View File

@ -48,7 +48,7 @@ import logging
logger = logging.getLogger(__name__)
__updated__ = '2015-01-22'
__updated__ = '2015-05-06'
CACHE_TIME_FOR_SERVER = 1800
@ -100,17 +100,20 @@ class Provider(ServiceProvider):
password = gui.PasswordField(lenth=32, label=_('Password'), order=3, tooltip=_('Password of the user of XenServer'), required=True)
macsRange = gui.TextField(length=36, label=_('Macs range'), defvalue='02:46:00:00:00:00-02:46:00:FF:FF:FF', order=4, rdonly=True,
tooltip=_('Range of valid macs for created machines'), required=True)
verifySSL = gui.CheckBoxField(label=_('Verify Certificate'), order=5,
tooltip=_('If selected, certificate will be checked against system valid certificate providers'), required=True)
# XenServer engine, right now, only permits a connection to one server and only one per instance
# If we want to connect to more than one server, we need keep locked access to api, change api server, etc..
# We have implemented an "exclusive access" client that will only connect to one server at a time (using locks)
# and this way all will be fine
def __getApi(self):
def __getApi(self, force=False):
'''
Returns the connection API object for XenServer (using XenServersdk)
'''
if self._api is None:
self._api = XenServer(self.host.value, '443', self.username.value, self.password.value, True)
logger.debug('API verifySSL: {} {}'.format(self.verifySSL.value, self.verifySSL.isTrue()))
if self._api is None or force:
self._api = XenServer(self.host.value, '443', self.username.value, self.password.value, True, self.verifySSL.isTrue())
return self._api
# There is more fields type, but not here the best place to cover it

View File

@ -30,6 +30,8 @@ from __future__ import unicode_literals
import six
import XenAPI
import xmlrpclib
import ssl
import logging
@ -97,10 +99,11 @@ class XenPowerState(object):
class XenServer(object):
def __init__(self, host, port, username, password, useSSL=True):
def __init__(self, host, port, username, password, useSSL=False, verifySSL=False):
self._originalHost = self._host = host
self._port = unicode(port)
self._useSSL = useSSL and True or False
self._verifySSL = verifySSL and True or False
self._protocol = 'http' + (self._useSSL and 's' or '') + '://'
self._url = None
self._loggedIn = False
@ -148,7 +151,15 @@ class XenServer(object):
def login(self, switchToMaster=False):
try:
self._url = self._protocol + self._host + ':' + self._port
self._session = XenAPI.Session(self._url)
# On python 2.7.9, HTTPS is verified by default,
if self._useSSL and self._verifySSL is False:
context = ssl.SSLContext(ssl.PROTOCOL_SSLv23) # @UndefinedVariable
context.verify_mode = ssl.CERT_NONE
transport = xmlrpclib.SafeTransport(context=context)
else:
transport = None
self._session = XenAPI.Session(self._url, transport=transport)
self._session.xenapi.login_with_password(self._username, self._password)
self._loggedIn = True
self._apiVersion = self._session.API_version