Skip to content

Commit f851303

Browse files
authored
feat: use InfluxDB OSS API definitions to generated APIs (influxdata#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)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy