# Path: opennode/knot/model/common.py
# class IInVirtualizationContainer(Interface):
#     pass
# 
# Path: opennode/knot/model/network.py
# class NetworkInterfaces(Container):
#     __contains__ = INetworkInterface
# 
#     __name__ = 'interfaces'
# 
# class NetworkRoutes(Container):
#     __contains__ = INetworkRoute
# 
#     __name__ = 'routes'
# 
# Path: opennode/knot/model/template.py
# class Templates(Container):
#     __contains__ = Template
#     __name__ = 'templates'
# 
#     def __init__(self, *args, **kw):
#         super(Templates, self).__init__(*args, **kw)
#         from opennode.knot.model.compute import IVirtualCompute
#         self.__markers__ = [IVirtualCompute]
# 
#     def __str__(self):
#         return 'Template list'
# 
# Path: opennode/knot/model/zabbix.py
# class IZabbixConfiguration(Interface):
#     """Configuration for registration of the Compute in Zabbix."""
# 
#     zabbix_hostgroups = schema.List(title=u"Host groups", description=u"Host groups this compute belongs to",
#                                     value_type=schema.TextLine(), required=False)
# 
#     zabbix_dns_name = schema.TextLine(title=u"Zabbix agent's DNS name", min_length=1, required=False)
#     zabbix_ipv4_address = schema.TextLine(title=u"Zabbix agent's IPv4 address", min_length=7, required=False)
# 
#     zabbix_agent_port = schema.Int(title=u"Zabbix agent port", description=u"Port where zabbix agent is listening",
#                                    required=False, min=1, max=65535)
# 
#     zabbix_use_dns = schema.Bool(title=u'Use DNS',
#                                  description=u'True if DNS entry of zabbix agent should be used for '
#                                  'contacting the agent')


import logging
import netaddr
from grokcore.component import context
from grokcore.component import Adapter, implements
from zope import schema
from zope.component import provideSubscriptionAdapter, provideAdapter
from zope.interface import Interface
from opennode.knot.model.common import IInVirtualizationContainer
from opennode.knot.model.console import Consoles
from opennode.knot.model.network import NetworkInterfaces, NetworkRoutes
from opennode.knot.model.template import Templates
from opennode.knot.model.zabbix import IZabbixConfiguration
from opennode.oms.config import get_config
from opennode.oms.model.location import ILocation
from opennode.oms.model.form import alsoProvides
from opennode.oms.model.model.actions import ActionsContainerExtension
from opennode.oms.model.model.base import Container
from opennode.oms.model.model.base import IMarkable, IDisplayName
from opennode.oms.model.model.base import require_admins
from opennode.oms.model.model.search import ModelTags
from opennode.oms.model.model.stream import MetricsContainerExtension, IMetrics
from opennode.oms.model.schema import Path, RestrictedHostname
from opennode.oms.security.directives import permissions
from opennode.oms.security.authentication import sudo
from opennode.oms.util import adapter_value
        from opennode.oms.zodb import db
        from opennode.knot.model.virtualizationcontainer import IVirtualizationContainer
from __future__ import absolute_import





log = logging.getLogger(__name__)


M = 10 ** 6



# Path: opennode/knot/model/common.py
# class IInVirtualizationContainer(Interface):
#     pass
# 
# Path: opennode/knot/model/network.py
# class NetworkInterfaces(Container):
#     __contains__ = INetworkInterface
# 
#     __name__ = 'interfaces'
# 
# class NetworkRoutes(Container):
#     __contains__ = INetworkRoute
# 
#     __name__ = 'routes'
# 
# Path: opennode/knot/model/template.py
# class Templates(Container):
#     __contains__ = Template
#     __name__ = 'templates'
# 
#     def __init__(self, *args, **kw):
#         super(Templates, self).__init__(*args, **kw)
#         from opennode.knot.model.compute import IVirtualCompute
#         self.__markers__ = [IVirtualCompute]
# 
#     def __str__(self):
#         return 'Template list'
# 
# Path: opennode/knot/model/zabbix.py
# class IZabbixConfiguration(Interface):
#     """Configuration for registration of the Compute in Zabbix."""
# 
#     zabbix_hostgroups = schema.List(title=u"Host groups", description=u"Host groups this compute belongs to",
#                                     value_type=schema.TextLine(), required=False)
# 
#     zabbix_dns_name = schema.TextLine(title=u"Zabbix agent's DNS name", min_length=1, required=False)
#     zabbix_ipv4_address = schema.TextLine(title=u"Zabbix agent's IPv4 address", min_length=7, required=False)
# 
#     zabbix_agent_port = schema.Int(title=u"Zabbix agent port", description=u"Port where zabbix agent is listening",
#                                    required=False, min=1, max=65535)
# 
#     zabbix_use_dns = schema.Bool(title=u'Use DNS',
#                                  description=u'True if DNS entry of zabbix agent should be used for '
#                                  'contacting the agent')


# Path: opennode/knot/model/compute.py
import logging
import netaddr
from grokcore.component import context
from grokcore.component import Adapter, implements
from zope import schema
from zope.component import provideSubscriptionAdapter, provideAdapter
from zope.interface import Interface
from opennode.knot.model.common import IInVirtualizationContainer
from opennode.knot.model.console import Consoles
from opennode.knot.model.network import NetworkInterfaces, NetworkRoutes
from opennode.knot.model.template import Templates
from opennode.knot.model.zabbix import IZabbixConfiguration
from opennode.oms.config import get_config
from opennode.oms.model.location import ILocation
from opennode.oms.model.form import alsoProvides
from opennode.oms.model.model.actions import ActionsContainerExtension
from opennode.oms.model.model.base import Container
from opennode.oms.model.model.base import IMarkable, IDisplayName
from opennode.oms.model.model.base import require_admins
from opennode.oms.model.model.search import ModelTags
from opennode.oms.model.model.stream import MetricsContainerExtension, IMetrics
from opennode.oms.model.schema import Path, RestrictedHostname
from opennode.oms.security.directives import permissions
from opennode.oms.security.authentication import sudo
from opennode.oms.util import adapter_value
        from opennode.oms.zodb import db
        from opennode.knot.model.virtualizationcontainer import IVirtualizationContainer

from __future__ import absolute_import





log = logging.getLogger(__name__)


M = 10 ** 6



class IManageable(Interface):