Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions plugin_config.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
id: 18f4ff11-b758-4bf2-9a37-719a22f5a4b8
name: sc:couchbase
externalVersion: "1.2.1.3"
buildNumber: 1.2.1.3
externalVersion: "1.2.2"
buildNumber: 1.2.2
language: PYTHON38
hostTypes:
- UNIX
Expand Down
3 changes: 1 addition & 2 deletions schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -275,8 +275,7 @@
"bucketSize",
"couchbaseAdmin",
"couchbaseAdminPassword",
"xdcrAdmin",
"xdcrAdminPassword"
"xdcrAdmin"
],
"ordering" : [
"dSourceType",
Expand Down
2 changes: 1 addition & 1 deletion src/controller/couchbase_lib/_bucket.py
Original file line number Diff line number Diff line change
Expand Up @@ -214,7 +214,7 @@ def monitor_bucket(self, bucket_name, staging_UUID):
while pending_docs != 0:
logger.debug("Documents pending for replication: {}".format(pending_docs))
helper_lib.sleepForSecond(30)
stdout, stderr, exit_code = utilities.execute_bash(self.connection, command, **kwargs)
stdout, stderr, exit_code = utilities.execute_expect(self.connection, command, **kwargs)
content = json.loads(stdout)
pending_docs = self._get_last_value_of_node_stats(list(content["nodeStats"].values())[0])
else:
Expand Down
27 changes: 25 additions & 2 deletions src/controller/couchbase_lib/_cb_backup.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
"""This class contains methods for all cb backup manager.
This is child class of Resource and parent class of CouchbaseOperation
"""
import json
#######################################################################################################################
import logging
from utils import utilities
Expand Down Expand Up @@ -61,14 +62,36 @@ def cb_backup_full(self, csv_bucket):
# **env)
# logger.debug("Backup restore: {}".format(cmd))
# utilities.execute_bash(self.connection, cmd, **kwargs)

map_data_list = []
if int(self.repository.version.split(".")[0]) >= 7:
for bucket_name in csv_bucket.split(","):
logger.debug(f"bucket_name: {bucket_name}")
stdout, _, _ = self.run_couchbase_command(
couchbase_command='get_scope_list_expect',
base_path=helper_lib.get_base_directory_of_given_path(
self.repository.cb_shell_path),
bucket_name=bucket_name
)
json_scope_data = json.loads(stdout)
for s in json_scope_data["scopes"]:
scope_name = s["name"]
if scope_name == "_default":
continue
collection_list = s["collections"]
for c in collection_list:
collection_name = c["name"]
if collection_name == "_default":
continue
map_data_list.append(f"{bucket_name}.{scope_name}.{collection_name}={bucket_name}.{scope_name}.{collection_name}")

stdout, stderr, exit_code = self.run_couchbase_command(couchbase_command='cb_backup_full',
backup_location=self.parameters.couchbase_bak_loc,
csv_bucket_list=csv_bucket,
backup_repo=self.parameters.couchbase_bak_repo,
skip=skip,
base_path=helper_lib.get_base_directory_of_given_path(self.repository.cb_shell_path)
base_path=helper_lib.get_base_directory_of_given_path(self.repository.cb_shell_path),
map_data=",".join(map_data_list),
repo_version = self.repository.version
)

if exit_code != 0:
Expand Down
21 changes: 17 additions & 4 deletions src/controller/couchbase_lib/_cluster.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,10 +69,23 @@ def cluster_init(self):
lambda_expr = lambda output: bool(re.search(ALREADY_CLUSTER_INIT, output))
env = _ClusterMixin.generate_environment_map(self)
env['additional_services'] = additional_service
cmd = CommandFactory.cluster_init(cluster_name=cluster_name, **env)
logger.debug("Cluster init: {}".format(cmd))
stdout, stderr, exit_code = utilities.execute_bash(self.connection, command_name=cmd, callback_func=lambda_expr,
**kwargs)
if int(self.repository.version.split(".")[0]) >= 7:
env.update(kwargs[ENV_VAR_KEY])
if "(CE)" in self.repository.version:
env["cluster_eventing_ramsize"] = None
env["cluster_analytics_ramsize"] = None
env["indexerStorageMode"] = "forestdb"
else:
env["indexerStorageMode"] = "plasma"
cmd, env_vars = CommandFactory.cluster_init_rest_expect(cluster_name=cluster_name, **env)
kwargs[ENV_VAR_KEY].update(env_vars)
stdout, stderr, exit_code = utilities.execute_expect(self.connection,
cmd, **kwargs)
else:
cmd = CommandFactory.cluster_init(cluster_name=cluster_name, **env)
logger.debug("Cluster init: {}".format(cmd))
stdout, stderr, exit_code = utilities.execute_bash(self.connection, command_name=cmd, callback_func=lambda_expr,
**kwargs)
if re.search(r"ERROR", str(stdout)):
if re.search(r"ERROR: Cluster is already initialized", stdout):
logger.debug("Performing cluster setting as cluster is already initialized")
Expand Down
42 changes: 41 additions & 1 deletion src/controller/couchbase_lib/_xdcr.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
This class contains methods for XDCR related operations
This is child class of Resource and parent class of CouchbaseOperation
"""
import json
#######################################################################################################################
import logging
from utils import utilities
Expand Down Expand Up @@ -260,7 +261,7 @@ def setup_replication(self):
config_setting = self.staged_source.parameters.config_settings_prov

if len(config_setting) > 0:
bucket_list = [ config_bucket["bucketName"] for config_bucket in config_setting ]
bucket_list = [config_bucket["bucketName"] for config_bucket in config_setting]
else:
bucket_details_source = self.source_bucket_list()
bucket_list = helper_lib.filter_bucket_name_from_json(bucket_details_source)
Expand All @@ -272,6 +273,45 @@ def setup_replication(self):

for bkt_name in bucket_list:
if bkt_name not in alredy_replicated_buckets:
if int(self.repository.version.split(".")[0]) >= 7:
logger.debug(f"bucket_name: {bkt_name}")
stdout, _, _ = self.run_couchbase_command(
couchbase_command='get_scope_list_expect',
base_path=helper_lib.get_base_directory_of_given_path(
self.repository.cb_shell_path),
hostname=self.source_config.couchbase_src_host,
port=self.source_config.couchbase_src_port,
username=self.staged_source.parameters.xdcr_admin,
password=self.staged_source.parameters.xdcr_admin_password,
bucket_name=bkt_name
)
json_scope_data = json.loads(stdout)
logger.debug(f"json_scope_data={json_scope_data}")
for s in json_scope_data["scopes"]:
scope_name = s["name"]
if scope_name == "_default":
continue
# create scope
self.run_couchbase_command(
couchbase_command="create_scope_expect",
base_path=helper_lib.get_base_directory_of_given_path(self.repository.cb_shell_path),
scope_name=scope_name,
bucket_name=bkt_name
)
collection_list = s["collections"]
for c in collection_list:
collection_name = c["name"]
if collection_name == "_default":
continue
# create collection
self.run_couchbase_command(
couchbase_command="create_collection_expect",
base_path=helper_lib.get_base_directory_of_given_path(self.repository.cb_shell_path),
scope_name=scope_name,
bucket_name=bkt_name,
collection_name=collection_name
)

logger.debug("Creating replication for {}".format(bkt_name))
self.xdcr_replicate(bkt_name, bkt_name)
else:
Expand Down
Loading