Exemple #1
0
    def run(self):
        self.log.debug('Inside Execute')
        exit_code = 0

        exit_code = self._check_for_ssh_agent()
        if exit_code > 0:
            return exit_code

        for step in self.steps:
            if step.get('who', None) == self.config['WHO']:
                script = step.get('script', None)
                if not script:
                    error_message = 'No script to execute in step ' \
                        ' {0}'.format(step)
                    raise Exception(error_message)
                self._report_step_status(step.get('id'), \
                    self.STATUS['PROCESSING'])
                script_runner = ScriptRunner(self.job_id,
                    self.shippable_adapter)
                script_status, exit_code, should_continue = \
                    script_runner.execute_script(script)
                self.log.debug(script_status)
                self._report_step_status(step.get('id'), script_status)
                if should_continue is False:
                    break
            else:
                break

        self._push_test_results()
        self._push_coverage_results()

        return exit_code
Exemple #2
0
    def run(self):
        self.log.debug('Inside Execute')
        exit_code = 0

        exit_code = self._check_for_ssh_agent()
        if exit_code > 0:
            return exit_code

        for step in self.steps:
            if step.get('who', None) == self.config['WHO']:
                script = step.get('script', None)
                if not script:
                    error_message = 'No script to execute in step ' \
                        ' {0}'.format(step)
                    raise Exception(error_message)
                script_runner = ScriptRunner(self.job_id,
                                             self.shippable_adapter)
                script_status, script_exit_code, should_continue = \
                    script_runner.execute_script(script)
                self._update_exit_code(script_exit_code)
                self.log.debug(script_status)
                if should_continue is False:
                    break
            else:
                break

        self._push_test_results()
        self._push_coverage_results()
        self._push_post_job_envs()

        return self.exit_code
Exemple #3
0
    def __execute(self):
        self.log.debug('Executing step')

        if self.step_scripts:
            self.log.debug('Step scripts: {0}'.format(self.step_scripts))
            scripts_execution_success = self.STATUS['SUCCESS']
            for script in self.step_scripts:
                script_runner = ScriptRunner(header_params=self.headers)
                script_status = script_runner.execute_script(script)

                if script_status != self.STATUS['SUCCESS']:
                    scripts_execution_success = script_status

                self.log.debug(
                    'Script competed with status: {0}'.format(script_status))

            self.log.debug('All scripts competed with status: {0}'.format(
                scripts_execution_success))

            coverage_reports = self.__get_coverage_reports()
            self.log.debug('Loaded coverage reports from disk: {0}'.format(
                coverage_reports))
            if coverage_reports:
                self.message['coverageResults'] = coverage_reports

            test_reports = self.__get_test_reports()
            self.log.debug(
                'Loaded test reports from disk: {0}'.format(test_reports))
            if test_reports:
                self.message['testResults'] = test_reports

            return scripts_execution_success
        else:
            self.log.error('No scripts to execute, returning error')
            return self.STATUS['FAILED']
Exemple #4
0
    def run(self):
        self.log.debug("Inside Execute")
        exit_code = 0

        exit_code = self._check_for_ssh_agent()
        if exit_code > 0:
            return exit_code

        for step in self.steps:
            if step.get("who", None) == self.config["WHO"]:
                script = step.get("script", None)
                if not script:
                    error_message = "No script to execute in step " " {0}".format(step)
                    raise Exception(error_message)
                script_runner = ScriptRunner(self.job_id, self.shippable_adapter)
                script_status, script_exit_code, should_continue = script_runner.execute_script(script)
                self._update_exit_code(script_exit_code)
                self.log.debug(script_status)
                if should_continue is False:
                    break
            else:
                break

        self._push_test_results()
        self._push_coverage_results()
        self._push_post_job_envs()

        return self.exit_code
 def process_request(cls, request):
     script_data = cls.parse_arguments(request)
     script_runner = ScriptRunner()
     results = script_runner.run_scripts(
         script_data.get('requests'),
         script_data.get('username', 'username_here'),
         script_data.get('password', 'password_here'))
     script_runner.utils.logout()
     return results
Exemple #6
0
    def run(self):
        self.log.debug('Inside Execute')
        exit_code = 0
        flushed_consoles_size_in_bytes = 0
        sent_console_truncated_message = False

        exit_code = self._check_for_ssh_agent()
        if exit_code > 0:
            return exit_code

        if self.config['IS_NEW_BUILD_RUNNER_SUBSCRIPTION']:
            self.log.warn('Using new build runner')

        for step in self.steps:
            if step.get('who', None) == self.config['WHO']:
                script = step.get('script', None)
                if not script:
                    error_message = 'No script to execute in step ' \
                        ' {0}'.format(step)
                    raise Exception(error_message)
                if self.config['IS_NEW_BUILD_RUNNER_SUBSCRIPTION']:
                    script_runner = ScriptRunner2(
                        self.job_id, self.shippable_adapter,
                        flushed_consoles_size_in_bytes,
                        sent_console_truncated_message)
                else:
                    script_runner = ScriptRunner(
                        self.job_id, self.shippable_adapter,
                        flushed_consoles_size_in_bytes,
                        sent_console_truncated_message)

                script_status, script_exit_code, should_continue, \
                    flushed_consoles_size_in_bytes, \
                    sent_console_truncated_message = \
                    script_runner.execute_script(script)
                self._update_exit_code(script_exit_code)
                self.log.debug(script_status)
                if should_continue is False:
                    break
            else:
                break

        self._push_test_results()
        self._push_coverage_results()
        self._push_post_job_envs()

        return self.exit_code
Exemple #7
0
def main():
    # Get the data and commands file paths from command line
    cli_parser = argparse.ArgumentParser(description='Unix Automation Console')
    cli_parser.add_argument('--data', dest='data_path', type=str, default='./data.json', 
                        help='path to data.json containing desired users, groups, files, and ssh keys ' 
                        'configuration info (default: ./data.json)')
    cli_parser.add_argument('--commands', dest='commands_path', type=str, default='./commands.json', 
                        help='path to commands.json containing the supported OS flavors info (default: ./commands.json)')
    args = cli_parser.parse_args()
    try:
        file_parser = JSONFileParser(args.commands_path, args.data_path)
        os_detector = OSDetector(file_parser.commands['agnostic'])
        flavor_id = os_detector.detect_flavor()
        print "OS detected: {0}".format(flavor_id)
        script_runner = ScriptRunner(file_parser.commands[flavor_id], file_parser.data)
        script_runner.run()         
    except Exception as error:
        print 'Error: {0}'.format(error.message)
    return 0
    def on_button_clicked(self):
        # If any button is clicked this gets called.
        # Gets the name of the button that called this method from the main widget.
        # Makes sure the creds can be read, and gets the specific_names for
        # the script from the json data using the name of the button.
        # Creates a ScriptRunner with specific_names and the button name
        # split into carrier and platform. Moves the ScriptRunner to a new QThread(), objThread.
        # Connects the start of objThread to the method calling execute_script, and
        # connects the end of the objThread  to a cleanup method.
        # Starts the thread, updates the label, and appends both the sr and the QThread to lists.
        sending_button = self.widget.sender()
        text = sending_button.text()
        splitName = text.split()
        carrier = splitName[0]
        platform = splitName[1]
        specific_names = self.data[text]

        # If edit mode is on, send these names to the editor and chill with the rest of the function
        if self.edit_name_mode:
            self.currently_editing_button = text
            self.open_editor(specific_names)
            return
        # Otherwise, read and set credentials
        creds = self.read_creds()
        if creds == "":
            return

        objThread = QThread()
        sr = ScriptRunner(carrier, specific_names, platform, creds,
                          self.chrome_driver_path)
        sr.moveToThread(objThread)
        sr.finished.connect(self.complete_script)
        objThread.started.connect(sr.start)
        objThread.finished.connect(objThread.exit)
        objThread.start()
        self.currently_running_scripts.append(sr)
        self.threads.append(objThread)
        if len(self.currently_running_scripts) == 1:
            self.label.setText("Working on it...")
        else:
            self.label.setText(
                f"Working on {len(self.currently_running_scripts)} tasks...")
        self.window.setWindowTitle("In progress")
Exemple #9
0
    def run(self):
        self.log.debug('Inside Execute')
        exit_code = 0
        for step in self.steps:
            if step.get('who', None) == self.config['WHO']:
                script = step.get('script', None)
                if not script:
                    error_message = 'No script to execute in step ' \
                        ' {0}'.format(step)
                script_runner = ScriptRunner(self.job_id,
                    self.shippable_adapter)
                script_status, exit_code, should_continue = script_runner.execute_script(
                    script)
                self.log.debug(script_status)
                self._report_step_status(step.get('id'), script_status)
                if should_continue is False:
                    break
            else:
                break

        return exit_code
Exemple #10
0
    def run(self):
        self.log.debug('Inside Execute')
        exit_code = 0
        flushed_consoles_size_in_bytes = 0
        sent_console_truncated_message = False

        exit_code = self._check_for_ssh_agent()
        if exit_code > 0:
            return exit_code

        for step in self.steps:
            if step.get('who', None) == self.config['WHO']:
                script = step.get('script', None)
                if not script:
                    error_message = 'No script to execute in step ' \
                        ' {0}'.format(step)
                    raise Exception(error_message)
                script_runner = ScriptRunner(self.job_id,
                    self.shippable_adapter, flushed_consoles_size_in_bytes,
                    sent_console_truncated_message)
                script_status, script_exit_code, should_continue, \
                    flushed_consoles_size_in_bytes, \
                    sent_console_truncated_message = \
                    script_runner.execute_script(script)
                self._update_exit_code(script_exit_code)
                self.log.debug(script_status)
                if should_continue is False:
                    break
            else:
                break

        self._push_test_results()
        self._push_coverage_results()
        self._push_post_job_envs()

        return self.exit_code
Exemple #11
0
    def __execute(self):
        self.log.debug('Executing step')

        if self.step_scripts:
            self.log.debug('Step scripts: {0}'.format(
                self.step_scripts))
            scripts_execution_success = self.STATUS['SUCCESS']
            for script in self.step_scripts:
                script_runner = ScriptRunner(header_params=self.headers)
                script_status = script_runner.execute_script(script)

                if script_status != self.STATUS['SUCCESS']:
                    scripts_execution_success = script_status

                self.log.debug('Script competed with status: {0}'.format(
                    script_status))

            self.log.debug('All scripts competed with status: {0}'.format(
                scripts_execution_success))

            coverage_reports = self.__get_coverage_reports()
            self.log.debug('Loaded coverage reports from disk: {0}'.format(
                coverage_reports))
            if coverage_reports:
                self.message['coverageResults'] = coverage_reports

            test_reports = self.__get_test_reports()
            self.log.debug('Loaded test reports from disk: {0}'.format(
                test_reports))
            if test_reports:
                self.message['testResults'] = test_reports

            return scripts_execution_success
        else:
            self.log.error('No scripts to execute, returning error')
            return self.STATUS['FAILED']
Exemple #12
0
    def bootstrap_script(self, script, *gtk_args):

        self.set_busy_icon()
        script_runner = ScriptRunner(script, self.script_finished_listener)
        self.running_scripts.add(script_runner)
        script_runner.run()
Exemple #13
0
import time, sys, os

sys.path.insert(1, '/home/nitin/code/Ashrut/compass/ui_app/app/config')
from config_reader import ConfigReader

# sys.path.insert(1, '/home/nitin/code/Ashrut/compass/ui_app/app/helper/handler/process')
# from process_handler import ProcessHandler

sys.path.insert(
    1, '/home/nitin/code/Ashrut/compass/ui_app/app/helper/file_upload')
from file_uploader import FileUploader

sys.path.insert(1, '/home/nitin/code/Ashrut/compass/ui_app/app/helper/runners')
from script_runner import ScriptRunner

script_runner = ScriptRunner()
file_uploader = FileUploader()
config = ConfigReader()
# process_handler = ProcessHandler(config.get_app_data_folder())


class CustomKafkaConsumer():
    def __init__(self, ip, port, topic, from_begin=True):
        self.topic = topic
        self.ip = ip
        self.port = port
        if from_begin:
            self.__consumer = self.__connect(auto_offset_reset='earliest')
        else:
            self.__consumer = self.__connect(auto_offset_reset='latest')