'List available VM sizes.
:param location: The location at which to list sizes
(if None, use default location specified as \'region\' in __init__)
:type location: :class:`.NodeLocation`
:return: list of node size objects
:rtype: ``list`` of :class:`.NodeSize`'

def list_sizes(self, location=None):

    if (location is None):
        if self.default_location:
            location = self.default_location
        else:
            raise ValueError('location    is    required.')
    action = ('/subscriptions/%s/providers/Microsoft.Compute/locations/%s/vmSizes' % (self.subscription_id, location.id))
    r = self.connection.request(action, params={'api-version': '2015-06-15'})
    return [self._to_node_size(d) for d in r.object['value']]
