Skip to content

Commit f4f22a2

Browse files
author
lijianguo
committed
chore(influxdb): modify influxdb code
1 parent 902905f commit f4f22a2

6 files changed

Lines changed: 47 additions & 18 deletions

File tree

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ language: go
33
services:
44
- docker
55
script:
6-
- make test
7-
- make docker-build-test upload-coverage
6+
- DEV_REGISTRY="docker.io" make test
7+
- DEV_REGISTRY="docker.io" make docker-build-test upload-coverage
88
notifications:
99
slack:
1010
rooms:

charts/controller/templates/_helpers.tpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ env:
8383
name: database-creds
8484
key: password
8585
- name: DRYCC_DATABASE_URL
86-
value: "postgres://$(DRYCC_DATABASE_USER):$(DRYCC_DATABASE_PASSPORT)@$(DRYCC_DATABASE_SERVICE_HOST):$(DRYCC_DATABASE_SERVICE_PORT)/$(DRYCC_DATABASE_USER)"
86+
value: "postgres://$(DRYCC_DATABASE_USER):$(DRYCC_DATABASE_PASSWORD)@$(DRYCC_DATABASE_SERVICE_HOST):$(DRYCC_DATABASE_SERVICE_PORT)/$(DRYCC_DATABASE_USER)"
8787
{{- end }}
8888
- name: WORKFLOW_NAMESPACE
8989
valueFrom:

rootfs/api/influxdb.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,36 @@
11
import threading
2+
import logging
23
from typing import Iterator
34
from contextlib import closing
45
from django.conf import settings
56
from influxdb_client import InfluxDBClient
67
from influxdb_client.client.flux_table import FluxRecord
8+
from influxdb_client.rest import ApiException
79

810
local = threading.local()
11+
logger = logging.getLogger(__name__)
912

1013

1114
def _get_influxdb_client() -> InfluxDBClient:
1215
if not hasattr(local, "influxdb_client"):
1316
local.influxdb_client = InfluxDBClient(
14-
url=settings.INFLUXDB_URL,
15-
token=settings.INFLUXDB_TOKEN,
16-
org=settings.INFLUXDB_ORG
17+
url=settings.DRYCC_INFLUXDB_URL,
18+
token=settings.DRYCC_INFLUXDB_TOKEN,
19+
org=settings.DRYCC_INFLUXDB_ORG
1720
)
1821
return local.influxdb_client
1922

2023

2124
def _query_stream(flux_script: str) -> Iterator[FluxRecord]:
2225
with closing(_get_influxdb_client()) as client:
23-
with closing(client.query_api()) as query_api:
24-
with closing(query_api.query_stream(flux_script)) as records:
25-
yield from records
26+
try:
27+
query_api = client.query_api()
28+
records = query_api.query_stream(flux_script)
29+
except ApiException as e:
30+
logger.exception(e)
31+
yield from []
32+
else:
33+
yield from records
2634

2735

2836
def query_container_count(

rootfs/api/serializers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,3 +716,13 @@ def update(self, instance, validated_data):
716716
instance.attach_update()
717717
instance.save()
718718
return instance
719+
720+
721+
class MetricSerializer(serializers.Serializer):
722+
import time
723+
now = int(time.time())
724+
default_start = (now - now % 3600) - 3600
725+
default_stop = now - now % 3600
726+
start = serializers.IntegerField(min_value=946656000, max_value=4102416000, required=False, default=default_start) # noqa
727+
stop = serializers.IntegerField(min_value=946656000, max_value=4102416000, required=False, default=default_stop) # noqa
728+
every = serializers.CharField(max_length=50, required=False, default='5m') # noqa

rootfs/api/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,6 @@
155155
views.UserView.as_view({'patch': 'enable'})),
156156
url(r'^users/(?P<username>[\w.@+-]+)/disable/?$',
157157
views.UserView.as_view({'patch': 'disable'})),
158+
url(r'^apps/(?P<id>{})/metrics/(?P<container_type>[a-z0-9]+(\-[a-z0-9]+)*)?$'.format(settings.APP_URL_REGEX), # noqa
159+
views.MetricView.as_view({'get': 'status'})),
158160
]

rootfs/api/views.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -914,7 +914,7 @@ class MetricView(BaseDryccViewSet):
914914
"""Getting monitoring indicators from influxdb"""
915915

916916
def _get_app(self):
917-
app = get_object_or_404(models.App, id=self.kwargs['app_id'])
917+
app = get_object_or_404(models.App, id=self.kwargs['id'])
918918
self.check_object_permissions(self.request, app)
919919
return app
920920

@@ -976,13 +976,22 @@ def status(self, request, **kwargs):
976976
],
977977
}
978978
"""
979-
app_id, container_type = self._get_app().pk, kwargs['container_type']
980-
start, stop, every = kwargs['start'], kwargs['stop'], kwargs["every"]
981-
return {
979+
app_id, container_type = self._get_app().id, kwargs['container_type']
980+
981+
data = serializers.MetricSerializer(data=self.request.query_params)
982+
if not data.is_valid():
983+
return Response(data.errors, status=422)
984+
start, stop, every = data.validated_data['start'], data.validated_data[
985+
'stop'], data.validated_data["every"]
986+
return Response({
982987
"app_id": app_id,
983988
"container_type": container_type,
984-
"container_count": self._get_container_count(app_id, container_type, start, stop),
985-
"cpu_usage_list": self._get_cpus(app_id, container_type, start, stop, every),
986-
"memory": self._get_memory(app_id, container_type, start, stop, every),
987-
"networks": self._get_networks(app_id, container_type, start, stop, every)
988-
}
989+
"container_count": self._get_container_count(
990+
app_id, container_type, start, stop),
991+
"cpu_usage_list": self._get_cpus(
992+
app_id, container_type, start, stop, every),
993+
"memory": self._get_memory(
994+
app_id, container_type, start, stop, every),
995+
"networks": self._get_networks(
996+
app_id, container_type, start, stop, every)
997+
})

0 commit comments

Comments
 (0)