Add event log for HDP plugin
closes-bug: 1612206 Change-Id: Ifd9cb87261d4ae1d27b4b9ebbd15f84e0882ea22
This commit is contained in:
parent
518d7e3141
commit
2de626ad8f
|
@ -0,0 +1,3 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- Added event log for HDP plugin
|
|
@ -22,6 +22,7 @@ from oslo_utils import uuidutils
|
||||||
|
|
||||||
from sahara import conductor
|
from sahara import conductor
|
||||||
from sahara import context
|
from sahara import context
|
||||||
|
from sahara.i18n import _
|
||||||
from sahara.i18n import _LW
|
from sahara.i18n import _LW
|
||||||
from sahara.plugins.ambari import client as ambari_client
|
from sahara.plugins.ambari import client as ambari_client
|
||||||
from sahara.plugins.ambari import common as p_common
|
from sahara.plugins.ambari import common as p_common
|
||||||
|
@ -30,6 +31,7 @@ from sahara.plugins.ambari import ha_helper
|
||||||
from sahara.plugins import kerberos
|
from sahara.plugins import kerberos
|
||||||
from sahara.plugins import utils as plugin_utils
|
from sahara.plugins import utils as plugin_utils
|
||||||
from sahara.topology import topology_helper as t_helper
|
from sahara.topology import topology_helper as t_helper
|
||||||
|
from sahara.utils import cluster_progress_ops as cpo
|
||||||
from sahara.utils import poll_utils
|
from sahara.utils import poll_utils
|
||||||
|
|
||||||
|
|
||||||
|
@ -56,6 +58,8 @@ os_type_map = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Set up Ambari management console"),
|
||||||
|
param=('cluster', 0))
|
||||||
def setup_ambari(cluster):
|
def setup_ambari(cluster):
|
||||||
LOG.debug("Set up Ambari management console")
|
LOG.debug("Set up Ambari management console")
|
||||||
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
||||||
|
@ -79,6 +83,8 @@ def setup_agents(cluster, instances=None):
|
||||||
|
|
||||||
|
|
||||||
def _setup_agents(instances, manager_address):
|
def _setup_agents(instances, manager_address):
|
||||||
|
cpo.add_provisioning_step(
|
||||||
|
instances[0].cluster.id, _("Set up Ambari agents"), len(instances))
|
||||||
with context.ThreadGroup() as tg:
|
with context.ThreadGroup() as tg:
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
tg.spawn("hwx-agent-setup-%s" % inst.id,
|
tg.spawn("hwx-agent-setup-%s" % inst.id,
|
||||||
|
@ -108,6 +114,7 @@ def disable_repos(cluster):
|
||||||
_disable_repos_on_inst, inst)
|
_disable_repos_on_inst, inst)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True)
|
||||||
def _setup_agent(instance, ambari_address):
|
def _setup_agent(instance, ambari_address):
|
||||||
with instance.remote() as r:
|
with instance.remote() as r:
|
||||||
sudo = functools.partial(r.execute_command, run_as_root=True)
|
sudo = functools.partial(r.execute_command, run_as_root=True)
|
||||||
|
@ -118,6 +125,8 @@ def _setup_agent(instance, ambari_address):
|
||||||
sudo("yum clean all")
|
sudo("yum clean all")
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Wait Ambari accessible"),
|
||||||
|
param=('cluster', 0))
|
||||||
def wait_ambari_accessible(cluster):
|
def wait_ambari_accessible(cluster):
|
||||||
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
||||||
kwargs = {"host": ambari.management_ip, "port": 8080}
|
kwargs = {"host": ambari.management_ip, "port": 8080}
|
||||||
|
@ -162,6 +171,7 @@ def _prepare_ranger(cluster):
|
||||||
sudo("rm /tmp/init.sql")
|
sudo("rm /tmp/init.sql")
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Prepare Hive"), param=('cluster', 0))
|
||||||
def prepare_hive(cluster):
|
def prepare_hive(cluster):
|
||||||
hive = plugin_utils.get_instance(cluster, p_common.HIVE_SERVER)
|
hive = plugin_utils.get_instance(cluster, p_common.HIVE_SERVER)
|
||||||
if not hive:
|
if not hive:
|
||||||
|
@ -175,6 +185,8 @@ def prepare_hive(cluster):
|
||||||
'/user/oozie/conf/hive-site.xml" hdfs')
|
'/user/oozie/conf/hive-site.xml" hdfs')
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Update default Ambari password"),
|
||||||
|
param=('cluster', 0))
|
||||||
def update_default_ambari_password(cluster):
|
def update_default_ambari_password(cluster):
|
||||||
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
||||||
new_password = uuidutils.generate_uuid()
|
new_password = uuidutils.generate_uuid()
|
||||||
|
@ -187,6 +199,8 @@ def update_default_ambari_password(cluster):
|
||||||
cluster = conductor.cluster_get(ctx, cluster.id)
|
cluster = conductor.cluster_get(ctx, cluster.id)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Wait registration of hosts"),
|
||||||
|
param=('cluster', 0))
|
||||||
def wait_host_registration(cluster, instances):
|
def wait_host_registration(cluster, instances):
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
kwargs = {"client": client, "instances": instances}
|
kwargs = {"client": client, "instances": instances}
|
||||||
|
@ -202,11 +216,9 @@ def _check_host_registration(client, instances):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
def set_up_hdp_repos(cluster):
|
@cpo.event_wrapper(True, step=_("Set up HDP repositories"),
|
||||||
hdp_repo = configs.get_hdp_repo_url(cluster)
|
param=('cluster', 0))
|
||||||
hdp_utils_repo = configs.get_hdp_utils_repo_url(cluster)
|
def _set_up_hdp_repos(cluster, hdp_repo, hdp_utils_repo):
|
||||||
if not hdp_repo and not hdp_utils_repo:
|
|
||||||
return
|
|
||||||
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
ambari = plugin_utils.get_instance(cluster, p_common.AMBARI_SERVER)
|
||||||
pv = cluster.hadoop_version
|
pv = cluster.hadoop_version
|
||||||
repos = repo_id_map[pv]
|
repos = repo_id_map[pv]
|
||||||
|
@ -219,15 +231,20 @@ def set_up_hdp_repos(cluster):
|
||||||
hdp_utils_repo)
|
hdp_utils_repo)
|
||||||
|
|
||||||
|
|
||||||
|
def set_up_hdp_repos(cluster):
|
||||||
|
hdp_repo = configs.get_hdp_repo_url(cluster)
|
||||||
|
hdp_utils_repo = configs.get_hdp_utils_repo_url(cluster)
|
||||||
|
if hdp_repo or hdp_utils_repo:
|
||||||
|
_set_up_hdp_repos(cluster, hdp_repo, hdp_utils_repo)
|
||||||
|
|
||||||
|
|
||||||
def get_kdc_server(cluster):
|
def get_kdc_server(cluster):
|
||||||
return plugin_utils.get_instance(
|
return plugin_utils.get_instance(
|
||||||
cluster, p_common.AMBARI_SERVER)
|
cluster, p_common.AMBARI_SERVER)
|
||||||
|
|
||||||
|
|
||||||
def prepare_kerberos(cluster, instances=None):
|
@cpo.event_wrapper(True, step=_("Prepare Kerberos"), param=('cluster', 0))
|
||||||
if not kerberos.is_kerberos_security_enabled(cluster):
|
def _prepare_kerberos(cluster, instances=None):
|
||||||
return
|
|
||||||
|
|
||||||
if instances is None:
|
if instances is None:
|
||||||
kerberos.deploy_infrastructure(cluster, get_kdc_server(cluster))
|
kerberos.deploy_infrastructure(cluster, get_kdc_server(cluster))
|
||||||
kerberos.prepare_policy_files(cluster)
|
kerberos.prepare_policy_files(cluster)
|
||||||
|
@ -239,6 +256,11 @@ def prepare_kerberos(cluster, instances=None):
|
||||||
kerberos.prepare_policy_files(cluster)
|
kerberos.prepare_policy_files(cluster)
|
||||||
|
|
||||||
|
|
||||||
|
def prepare_kerberos(cluster, instances=None):
|
||||||
|
if kerberos.is_kerberos_security_enabled(cluster):
|
||||||
|
_prepare_kerberos(cluster, instances)
|
||||||
|
|
||||||
|
|
||||||
def _serialize_mit_kdc_kerberos_env(cluster):
|
def _serialize_mit_kdc_kerberos_env(cluster):
|
||||||
return {
|
return {
|
||||||
'kerberos-env': {
|
'kerberos-env': {
|
||||||
|
@ -281,6 +303,8 @@ def get_host_group_components(cluster, processes):
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Create Ambari blueprint"),
|
||||||
|
param=('cluster', 0))
|
||||||
def create_blueprint(cluster):
|
def create_blueprint(cluster):
|
||||||
_prepare_ranger(cluster)
|
_prepare_ranger(cluster)
|
||||||
cluster = conductor.cluster_get(context.ctx(), cluster.id)
|
cluster = conductor.cluster_get(context.ctx(), cluster.id)
|
||||||
|
@ -344,7 +368,7 @@ def _build_ambari_cluster_template(cluster):
|
||||||
if kerberos.is_kerberos_security_enabled(cluster):
|
if kerberos.is_kerberos_security_enabled(cluster):
|
||||||
cl_tmpl["credentials"] = _get_credentials(cluster)
|
cl_tmpl["credentials"] = _get_credentials(cluster)
|
||||||
cl_tmpl["security"] = {"type": "KERBEROS"}
|
cl_tmpl["security"] = {"type": "KERBEROS"}
|
||||||
topology = _configure_topology_data(cluster)
|
topology = _get_topology_data(cluster)
|
||||||
for ng in cluster.node_groups:
|
for ng in cluster.node_groups:
|
||||||
for instance in ng.instances:
|
for instance in ng.instances:
|
||||||
host = {"fqdn": instance.fqdn()}
|
host = {"fqdn": instance.fqdn()}
|
||||||
|
@ -357,6 +381,7 @@ def _build_ambari_cluster_template(cluster):
|
||||||
return cl_tmpl
|
return cl_tmpl
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Start cluster"), param=('cluster', 0))
|
||||||
def start_cluster(cluster):
|
def start_cluster(cluster):
|
||||||
ambari_template = _build_ambari_cluster_template(cluster)
|
ambari_template = _build_ambari_cluster_template(cluster)
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
|
@ -364,12 +389,21 @@ def start_cluster(cluster):
|
||||||
client.wait_ambari_request(req_id, cluster.name)
|
client.wait_ambari_request(req_id, cluster.name)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True)
|
||||||
|
def _add_host_to_cluster(instance, client):
|
||||||
|
client.add_host_to_cluster(instance)
|
||||||
|
|
||||||
|
|
||||||
def add_new_hosts(cluster, instances):
|
def add_new_hosts(cluster, instances):
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
|
cpo.add_provisioning_step(
|
||||||
|
cluster.id, _("Add new hosts"), len(instances))
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
client.add_host_to_cluster(inst)
|
_add_host_to_cluster(inst, client)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Generate config groups"),
|
||||||
|
param=('cluster', 0))
|
||||||
def manage_config_groups(cluster, instances):
|
def manage_config_groups(cluster, instances):
|
||||||
groups = []
|
groups = []
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
|
@ -378,6 +412,8 @@ def manage_config_groups(cluster, instances):
|
||||||
client.create_config_group(cluster, groups)
|
client.create_config_group(cluster, groups)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Cleanup config groups"),
|
||||||
|
param=('cluster', 0))
|
||||||
def cleanup_config_groups(cluster, instances):
|
def cleanup_config_groups(cluster, instances):
|
||||||
to_remove = set()
|
to_remove = set()
|
||||||
for instance in instances:
|
for instance in instances:
|
||||||
|
@ -394,10 +430,9 @@ def cleanup_config_groups(cluster, instances):
|
||||||
client.remove_config_group(cluster, cfg_id)
|
client.remove_config_group(cluster, cfg_id)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Regenerate keytabs for Kerberos"),
|
||||||
|
param=('cluster', 0))
|
||||||
def _regenerate_keytabs(cluster):
|
def _regenerate_keytabs(cluster):
|
||||||
if not kerberos.is_kerberos_security_enabled(cluster):
|
|
||||||
return
|
|
||||||
|
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
alias = "kdc.admin.credential"
|
alias = "kdc.admin.credential"
|
||||||
try:
|
try:
|
||||||
|
@ -418,7 +453,9 @@ def _regenerate_keytabs(cluster):
|
||||||
client.wait_ambari_request(req_id, cluster.name)
|
client.wait_ambari_request(req_id, cluster.name)
|
||||||
|
|
||||||
|
|
||||||
def manage_host_components(cluster, instances):
|
@cpo.event_wrapper(True, step=_("Install services on hosts"),
|
||||||
|
param=('cluster', 0))
|
||||||
|
def _install_services_to_hosts(cluster, instances):
|
||||||
requests_ids = []
|
requests_ids = []
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
clients = p_common.get_clients(cluster)
|
clients = p_common.get_clients(cluster)
|
||||||
|
@ -432,8 +469,10 @@ def manage_host_components(cluster, instances):
|
||||||
instance, service, 'INSTALLED'))
|
instance, service, 'INSTALLED'))
|
||||||
client.wait_ambari_requests(requests_ids, cluster.name)
|
client.wait_ambari_requests(requests_ids, cluster.name)
|
||||||
|
|
||||||
_regenerate_keytabs(cluster)
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Start services on hosts"),
|
||||||
|
param=('cluster', 0))
|
||||||
|
def _start_services_on_hosts(cluster, instances):
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
# all services added and installed, let's start them
|
# all services added and installed, let's start them
|
||||||
requests_ids = []
|
requests_ids = []
|
||||||
|
@ -447,6 +486,15 @@ def manage_host_components(cluster, instances):
|
||||||
client.wait_ambari_requests(requests_ids, cluster.name)
|
client.wait_ambari_requests(requests_ids, cluster.name)
|
||||||
|
|
||||||
|
|
||||||
|
def manage_host_components(cluster, instances):
|
||||||
|
_install_services_to_hosts(cluster, instances)
|
||||||
|
if kerberos.is_kerberos_security_enabled(cluster):
|
||||||
|
_regenerate_keytabs(cluster)
|
||||||
|
_start_services_on_hosts(cluster, instances)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Decommission NodeManagers and DataNodes"),
|
||||||
|
param=('cluster', 0))
|
||||||
def decommission_hosts(cluster, instances):
|
def decommission_hosts(cluster, instances):
|
||||||
nodemanager_instances = filter(
|
nodemanager_instances = filter(
|
||||||
lambda i: p_common.NODEMANAGER in i.node_group.node_processes,
|
lambda i: p_common.NODEMANAGER in i.node_group.node_processes,
|
||||||
|
@ -481,6 +529,8 @@ def restart_resourcemanager(cluster, instance):
|
||||||
client.restart_resourcemanager(cluster.name, instance)
|
client.restart_resourcemanager(cluster.name, instance)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Restart NameNodes and ResourceManagers"),
|
||||||
|
param=('cluster', 0))
|
||||||
def restart_nns_and_rms(cluster):
|
def restart_nns_and_rms(cluster):
|
||||||
nns = plugin_utils.get_instances(cluster, p_common.NAMENODE)
|
nns = plugin_utils.get_instances(cluster, p_common.NAMENODE)
|
||||||
for nn in nns:
|
for nn in nns:
|
||||||
|
@ -496,6 +546,7 @@ def restart_service(cluster, service_name):
|
||||||
client.restart_service(cluster.name, service_name)
|
client.restart_service(cluster.name, service_name)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Remove hosts"), param=('cluster', 0))
|
||||||
def remove_services_from_hosts(cluster, instances):
|
def remove_services_from_hosts(cluster, instances):
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
LOG.debug("Stopping and removing processes from host %s" % inst.fqdn())
|
LOG.debug("Stopping and removing processes from host %s" % inst.fqdn())
|
||||||
|
@ -539,7 +590,7 @@ def _get_ambari_client(cluster):
|
||||||
return ambari_client.AmbariClient(ambari, password=password)
|
return ambari_client.AmbariClient(ambari, password=password)
|
||||||
|
|
||||||
|
|
||||||
def _configure_topology_data(cluster):
|
def _get_topology_data(cluster):
|
||||||
if not t_helper.is_data_locality_enabled():
|
if not t_helper.is_data_locality_enabled():
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
@ -549,39 +600,60 @@ def _configure_topology_data(cluster):
|
||||||
return t_helper.generate_topology_map(cluster, is_node_awareness=False)
|
return t_helper.generate_topology_map(cluster, is_node_awareness=False)
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True)
|
||||||
|
def _configure_topology_data(cluster, inst, client):
|
||||||
|
topology = _get_topology_data(cluster)
|
||||||
|
client.set_rack_info_for_instance(
|
||||||
|
cluster.name, inst, topology[inst.instance_name])
|
||||||
|
|
||||||
|
|
||||||
|
@cpo.event_wrapper(True, step=_("Restart HDFS and MAPREDUCE2 services"),
|
||||||
|
param=('cluster', 0))
|
||||||
|
def _restart_hdfs_and_mapred_services(cluster, client):
|
||||||
|
client.restart_service(cluster.name, p_common.HDFS_SERVICE)
|
||||||
|
client.restart_service(cluster.name, p_common.MAPREDUCE2_SERVICE)
|
||||||
|
|
||||||
|
|
||||||
def configure_rack_awareness(cluster, instances):
|
def configure_rack_awareness(cluster, instances):
|
||||||
if not t_helper.is_data_locality_enabled():
|
if not t_helper.is_data_locality_enabled():
|
||||||
return
|
return
|
||||||
|
|
||||||
topology = _configure_topology_data(cluster)
|
|
||||||
with _get_ambari_client(cluster) as client:
|
with _get_ambari_client(cluster) as client:
|
||||||
|
cpo.add_provisioning_step(
|
||||||
|
cluster.id, _("Configure rack awareness"), len(instances))
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
client.set_rack_info_for_instance(
|
_configure_topology_data(cluster, inst, client)
|
||||||
cluster.name, inst, topology[inst.instance_name])
|
_restart_hdfs_and_mapred_services(cluster, client)
|
||||||
client.restart_service(cluster.name, p_common.HDFS_SERVICE)
|
|
||||||
client.restart_service(cluster.name, p_common.MAPREDUCE2_SERVICE)
|
|
||||||
|
@cpo.event_wrapper(True)
|
||||||
|
def _add_hadoop_swift_jar(instance, new_jar):
|
||||||
|
with instance.remote() as r:
|
||||||
|
code, out = r.execute_command(
|
||||||
|
"test -f %s" % new_jar, raise_when_error=False)
|
||||||
|
if code == 0:
|
||||||
|
# get ambari hadoop version (e.g.: 2.7.1.2.3.4.0-3485)
|
||||||
|
code, amb_hadoop_version = r.execute_command(
|
||||||
|
"sudo hadoop version | grep 'Hadoop' | awk '{print $2}'")
|
||||||
|
amb_hadoop_version = amb_hadoop_version.strip()
|
||||||
|
# get special code of ambari hadoop version(e.g.:2.3.4.0-3485)
|
||||||
|
amb_code = '.'.join(amb_hadoop_version.split('.')[3:])
|
||||||
|
origin_jar = (
|
||||||
|
"/usr/hdp/{}/hadoop-mapreduce/hadoop-openstack-{}.jar".format(
|
||||||
|
amb_code, amb_hadoop_version))
|
||||||
|
r.execute_command("sudo cp {} {}".format(new_jar, origin_jar))
|
||||||
|
else:
|
||||||
|
LOG.warning(_LW("The {jar_file} file cannot be found "
|
||||||
|
"in the {dir} directory so Keystone API v3 "
|
||||||
|
"is not enabled for this cluster.")
|
||||||
|
.format(jar_file="hadoop-openstack.jar",
|
||||||
|
dir="/opt"))
|
||||||
|
|
||||||
|
|
||||||
def add_hadoop_swift_jar(instances):
|
def add_hadoop_swift_jar(instances):
|
||||||
new_jar = "/opt/hadoop-openstack.jar"
|
new_jar = "/opt/hadoop-openstack.jar"
|
||||||
|
cpo.add_provisioning_step(instances[0].cluster.id,
|
||||||
|
_("Add Hadoop Swift jar to instances"),
|
||||||
|
len(instances))
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
with inst.remote() as r:
|
_add_hadoop_swift_jar(inst, new_jar)
|
||||||
code, out = r.execute_command("test -f %s" % new_jar,
|
|
||||||
raise_when_error=False)
|
|
||||||
if code == 0:
|
|
||||||
# get ambari hadoop version (e.g.: 2.7.1.2.3.4.0-3485)
|
|
||||||
code, amb_hadoop_version = r.execute_command(
|
|
||||||
"sudo hadoop version | grep 'Hadoop' | awk '{print $2}'")
|
|
||||||
amb_hadoop_version = amb_hadoop_version.strip()
|
|
||||||
# get special code of ambari hadoop version(e.g.:2.3.4.0-3485)
|
|
||||||
amb_code = '.'.join(amb_hadoop_version.split('.')[3:])
|
|
||||||
origin_jar = (
|
|
||||||
"/usr/hdp/%s/hadoop-mapreduce/hadoop-openstack-%s.jar" % (
|
|
||||||
amb_code, amb_hadoop_version))
|
|
||||||
r.execute_command("sudo cp %s %s" % (new_jar, origin_jar))
|
|
||||||
else:
|
|
||||||
LOG.warning(_LW("The {jar_file} file cannot be found "
|
|
||||||
"in the {dir} directory so Keystone API v3 "
|
|
||||||
"is not enabled for this cluster.")
|
|
||||||
.format(jar_file="hadoop-openstack.jar",
|
|
||||||
dir="/opt"))
|
|
||||||
|
|
|
@ -21,11 +21,14 @@ from sahara.tests.unit import base
|
||||||
|
|
||||||
|
|
||||||
class TestDeploy(base.SaharaTestCase):
|
class TestDeploy(base.SaharaTestCase):
|
||||||
|
@mock.patch('sahara.utils.cluster_progress_ops.add_provisioning_step')
|
||||||
|
@mock.patch('sahara.utils.cluster.check_cluster_exists')
|
||||||
@mock.patch('sahara.plugins.utils.get_instance')
|
@mock.patch('sahara.plugins.utils.get_instance')
|
||||||
@mock.patch('sahara.plugins.ambari.client.AmbariClient.get')
|
@mock.patch('sahara.plugins.ambari.client.AmbariClient.get')
|
||||||
@mock.patch('sahara.plugins.ambari.client.AmbariClient.delete')
|
@mock.patch('sahara.plugins.ambari.client.AmbariClient.delete')
|
||||||
def test_cleanup_config_groups(self, client_delete, client_get,
|
def test_cleanup_config_groups(self, client_delete, client_get,
|
||||||
get_instance):
|
get_instance, check_cluster_exists,
|
||||||
|
add_provisioning_step):
|
||||||
def response(data):
|
def response(data):
|
||||||
fake = mock.Mock()
|
fake = mock.Mock()
|
||||||
fake.text = jsonutils.dumps(data)
|
fake.text = jsonutils.dumps(data)
|
||||||
|
@ -60,6 +63,8 @@ class TestDeploy(base.SaharaTestCase):
|
||||||
]
|
]
|
||||||
client_delete.side_effect = [response({})]
|
client_delete.side_effect = [response({})]
|
||||||
|
|
||||||
|
check_cluster_exists.return_value = True
|
||||||
|
|
||||||
deploy.cleanup_config_groups(cl, [inst1])
|
deploy.cleanup_config_groups(cl, [inst1])
|
||||||
get_calls = [
|
get_calls = [
|
||||||
mock.call(
|
mock.call(
|
||||||
|
|
Loading…
Reference in New Issue