def test_unix_server(self):
        sockpath = os.path.join(os.getcwd(),
                                'test.{0}.sock'.format(os.getpid()))
        sockurl = 'unix://' + sockpath

        context = RpcContext()
        context.register_service('test', TestService)
        server = Server()
        server.rpc = context
        server.start(sockurl)
        threading.Thread(target=server.serve_forever, daemon=True).start()

        # Spin until server is ready
        while not os.path.exists(sockpath):
            time.sleep(0.1)

        client = Client()
        client.connect(sockurl)
        self.assertTrue(client.connected)
        self.assertEqual(client.call_sync('test.hello', 'freenas'),
                         'Hello World, freenas')

        client.disconnect()
        server.close()
        os.unlink(sockpath)
Beispiel #2
0
 def __init__(self):
     self.logger = logging.getLogger('dscached')
     self.config = None
     self.datastore = None
     self.configstore = None
     self.rpc = RpcContext()
     self.rpc.streaming_enabled = True
     self.rpc.streaming_burst = 16
     self.client = None
     self.server = None
     self.plugin_dirs = []
     self.plugins = {}
     self.directories = []
     self.users_cache = TTLCacheStore()
     self.groups_cache = TTLCacheStore()
     self.hosts_cache = TTLCacheStore()
     self.cache_ttl = 7200
     self.search_order = []
     self.cache_enumerations = True
     self.cache_lookups = True
     self.home_directory_root = None
     self.account_service = AccountService(self)
     self.group_service = GroupService(self)
     self.rpc.register_service_instance('dscached.account',
                                        self.account_service)
     self.rpc.register_service_instance('dscached.group',
                                        self.group_service)
     self.rpc.register_service_instance('dscached.host', HostService(self))
     self.rpc.register_service_instance('dscached.idmap',
                                        IdmapService(self))
     self.rpc.register_service_instance('dscached.management',
                                        ManagementService(self))
     self.rpc.register_service_instance('dscached.debug', DebugService())
Beispiel #3
0
 def start(self, configpath, sockpath):
     signal.signal(signal.SIGUSR2, lambda signo, frame: self.connect())
     self.read_config(configpath)
     self.server.rpc = RpcContext()
     self.server.rpc.register_service_instance('control',
                                               ControlService(self))
     self.server.start(sockpath)
     threading.Thread(target=self.server.serve_forever,
                      name='server thread',
                      daemon=True).start()
Beispiel #4
0
 def __init__(self, context=None, connection_class=ServerConnection):
     self.server_transport = None
     self.connection_class = connection_class
     self.parsed_url = None
     self.scheme = None
     self.streaming = False
     self.transport = None
     self.rpc = None
     self.channel_serializer = None
     self.context = context or RpcContext()
     self.connections = []
Beispiel #5
0
 def __init__(self):
     self.server = None
     self.client = None
     self.jobs = {}
     self.provides = set()
     self.lock = RLock()
     self.kq = select.kqueue()
     self.devnull = os.open('/dev/null', os.O_RDWR)
     self.logger = logging.getLogger('Context')
     self.rpc = RpcContext()
     self.rpc.register_service_instance('serviced.management', ManagementService(self))
     self.rpc.register_service_instance('serviced.job', JobService(self))
Beispiel #6
0
 def __init__(self):
     self.logger = logging.getLogger(self.__class__.__name__)
     self.msock = msock.client.Client()
     self.msock.on_closed = self.on_msock_close
     self.rpc_fd = -1
     self.connection_id = None
     self.jobs = []
     self.state = ConnectionState.OFFLINE
     self.config = None
     self.keepalive = None
     self.connected_at = None
     self.cv = Condition()
     self.rpc = RpcContext()
     self.client = Client()
     self.server = Server()
     self.middleware_endpoint = None
Beispiel #7
0
 def __init__(self):
     self.store = collections.deque()
     self.lock = threading.Lock()
     self.seqno = 0
     self.rpc_server = Server(self)
     self.boot_id = str(uuid.uuid4())
     self.exiting = False
     self.server = None
     self.servers = []
     self.klog_reader = None
     self.flush = False
     self.flush_thread = None
     self.datastore = None
     self.started_at = datetime.utcnow()
     self.rpc = RpcContext()
     self.rpc.register_service_instance('logd.logging',
                                        LoggingService(self))
     self.rpc.register_service_instance('logd.debug', DebugService())
     self.cv = threading.Condition()