'List all nodes
ex_cloud_service_name parameter is used to scope the request
to a specific Cloud Service. This is a required parameter as
nodes cannot exist outside of a Cloud Service nor be shared
between a Cloud Service within Azure.
:param      ex_cloud_service_name: Cloud Service name
:type       ex_cloud_service_name: ``str``
:rtype: ``list`` of :class:`Node`'

def list_nodes(self, ex_cloud_service_name):

    response = self._perform_get((self._get_hosted_service_path(ex_cloud_service_name) + '?embed-detail=True'), None)
    self.raise_for_response(response, 200)
    data = self._parse_response(response, HostedService)
    vips = None
    if ((len(data.deployments) > 0) and (data.deployments[0].virtual_ips is not None)):
        vips = [vip.address for vip in data.deployments[0].virtual_ips]
    try:
        return [self._to_node(n, ex_cloud_service_name, vips) for n in data.deployments[0].role_instance_list]
    except IndexError:
        return []
