address ludo review comments

This commit is contained in:
Maurizio Noseda Pedraglio 2022-09-29 17:53:35 +02:00
parent cebe08d1be
commit 3781c077e5
1 changed files with 29 additions and 28 deletions

View File

@ -12,7 +12,6 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Sync GCE quota usage to Stackdriver for multiple projects.
This tool fetches global and/or regional quotas from the GCE API for
@ -20,13 +19,12 @@ multiple projects, and sends them to Stackdriver as custom metrics, where they
can be used to set alert policies or create charts.
"""
import time
import base64
import datetime
import json
import logging
import os
import time
import warnings
import click
@ -39,7 +37,6 @@ from google.cloud import monitoring_v3
import googleapiclient.discovery
import googleapiclient.errors
_BATCH_SIZE = 5
_METRIC_KIND = ga_metric.MetricDescriptor.MetricKind.GAUGE
_METRIC_TYPE_STEM = 'custom.googleapis.com/quota/'
@ -48,6 +45,7 @@ _USAGE="usage"
_LIMIT = "limit"
_UTILIZATION = "utilization"
def _add_series(project_id, series, client=None):
"""Write metrics series to Stackdriver.
@ -102,7 +100,7 @@ def _fetch_quotas(project, region='global', compute=None):
(project, region))
def _get_series(metric_labels, value, metric_type, time_stamp, dt=None):
def _get_series(metric_labels, value, metric_type, timestamp, dt=None):
"""Create a Stackdriver monitoring time series from value and labels.
Args:
@ -119,10 +117,13 @@ def _get_series(metric_labels, value, metric_type, time_stamp, dt=None):
point = monitoring_v3.types.Point()
point.value.double_value = value
seconds = int(time_stamp)
nanos = int((time_stamp - seconds) * 10 ** 9)
interval = monitoring_v3.TimeInterval( {"end_time": {"seconds": seconds, "nanos": nanos}})
seconds = int(timestamp)
nanos = int((timestamp - seconds) * 10**9)
interval = monitoring_v3.TimeInterval(
{"end_time": {
"seconds": seconds,
"nanos": nanos
}})
point.interval = interval
series.points.append(point)
@ -142,7 +143,6 @@ def _quota_to_series_triplet(project, region, quota ):
labels['project'] = project
labels['region'] = region
try:
utilization = quota['usage'] / float(quota['limit'])
except ZeroDivisionError:
@ -201,8 +201,8 @@ def _main(monitoring_project, gce_project=None, gce_region=None, verbose=False,
logging.debug('projects %s regions %s', gce_projects, gce_regions)
logging.debug('keywords %s', keywords)
quotas = []
compute = googleapiclient.discovery.build(
'compute', 'v1', cache_discovery=False)
compute = googleapiclient.discovery.build('compute', 'v1',
cache_discovery=False)
for project in gce_projects:
logging.debug('project %s', project)
for region in gce_regions:
@ -217,7 +217,8 @@ def _main(monitoring_project, gce_project=None, gce_region=None, verbose=False,
x = len(quotas)
while i < len(quotas):
series = sum([_quota_to_series_triplet(*q) for q in quotas[i:i + _BATCH_SIZE]],[])
series = sum(
[_quota_to_series_triplet(*q) for q in quotas[i:i + _BATCH_SIZE]], [])
_add_series(monitoring_project, series, client)
i += _BATCH_SIZE
#