mirror of
https://github.com/dkmstr/openuds.git
synced 2024-12-24 21:34:41 +03:00
Added isAvailable for more services
This commit is contained in:
parent
0208c9b3f9
commit
7fc51ce513
@ -39,7 +39,7 @@ from django.utils.translation import gettext_noop as _
|
||||
from uds.core.util import os_detector as OsDetector
|
||||
from uds.core import Module
|
||||
from uds.core.transports import protocols
|
||||
from uds.core.util import connection
|
||||
from uds.core.util import net
|
||||
|
||||
# Not imported at runtime, just for type checking
|
||||
if typing.TYPE_CHECKING:
|
||||
@ -116,14 +116,14 @@ class Transport(Module):
|
||||
userService: 'models.UserService',
|
||||
ip: str,
|
||||
port: typing.Union[str, int],
|
||||
timeout: int = 4,
|
||||
timeout: float = 4,
|
||||
) -> bool:
|
||||
proxy: typing.Optional[
|
||||
'models.Proxy'
|
||||
] = userService.deployed_service.service.proxy
|
||||
if proxy:
|
||||
return proxy.doTestServer(ip, port, timeout)
|
||||
return connection.testServer(ip, str(port), timeout)
|
||||
return net.testConnection(ip, str(port), timeout)
|
||||
|
||||
def isAvailableFor(self, userService: 'models.UserService', ip: str) -> bool:
|
||||
"""
|
||||
|
@ -36,17 +36,5 @@ import socket
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def testServer(host: str, port: typing.Union[int, str], timeOut: float = 4) -> bool:
|
||||
try:
|
||||
logger.debug(
|
||||
'Checking connection to %s:%s with %s seconds timeout', host, port, timeOut
|
||||
)
|
||||
sock = socket.create_connection((host, int(port)), timeOut)
|
||||
sock.close()
|
||||
except Exception as e:
|
||||
logger.debug(
|
||||
'Exception checking %s:%s with %s timeout: %s', host, port, timeOut, e
|
||||
)
|
||||
return False
|
||||
return True
|
||||
# import Alias
|
||||
from .net import testConnection as testServer
|
||||
|
@ -88,19 +88,19 @@ if not _libfuse_path:
|
||||
def Reg32GetValue(rootkey, keyname, valname):
|
||||
key, val = None, None
|
||||
try:
|
||||
key = reg.OpenKey(
|
||||
rootkey, keyname, 0, reg.KEY_READ | reg.KEY_WOW64_32KEY
|
||||
key = reg.OpenKey( # type: ignore
|
||||
rootkey, keyname, 0, reg.KEY_READ | reg.KEY_WOW64_32KEY # type: ignore
|
||||
)
|
||||
val = str(reg.QueryValueEx(key, valname)[0])
|
||||
val = str(reg.QueryValueEx(key, valname)[0]) # type: ignore
|
||||
except WindowsError: # type: ignore
|
||||
pass
|
||||
finally:
|
||||
if key is not None:
|
||||
reg.CloseKey(key)
|
||||
reg.CloseKey(key) # type: ignore
|
||||
return val
|
||||
|
||||
_libfuse_path = Reg32GetValue(
|
||||
reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WinFsp", r"InstallDir"
|
||||
reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WinFsp", r"InstallDir" # type: ignore
|
||||
)
|
||||
if _libfuse_path:
|
||||
_libfuse_path += r"bin\winfsp-%s.dll" % (
|
||||
@ -713,7 +713,7 @@ class FuseOperations(ctypes.Structure):
|
||||
|
||||
|
||||
def time_of_timespec(ts: c_timespec, use_ns=False):
|
||||
return ts.tv_sec * 10 ** 9 + ts.tv_nsec
|
||||
return ts.tv_sec * 10 ** 9 + ts.tv_nsec # type: ignore
|
||||
|
||||
|
||||
def set_st_attrs(st: c_stat, attrs: typing.Mapping[str, int]) -> None:
|
||||
|
@ -31,6 +31,7 @@
|
||||
@author: Adolfo Gómez, dkmaster at dkmon dot com
|
||||
"""
|
||||
import re
|
||||
import socket
|
||||
import logging
|
||||
import typing
|
||||
|
||||
@ -231,3 +232,18 @@ def isValidFQDN(value: str) -> bool:
|
||||
|
||||
def isValidHost(value: str):
|
||||
return isValidIp(value) or isValidFQDN(value)
|
||||
|
||||
|
||||
def testConnection(host: str, port: typing.Union[int, str], timeOut: float = 4) -> bool:
|
||||
try:
|
||||
logger.debug(
|
||||
'Checking connection to %s:%s with %s seconds timeout', host, port, timeOut
|
||||
)
|
||||
sock = socket.create_connection((host, int(port)), timeOut)
|
||||
sock.close()
|
||||
except Exception as e:
|
||||
logger.debug(
|
||||
'Exception checking %s:%s with %s timeout: %s', host, port, timeOut, e
|
||||
)
|
||||
return False
|
||||
return True
|
||||
|
@ -38,7 +38,7 @@ from django.db import models
|
||||
from uds.core.environment import Environment
|
||||
from uds.core.util import log
|
||||
from uds.core.util import unique
|
||||
from uds.core.util import connection
|
||||
from uds.core.util import net
|
||||
|
||||
from .managed_object_model import ManagedObjectModel
|
||||
from .tag import TaggingMixin
|
||||
@ -188,11 +188,11 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore
|
||||
return self.provider.isInMaintenance() if self.provider else True
|
||||
|
||||
def testServer(
|
||||
self, host: str, port: typing.Union[str, int], timeout: int = 4
|
||||
self, host: str, port: typing.Union[str, int], timeout: float = 4
|
||||
) -> bool:
|
||||
if self.proxy:
|
||||
return self.proxy.doTestServer(host, port, timeout)
|
||||
return connection.testServer(host, port, timeout)
|
||||
return net.testConnection(host, port, timeout)
|
||||
|
||||
def __str__(self) -> str:
|
||||
return '{} of type {} (id:{})'.format(self.name, self.data_type, self.id)
|
||||
|
@ -675,7 +675,7 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore
|
||||
|
||||
return 100 * cachedValue // maxs
|
||||
|
||||
def testServer(self, host, port, timeout=4) -> bool:
|
||||
def testServer(self, host: str, port: typing.Union[str, int], timeout: float=4) -> bool:
|
||||
return self.service.testServer(host, port, timeout)
|
||||
|
||||
# parent accessors
|
||||
|
@ -33,14 +33,14 @@ import logging
|
||||
import typing
|
||||
|
||||
from django.utils.translation import gettext_noop as _
|
||||
|
||||
from uds.core import services
|
||||
from uds.core.ui import gui
|
||||
from uds.core.util import validators
|
||||
|
||||
from .service import OVirtLinkedService
|
||||
from uds.core.util.cache import Cache
|
||||
from uds.core.util.decorators import allowCache
|
||||
|
||||
from . import client
|
||||
from .service import OVirtLinkedService
|
||||
|
||||
# Not imported at runtime, just for type checking
|
||||
if typing.TYPE_CHECKING:
|
||||
@ -508,6 +508,13 @@ class OVirtProvider(
|
||||
) -> typing.Optional[typing.MutableMapping[str, typing.Any]]:
|
||||
return self.__getApi().getConsoleConnection(machineId)
|
||||
|
||||
@allowCache('reachable', Cache.SHORT_VALIDITY)
|
||||
def isAvailable(self) -> bool:
|
||||
"""
|
||||
Check if aws provider is reachable
|
||||
"""
|
||||
return self.testConnection()
|
||||
|
||||
@staticmethod
|
||||
def test(env: 'Environment', data: 'Module.ValuesType') -> typing.List[typing.Any]:
|
||||
"""
|
||||
|
@ -466,3 +466,6 @@ class OVirtLinkedService(Service): # pylint: disable=too-many-public-methods
|
||||
self, machineId: str
|
||||
) -> typing.Optional[typing.MutableMapping[str, typing.Any]]:
|
||||
return self.parent().getConsoleConnection(machineId)
|
||||
|
||||
def isAvailable(self) -> bool:
|
||||
return self.parent().isAvailable()
|
||||
|
@ -40,8 +40,6 @@ from django.db import transaction
|
||||
from uds.models import getSqlDatetimeAsUnix
|
||||
from uds.core.ui import gui
|
||||
from uds.core.util import log
|
||||
from uds.core.util import connection
|
||||
from uds.core.util import config
|
||||
from uds.core.util import net
|
||||
from uds.core.services import types as serviceTypes
|
||||
|
||||
@ -271,7 +269,7 @@ class IPMachinesService(IPServiceBase):
|
||||
self._port > 0 and not wolENABLED
|
||||
): # If configured WOL, check is a nonsense
|
||||
if (
|
||||
connection.testServer(theIP, self._port, timeOut=0.5)
|
||||
net.testConnection(theIP, self._port, timeOut=0.5)
|
||||
is False
|
||||
):
|
||||
# Log into logs of provider, so it can be "shown" on services logs
|
||||
|
@ -36,6 +36,8 @@ from uds.core import services
|
||||
from uds.core.ui import gui
|
||||
from uds.core.util import validators
|
||||
from uds.core.util.unique_id_generator import UniqueIDGenerator
|
||||
from uds.core.util.cache import Cache
|
||||
from uds.core.util.decorators import allowCache
|
||||
|
||||
from .service import ProxmoxLinkedService
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user