Exemplo n.º 1
0
    def test_create_complete_config(
        self,
        mock_yaml_dump,
        mock_format_job,
        mock_tron_service_config,
        mock_tron_system_config,
        mock_system_config,
        service,
    ):
        job_config = tron_tools.TronJobConfig("my_job", {}, "fake-cluster")
        mock_tron_service_config.return_value = [job_config]
        soa_dir = "/testing/services"
        cluster = "fake-cluster"

        assert (tron_tools.create_complete_config(
            service=service, cluster=cluster,
            soa_dir=soa_dir) == mock_yaml_dump.return_value)
        mock_tron_service_config.assert_called_once_with(service=service,
                                                         cluster=cluster,
                                                         load_deployments=True,
                                                         soa_dir=soa_dir)
        mock_format_job.assert_called_once_with(job_config)
        complete_config = {"jobs": {"my_job": mock_format_job.return_value}}
        mock_yaml_dump.assert_called_once_with(complete_config,
                                               Dumper=mock.ANY,
                                               default_flow_style=mock.ANY)
Exemplo n.º 2
0
    def test_create_complete_config(
        self,
        mock_yaml_dump,
        mock_format_master_config,
        mock_format_job,
        mock_tron_service_config,
        mock_tron_system_config,
        mock_system_config,
        service,
    ):
        job_config = tron_tools.TronJobConfig('my_job', {}, 'fake-cluster')
        other_config = {
            'my_config_value': [1, 2],
        }
        mock_format_master_config.return_value = other_config
        mock_tron_service_config.return_value = (
            [job_config],
            other_config,
        )
        soa_dir = '/testing/services'
        cluster = 'fake-cluster'

        assert tron_tools.create_complete_config(
            service=service,
            cluster=cluster,
            soa_dir=soa_dir,
        ) == mock_yaml_dump.return_value
        mock_tron_service_config.assert_called_once_with(
            service=service,
            cluster=cluster,
            load_deployments=True,
            soa_dir=soa_dir,
        )
        if service == MASTER_NAMESPACE:
            mock_format_master_config.assert_called_once_with(
                other_config,
                mock_system_config.return_value.get_volumes.return_value,
                mock_system_config.return_value.get_dockercfg_location.
                return_value,
            )
        else:
            assert mock_format_master_config.call_count == 0
        mock_format_job.assert_called_once_with(job_config, )
        complete_config = other_config.copy()
        complete_config.update({
            'jobs': {
                'my_job': mock_format_job.return_value,
            },
        })
        mock_yaml_dump.assert_called_once_with(
            complete_config,
            Dumper=mock.ANY,
            default_flow_style=mock.ANY,
        )
Exemplo n.º 3
0
    def test_create_complete_config(
        self,
        mock_yaml_dump,
        mock_format_master_config,
        mock_format_job,
        mock_tron_service_config,
        mock_tron_system_config,
        mock_system_config,
        service,
    ):
        job_config = tron_tools.TronJobConfig({})
        other_config = {
            'my_config_value': [1, 2],
        }
        mock_format_master_config.return_value = other_config
        mock_tron_service_config.return_value = (
            [job_config],
            other_config,
        )
        soa_dir = '/testing/services'

        assert tron_tools.create_complete_config(
            service, soa_dir) == mock_yaml_dump.return_value
        mock_tron_service_config.assert_called_once_with(
            service,
            mock_tron_system_config.return_value.get_cluster_name.return_value,
            True,
            soa_dir,
        )
        if service == MASTER_NAMESPACE:
            mock_format_master_config.assert_called_once_with(
                other_config,
                mock_system_config.return_value.get_volumes.return_value,
                mock_system_config.return_value.get_dockercfg_location.
                return_value,
            )
        else:
            assert mock_format_master_config.call_count == 0
        mock_format_job.assert_called_once_with(
            job_config,
            mock_system_config.return_value.get_cluster_fqdn_format.
            return_value,
            mock_tron_system_config.return_value.get_default_paasta_cluster.
            return_value,
        )
        complete_config = other_config.copy()
        complete_config.update({
            'jobs': [mock_format_job.return_value],
        })
        mock_yaml_dump.assert_called_once_with(
            complete_config,
            Dumper=mock.ANY,
            default_flow_style=mock.ANY,
        )
Exemplo n.º 4
0
def main():
    args = parse_args()
    log_level = logging.DEBUG if args.verbose else logging.INFO
    logging.basicConfig(level=log_level)

    if args.all_namespaces:
        if args.services:
            log.error('Do not pass service names with --all flag')
            sys.exit(1)

        try:
            services = tron_tools.get_tron_namespaces_for_cluster()
        except Exception as e:
            log.error('Failed to list tron namespaces: {error}'.format(
                error=str(e), ))
            sys.exit(1)
    else:
        services = args.services

    if not services:
        log.warning("No namespaces found")
        sys.exit(0)

    client = tron_tools.get_tron_client()

    updated = []
    failed = []
    skipped = []

    for service in services:
        try:
            new_config = tron_tools.create_complete_config(
                service=service,
                soa_dir=args.soa_dir,
            )
            if client.update_namespace(service, new_config):
                updated.append(service)
                log.debug(f'Updated {service}')
            else:
                skipped.append(service)
                log.debug(f'Skipped {service}')
        except Exception as e:
            log.error(f'Update for {service} failed: {str(e)}')
            log.debug(f'Exception while updating {service}', exc_info=1)
            failed.append(service)

    skipped_report = skipped if args.verbose else len(skipped)
    log.info(
        f'Updated following namespaces: {updated}, '
        f'failed: {failed}, skipped: {skipped_report}', )

    sys.exit(1 if failed else 0)
Exemplo n.º 5
0
    def test_create_complete_config(
        self,
        mock_yaml_dump,
        mock_format_job,
        mock_tron_service_config,
        mock_tron_system_config,
        mock_system_config,
    ):
        job_config = tron_tools.TronJobConfig({})
        other_config = {
            'my_config_value': [1, 2],
        }
        mock_tron_service_config.return_value = (
            [job_config],
            other_config,
        )
        service = 'my_app'
        soa_dir = '/testing/services'

        assert tron_tools.create_complete_config(
            service, soa_dir) == mock_yaml_dump.return_value
        mock_tron_service_config.assert_called_once_with(
            service,
            mock_tron_system_config.return_value.get_cluster_name.return_value,
            soa_dir,
        )
        mock_format_job.assert_called_once_with(
            job_config,
            mock_system_config.return_value.get_cluster_fqdn_format.
            return_value,
            mock_tron_system_config.return_value.get_default_paasta_cluster.
            return_value,
        )
        complete_config = other_config.copy()
        complete_config.update({
            'jobs': [mock_format_job.return_value],
        })
        mock_yaml_dump.assert_called_once_with(
            complete_config,
            Dumper=mock.ANY,
            default_flow_style=mock.ANY,
        )
Exemplo n.º 6
0
def main():
    args = parse_args()
    log_level = logging.DEBUG if args.verbose else logging.INFO
    logging.basicConfig(level=log_level)

    if not args.cluster:
        args.cluster = tron_tools.load_tron_config().get_cluster_name()

    if args.all_namespaces:
        if args.services:
            log.error("Do not pass service names with --all flag")
            sys.exit(1)

        try:
            services = tron_tools.get_tron_namespaces(cluster=args.cluster,
                                                      soa_dir=args.soa_dir)
        except Exception as e:
            log.error(
                "Failed to list tron namespaces: {error}".format(error=str(e)))
            sys.exit(1)
    else:
        services = args.services

    if not services:
        log.warning("No namespaces found")
        sys.exit(0)

    if not args.dry_run:
        client = tron_tools.get_tron_client()

    updated = []
    failed = []
    skipped = []

    master_config = tron_tools.create_complete_master_config(
        cluster=args.cluster, soa_dir=args.soa_dir)
    if args.dry_run:
        log.info(f"Would update {MASTER_NAMESPACE} to:")
        log.info(f"{master_config}")
        updated.append(MASTER_NAMESPACE)
    else:
        if client.update_namespace(MASTER_NAMESPACE, master_config):
            updated.append(MASTER_NAMESPACE)
            log.debug(f"Updated {MASTER_NAMESPACE}")
        else:
            skipped.append(MASTER_NAMESPACE)
            log.debug(f"Skipped {MASTER_NAMESPACE}")

    for service in sorted(services):
        try:
            new_config = tron_tools.create_complete_config(
                cluster=args.cluster, service=service, soa_dir=args.soa_dir)
            if args.dry_run:
                log.info(f"Would update {service} to:")
                log.info(f"{new_config}")
                updated.append(service)
            else:
                if client.update_namespace(service, new_config):
                    updated.append(service)
                    log.debug(f"Updated {service}")
                else:
                    skipped.append(service)
                    log.debug(f"Skipped {service}")
        except Exception as e:
            log.error(f"Update for {service} failed: {str(e)}")
            log.debug(f"Exception while updating {service}", exc_info=1)
            failed.append(service)

    skipped_report = skipped if args.verbose else len(skipped)
    log.info(f"Updated following namespaces: {updated}, "
             f"failed: {failed}, skipped: {skipped_report}")

    sys.exit(1 if failed else 0)