'Create a new member in an existing pool from an existing node
:param pool: Instance of ``DimensionDataPool`` (required)
:type  pool: ``DimensionDataPool``
:param node: Instance of ``DimensionDataVIPNode`` (required)
:type  node: ``DimensionDataVIPNode``
:param port: Port the the service will listen on
:type  port: ``str``
:return: The node member, instance of ``DimensionDataPoolMember``
:rtype: ``DimensionDataPoolMember``'

def ex_create_pool_member(self, pool, node, port=None):

    create_pool_m = ET.Element('addPoolMember', {'xmlns': TYPES_URN})
    ET.SubElement(create_pool_m, 'poolId').text = pool.id
    ET.SubElement(create_pool_m, 'nodeId').text = node.id
    if (port is not None):
        ET.SubElement(create_pool_m, 'port').text = str(port)
    ET.SubElement(create_pool_m, 'status').text = 'ENABLED'
    response = self.connection.request_with_orgId_api_2('networkDomainVip/addPoolMember', method='POST', data=ET.tostring(create_pool_m)).object
    member_id = None
    node_name = None
    for info in findall(response, 'info', TYPES_URN):
        if (info.get('name') == 'poolMemberId'):
            member_id = info.get('value')
        if (info.get('name') == 'nodeName'):
            node_name = info.get('value')
    return DimensionDataPoolMember(id=member_id, name=node_name, status=State.RUNNING, ip=node.ip, port=port, node_id=node.id)
