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:
commit
dad83c5c50
@ -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):
|
||||
'''
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user