def read(self, entity=None, attrs=None, ignore=None, params=None):
        """Deal with oddly named and structured data returned by the server.

        For more information, see `Bugzilla #1235019
        <https://bugzilla.redhat.com/show_bug.cgi?id=1235019>`_
        and `Bugzilla #1449749
        <https://bugzilla.redhat.com/show_bug.cgi?id=1449749>`_.

        `content_facet_attributes` are returned only in case any of facet
        attributes were actually set.

        Also add image to the response if needed, as
        :meth:`nailgun.entity_mixins.EntityReadMixin.read` can't initialize
        image.
        """
        if attrs is None:
            attrs = self.read_json()
        if ignore is None:
            ignore = set()
        if 'parameters' in attrs:
            attrs['host_parameters_attributes'] = attrs.pop('parameters')
        else:
            ignore.add('host_parameters_attributes')
        if 'content_facet_attributes' not in attrs:
            ignore.add('content_facet_attributes')
        ignore.add('compute_attributes')
        ignore.add('interfaces_attributes')
        ignore.add('root_pass')
        # Image entity requires compute_resource_id to initialize as it is
        # part of its path. The thing is that entity_mixins.read() initializes
        # entities by id only.
        # Workaround is to add image to ignore, call entity_mixins.read()
        # and then add 'manually' initialized image to the result.
        # If image_id is None set image to None as it is done by default.
        ignore.add('image')
        # host id is required for interface initialization
        ignore.add('interface')
        ignore.add('build_status_label')
        result = super(Host, self).read(entity, attrs, ignore, params)
        if attrs.get('image_id'):
            result.image = Image(
                server_config=self._server_config,
                id=attrs.get('image_id'),
                compute_resource=attrs.get('compute_resource_id'),
            )
        else:
            result.image = None
        if 'interfaces' in attrs and attrs['interfaces']:
            result.interface = [
                Interface(
                    self._server_config,
                    host=result.id,
                    id=interface['id'],
                )
                for interface in attrs['interfaces']
            ]
        if 'build_status_label' in attrs:
            result.build_status_label = attrs['build_status_label']
        return result
Deal with oddly named and structured data returned by the server.

        For more information, see `Bugzilla #1235019
        <https://bugzilla.redhat.com/show_bug.cgi?id=1235019>`_
        and `Bugzilla #1449749
        <https://bugzilla.redhat.com/show_bug.cgi?id=1449749>`_.

        `content_facet_attributes` are returned only in case any of facet
        attributes were actually set.

        Also add image to the response if needed, as
        :meth:`nailgun.entity_mixins.EntityReadMixin.read` can't initialize
        image.