'Return a list of sizes (machineTypes) in a zone.
:keyword  location: Location or Zone for sizes
:type     location: ``str`` or :class:`GCEZone` or
:class:`NodeLocation` or ``None``
:return:  List of GCENodeSize objects
:rtype:   ``list`` of :class:`GCENodeSize`'

def list_sizes(self, location=None):

    list_sizes = []
    zone = self._set_zone(location)
    if (zone is None):
        request = '/aggregated/machineTypes'
    else:
        request = ('/zones/%s/machineTypes' % zone.name)
    response = self.connection.request(request, method='GET').object
    if ('items' in response):
        if (zone is None):
            for v in response['items'].values():
                zone_sizes = [self._to_node_size(s) for s in v.get('machineTypes', [])]
                list_sizes.extend(zone_sizes)
        else:
            list_sizes = [self._to_node_size(s) for s in response['items']]
    return list_sizes
