Example #1
0
 def __init__(self, config, index):
     super(Domain, self).__init__()
     self.config = config
     self.index = index
     self.state = {}
     domain_config = self.config['domains'][index]
     self.name = domain_config['name']
     self.id = domain_config['id']
     logging.debug('Create domain %s', self.name)
     self.connection = self.connect(
         domain_config.get('host', '127.0.0.1'),
         domain_config.get('port', 8932)
     )
     self.server = RPC(self.connection)
     self.broker = RPCBrokerProxy(self.connection, 'broker_proxy',
                             self.id)
     self.domain = RPCBrokerProxy(self.connection, 'broker_domain_proxy',
                             self.id, self.index)
Example #2
0
class Domain(Transport):
    """
    Содержит в себе настройки для конкретного домена
    """
    def __init__(self, config, index):
        super(Domain, self).__init__()
        self.config = config
        self.index = index
        self.state = {}
        domain_config = self.config['domains'][index]
        self.name = domain_config['name']
        self.id = domain_config['id']
        logging.debug('Create domain %s', self.name)
        self.connection = self.connect(
            domain_config.get('host', '127.0.0.1'),
            domain_config.get('port', 8932)
        )
        self.server = RPC(self.connection)
        self.broker = RPCBrokerProxy(self.connection, 'broker_proxy',
                                self.id)
        self.domain = RPCBrokerProxy(self.connection, 'broker_domain_proxy',
                                self.id, self.index)

    def refresh_state(self):
        """
        Обновляет информацию о состоянии удаленного домена
        """
        self.state = self.server.domain_state(id=self.id)

    def create(self):
        """
        Посылает команду серверу на создание пустого домена (без нейронов и
        синапсов)
        """
        logging.debug('Create remote domain %s', self.name)
        if not self.server.domain_start(name=self.name, id=self.id, wait=False):
            raise DomainError('Domain "%s" creation failed' % self.name)

    def upload_config(self):
        """
        Загружает конфиг
        """
        logging.debug('Upload config to remote domain %s', self.name)
        self.broker.config(self.config)

    def deploy_domains(self):
        """
        Создает удаленные домены указывая какие из них будут локальными, а какие
        глобальными
        """
        logging.debug('%s.deploy_domains()', self.name)
        self.broker.deploy_domains([self.name])

    def __getattr__(self, name):
        return SimpleRCPCall(self.broker, name, self.name)

    def destroy(self):
        """
        Посылает серверу команду на завершение работы домена.
        """
        try:
            self.server.domain_stop(id=self.id)
        except RPCException as error:
            logging.warning(str(error.result.get('error')))

    def clean(self):
        """
        Закрывает соединение.
        """
        logging.debug('Clean domain %s', self.name)
        self.clean_sockets()