'List tags in the Dimension Data Cloud
:param asset_id: Filter the list by asset id
:type  asset_id: ``str``
:param asset_type: Filter the list by asset type
:type  asset_type: ``str``
:param location: Filter the list by the assets location
:type  location: :class:``NodeLocation`` or ``str``
:param tag_key_name: Filter the list by a tag key name
:type  tag_key_name: ``str``
:param tag_key_id: Filter the list by a tag key id
:type  tag_key_id: ``str``
:param value: Filter the list by a tag value
:type  value: ``str``
:param value_required: Filter the list to if a value is required
for a tag
:type  value_required: ``bool``
:param display_on_report: Filter the list to if the tag should
show up on usage reports
:type  display_on_report: ``bool``
:rtype: ``list`` of :class:`DimensionDataTag`'

def ex_list_tags(self, asset_id=None, asset_type=None, location=None, tag_key_name=None, tag_key_id=None, value=None, value_required=None, display_on_report=None):

    params = {}
    if (asset_id is not None):
        params['assetId'] = asset_id
    if (asset_type is not None):
        params['assetType'] = asset_type
    if (location is not None):
        params['datacenterId'] = self._location_to_location_id(location)
    if (tag_key_name is not None):
        params['tagKeyName'] = tag_key_name
    if (tag_key_id is not None):
        params['tagKeyId'] = tag_key_id
    if (value is not None):
        params['value'] = value
    if (value_required is not None):
        params['valueRequired'] = str(value_required).lower()
    if (display_on_report is not None):
        params['displayOnReport'] = str(display_on_report).lower()
    paged_result = self.connection.paginated_request_with_orgId_api_2('tag/tag', method='GET', params=params)
    tags = []
    for result in paged_result:
        tags.extend(self._to_tags(result))
    return tags
