コード例 #1
0
ファイル: pump_mc.py プロジェクト: opendevise/couchbase-cli
    def connect_mc(host, port, username, password, bucket):
        username = str(username).encode("ascii")
        password = str(password).encode("ascii")
        if bucket is not None:
            bucket = str(bucket).encode("ascii")

        return pump.get_mcd_conn(host, port, username, password, bucket)
コード例 #2
0
 def connect_mc(host: str, port: int, username: str, password: str, bucket: Optional[str], use_ssl: bool = False,
                verify: bool = True, ca_cert: str = None, collections: bool = False)-> \
         Tuple[couchbaseConstants.PUMP_ERROR, Optional[cb_bin_client.MemcachedClient]]:
     return pump.get_mcd_conn(host,
                              port,
                              username,
                              password,
                              bucket,
                              use_ssl=use_ssl,
                              verify=verify,
                              ca_cert=ca_cert,
                              collections=collections)
コード例 #3
0
ファイル: pump_dcp.py プロジェクト: rkazak/couchbase-cli
    def get_dcp_conn(self):
        """Return previously connected dcp conn."""

        if not self.dcp_conn:
            host, _ = pump.hostport(self.source_node['hostname'])
            port = self.source_node['ports']['direct']
            username = self.opts.username
            password = self.opts.password
            bucket = str(self.source_bucket.get("name"))
            if self.opts.ssl:
                port = couchbaseConstants.SSL_PORT

            if getattr(self, 'alt_add', None):
                if 'alternateAddresses' in self.source_node:
                    host = self.source_node['alternateAddresses']['external'][
                        'hostname']
                    if 'ports' not in self.source_node['alternateAddresses'][
                            'external']:
                        return [
                            'no data port available in external address: {}'.
                            format(host)
                        ], None

                    alterante_ports = self.source_node['alternateAddresses'][
                        'external']['ports']
                    if self.opts.ssl:
                        if 'kvSSL' not in alterante_ports:
                            return [
                                'Secure data port not available in external host: {}'
                                .format(host)
                            ]
                        port = alterante_ports['kvSSL']
                    elif 'kv' not in alterante_ports:
                        return [
                            'Data port not available in external host: {}'.
                            format(host)
                        ]
                    else:
                        port = alterante_ports['kv']
                else:
                    return [
                        'alterante address not available in node: {}'.format(
                            self.source_node['otpNode'])
                    ], None

            logging.debug(f'  DCPStreamSource connecting mc: {host}:{port!s}')

            err, self.dcp_conn = pump.get_mcd_conn(host, port, username,
                                                   password, bucket,
                                                   self.opts.ssl,
                                                   self.opts.no_ssl_verify,
                                                   self.opts.cacert)
            if err:
                return err, None

            err, self.mem_conn = pump.get_mcd_conn(host, port, username,
                                                   password, bucket,
                                                   self.opts.ssl,
                                                   self.opts.no_ssl_verify,
                                                   self.opts.cacert)
            if err:
                return err, None

            flags = couchbaseConstants.FLAG_DCP_PRODUCER | couchbaseConstants.FLAG_DCP_XATTRS
            extra = struct.pack(couchbaseConstants.DCP_CONNECT_PKT_FMT, 0,
                                flags)
            try:
                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._send_cmd(couchbaseConstants.CMD_DCP_CONNECT,
                                        self.dcp_name.encode(), b'', opaque,
                                        extra)
                self.dcp_conn._handle_single_response(opaque)

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._send_cmd(
                    couchbaseConstants.CMD_DCP_CONTROL,
                    couchbaseConstants.KEY_DCP_CONNECTION_BUFFER_SIZE,
                    str(self.batch_max_bytes * 10).encode(), opaque)
                self.dcp_conn._handle_single_response(opaque)

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._send_cmd(couchbaseConstants.CMD_DCP_CONTROL,
                                        couchbaseConstants.KEY_DCP_NOOP,
                                        b'true', opaque)
                self.dcp_conn._handle_single_response(opaque)

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._send_cmd(
                    couchbaseConstants.CMD_DCP_CONTROL,
                    couchbaseConstants.KEY_DCP_NOOP_INTERVAL, b'180', opaque)
                self.dcp_conn._handle_single_response(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                return "error: DCP connect memcached error"
            except socket.error:
                return "error: DCP connection error"
            try:
                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._send_cmd(
                    couchbaseConstants.CMD_DCP_CONTROL,
                    couchbaseConstants.KEY_DCP_EXT_METADATA,
                    bool_to_str(True).encode(), opaque)
                self.dcp_conn._handle_single_response(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                pass
            except socket.error:
                return "error: DCP connection error"

            self.running = True
            self.start()

            self.add_start_event(self.dcp_conn)
            self.setup_dcp_streams()
        return 0
コード例 #4
0
ファイル: pump_dcp.py プロジェクト: mblow/couchbase-cli
    def get_dcp_conn(self):
        """Return previously connected dcp conn."""

        if not self.dcp_conn:
            host, _ = pump.hostport(self.source_node['hostname'])
            port = self.source_node['ports']['direct']
            username = self.opts.username
            password = self.opts.password
            bucket = str(self.source_bucket.get("name"))
            if self.opts.ssl:
                port = couchbaseConstants.SSL_PORT

            logging.debug("  DCPStreamSource connecting mc: " + host + ":" +
                          str(port))

            err, self.dcp_conn = pump.get_mcd_conn(host, port, username,
                                                   password, bucket,
                                                   self.opts.ssl,
                                                   self.opts.no_ssl_verify,
                                                   self.opts.cacert)
            if err:
                return err, None

            err, self.mem_conn = pump.get_mcd_conn(host, port, username,
                                                   password, bucket,
                                                   self.opts.ssl,
                                                   self.opts.no_ssl_verify,
                                                   self.opts.cacert)
            if err:
                return err, None

            flags = couchbaseConstants.FLAG_DCP_PRODUCER | couchbaseConstants.FLAG_DCP_XATTRS
            extra = struct.pack(couchbaseConstants.DCP_CONNECT_PKT_FMT, 0,
                                flags)
            try:
                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONNECT, self.dcp_name, \
                                       '', opaque, extra)
                self.dcp_conn._handleSingleResponse(opaque)

                buff_size = 0
                if self.flow_control:
                    # set connection buffer size. Considering header size, we roughly
                    # set the total received package size as 10 times as value size.
                    buff_size = self.batch_max_bytes * 10

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(
                    couchbaseConstants.CMD_DCP_CONTROL,
                    couchbaseConstants.KEY_DCP_CONNECTION_BUFFER_SIZE,
                    str(self.batch_max_bytes * 10), opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_NOOP, "true",
                                       opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(
                    couchbaseConstants.CMD_DCP_CONTROL,
                    couchbaseConstants.KEY_DCP_NOOP_INTERVAL, str(180), opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                return "error: DCP connect memcached error"
            except socket.error:
                return "error: DCP connection error"
            try:
                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_EXT_METADATA,
                                       bool_to_str(True), opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                pass
            except socket.error:
                return "error: DCP connection error"

            self.running = True
            self.start()

            self.add_start_event(self.dcp_conn)
            self.setup_dcp_streams()
        return 0
コード例 #5
0
ファイル: pump_mc.py プロジェクト: couchbase/couchbase-cli
 def connect_mc(host: str, port: int, username: str, password: str, bucket: Optional[str], use_ssl: bool = False,
                verify: bool = True, ca_cert: str = None, collections: bool = False)-> \
         Tuple[couchbaseConstants.PUMP_ERROR, Optional[cb_bin_client.MemcachedClient]]:
     return pump.get_mcd_conn(host, port, username, password, bucket, use_ssl=use_ssl, verify=verify,
                              ca_cert=ca_cert, collections=collections)
コード例 #6
0
ファイル: pump_dcp.py プロジェクト: couchbase/couchbase-cli
    def get_dcp_conn(self):
        """Return previously connected dcp conn."""

        if not self.dcp_conn:
            host, _  = pump.hostport(self.source_node['hostname'])
            port = self.source_node['ports']['direct']
            username = self.opts.username
            password = self.opts.password
            bucket = str(self.source_bucket.get("name"))
            if self.opts.ssl:
                port = couchbaseConstants.SSL_PORT

            if getattr(self, 'alt_add', None):
                if 'alternateAddresses' in self.source_node:
                    host = self.source_node['alternateAddresses']['external']['hostname']
                    if 'ports' not in self.source_node['alternateAddresses']['external']:
                        return ['no data port available in external address: {}'. format(host)], None

                    alterante_ports = self.source_node['alternateAddresses']['external']['ports']
                    if self.opts.ssl:
                        if 'kvSSL' not in alterante_ports:
                            return ['Secure data port not available in external host: {}'.format(host)]
                        port = alterante_ports['kvSSL']
                    elif 'kv' not in alterante_ports:
                        return ['Data port not available in external host: {}'.format(host)]
                    else:
                        port = alterante_ports['kv']
                else:
                    return ['alterante address not available in node: {}'.format(self.source_node['otpNode'])], None

            logging.debug(f'  DCPStreamSource connecting mc: {host}:{port!s}')

            err, self.dcp_conn = pump.get_mcd_conn(host, port, username, password, bucket, self.opts.ssl,
                                                   self.opts.no_ssl_verify, self.opts.cacert)
            if err:
                return err, None

            err, self.mem_conn = pump.get_mcd_conn(host, port, username, password, bucket, self.opts.ssl,
                                                   self.opts.no_ssl_verify, self.opts.cacert)
            if err:
                return err, None

            flags = couchbaseConstants.FLAG_DCP_PRODUCER | couchbaseConstants.FLAG_DCP_XATTRS
            extra = struct.pack(couchbaseConstants.DCP_CONNECT_PKT_FMT, 0, flags)
            try:
                opaque = self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONNECT, self.dcp_name.encode() , b'', opaque, extra)
                self.dcp_conn._handleSingleResponse(opaque)

                buff_size = 0
                if self.flow_control:
                    # set connection buffer size. Considering header size, we roughly
                    # set the total received package size as 10 times as value size.
                    buff_size = self.batch_max_bytes * 10

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_CONNECTION_BUFFER_SIZE,
                                       str(self.batch_max_bytes * 10).encode(), opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_NOOP, b'true', opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_NOOP_INTERVAL,
                                       b'180', opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                return "error: DCP connect memcached error"
            except socket.error:
                return "error: DCP connection error"
            try:
                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_EXT_METADATA,
                                       bool_to_str(True).encode(), opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                pass
            except socket.error:
                return "error: DCP connection error"

            self.running = True
            self.start()

            self.add_start_event(self.dcp_conn)
            self.setup_dcp_streams()
        return 0
コード例 #7
0
ファイル: pump_dcp.py プロジェクト: abhijpes/couchbase-cli
    def get_dcp_conn(self):
        """Return previously connected dcp conn."""

        if not self.dcp_conn:
            host, _  = pump.hostport(self.source_node['hostname'])
            port = self.source_node['ports']['direct']
            username = self.opts.username
            password = self.opts.password
            bucket = str(self.source_bucket.get("name"))
            if self.opts.ssl:
                port = couchbaseConstants.SSL_PORT

            logging.debug("  DCPStreamSource connecting mc: " + host + ":" + str(port))

            err, self.dcp_conn = pump.get_mcd_conn(host, port, username, password, bucket)
            if err:
                return err, None

            err, self.mem_conn = pump.get_mcd_conn(host, port, username, password, bucket)
            if err:
                return err, None

            flags = couchbaseConstants.FLAG_DCP_PRODUCER | couchbaseConstants.FLAG_DCP_XATTRS
            extra = struct.pack(couchbaseConstants.DCP_CONNECT_PKT_FMT, 0, flags)
            try:
                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONNECT, self.dcp_name, \
                                       '', opaque, extra)
                self.dcp_conn._handleSingleResponse(opaque)

                buff_size = 0
                if self.flow_control:
                    # set connection buffer size. Considering header size, we roughly
                    # set the total received package size as 10 times as value size.
                    buff_size = self.batch_max_bytes * 10

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_CONNECTION_BUFFER_SIZE,
                                       str(self.batch_max_bytes * 10), opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_NOOP,
                                       "true", opaque)
                self.dcp_conn._handleSingleResponse(opaque)

                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_NOOP_INTERVAL,
                                       str(180), opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                return "error: DCP connect memcached error"
            except socket.error:
                return "error: DCP connection error"
            try:
                opaque=self.r.randint(0, 2**32)
                self.dcp_conn._sendCmd(couchbaseConstants.CMD_DCP_CONTROL,
                                       couchbaseConstants.KEY_DCP_EXT_METADATA,
                                       bool_to_str(True), opaque)
                self.dcp_conn._handleSingleResponse(opaque)
            except EOFError:
                return "error: Fail to set up DCP connection"
            except cb_bin_client.MemcachedError:
                pass
            except socket.error:
                return "error: DCP connection error"

            self.running = True
            self.start()

            self.add_start_event(self.dcp_conn)
            self.setup_dcp_streams()
        return 0