Source code for prestoadmin.yarn_slider.slider

# -*- coding: utf-8 -*-
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""
Module for installing and uninstalling slider.
"""

import os

from fabric.api import env, task, abort
from fabric.operations import put, sudo

from prestoadmin.yarn_slider.config import SliderConfig, \
    DIR, SLIDER_MASTER
from prestoadmin.util.base_config import requires_config

from prestoadmin.util.fabricapi import task_by_rolename

__all__ = ['install', 'uninstall']


@task
@requires_config(SliderConfig)
@task_by_rolename(SLIDER_MASTER)
[docs]def install(slider_tarball): """ Install slider on the slider master. You must provide a tar file on the local machine that contains the slider distribution. :param slider_tarball: The gzipped tar file containing the Apache Slider distribution """ deploy_install(slider_tarball)
def deploy_install(slider_tarball): slider_dir = env.conf[DIR] slider_parent = os.path.dirname(slider_dir) slider_file = os.path.join(slider_parent, os.path.basename(slider_tarball)) sudo('mkdir -p %s' % (slider_dir)) result = put(slider_tarball, os.path.join(slider_parent, slider_file)) if result.failed: abort('Failed to send slider tarball %s to directory %s on host %s' % (slider_tarball, slider_dir, env.host)) sudo('gunzip -c %s | tar -x -C %s --strip-components=1 && rm -f %s' % (slider_file, slider_dir, slider_file)) @task @requires_config(SliderConfig) @task_by_rolename(SLIDER_MASTER)
[docs]def uninstall(): """ Uninstall slider from the slider master. """ sudo('rm -r "%s"' % (env.conf[DIR]))