def test_configure_log(): fake_log_writer = {'driver': 'fake'} with mock.patch('paasta_tools.utils.load_system_paasta_config') as mock_load_system_paasta_config: mock_load_system_paasta_config().get_log_writer.return_value = fake_log_writer with mock.patch('paasta_tools.utils.get_log_writer_class') as mock_get_log_writer_class: utils.configure_log() mock_get_log_writer_class.assert_called_once_with('fake') mock_get_log_writer_class('fake').assert_called_once_with(**fake_log_writer)
def test_configure_log(): fake_log_writer = {"driver": "fake"} with mock.patch("paasta_tools.utils.load_system_paasta_config") as mock_load_system_paasta_config: mock_load_system_paasta_config().get_log_writer.return_value = fake_log_writer with mock.patch("paasta_tools.utils.get_log_writer_class") as mock_get_log_writer_class: utils.configure_log() mock_get_log_writer_class.assert_called_once_with("fake") mock_get_log_writer_class("fake").assert_called_once_with(**fake_log_writer)
def test_configure_log(): fake_log_writer_config = {'driver': 'fake', 'options': {'fake_arg': 'something'}} with mock.patch('paasta_tools.utils.load_system_paasta_config') as mock_load_system_paasta_config: mock_load_system_paasta_config().get_log_writer.return_value = fake_log_writer_config with mock.patch('paasta_tools.utils.get_log_writer_class') as mock_get_log_writer_class: utils.configure_log() mock_get_log_writer_class.assert_called_once_with('fake') mock_get_log_writer_class('fake').assert_called_once_with(fake_arg='something')
def main(argv=None): """Perform a paasta call. Read args from sys.argv and pass parsed args onto appropriate command in paata_cli/cmds directory. Ensure we kill any child pids before we quit """ configure_log() args = parse_args(argv) args.command(args)
def main(): configure_log() args = parse_args() soa_dir = args.soa_dir if args.verbose: log.setLevel(logging.DEBUG) else: log.setLevel(logging.WARNING) try: service, instance, _, __ = decompose_job_id(args.service_instance, spacer=chronos_tools.INTERNAL_SPACER) print 'service, instance' print service, instance except InvalidJobNameError: log.error("Invalid service instance '%s' specified. Format is service%sinstance." % (args.service_instance, SPACER)) sys.exit(1) client = chronos_tools.get_chronos_client(chronos_tools.load_chronos_config()) cluster = load_system_paasta_config().get_cluster() try: complete_job_config = chronos_tools.create_complete_config( service=service, job_name=instance, soa_dir=soa_dir, ) except (NoDeploymentsAvailable, NoDockerImageError): error_msg = "No deployment found for %s in cluster %s. Has Jenkins run for it?" % ( args.service_instance, cluster) send_event( service=service, instance=None, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) log.error(error_msg) sys.exit(0) except chronos_tools.UnknownChronosJobError as e: error_msg = ( "Could not read chronos configuration file for %s in cluster %s\n" % (args.service_instance, cluster) + "Error was: %s" % str(e)) send_event( service=service, instance=instance, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) log.error(error_msg) sys.exit(0) except chronos_tools.InvalidParentError: log.warn("Skipping %s.%s: Parent job could not be found" % (service, instance)) sys.exit(0) status, output = setup_job( service=service, instance=instance, cluster=cluster, complete_job_config=complete_job_config, client=client, ) sensu_status = pysensu_yelp.Status.CRITICAL if status else pysensu_yelp.Status.OK send_event( service=service, instance=instance, soa_dir=soa_dir, status=sensu_status, output=output, ) # We exit 0 because the script finished ok and the event was sent to the right team. sys.exit(0)
def main(): configure_log() args = parse_args() soa_dir = args.soa_dir if args.verbose: log.setLevel(logging.DEBUG) else: log.setLevel(logging.WARNING) try: service, instance, _, __ = decompose_job_id(args.service_instance, spacer=chronos_tools.INTERNAL_SPACER) print 'service, instance' print service, instance except InvalidJobNameError: log.error("Invalid service instance '%s' specified. Format is service%sinstance." % (args.service_instance, SPACER)) sys.exit(1) client = chronos_tools.get_chronos_client(chronos_tools.load_chronos_config()) cluster = load_system_paasta_config().get_cluster() try: complete_job_config = chronos_tools.create_complete_config( service=service, job_name=instance, soa_dir=soa_dir, ) except (NoDeploymentsAvailable, NoDockerImageError): error_msg = "No deployment found for %s in cluster %s. Has Jenkins run for it?" % ( args.service_instance, cluster) send_event( service=service, instance=instance, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) log.error(error_msg) sys.exit(0) except chronos_tools.UnknownChronosJobError as e: error_msg = ( "Could not read chronos configuration file for %s in cluster %s\n" % (args.service_instance, cluster) + "Error was: %s" % str(e)) send_event( service=service, instance=instance, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) log.error(error_msg) sys.exit(0) except chronos_tools.InvalidParentError: log.warn("Skipping %s.%s: Parent job could not be found" % (service, instance)) sys.exit(0) status, output = setup_job( service=service, instance=instance, cluster=cluster, complete_job_config=complete_job_config, client=client, ) sensu_status = pysensu_yelp.Status.CRITICAL if status else pysensu_yelp.Status.OK send_event( service=service, instance=instance, soa_dir=soa_dir, status=sensu_status, output=output, ) # We exit 0 because the script finished ok and the event was sent to the right team. sys.exit(0)
def main(): """Attempt to set up the marathon service instance given. Exits 1 if the deployment failed. This is done in the following order: - Load the marathon configuration - Connect to marathon - Load the service instance's configuration - Create the complete marathon job configuration - Deploy/bounce the service - Emit an event about the deployment to sensu""" configure_log() args = parse_args() soa_dir = args.soa_dir if args.verbose: log.setLevel(logging.DEBUG) else: log.setLevel(logging.WARNING) try: service, instance, _, __ = decompose_job_id(args.service_instance) except InvalidJobNameError: log.error("Invalid service instance specified. Format is service%sinstance." % SPACER) sys.exit(1) marathon_config = get_main_marathon_config() client = marathon_tools.get_marathon_client(marathon_config.get_url(), marathon_config.get_username(), marathon_config.get_password()) try: service_instance_config = marathon_tools.load_marathon_service_config( service, instance, load_system_paasta_config().get_cluster(), soa_dir=soa_dir, ) except NoDeploymentsAvailable: error_msg = "No deployments found for %s in cluster %s" % (args.service_instance, load_system_paasta_config().get_cluster()) log.error(error_msg) send_event(service, instance, soa_dir, pysensu_yelp.Status.CRITICAL, error_msg) # exit 0 because the event was sent to the right team and this is not an issue with Paasta itself sys.exit(0) except NoConfigurationForServiceError: error_msg = "Could not read marathon configuration file for %s in cluster %s" % \ (args.service_instance, load_system_paasta_config().get_cluster()) log.error(error_msg) send_event(service, instance, soa_dir, pysensu_yelp.Status.CRITICAL, error_msg) sys.exit(1) try: status, output = setup_service(service, instance, client, marathon_config, service_instance_config, soa_dir) sensu_status = pysensu_yelp.Status.CRITICAL if status else pysensu_yelp.Status.OK send_event(service, instance, soa_dir, sensu_status, output) # We exit 0 because the script finished ok and the event was sent to the right team. sys.exit(0) except (KeyError, TypeError, AttributeError, InvalidInstanceConfig): import traceback error_str = traceback.format_exc() log.error(error_str) send_event(service, instance, soa_dir, pysensu_yelp.Status.CRITICAL, error_str) # We exit 0 because the script finished ok and the event was sent to the right team. sys.exit(0)
def test_configure_log(): utils.configure_log()
def setup(self): configure_log() self.cluster = load_system_paasta_config().get_cluster()
def main(): configure_log() args = parse_args() soa_dir = args.soa_dir if args.verbose: log.setLevel(logging.DEBUG) else: log.setLevel(logging.WARNING) try: service, instance, _, __ = decompose_job_id(args.service_instance) except InvalidJobNameError: log.error("Invalid service instance '%s' specified. Format is service%sinstance." % (args.service_instance, SPACER)) sys.exit(1) client = chronos_tools.get_chronos_client(chronos_tools.load_chronos_config()) cluster = load_system_paasta_config().get_cluster() try: chronos_job_config = chronos_tools.load_chronos_job_config( service=service, instance=instance, cluster=cluster, soa_dir=soa_dir, ) except NoDeploymentsAvailable: error_msg = "No deployments found for %s in cluster %s" % (args.service_instance, cluster) send_event( service=service, instance=None, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) log.error(error_msg) # exit 0 because the event was sent to the right team and this is not an issue with Paasta itself sys.exit(0) except chronos_tools.InvalidChronosConfigError as e: error_msg = ( "Could not read chronos configuration file for %s in cluster %s\n" % (args.service_instance, cluster) + "Error was: %s" % str(e)) log.error(error_msg) send_event( service=service, instance=instance, soa_dir=soa_dir, status=pysensu_yelp.Status.CRITICAL, output=error_msg, ) # exit 0 because the event was sent to the right team and this is not an issue with Paasta itself sys.exit(0) complete_job_config = chronos_tools.create_complete_config( service=service, job_name=instance, soa_dir=soa_dir, ) status, output = setup_job( service=service, instance=instance, cluster=cluster, chronos_job_config=chronos_job_config, complete_job_config=complete_job_config, client=client, ) sensu_status = pysensu_yelp.Status.CRITICAL if status else pysensu_yelp.Status.OK send_event( service=service, instance=instance, soa_dir=soa_dir, status=sensu_status, output=output, ) # We exit 0 because the script finished ok and the event was sent to the right team. sys.exit(0)