Esempio n. 1
0
 def _get_properties(self, item):
     if 'status' in item:
         inspect = self._docker_wrapper.get_inspection(item)
         return dockerconvertors.get_container_properties_from_inspect(
             inspect=inspect, host_name=self._host_name)
     return dockerconvertors.get_container_properties(
         container=item, host_name=self._host_name)
Esempio n. 2
0
    def collect_container_events(self):
        """ Collects the container events (start, stop, die, pause, unpause)
        and sends then using the send_event function given in the constructor
        :return:
        """
        event_name_template = 'docker-container-{0}'
        host_name = self._docker_wrapper.get_host_name()
        for event in self._docker_wrapper.get_events():
            status = event['status']
            if status not in [
                    'start', 'stop', 'die', 'restart', 'pause', 'unpause'
            ]:
                continue

            event_name = event_name_template.format(status)
            inspect = self._docker_wrapper.get_inspection(event)
            properties = dockerconvertors.get_container_properties_from_inspect(
                inspect, host_name)

            ikey_to_send_event = self._get_container_sdk_ikey_from_containers_state(
                properties['Docker container id'])

            properties['docker-status'] = status
            properties['docker-Created'] = inspect['Created']
            properties['docker-StartedAt'] = inspect['State']['StartedAt']
            properties['docker-RestartCount'] = inspect['RestartCount']

            if status in ['stop', 'die']:
                properties['docker-FinishedAt'] = inspect['State'][
                    'FinishedAt']
                properties['docker-ExitCode'] = inspect['State']['ExitCode']

                error = inspect['State']['Error']
                properties['docker-Error'] = error if (error
                                                       is not None) else ""
                duration = dateutil.parser.parse(
                    properties['docker-FinishedAt']) - dateutil.parser.parse(
                        properties['docker-StartedAt'])
                duration_seconds = duration.total_seconds()
                properties['docker-duration-seconds'] = duration_seconds
                properties['docker-duration-minutes'] = duration_seconds / 60
                properties['docker-duration-hours'] = duration_seconds / 3600
                properties['docker-duration-days'] = duration_seconds / 86400
            event_data = {
                'name': event_name,
                'ikey':
                ikey_to_send_event if ikey_to_send_event is not None else '',
                'properties': properties
            }
            self._send_event(event_data)
 def test_get_container_properties_from_inspect(self):
     expected = {
         'Docker host': 'host1',
         'Docker image': 'image1',
         'Docker container id': 'c1',
         'Docker container name': 'container1'
     }
     inspect = {
         'Name': expected['Docker container name'],
         'Id': expected['Docker container id'],
         'Config': {
             'Image': expected['Docker image']
         }
     }
     properties = dockerconvertors.get_container_properties_from_inspect(
         inspect, expected['Docker host'])
     self.assertDictEqual(expected, properties)
    def collect_container_events(self):
        """ Collects the container events (start, stop, die, pause, unpause)
        and sends then using the send_event function given in the constructor
        :return:
        """
        event_name_template = 'docker-container-{0}'
        host_name = self._docker_wrapper.get_host_name()
        for event in self._docker_wrapper.get_events():
            status = event['status']
            if status not in ['start', 'stop', 'die', 'restart', 'pause', 'unpause']:
                continue

            event_name = event_name_template.format(status)
            inspect = self._docker_wrapper.get_inspection(event)
            properties = dockerconvertors.get_container_properties_from_inspect(inspect, host_name)

            ikey_to_send_event = self._get_container_sdk_ikey_from_containers_state(properties['Docker container id'])

            properties['docker-status'] = status
            properties['docker-Created'] = inspect['Created']
            properties['docker-StartedAt'] = inspect['State']['StartedAt']
            properties['docker-RestartCount'] = inspect['RestartCount']

            if status in ['stop', 'die']:
                properties['docker-FinishedAt'] = inspect['State']['FinishedAt']
                properties['docker-ExitCode'] = inspect['State']['ExitCode']

                error = inspect['State']['Error']
                properties['docker-Error'] = error if (error is not None) else ""
                duration = dateutil.parser.parse(properties['docker-FinishedAt']) - dateutil.parser.parse(
                    properties['docker-StartedAt'])
                duration_seconds = duration.total_seconds()
                properties['docker-duration-seconds'] = duration_seconds
                properties['docker-duration-minutes'] = duration_seconds / 60
                properties['docker-duration-hours'] = duration_seconds / 3600
                properties['docker-duration-days'] = duration_seconds / 86400
            event_data = {'name': event_name, 'ikey': ikey_to_send_event if ikey_to_send_event is not None else '', 'properties': properties}
            self._send_event(event_data)
 def test_get_container_properties_from_inspect(self):
     expected = {'Docker host': 'host1', 'Docker image': 'image1', 'Docker container id': 'c1', 'Docker container name': 'container1'}
     inspect = {'Name':expected['Docker container name'], 'Id':expected['Docker container id'], 'Config':{'Image': expected['Docker image']}}
     properties = dockerconvertors.get_container_properties_from_inspect(inspect, expected['Docker host'])
     self.assertDictEqual(expected, properties)
 def _get_properties(self, item):
     if 'status' in item:
         inspect = self._docker_wrapper.get_inspection(item)
         return dockerconvertors.get_container_properties_from_inspect(inspect=inspect, host_name=self._host_name)
     return dockerconvertors.get_container_properties(container=item, host_name=self._host_name)