Skip to content

Commit f851303

Browse files
authored
feat: use InfluxDB OSS API definitions to generated APIs (#261)
1 parent 3235d4e commit f851303

File tree

279 files changed

+9053
-5586
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

279 files changed

+9053
-5586
lines changed

.circleci/config.yml

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ jobs:
4949
default: &default-python "circleci/python:3.6-buster"
5050
influxdb-image:
5151
type: string
52-
default: "influxdb:latest"
52+
default: &default-influxdb "influxdb:latest"
5353
enabled-ciso-8601:
5454
type: boolean
5555
default: true
@@ -108,6 +108,23 @@ jobs:
108108
command: |
109109
pip install pydocstyle --user
110110
pydocstyle --count influxdb_client
111+
check-examples:
112+
docker:
113+
- image: *default-python
114+
environment:
115+
PIPENV_VENV_IN_PROJECT: true
116+
- image: *default-influxdb
117+
environment:
118+
INFLUXD_HTTP_BIND_ADDRESS: :8086
119+
steps:
120+
- prepare
121+
- run:
122+
name: Checks that examples are runnable
123+
command: |
124+
pip install -e . --user
125+
export PYTHONPATH="$PWD"
126+
python examples/monitoring_and_alerting.py
127+
python examples/buckets_management.py
111128
check-aws-lambda-layer:
112129
docker:
113130
- image: docker:19
@@ -129,6 +146,7 @@ workflows:
129146
- check-code-style
130147
- check-docstyle
131148
- check-twine
149+
- check-examples
132150
- tests-python:
133151
name: test-3.6
134152
- tests-python:

CHANGELOG.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
## 1.18.0 [unreleased]
22

3+
### Breaking Changes
4+
5+
This release introduces a support for new InfluxDB OSS API definitions - [oss.yml](https://github.com/influxdata/openapi/blob/master/contracts/oss.yml). The following breaking changes are in underlying API services and doesn't affect common apis such as - `WriteApi`, `QueryApi`, `BucketsApi`, `OrganizationsApi`...
6+
- `AuthorizationsService` uses `AuthorizationPostRequest` to create `Authorization`
7+
- `BucketsService` uses `PatchBucketRequest` to update `Bucket`
8+
- `DashboardsService` uses `PatchDashboardRequest` to update `Dashboard`
9+
- `DeleteService` is used to delete tome series date instead of `DefaultService`
10+
- `DBRPs` contains list of `DBRP` in `content` property
11+
- `OrganizationsService` uses `PostOrganizationRequest` to create `Organization`
12+
- `Run` contains list of `LogEvent` in `log` property
13+
- `OrganizationsService` uses `PatchOrganizationRequest` to update `Organization`
14+
- `OnboardingResponse` uses `UserResponse` as `user` property
15+
- `ResourceMember` and `ResourceOwner` inherits from `UserResponse`
16+
- `Users` contains list of `UserResponse` in `users` property
17+
- `UsersService` uses `UserResponse` as a response to requests
18+
319
### Features
420
1. [#237](https://github.com/influxdata/influxdb-client-python/pull/237): Use kwargs to pass query parameters into API list call - useful for the ability to use pagination.
521
1. [#241](https://github.com/influxdata/influxdb-client-python/pull/241): Add detail error message for not supported type of `Point.field`
@@ -12,6 +28,9 @@
1228
### Documentation
1329
1. [#255](https://github.com/influxdata/influxdb-client-python/pull/255): Fix invalid description for env var `INFLUXDB_V2_CONNECTION_POOL_MAXSIZE`
1430

31+
### API
32+
1. [#261](https://github.com/influxdata/influxdb-client-python/pull/261): Use InfluxDB OSS API definitions to generated APIs
33+
1534
## 1.17.0 [2021-04-30]
1635

1736
### Features

examples/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414

1515
## Management API
1616
- [buckets_management.py](buckets_management.py) - How to create, list and delete Buckets
17+
- [monitoring_and_alerting.py](monitoring_and_alerting.py) - How to create the Check with Slack notification.
1718

1819
## Others
1920
- [influx_cloud.py](influx_cloud.py) - How to connect to InfluxDB 2 Cloud

examples/monitoring_and_alerting.py

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
"""
2+
How to create a check with Slack notification.
3+
"""
4+
import datetime
5+
6+
from influxdb_client.service.notification_rules_service import NotificationRulesService
7+
8+
from influxdb_client.domain.rule_status_level import RuleStatusLevel
9+
10+
from influxdb_client.domain.status_rule import StatusRule
11+
12+
from influxdb_client.domain.slack_notification_rule import SlackNotificationRule
13+
14+
from influxdb_client import InfluxDBClient
15+
from influxdb_client.client.write_api import SYNCHRONOUS
16+
from influxdb_client.domain.check_status_level import CheckStatusLevel
17+
from influxdb_client.domain.dashboard_query import DashboardQuery
18+
from influxdb_client.domain.lesser_threshold import LesserThreshold
19+
from influxdb_client.domain.query_edit_mode import QueryEditMode
20+
from influxdb_client.domain.slack_notification_endpoint import SlackNotificationEndpoint
21+
from influxdb_client.domain.task_status_type import TaskStatusType
22+
from influxdb_client.domain.threshold_check import ThresholdCheck
23+
from influxdb_client.service.checks_service import ChecksService
24+
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
25+
26+
"""
27+
Define credentials
28+
"""
29+
url = "http://localhost:8086"
30+
token = "my-token"
31+
org_name = "my-org"
32+
bucket_name = "my-bucket"
33+
34+
35+
with InfluxDBClient(url=url, token=token, org=org_name, debug=False) as client:
36+
uniqueId = str(datetime.datetime.now())
37+
38+
"""
39+
Find Organization ID by Organization API.
40+
"""
41+
org = client.organizations_api().find_organizations(org=org_name)[0]
42+
43+
"""
44+
Prepare data
45+
"""
46+
client.write_api(write_options=SYNCHRONOUS).write(record="mem,production=true free=40", bucket=bucket_name)
47+
48+
"""
49+
Create Threshold Check - set status to `Critical` if the current value is lesser than `35`.
50+
"""
51+
threshold = LesserThreshold(value=35.0,
52+
level=CheckStatusLevel.CRIT)
53+
query = f'''
54+
from(bucket:"{bucket_name}")
55+
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
56+
|> filter(fn: (r) => r["_measurement"] == "mem")
57+
|> filter(fn: (r) => r["_field"] == "free")
58+
|> aggregateWindow(every: 1m, fn: mean, createEmpty: false)
59+
|> yield(name: "mean")
60+
'''
61+
62+
check = ThresholdCheck(name=f"Check created by Remote API_{uniqueId}",
63+
status_message_template="The value is on: ${ r._level } level!",
64+
every="5s",
65+
offset="0s",
66+
query=DashboardQuery(edit_mode=QueryEditMode.ADVANCED, text=query),
67+
thresholds=[threshold],
68+
org_id=org.id,
69+
status=TaskStatusType.ACTIVE)
70+
71+
checks_service = ChecksService(api_client=client.api_client)
72+
checks_service.create_check(check)
73+
74+
"""
75+
Create Slack Notification endpoint
76+
"""
77+
notification_endpoint = SlackNotificationEndpoint(name=f"Slack Dev Channel_{uniqueId}",
78+
url="https://hooks.slack.com/services/x/y/z",
79+
org_id=org.id)
80+
notification_endpoint_service = NotificationEndpointsService(api_client=client.api_client)
81+
notification_endpoint = notification_endpoint_service.create_notification_endpoint(notification_endpoint)
82+
83+
"""
84+
Create Notification Rule to notify critical value to Slack Channel
85+
"""
86+
notification_rule = SlackNotificationRule(name=f"Critical status to Slack_{uniqueId}",
87+
every="10s",
88+
offset="0s",
89+
message_template="${ r._message }",
90+
status_rules=[StatusRule(current_level=RuleStatusLevel.CRIT)],
91+
tag_rules=[],
92+
endpoint_id=notification_endpoint.id,
93+
org_id=org.id,
94+
status=TaskStatusType.ACTIVE)
95+
96+
notification_rules_service = NotificationRulesService(api_client=client.api_client)
97+
notification_rules_service.create_notification_rule(notification_rule)
98+
99+
"""
100+
List all Checks
101+
"""
102+
print(f"\n------- Checks: -------\n")
103+
checks = checks_service.get_checks(org_id=org.id).checks
104+
print("\n".join([f" ---\n ID: {it.id}\n Name: {it.name}\n Type: {type(it)}" for it in checks]))
105+
print("---")
106+
107+
"""
108+
List all Endpoints
109+
"""
110+
print(f"\n------- Notification Endpoints: -------\n")
111+
notification_endpoints = notification_endpoint_service.get_notification_endpoints(org_id=org.id).notification_endpoints
112+
print("\n".join([f" ---\n ID: {it.id}\n Name: {it.name}\n Type: {type(it)}" for it in notification_endpoints]))
113+
print("---")
114+
115+
"""
116+
List all Notification Rules
117+
"""
118+
print(f"\n------- Notification Rules: -------\n")
119+
notification_rules = notification_rules_service.get_notification_rules(org_id=org.id).notification_rules
120+
print("\n".join([f" ---\n ID: {it.id}\n Name: {it.name}\n Type: {type(it)}" for it in notification_rules]))
121+
print("---")

influxdb_client/__init__.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
# flake8: noqa
44

55
"""
6-
Influx API Service.
6+
Influx OSS API Service.
77
88
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
99
10-
OpenAPI spec version: 0.1.0
10+
OpenAPI spec version: 2.0.0
1111
Generated by: https://openapi-generator.tech
1212
"""
1313

@@ -21,6 +21,7 @@
2121
from influxdb_client.service.checks_service import ChecksService
2222
from influxdb_client.service.dbr_ps_service import DBRPsService
2323
from influxdb_client.service.dashboards_service import DashboardsService
24+
from influxdb_client.service.delete_service import DeleteService
2425
from influxdb_client.service.health_service import HealthService
2526
from influxdb_client.service.labels_service import LabelsService
2627
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
@@ -52,19 +53,22 @@
5253
from influxdb_client.domain.analyze_query_response_errors import AnalyzeQueryResponseErrors
5354
from influxdb_client.domain.array_expression import ArrayExpression
5455
from influxdb_client.domain.authorization import Authorization
56+
from influxdb_client.domain.authorization_post_request import AuthorizationPostRequest
5557
from influxdb_client.domain.authorization_update_request import AuthorizationUpdateRequest
5658
from influxdb_client.domain.authorizations import Authorizations
5759
from influxdb_client.domain.axes import Axes
5860
from influxdb_client.domain.axis import Axis
5961
from influxdb_client.domain.axis_scale import AxisScale
6062
from influxdb_client.domain.bad_statement import BadStatement
63+
from influxdb_client.domain.band_view_properties import BandViewProperties
6164
from influxdb_client.domain.binary_expression import BinaryExpression
6265
from influxdb_client.domain.block import Block
6366
from influxdb_client.domain.boolean_literal import BooleanLiteral
6467
from influxdb_client.domain.bucket import Bucket
6568
from influxdb_client.domain.bucket_links import BucketLinks
6669
from influxdb_client.domain.bucket_retention_rules import BucketRetentionRules
6770
from influxdb_client.domain.buckets import Buckets
71+
from influxdb_client.domain.builder_aggregate_function_type import BuilderAggregateFunctionType
6872
from influxdb_client.domain.builder_config import BuilderConfig
6973
from influxdb_client.domain.builder_config_aggregate_window import BuilderConfigAggregateWindow
7074
from influxdb_client.domain.builder_functions_type import BuilderFunctionsType
@@ -74,10 +78,10 @@
7478
from influxdb_client.domain.cell import Cell
7579
from influxdb_client.domain.cell_links import CellLinks
7680
from influxdb_client.domain.cell_update import CellUpdate
81+
from influxdb_client.domain.cell_with_view_properties import CellWithViewProperties
7782
from influxdb_client.domain.check import Check
7883
from influxdb_client.domain.check_base import CheckBase
7984
from influxdb_client.domain.check_base_links import CheckBaseLinks
80-
from influxdb_client.domain.check_base_tags import CheckBaseTags
8185
from influxdb_client.domain.check_discriminator import CheckDiscriminator
8286
from influxdb_client.domain.check_patch import CheckPatch
8387
from influxdb_client.domain.check_status_level import CheckStatusLevel
@@ -87,18 +91,22 @@
8791
from influxdb_client.domain.constant_variable_properties import ConstantVariableProperties
8892
from influxdb_client.domain.create_cell import CreateCell
8993
from influxdb_client.domain.create_dashboard_request import CreateDashboardRequest
94+
from influxdb_client.domain.custom_check import CustomCheck
9095
from influxdb_client.domain.dbrp import DBRP
9196
from influxdb_client.domain.dbrp_update import DBRPUpdate
9297
from influxdb_client.domain.dbr_ps import DBRPs
9398
from influxdb_client.domain.dashboard import Dashboard
9499
from influxdb_client.domain.dashboard_color import DashboardColor
95100
from influxdb_client.domain.dashboard_query import DashboardQuery
101+
from influxdb_client.domain.dashboard_with_view_properties import DashboardWithViewProperties
96102
from influxdb_client.domain.dashboards import Dashboards
97103
from influxdb_client.domain.date_time_literal import DateTimeLiteral
98104
from influxdb_client.domain.deadman_check import DeadmanCheck
99105
from influxdb_client.domain.decimal_places import DecimalPlaces
100106
from influxdb_client.domain.delete_predicate_request import DeletePredicateRequest
101107
from influxdb_client.domain.dialect import Dialect
108+
from influxdb_client.domain.dict_expression import DictExpression
109+
from influxdb_client.domain.dict_item import DictItem
102110
from influxdb_client.domain.document import Document
103111
from influxdb_client.domain.document_create import DocumentCreate
104112
from influxdb_client.domain.document_links import DocumentLinks
@@ -138,7 +146,6 @@
138146
from influxdb_client.domain.label_update import LabelUpdate
139147
from influxdb_client.domain.labels_response import LabelsResponse
140148
from influxdb_client.domain.language_request import LanguageRequest
141-
from influxdb_client.domain.legend import Legend
142149
from influxdb_client.domain.lesser_threshold import LesserThreshold
143150
from influxdb_client.domain.line_plus_single_stat_properties import LinePlusSingleStatProperties
144151
from influxdb_client.domain.line_protocol_error import LineProtocolError
@@ -152,6 +159,7 @@
152159
from influxdb_client.domain.member_assignment import MemberAssignment
153160
from influxdb_client.domain.member_expression import MemberExpression
154161
from influxdb_client.domain.model_property import ModelProperty
162+
from influxdb_client.domain.mosaic_view_properties import MosaicViewProperties
155163
from influxdb_client.domain.node import Node
156164
from influxdb_client.domain.notification_endpoint import NotificationEndpoint
157165
from influxdb_client.domain.notification_endpoint_base import NotificationEndpointBase
@@ -180,6 +188,10 @@
180188
from influxdb_client.domain.pager_duty_notification_rule_base import PagerDutyNotificationRuleBase
181189
from influxdb_client.domain.paren_expression import ParenExpression
182190
from influxdb_client.domain.password_reset_body import PasswordResetBody
191+
from influxdb_client.domain.patch_bucket_request import PatchBucketRequest
192+
from influxdb_client.domain.patch_dashboard_request import PatchDashboardRequest
193+
from influxdb_client.domain.patch_organization_request import PatchOrganizationRequest
194+
from influxdb_client.domain.patch_retention_rule import PatchRetentionRule
183195
from influxdb_client.domain.permission import Permission
184196
from influxdb_client.domain.permission_resource import PermissionResource
185197
from influxdb_client.domain.pipe_expression import PipeExpression
@@ -188,6 +200,7 @@
188200
from influxdb_client.domain.post_check import PostCheck
189201
from influxdb_client.domain.post_notification_endpoint import PostNotificationEndpoint
190202
from influxdb_client.domain.post_notification_rule import PostNotificationRule
203+
from influxdb_client.domain.post_organization_request import PostOrganizationRequest
191204
from influxdb_client.domain.property_key import PropertyKey
192205
from influxdb_client.domain.query import Query
193206
from influxdb_client.domain.query_edit_mode import QueryEditMode
@@ -199,6 +212,7 @@
199212
from influxdb_client.domain.renamable_field import RenamableField
200213
from influxdb_client.domain.resource_member import ResourceMember
201214
from influxdb_client.domain.resource_members import ResourceMembers
215+
from influxdb_client.domain.resource_members_links import ResourceMembersLinks
202216
from influxdb_client.domain.resource_owner import ResourceOwner
203217
from influxdb_client.domain.resource_owners import ResourceOwners
204218
from influxdb_client.domain.return_statement import ReturnStatement
@@ -209,12 +223,12 @@
209223
from influxdb_client.domain.rule_status_level import RuleStatusLevel
210224
from influxdb_client.domain.run import Run
211225
from influxdb_client.domain.run_links import RunLinks
212-
from influxdb_client.domain.run_log import RunLog
213226
from influxdb_client.domain.run_manually import RunManually
214227
from influxdb_client.domain.runs import Runs
215228
from influxdb_client.domain.smtp_notification_rule import SMTPNotificationRule
216229
from influxdb_client.domain.smtp_notification_rule_base import SMTPNotificationRuleBase
217230
from influxdb_client.domain.scatter_view_properties import ScatterViewProperties
231+
from influxdb_client.domain.schema_type import SchemaType
218232
from influxdb_client.domain.scraper_target_request import ScraperTargetRequest
219233
from influxdb_client.domain.scraper_target_response import ScraperTargetResponse
220234
from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses
@@ -228,9 +242,11 @@
228242
from influxdb_client.domain.source_links import SourceLinks
229243
from influxdb_client.domain.sources import Sources
230244
from influxdb_client.domain.statement import Statement
245+
from influxdb_client.domain.static_legend import StaticLegend
231246
from influxdb_client.domain.status_rule import StatusRule
232247
from influxdb_client.domain.string_literal import StringLiteral
233248
from influxdb_client.domain.table_view_properties import TableViewProperties
249+
from influxdb_client.domain.table_view_properties_table_options import TableViewPropertiesTableOptions
234250
from influxdb_client.domain.tag_rule import TagRule
235251
from influxdb_client.domain.task import Task
236252
from influxdb_client.domain.task_create_request import TaskCreateRequest
@@ -240,19 +256,23 @@
240256
from influxdb_client.domain.tasks import Tasks
241257
from influxdb_client.domain.telegraf import Telegraf
242258
from influxdb_client.domain.telegraf_plugin import TelegrafPlugin
259+
from influxdb_client.domain.telegraf_plugins import TelegrafPlugins
243260
from influxdb_client.domain.telegraf_request import TelegrafRequest
244261
from influxdb_client.domain.telegraf_request_metadata import TelegrafRequestMetadata
245262
from influxdb_client.domain.telegrafs import Telegrafs
263+
from influxdb_client.domain.telegram_notification_endpoint import TelegramNotificationEndpoint
264+
from influxdb_client.domain.telegram_notification_rule import TelegramNotificationRule
265+
from influxdb_client.domain.telegram_notification_rule_base import TelegramNotificationRuleBase
246266
from influxdb_client.domain.test_statement import TestStatement
247267
from influxdb_client.domain.threshold import Threshold
248268
from influxdb_client.domain.threshold_base import ThresholdBase
249269
from influxdb_client.domain.threshold_check import ThresholdCheck
250270
from influxdb_client.domain.unary_expression import UnaryExpression
251271
from influxdb_client.domain.unsigned_integer_literal import UnsignedIntegerLiteral
252272
from influxdb_client.domain.user import User
253-
from influxdb_client.domain.user_links import UserLinks
273+
from influxdb_client.domain.user_response import UserResponse
274+
from influxdb_client.domain.user_response_links import UserResponseLinks
254275
from influxdb_client.domain.users import Users
255-
from influxdb_client.domain.users_links import UsersLinks
256276
from influxdb_client.domain.variable import Variable
257277
from influxdb_client.domain.variable_assignment import VariableAssignment
258278
from influxdb_client.domain.variable_links import VariableLinks

influxdb_client/api_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# coding: utf-8
22
"""
3-
Influx API Service.
3+
Influx OSS API Service.
44
55
No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator) # noqa: E501
66
7-
OpenAPI spec version: 0.1.0
7+
OpenAPI spec version: 2.0.0
88
Generated by: https://openapi-generator.tech
99
"""
1010

0 commit comments

Comments
 (0)