def METHOD_NAME(self, tag):
    """
    Pack tag format into 16 byte binary representation. String format
    of the tag is: XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
    :param string tag: tagname
    """
    tag_format = re.match(
        ''.join(
            [
                '^',
                '([0-9a-f]{8})',
                '-',
                '([0-9a-f]{4})',
                '-',
                '([0-9a-f]{4})',
                '-',
                '([0-9a-f]{4})',
                '-',
                '([0-9a-f]{12})',
                '$'
            ]
        ), tag
    )
    if not tag_format:
        raise KiwiVhdTagError(
            'disk tag %s does not match format' % tag
        )
    # pack first nibble into 4 byte unsigned long type
    binary_tag_part_1 = struct.pack(
        'I', list(struct.unpack('>L', unhexlify(tag_format.group(1))))[0]
    )
    # pack second nibble into 2 byte unsigned short type
    binary_tag_part_2 = struct.pack(
        'H', list(struct.unpack('>H', unhexlify(tag_format.group(2))))[0]
    )
    # pack third nibble into 2 byte unsigned short type
    binary_tag_part_3 = struct.pack(
        'H', list(struct.unpack('>H', unhexlify(tag_format.group(3))))[0]
    )
    # pack fourth nibble into hex
    binary_tag_part_4 = unhexlify(tag_format.group(4))
    # pack fifth nibble into hex
    binary_tag_part_5 = unhexlify(tag_format.group(5))
    return binary_tag_part_1 + binary_tag_part_2 + \
        binary_tag_part_3 + binary_tag_part_4 + \
        binary_tag_part_5