Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Metricbeat Python docker-compose system tests are failing with KeyError: 'ContainerConfig' #38539

Closed
elasticmachine opened this issue Mar 22, 2024 · 15 comments
Assignees
Labels
automation build-failures Build failures in the CI. ci-reported Issues that have been automatically reported from the CI Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team Team:Ingest-EngProd

Comments

@elasticmachine
Copy link
Collaborator

💔 Tests Failed

the below badges are clickable and redirect to their specific view in the CI or DOCS
Pipeline View Test View Changes Artifacts preview preview

Expand to view the summary

Build stats

  • Start Time: 2024-03-21T21:27:39.162+0000

  • Duration: 152 min 27 sec

Test stats 🧪

Test Results
Failed 27
Passed 29180
Skipped 2056
Total 31263

Test errors 27

Expand to view the tests failures

> Show only the first 10 test failures

Build&Test / metricbeat-pythonIntegTest / test_jolokia_jmx – metricbeat.tests.system.test_autodiscover_jolokia.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_autodiscover_jolokia.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: 46d959126a01_metricbeat_7918a246f6f8_jolokia_1 (46d959)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_dashboards – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_export_config – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_export_ilm_policy – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_export_index_pattern – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_export_index_pattern_migration – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_export_template – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_index_management – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_start_stop – metricbeat.tests.system.test_base.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_base.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: da81829db660_metricbeat_7918a246f6f8_elasticsearch_1 (da8182)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Build&Test / metricbeat-pythonIntegTest / test_metricsets_0_stats – metricbeat.module.beat.test_beat.Test
    Expand to view the error details

     failed on setup with "KeyError: "ContainerConfig"" 
    

    Expand to view the stacktrace

     cls = <class "test_beat.Test">
    
        @classmethod
        def setUpClass(cls):  # pylint: disable=invalid-name
            """
            initializes the Test class
            """
            if not hasattr(cls, "beat_name"):
                cls.beat_name = "metricbeat"
        
            if not hasattr(cls, "beat_path"):
                cls.beat_path = os.path.abspath(
                    os.path.join(os.path.dirname(__file__), "../../"))
        
    >       super().setUpClass()
    
    tests/system/metricbeat.py:42: 
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    ../libbeat/tests/system/beat/beat.py:204: in setUpClass
        cls.compose_up_with_retries()
    ../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
        raise ex
    ../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
        cls.compose_up()
    ../libbeat/tests/system/beat/compose.py:66: in compose_up
        project.up(
    /opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
        results, errors = parallel.parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
        return service.execute_convergence_plan(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
        return self._execute_convergence_recreate(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
        containers, errors = parallel_execute(
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
        raise error_to_reraise
    /opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
        result = func(obj)
    /opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
        return self.recreate_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
        new_container = self.create_container(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
        container_options = self._get_container_create_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
        container_options, override_options = self._build_container_volume_options(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
        binds, affinity = merge_volume_bindings(
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
        old_volumes, old_mounts = get_container_data_volumes(
    _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
    
    container = <Container: 980933250f2e_metricbeat_7918a246f6f8_metricbeat_1 (980933)>
    volumes_option = [], tmpfs_option = [], mounts_option = []
    
        def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
            """
                Find the container data volumes that are in `volumes_option`, and return
                a mapping of volume bindings for those volumes.
                Anonymous volume mounts are updated in place instead.
            """
            volumes = []
            volumes_option = volumes_option or []
        
            container_mounts = {
                mount["Destination"]: mount
                for mount in container.get("Mounts") or {}
            }
        
            image_volumes = [
                VolumeSpec.parse(volume)
                for volume in
    >           container.image_config["ContainerConfig"].get("Volumes") or {}
            ]
    E       KeyError: "ContainerConfig"
    
    /opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError 
    

Steps errors 7

Expand to view the steps failures

metricbeat-goIntegTest - mage goIntegTest
  • Took 40 min 1 sec . View more details here
  • Description: mage goIntegTest
metricbeat-goIntegTest - mage goIntegTest
  • Took 36 min 19 sec . View more details here
  • Description: mage goIntegTest
metricbeat-goIntegTest - mage goIntegTest
  • Took 37 min 54 sec . View more details here
  • Description: mage goIntegTest
metricbeat-pythonIntegTest - mage pythonIntegTest
  • Took 30 min 56 sec . View more details here
  • Description: mage pythonIntegTest
metricbeat-pythonIntegTest - mage pythonIntegTest
  • Took 19 min 11 sec . View more details here
  • Description: mage pythonIntegTest
metricbeat-pythonIntegTest - mage pythonIntegTest
  • Took 19 min 19 sec . View more details here
  • Description: mage pythonIntegTest
Error signal
  • Took 0 min 0 sec . View more details here
  • Description: Error "hudson.AbortException: script returned exit code 1"

@elasticmachine elasticmachine added automation build-failures Build failures in the CI. ci-reported Issues that have been automatically reported from the CI Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team labels Mar 22, 2024
@elasticmachine
Copy link
Collaborator Author

Pinging @elastic/elastic-agent-data-plane (Team:Elastic-Agent-Data-Plane)

@pierrehilbert
Copy link
Collaborator

@lalit-satapathy could we have someone to investigate here please?

@lalit-satapathy
Copy link
Contributor

CC: @shmsr are these any module specific issues or any structural outside problems. We can not have so many failures on different modules.

@cmacknz
Copy link
Member

cmacknz commented Mar 27, 2024

Skipping the test does not fix this failure: #38665

It and other tests still fail in the setup phase:

cls = <class 'test_autodiscover_jolokia.Test'>

    @classmethod
    def setUpClass(cls):  # pylint: disable=invalid-name
        """
        initializes the Test class
        """
        if not hasattr(cls, 'beat_name'):
            cls.beat_name = "metricbeat"
    
        if not hasattr(cls, 'beat_path'):
            cls.beat_path = os.path.abspath(
                os.path.join(os.path.dirname(__file__), "../../"))
    
>       super().setUpClass()

tests/system/metricbeat.py:42: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
../libbeat/tests/system/beat/beat.py:204: in setUpClass
    cls.compose_up_with_retries()
../libbeat/tests/system/beat/beat.py:222: in compose_up_with_retries
    raise ex
../libbeat/tests/system/beat/beat.py:218: in compose_up_with_retries
    cls.compose_up()
../libbeat/tests/system/beat/compose.py:66: in compose_up
    project.up(
/opt/venv/lib/python3.11/site-packages/compose/project.py:697: in up
    results, errors = parallel.parallel_execute(
/opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
    raise error_to_reraise
/opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
    result = func(obj)
/opt/venv/lib/python3.11/site-packages/compose/project.py:679: in do
    return service.execute_convergence_plan(
/opt/venv/lib/python3.11/site-packages/compose/service.py:579: in execute_convergence_plan
    return self._execute_convergence_recreate(
/opt/venv/lib/python3.11/site-packages/compose/service.py:499: in _execute_convergence_recreate
    containers, errors = parallel_execute(
/opt/venv/lib/python3.11/site-packages/compose/parallel.py:108: in parallel_execute
    raise error_to_reraise
/opt/venv/lib/python3.11/site-packages/compose/parallel.py:206: in producer
    result = func(obj)
/opt/venv/lib/python3.11/site-packages/compose/service.py:494: in recreate
    return self.recreate_container(
/opt/venv/lib/python3.11/site-packages/compose/service.py:612: in recreate_container
    new_container = self.create_container(
/opt/venv/lib/python3.11/site-packages/compose/service.py:330: in create_container
    container_options = self._get_container_create_options(
/opt/venv/lib/python3.11/site-packages/compose/service.py:921: in _get_container_create_options
    container_options, override_options = self._build_container_volume_options(
/opt/venv/lib/python3.11/site-packages/compose/service.py:960: in _build_container_volume_options
    binds, affinity = merge_volume_bindings(
/opt/venv/lib/python3.11/site-packages/compose/service.py:1548: in merge_volume_bindings
    old_volumes, old_mounts = get_container_data_volumes(
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

container = <Container: d40ed92da600_metricbeat_7918a246f6f8_jolokia_1 (d40ed9)>
volumes_option = [], tmpfs_option = [], mounts_option = []

    def get_container_data_volumes(container, volumes_option, tmpfs_option, mounts_option):
        """
            Find the container data volumes that are in `volumes_option`, and return
            a mapping of volume bindings for those volumes.
            Anonymous volume mounts are updated in place instead.
        """
        volumes = []
        volumes_option = volumes_option or []
    
        container_mounts = {
            mount['Destination']: mount
            for mount in container.get('Mounts') or {}
        }
    
        image_volumes = [
            VolumeSpec.parse(volume)
            for volume in
>           container.image_config['ContainerConfig'].get('Volumes') or {}
        ]
E       KeyError: 'ContainerConfig'

/opt/venv/lib/python3.11/site-packages/compose/service.py:1579: KeyError

@cmacknz
Copy link
Member

cmacknz commented Mar 27, 2024

I suspect the docker version in the CI runners may have been upgraded, causing this: https://askubuntu.com/questions/1508129/docker-compose-giving-containerconfig-errors-after-update-today

The Docker compose Python package we use hasn't been updated since 2021 https://pypi.org/project/docker-compose/ and has probably fallen out of support upstream.

@shmsr
Copy link
Member

shmsr commented Mar 27, 2024

I suspect the docker version in the CI runners may have been upgraded, causing this: https://askubuntu.com/questions/1508129/docker-compose-giving-containerconfig-errors-after-update-today

The Docker compose Python package we use hasn't been updated since 2021 https://pypi.org/project/docker-compose/ and has probably fallen out of support upstream.

Yes, I also saw the same askUbuntu thread yesterday but so far no luck. Also, there are more errors. Example:

  • nginx substatus (skipped for now).
  • docker-compose errors (KeyError = ContainerConfig).
  • For Windows, Python 3.8 installation errors.
  • For Windows, curl, gvm, etc. installation throws an error. (even though some errors exists in this PR's check but still it passed)
  • More: (related PR)

[2024-03-27T11:07:19.942Z] C:\Python27\python.exe: No module named venv
[2024-03-27T11:07:19.943Z] Error: running "python -m venv null\build\ve\windows" failed with exit code 1

Trying (hit and trial) all here: #38629

@cmacknz If the version of docker-compose and Python SDK are matching (v1.x) don't you think it should ideally work irrespective of the support? It's been deprecated for a long time.

Also, I see a lot of changes have been made in #38605 and #37827. Could it be related? Because suddenly there are a lot of issues in the CI. For example, CI was passing for this PR last week but right now it is not.

@cmacknz
Copy link
Member

cmacknz commented Mar 28, 2024

The first commit to main I can see failing with this specific metricbeat Python integration test failure is https://beats-ci.elastic.co/job/Beats/job/beats/job/main/2431/ which isn't even a change to Metricbeat.

The same change is also the first appearance of the problem in 8.13 (https://beats-ci.elastic.co/job/Beats/job/beats/job/8.13/68/) which is very odd because it is a change to Packetbeat that doesn’t change anything to do with CI: https://github.com/elastic/beats/pull/38223/files

@cmacknz
Copy link
Member

cmacknz commented Mar 28, 2024

In 8.12 the failure also started happening after https://beats-ci.elastic.co/job/Beats/job/beats/job/8.12/169/ so this does not correlate to changes in Beats at all.

It correlates with the date March 21st around 9:30 PM EDT.

@cmacknz
Copy link
Member

cmacknz commented Mar 28, 2024

This is almost certainly going to turn out to be related to an underlying build infrastructure change given it doesn't correlate to a change in Beats but rather to a specific time. I've asked the ingest eng prod team if they can help track down the source of the problem.

@cmacknz
Copy link
Member

cmacknz commented Mar 28, 2024

The nginx test failure in the Go integration tests is also in 7.17 but the Python tests don't fail there which is even weirder https://beats-ci.elastic.co/job/Beats/job/beats/job/7.17/1067/

@cmacknz cmacknz changed the title Build 2431 for main with status FAILURE - metricbeat.tests.system.test_autodiscover_jolokia.Test Metricbeat Python docker-compose system tests are failing with KeyError: 'ContainerConfig' Mar 28, 2024
@shmsr
Copy link
Member

shmsr commented Mar 28, 2024

This is almost certainly going to turn out to be related to an underlying build infrastructure change given it doesn't correlate to a change in Beats but rather to a specific time. I've asked the ingest eng prod team if they can help track down the source of the problem.

@cmacknz Thanks for helping with this. Will wait for a response from ingest eng prod team.

@cmacknz
Copy link
Member

cmacknz commented Mar 28, 2024

Confirmed that the Docker version in the Jenkins runner was bumped and seems to have triggered this.

We believe the fastest fix is going to be rewriting our Python compose Class to use https://github.com/gabrieldemarmiesse/python-on-whales?tab=readme-ov-file which interacts with compose from the CLI instead of depending on the obsolete docker V1 API.

class ComposeMixin(object):

@shmsr
Copy link
Member

shmsr commented Mar 28, 2024

Confirmed that the Docker version in the Jenkins runner was bumped and seems to have triggered this.

We believe the fastest fix is going to be rewriting our Python compose Class to use https://github.com/gabrieldemarmiesse/python-on-whales?tab=readme-ov-file which interacts with compose from the CLI instead of depending on the obsolete docker V1 API.

class ComposeMixin(object):

Yes, python-on-whales appears to be a good solution!

@jlind23
Copy link
Collaborator

jlind23 commented Oct 11, 2024

Closing this as outdated - cc @pierrehilbert

@jlind23 jlind23 closed this as not planned Won't fix, can't repro, duplicate, stale Oct 11, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
automation build-failures Build failures in the CI. ci-reported Issues that have been automatically reported from the CI Team:Elastic-Agent-Data-Plane Label for the Agent Data Plane team Team:Ingest-EngProd
Projects
None yet
Development

Successfully merging a pull request may close this issue.

8 participants