def get_nodes_formatted(pod, tenant, cluster_id, username=None, password=None): servers = capella_utils.get_nodes(pod, tenant, cluster_id) nodes = list() for server in servers: temp_server = TestInputServer() temp_server.ip = server.get("hostname") temp_server.hostname = server.get("hostname") capella_services = server.get("services") services = [] for service in capella_services: if service == "Data": services.append("kv") elif service == "Index": services.append("index") elif service == "Query": services.append("n1ql") elif service == "Search": services.append("fts") elif service == "Eventing": services.append("eventing") elif service == "Analytics": services.append("cbas") temp_server.services = services temp_server.port = "18091" temp_server.rest_username = username temp_server.rest_password = password temp_server.hosted_on_cloud = True temp_server.memcached_port = "11207" nodes.append(temp_server) return nodes
def reset_vbucket(self, rest, key): vBucketId = crc32.crc32_hash(key) & (len(self.vBucketMap) - 1) forward_map = rest.get_bucket(self.bucket).forward_map if not forward_map: forward_map = rest.get_vbuckets(self.bucket) nodes = rest.get_nodes() for vBucket in forward_map: if vBucketId == vBucket.id: self.vBucketMap[vBucket.id] = vBucket.master # it has changed , then to different server or a new server masterIp = vBucket.master.split(":")[0] masterPort = int(vBucket.master.split(":")[1]) if self.vBucketMap[vBucketId] not in self.memcacheds: server = TestInputServer() server.rest_username = rest.username server.rest_password = rest.password for node in nodes: if node.ip == masterIp and node.memcached == masterPort: server.port = node.port server.ip = masterIp self.log.info("Recevied forward map, reset vbucket map, new direct_client") self.memcacheds[vBucket.master] = MemcachedClientHelper.direct_client(server, self.bucket) return True else: # if no one is using that memcached connection anymore just close the connection return True return False
def _poxi(self): tServer = TestInputServer() tServer.ip = self.server_ip tServer.rest_username = "******" tServer.rest_password = "******" tServer.port = 8091 rest = RestConnection(tServer) return VBucketAwareMemcached(rest, self.bucket_name)
def add_memcached(self, server_str, memcacheds, rest, bucket): if not server_str in memcacheds: serverIp = server_str.split(":")[0] serverPort = int(server_str.split(":")[1]) nodes = rest.get_nodes() server = TestInputServer() server.ip = serverIp server.port = rest.port server.rest_username = rest.username server.rest_password = rest.password try: for node in nodes: if node.ip == serverIp and node.memcached == serverPort: if server_str not in memcacheds: server.port = node.port memcacheds[server_str] = MemcachedClientHelper.direct_client(server, bucket) break except Exception as ex: msg = "unable to establish connection to {0}.cleanup open connections" self.log.warn(msg.format(serverIp)) self.done() raise ex
def __populate_cluster_info(self, cluster_id, servers, cluster_srv, cluster_name, service_config): nodes = list() for server in servers: temp_server = TestInputServer() temp_server.ip = server.get("hostname") temp_server.hostname = server.get("hostname") temp_server.services = server.get("services") temp_server.port = "18091" temp_server.rest_username = self.rest_username temp_server.rest_password = self.rest_password temp_server.hosted_on_cloud = True temp_server.memcached_port = "11207" nodes.append(temp_server) cluster = CBCluster(username=self.rest_username, password=self.rest_password, servers=[None] * 40) cluster.id = cluster_id cluster.srv = cluster_srv cluster.cluster_config = service_config cluster.pod = self.pod cluster.tenant = self.tenant for temp_server in nodes: if "Data" in temp_server.services: cluster.kv_nodes.append(temp_server) if "Query" in temp_server.services: cluster.query_nodes.append(temp_server) if "Index" in temp_server.services: cluster.index_nodes.append(temp_server) if "Eventing" in temp_server.services: cluster.eventing_nodes.append(temp_server) if "Analytics" in temp_server.services: cluster.cbas_nodes.append(temp_server) if "FTS" in temp_server.services: cluster.fts_nodes.append(temp_server) cluster.master = cluster.kv_nodes[0] self.tenant.clusters.update({cluster.id: cluster}) cluster.master = cluster.kv_nodes[0] self.tenant.clusters.update({cluster.id: cluster}) self.cb_clusters[cluster_name] = cluster self.cb_clusters[cluster_name].cloud_cluster = True