Skip to content

Commit 19a2565

Browse files
authored
feat: add supports for managed functions (#344)
1 parent 5834332 commit 19a2565

16 files changed

+1731
-0
lines changed

CHANGELOG.md

+3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
### Features
77
1. [#352](https://github.com/influxdata/influxdb-client-python/pull/352): Add `PingService` to check status of OSS and Cloud instance
88

9+
### Documentation
10+
1. [#344](https://github.com/influxdata/influxdb-client-python/pull/344): Add an example How to use Invocable scripts Cloud API
11+
912
## 1.22.0 [2021-10-22]
1013

1114
### Features

examples/README.md

+1
Original file line numberDiff line numberDiff line change
@@ -24,4 +24,5 @@
2424
- [influx_cloud.py](influx_cloud.py) - How to connect to InfluxDB 2 Cloud
2525
- [influxdb_18_example.py](influxdb_18_example.py) - How to connect to InfluxDB 1.8
2626
- [nanosecond_precision.py](nanosecond_precision.py) - How to use nanoseconds precision
27+
- [invocable_scripts.py](invocable_scripts.py) - How to use Invocable scripts Cloud API to create custom endpoints that query data
2728

examples/invocable_scripts.py

+61
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
"""
2+
How to use Invocable scripts Cloud API to create custom endpoints that query data
3+
"""
4+
import datetime
5+
6+
from influxdb_client import InfluxDBClient, InvocableScriptsService, ScriptCreateRequest, ScriptInvocationParams, \
7+
ScriptLanguage
8+
9+
"""
10+
Define credentials
11+
"""
12+
influx_cloud_url = 'https://us-west-2-1.aws.cloud2.influxdata.com'
13+
influx_cloud_token = '...'
14+
bucket_name = '...'
15+
org_name = '...'
16+
17+
with InfluxDBClient(url=influx_cloud_url, token=influx_cloud_token, org=org_name, debug=False, timeout=20_000) as client:
18+
uniqueId = str(datetime.datetime.now())
19+
"""
20+
Find Organization ID by Organization API.
21+
"""
22+
org = client.organizations_api().find_organizations(org=org_name)[0]
23+
24+
scripts_service = InvocableScriptsService(api_client=client.api_client)
25+
26+
"""
27+
Create Invocable Script
28+
"""
29+
print(f"------- Create -------\n")
30+
create_request = ScriptCreateRequest(name=f"my_scrupt_{uniqueId}",
31+
description="my first try",
32+
language=ScriptLanguage.FLUX,
33+
org_id=org.id,
34+
script=f"from(bucket: params.bucket_name) |> range(start: -30d) |> limit(n:2)")
35+
36+
created_script = scripts_service.post_scripts(script_create_request=create_request)
37+
print(created_script)
38+
39+
"""
40+
Invoke a script
41+
"""
42+
print(f"\n------- Invoke -------\n")
43+
response = scripts_service.post_scripts_id_invoke(script_id=created_script.id,
44+
script_invocation_params=ScriptInvocationParams(
45+
params={"bucket_name": bucket_name}))
46+
print(response)
47+
48+
"""
49+
List scripts
50+
"""
51+
print(f"\n------- List -------\n")
52+
scripts = scripts_service.get_scripts().scripts
53+
print("\n".join([f" ---\n ID: {it.id}\n Name: {it.name}\n Description: {it.description}" for it in scripts]))
54+
print("---")
55+
56+
"""
57+
Delete previously created Script
58+
"""
59+
print(f"------- Delete -------\n")
60+
scripts_service.delete_scripts_id(script_id=created_script.id)
61+
print(f" Successfully deleted script: '{created_script.name}'")

influxdb_client/__init__.py

+7
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
from influxdb_client.service.dashboards_service import DashboardsService
2424
from influxdb_client.service.delete_service import DeleteService
2525
from influxdb_client.service.health_service import HealthService
26+
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
2627
from influxdb_client.service.labels_service import LabelsService
2728
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
2829
from influxdb_client.service.notification_rules_service import NotificationRulesService
@@ -233,6 +234,12 @@
233234
from influxdb_client.domain.scraper_target_request import ScraperTargetRequest
234235
from influxdb_client.domain.scraper_target_response import ScraperTargetResponse
235236
from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses
237+
from influxdb_client.domain.script import Script
238+
from influxdb_client.domain.script_create_request import ScriptCreateRequest
239+
from influxdb_client.domain.script_invocation_params import ScriptInvocationParams
240+
from influxdb_client.domain.script_language import ScriptLanguage
241+
from influxdb_client.domain.script_update_request import ScriptUpdateRequest
242+
from influxdb_client.domain.scripts import Scripts
236243
from influxdb_client.domain.secret_keys import SecretKeys
237244
from influxdb_client.domain.secret_keys_response import SecretKeysResponse
238245
from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties

influxdb_client/client/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from influxdb_client.service.dashboards_service import DashboardsService
2222
from influxdb_client.service.delete_service import DeleteService
2323
from influxdb_client.service.health_service import HealthService
24+
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
2425
from influxdb_client.service.labels_service import LabelsService
2526
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
2627
from influxdb_client.service.notification_rules_service import NotificationRulesService

influxdb_client/client/write/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
from influxdb_client.service.dashboards_service import DashboardsService
2222
from influxdb_client.service.delete_service import DeleteService
2323
from influxdb_client.service.health_service import HealthService
24+
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
2425
from influxdb_client.service.labels_service import LabelsService
2526
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
2627
from influxdb_client.service.notification_rules_service import NotificationRulesService

influxdb_client/domain/__init__.py

+6
Original file line numberDiff line numberDiff line change
@@ -199,6 +199,12 @@
199199
from influxdb_client.domain.scraper_target_request import ScraperTargetRequest
200200
from influxdb_client.domain.scraper_target_response import ScraperTargetResponse
201201
from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses
202+
from influxdb_client.domain.script import Script
203+
from influxdb_client.domain.script_create_request import ScriptCreateRequest
204+
from influxdb_client.domain.script_invocation_params import ScriptInvocationParams
205+
from influxdb_client.domain.script_language import ScriptLanguage
206+
from influxdb_client.domain.script_update_request import ScriptUpdateRequest
207+
from influxdb_client.domain.scripts import Scripts
202208
from influxdb_client.domain.secret_keys import SecretKeys
203209
from influxdb_client.domain.secret_keys_response import SecretKeysResponse
204210
from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties

0 commit comments

Comments
 (0)