def METHOD_NAME(self, yml_contents, nodes):
    """
    This maps some rke logic for how the k8s nodes is configured to
    the nodes created by the cloud provider, so that the nodes list
    is the source of truth to validated against kubectl calls
    """
    yml_dict = self.convert_to_dict(yml_contents)
    for dict_node in yml_dict['nodes']:
        for node in nodes:
            if node.public_ip_address == dict_node['address'] or \
                    node.host_name == dict_node['address']:
                # dep
                node.host_name = dict_node['address']
                if dict_node.get('hostname_override'):
                    node.node_name = dict_node['hostname_override']
                else:
                    node.node_name = node.host_name
                node.roles = dict_node['role']
                # if internal_address is given, used to communicate
                # this is the expected ip/value in nginx.conf
                node.node_address = node.host_name
                if dict_node.get('internal_address'):
                    node.node_address = dict_node['internal_address']
                break
    return nodes