def ZONES(self):
        if not hasattr(self, '_ZONES'):
            zones = {}
            request = self.discovery.zones().list(project=self.project)
            while request is not None:
                response = request.execute()

                for zone in response['items']:
                    zones[zone['name']] = zone
                    zone['region_name'] = basename(zone['region'])

                request = self.discovery.zones().list_next(
                    previous_request=request,
                    previous_response=response)

        self._ZONES = zones
        return self._ZONES