def get_resource_name(self, stack_name, logical_name):
     try:
         return self.cf_client.describe_stack_resource(
             StackName=stack_name, 
             LogicalResourceId=logical_name
         )['StackResourceDetail']['PhysicalResourceId']
     except Exception as e:
         Log.error('resource {0} in stack {1} not found'.format(logical_name, stack_name), e)
예제 #2
0
 def check_configs_are_set(self):
     missing_configs = [
         config for config, value in self.SIT_CONFIGS.iteritems()
         if value is None
     ]
     if missing_configs:
         Log.error('The following configs are not set: {0}'.format(
             missing_configs))
예제 #3
0
 def check_roles_not_empty(self):
     empty_roles = [
         role for role in self.ROLES
         if not self.sit_helper.get_states_for_role(role)
     ]
     if empty_roles:
         Log.error(
             'The following servers are missing roles inside of roles.yml file: {0}'
             .format(empty_roles))
 def get_resource_name(self, stack_name, logical_name):
     try:
         return self.cf_client.describe_stack_resource(
             StackName=stack_name, LogicalResourceId=logical_name
         )['StackResourceDetail']['PhysicalResourceId']
     except Exception as e:
         Log.error(
             'resource {0} in stack {1} not found'.format(
                 logical_name, stack_name), e)
 def update_stack(self, stack_name, template_body, tag_value):
     logging.info('Updating stack: {0}'.format(stack_name))
     try:
         self.cf_client.update_stack(StackName=stack_name,
                                     TemplateBody=template_body,
                                     Capabilities=['CAPABILITY_IAM'],
                                     Tags=[{
                                         'Key': 'Name',
                                         'Value': tag_value
                                     }])['StackId']
     except Exception as e:
         Log.error('Failed to update stack {0}'.format(stack_name), e)
 def update_stack(self, stack_name, template_body, tag_value):
     logging.info('Updating stack: {0}'.format(stack_name))
     try:
         self.cf_client.update_stack(
             StackName=stack_name,
             TemplateBody=template_body,
             Capabilities=['CAPABILITY_IAM'],
             Tags=[
                 {
                     'Key': 'Name',
                     'Value': tag_value
                 }
             ]
         )['StackId']
     except Exception as e:
         Log.error('Failed to update stack {0}'.format(stack_name), e)
예제 #7
0
파일: __init__.py 프로젝트: max2442/pfs
    def reboot_device(self, device_name, wait_after_off=10, wait_after_on=30):
        """
        :param wait_time_after_off: Time to wait after turning the device off
        :param wait_time_after_on: Time to wait before verifying the reboot was successful 
            (i.e. after turn on command)
        :return: Boolean representing whether or not the reboot was successful
        """
        # FIXME: Do we need a self.pin_off() or just pin_off()?
        if not self.pin_off(
                device_name
        ):  # If it's still on? Maybe trying to see if pin_off() was successful?
            return False
        # TODO: All code below is unconverted
        message = "From Pin {} ({}) reboot: sleeping {} second(s) after turn off.".format(
            self.eps_dict[device_name], device_name, wait_after_off)
        self.logger.debug(message)
        self.get_module_or_raise_error("telemetry").enqueue(
            Log(sys_name=self.name, lvl="INFO", msg=message))
        time.sleep(wait_after_off)  # Wait for specified time

        if not self.pin_on(device_name):
            return False
        message = "From Pin {} ({}) reboot: sleeping {} second(s) after turn on.".format(
            self.eps_dict[device_name], device_name, wait_after_off)
        self.logger.debug(message)
        self.get_module_or_raise_error("telemetry").enqueue(
            Log(sys_name=self.name, lvl="INFO", msg=message))
        time.sleep(wait_after_off)

        if self.get_PDM_status(device_name) == 1:
            message = "Pin {} ({}) reboot successful.".format(
                self.eps_dict[device_name], device_name)
            self.logger.debug(message)
            self.get_module_or_raise_error("telemetry").enqueue(
                Log(sys_name=self.name, lvl="INFO", msg=message))
            return True
        else:
            message = "Pin {} ({}) reboot NOT successful. Recommend PDM status check in {} second(s).".format(
                self.eps_dict[device_name], device_name, wait_after_off)
            self.logger.error(message)
            self.get_module_or_raise_error("telemetry").enqueue(
                Error(sys_name=self.name, msg=message))
            return False
예제 #8
0
파일: __init__.py 프로젝트: max2442/pfs
    def pin_off(self, device_name) -> bool:
        with SMBusWrapper(1) as bus:
            if device_name in self.eps_dict:
                PDM_val = self.eps_dict[device_name]
            else:
                message = "Device name \"{}\" INVALID. Aborting command.".format(
                    device_name)
                self.logger.error(message)
                self.get_module_or_raise_error("telemetry").enqueue(
                    Error(sys_name=self.name, msg=message))
                return False

            if self.get_PDM_status(device_name) == 0:
                message = "Pin {} ({}) is already OFF.".format(
                    self.eps_dict[device_name], device_name)
                self.logger.debug(message)  # Log to console for debugging
                self.get_module_or_raise_error("telemetry").enqueue(
                    Log(sys_name=self.name, lvl="INFO",
                        msg=message))  # Push to telemetry stack
                return True
            else:
                bus.write_byte_data(self.address, 0x13,
                                    PDM_val)  # Attempt to execute pin off

                if self.get_PDM_status(device_name) == 0:  # PDM is OFF
                    message = "Pin {} ({}) communication successful. Pin is now OFF.".format(
                        self.eps_dict[device_name], device_name)
                    self.logger.debug(message)
                    self.get_module_or_raise_error("telemetry").enqueue(
                        Log(sys_name=self.name, lvl="INFO", msg=message))
                    return True
                else:
                    message = "Pin {} ({}) communication NOT successful. Pin is still ON.".format(
                        self.eps_dict[device_name], device_name)
                    self.logger.error(message)
                    self.get_module_or_raise_error("telemetry").enqueue(
                        Error(sys_name=self.name, msg=message))
                    return False
 def check_roles_file(self):
     if self.ROLES < 1:  
         Log.error('roles.yml file is not setup properly. You require at least one role to test')
예제 #10
0
 def not_found_error(self, resource_name, resource):
     Log.error('{0} "{1}" not found. Please update configs/troposphere.yml'.format(resource_name, resource))
예제 #11
0
 def validate_configs(self):
     logging.info('Validating configs')
     missing_configs = [config for config, value in self.configs.iteritems() if value is None]
     if missing_configs:
         Log.error('The following configs have not been added in configs/troposphere.yml: {0}'.format(missing_configs))
 def run(self):
     install.run(self)
     Log.setup()
     SITTemplateHelper().validate()
     SITLoader().run()
예제 #13
0
 def check_stack_exists(self):
     stack_name = self.TROPOSPHERE_CONFIGS['stack_name']
     if not self.cf_helper.get_stack_info(stack_name):
         Log.error(
             'Stack "{0}" does not exist. Please run setup_troposphere'.
             format(stack_name))
예제 #14
0
 def test_error(self):
     self.assertRaises(SystemExit, Log.error(2))
예제 #15
0
 def check_roles_file(self):
     if self.ROLES < 1:
         Log.error(
             'roles.yml file is not setup properly. You require at least one role to test'
         )
예제 #16
0
 def test_setup(self):
     log = Log.setup()
                response = self.ecs_client.stop_task(task=task_id,
                                                     cluster=self.cluster)
                task_definitions.append(response['task']['taskDefinitionArn'])
        except Exception as e:
            logging.error('Error occurred while terminating tasks.', e)
        finally:
            return task_definitions

    def error(self, message, e=None, error_code=2):
        terminated_tasks = self.terminate_running_tasks()
        logging.info(
            '{0}. Exception: {1}\nFollowing tasks have been terminated: {2}'.
            format(message, e, terminated_tasks))
        exit(error_code)


def main():
    job = argv[1]
    build_number = argv[2]
    slave_ip = argv[3]
    configs_directory = argv[4]
    review_job = ReviewJob(job, build_number, slave_ip, configs_directory)
    review_job.run()
    review_job.check_and_print_results()
    review_job.fail_build_if_failures_exist()


if __name__ == '__main__':
    Log.setup()
    main()
 def stack_created_successfully(self):
     if not self.cf_helper.stack_was_created_successfully(self.STACK_NAME):
         Log.error('stack was not created')
 def check_configs_are_set(self):
     missing_configs = [config for config, value in self.SIT_CONFIGS.iteritems() if value is None]
     if missing_configs:
         Log.error('The following configs are not set: {0}'.format(missing_configs))
예제 #20
0
 def test_error(self):
     self.assertRaises(SystemExit, Log.error(2))
예제 #21
0
 def test_setup(self):
     log = Log.setup()
 def validate_template(self, template_body):
     logging.info('Validating template')
     try:
         self.cf_client.validate_template(TemplateBody=template_body)
     except Exception as e:
         Log.error('stack validation error', e)
예제 #23
0
 def stack_created_successfully(self):
     if not self.cf_helper.stack_was_created_successfully(self.STACK_NAME):
         Log.error('stack was not created')
 def check_roles_not_empty(self):
     empty_roles = [role for role in self.ROLES if not self.sit_helper.get_states_for_role(role)]
     if empty_roles:
         Log.error('The following servers are missing roles inside of roles.yml file: {0}'.format(empty_roles))
        try:
            for task_id in self.running_task_ids:
                response = self.ecs_client.stop_task(task=task_id, cluster=self.cluster)
                task_definitions.append(response['task']['taskDefinitionArn'])
        except Exception as e:
            logging.error('Error occurred while terminating tasks.', e)
        finally:
            return task_definitions

    def error(self, message, e=None, error_code=2):
        terminated_tasks = self.terminate_running_tasks()
        logging.info('{0}. Exception: {1}\nFollowing tasks have been terminated: {2}'.format(
            message, e, terminated_tasks))
        exit(error_code)


def main():
    job = argv[1]
    build_number = argv[2]
    slave_ip = argv[3]
    configs_directory = argv[4]
    review_job = ReviewJob(job, build_number, slave_ip, configs_directory)
    review_job.run()
    review_job.check_and_print_results()
    review_job.fail_build_if_failures_exist()


if __name__ == '__main__':
    Log.setup()
    main()
 def check_stack_exists(self):
     stack_name = self.TROPOSPHERE_CONFIGS['stack_name']
     if not self.cf_helper.get_stack_info(stack_name):
         Log.error('Stack "{0}" does not exist. Please run setup_troposphere'.format(stack_name))
 def run(self):
     install.run(self)
     Log.setup()
     SITTemplateHelper().validate()
     SITLoader().run()
 def validate_template(self, template_body):
     logging.info('Validating template')
     try:
         self.cf_client.validate_template(TemplateBody=template_body)
     except Exception as e:
         Log.error('stack validation error', e)