import attr
import sentaku
from cfme.modeling.base import BaseCollection, BaseEntity
from cfme.utils.appliance import Navigatable
from cfme.utils.pretty import Pretty
[docs]class Server(Navigatable, sentaku.modeling.ElementMixin):
def __init__(self, appliance, zone=None, name="EVM", sid=1):
Navigatable.__init__(self, appliance=appliance)
self.zone = zone or appliance.server.zone
self.name = name
self.sid = sid
self.zone.servers.append(self)
self.parent = self.appliance.context
address = sentaku.ContextualMethod()
login = sentaku.ContextualMethod()
login_admin = sentaku.ContextualMethod()
logout = sentaku.ContextualMethod()
update_password = sentaku.ContextualMethod()
logged_in = sentaku.ContextualMethod()
current_full_name = sentaku.ContextualMethod()
current_username = sentaku.ContextualMethod()
@property
def settings(self):
from cfme.configure.configuration.server_settings import ServerInformation
setting = ServerInformation(appliance=self.appliance)
return setting
@property
def authentication(self):
from cfme.configure.configuration.server_settings import AuthenticationSetting
auth_settings = AuthenticationSetting(self.appliance)
return auth_settings
@attr.s
[docs]class Zone(Pretty, BaseEntity, sentaku.modeling.ElementMixin):
""" Configure/Configuration/Region/Zones functionality
Create/Read/Update/Delete functionality.
"""
pretty_attrs = ['name', 'description', 'smartproxy_ip', 'ntp_servers', 'max_scans', 'user']
exists = sentaku.ContextualProperty()
update = sentaku.ContextualMethod()
delete = sentaku.ContextualMethod()
region = attr.ib(default=None)
name = attr.ib(default="default")
description = attr.ib(default="Default Zone")
smartproxy_ip = attr.ib(default=None)
ntp_servers = attr.ib(default=None)
max_scans = attr.ib(default=None)
user = attr.ib(default=None)
# TODO we need to fix this set() addition
def __attrs_post_init__(self):
self.servers = []
self.region = self.region or self.appliance.server.zone.region
self.region.zones.append(self)
@attr.s
[docs]class ZoneCollection(BaseCollection, sentaku.modeling.ElementMixin):
ENTITY = Zone
region = attr.ib(default=None)
create = sentaku.ContextualMethod()
def __attrs_post_init__(self):
self.region = self.region or self.appliance.server.zone.region
[docs]class Region(Navigatable, sentaku.modeling.ElementMixin):
def __init__(self, appliance, number=0):
self.appliance = appliance
self.zones = []
self.number = number
self.parent = self.appliance.context
@property
def settings_string(self):
return "{} Region: Region {} [{}]".format(
self.appliance.product_name, self.number, self.number)
from . import ui, ssui # NOQA last for import cycles
sentaku.register_external_implementations_in(ui, ssui)