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)
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)