Merge "Fix oozie installation error" into stable/mitaka

This commit is contained in:
Jenkins 2017-02-07 16:11:34 +00:00 committed by Gerrit Code Review
commit 4c8a3d7e15
4 changed files with 37 additions and 18 deletions

View File

@ -38,7 +38,6 @@ import sahara.utils.files as files
LOG = logging.getLogger(__name__)
conductor = conductor.API
_MAPR_HOME = '/opt/mapr'
_JAVA_HOME = '/usr/java/jdk1.7.0_51'
_CONFIGURE_SH_TIMEOUT = 600
_SET_MODE_CMD = 'maprcli cluster mapreduce set -mode '
@ -49,7 +48,6 @@ INSTALL_SCALA_SCRIPT = 'plugins/mapr/resources/install_scala.sh'
INSTALL_MYSQL_CLIENT = 'plugins/mapr/resources/install_mysql_client.sh'
ADD_MAPR_REPO_SCRIPT = 'plugins/mapr/resources/add_mapr_repo.sh'
ADD_SECURITY_REPO_SCRIPT = 'plugins/mapr/resources/add_security_repos.sh'
ADD_MAPR_USER = 'plugins/mapr/resources/add_mapr_user.sh'
SERVICE_INSTALL_PRIORITY = [
mng.Management(),
@ -69,7 +67,6 @@ class BaseConfigurer(ac.AbstractConfigurer):
self._install_mapr_repo(cluster_context, instances)
if not cluster_context.is_prebuilt:
self._prepare_bare_image(cluster_context, instances)
self.configure_general_environment(cluster_context, instances)
self._install_services(cluster_context, instances)
if cluster_context.is_node_aware:
self._configure_topology(cluster_context, instances)
@ -77,6 +74,7 @@ class BaseConfigurer(ac.AbstractConfigurer):
self._configure_services(cluster_context, instances)
self._configure_sh_cluster(cluster_context, instances)
self._set_cluster_mode(cluster_context, instances)
self._post_configure_services(cluster_context, instances)
self._write_config_files(cluster_context, instances)
self._configure_environment(cluster_context, instances)
self._update_cluster_info(cluster_context)
@ -101,14 +99,8 @@ class BaseConfigurer(ac.AbstractConfigurer):
service.configure(cluster_context, instances)
def _install_services(self, cluster_context, instances):
step_name_template = _("Install %s service")
for service in self._service_install_sequence(cluster_context):
# Add own provision step for each service
step_name = step_name_template % service.ui_name
decorator = el.provision_step(step_name, 0, 1)
install_service = decorator(service.install)
install_service(cluster_context, instances)
service.install(cluster_context, instances)
def _service_install_sequence(self, cluster_context):
def key(service):
@ -216,6 +208,7 @@ class BaseConfigurer(ac.AbstractConfigurer):
LOG.debug("Config files are successfully written")
def _configure_environment(self, cluster_context, instances):
self.configure_general_environment(cluster_context, instances)
self._post_install_services(cluster_context, instances)
def _configure_database(self, cluster_context, instances):
@ -260,9 +253,6 @@ class BaseConfigurer(ac.AbstractConfigurer):
if not instances:
instances = cluster_context.get_instances()
def create_user(instance):
return util.run_script(instance, ADD_MAPR_USER, "root")
def set_user_password(instance):
LOG.debug('Setting password for user "mapr"')
if self.mapr_user_exists(instance):
@ -284,7 +274,6 @@ class BaseConfigurer(ac.AbstractConfigurer):
else:
LOG.warning(_LW('User "mapr" does not exists'))
util.execute_on_instances(instances, create_user)
util.execute_on_instances(instances, set_user_password)
util.execute_on_instances(instances, create_home_mapr)
@ -386,3 +375,7 @@ class BaseConfigurer(ac.AbstractConfigurer):
for service in cluster_context.cluster_services:
service.post_configure_sh(cluster_context, instances)
LOG.info(_LI('Post configure.sh hooks successfully executed'))
def _post_configure_services(self, cluster_context, instances):
for service in cluster_context.cluster_services:
service.post_configure(cluster_context, instances)

View File

@ -79,8 +79,17 @@ class Service(object):
return self._validation_rules
def install(self, cluster_context, instances):
g.execute_on_instances(instances, self._install_packages_on_instance,
cluster_context)
service_instances = cluster_context.filter_instances(instances,
service=self)
@el.provision_step(_("Install %s service") % self.ui_name,
cluster_context_reference=0, instances_reference=1)
def _install(_context, _instances):
g.execute_on_instances(_instances,
self._install_packages_on_instance,
_context)
_install(cluster_context, service_instances)
@el.provision_event(instance_reference=1)
def _install_packages_on_instance(self, instance, cluster_context):
@ -220,3 +229,6 @@ class Service(object):
def post_configure_sh(self, cluster_context, instances):
pass
def post_configure(self, cluster_context, instances):
pass

View File

@ -1,2 +0,0 @@
#!/bin/sh
useradd -p `openssl passwd -1 mapr` mapr

View File

@ -84,6 +84,22 @@ class Oozie(s.Service):
remote.execute_command('chown -R mapr:mapr /opt/mapr/oozie',
run_as_root=True)
def install(self, cluster_context, instances):
# oozie requires executed configure.sh
pass
def post_configure(self, cluster_context, instances):
super(Oozie, self).install(cluster_context, instances)
oozie_instances = cluster_context.filter_instances(instances,
service=self)
for instance in oozie_instances:
with instance.remote() as r:
r.execute_command(
'sudo cp '
'/opt/mapr/oozie/oozie-%s/conf/warden.oozie.conf '
'/opt/mapr/conf/conf.d' % self.version)
def post_install(self, cluster_context, instances):
oozie_inst = cluster_context.get_instance(OOZIE)
oozie_service = cluster_context.get_service(OOZIE)