Skip to content

feat: add supports for API Invocable Scripts #344

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 8 commits into from
Oct 25, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@
### Features
1. [#352](https://github.com/influxdata/influxdb-client-python/pull/352): Add `PingService` to check status of OSS and Cloud instance

### Documentation
1. [#344](https://github.com/influxdata/influxdb-client-python/pull/344): Add an example How to use Invocable scripts Cloud API

## 1.22.0 [2021-10-22]

### Features
Expand Down
1 change: 1 addition & 0 deletions examples/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@
- [influx_cloud.py](influx_cloud.py) - How to connect to InfluxDB 2 Cloud
- [influxdb_18_example.py](influxdb_18_example.py) - How to connect to InfluxDB 1.8
- [nanosecond_precision.py](nanosecond_precision.py) - How to use nanoseconds precision
- [invocable_scripts.py](invocable_scripts.py) - How to use Invocable scripts Cloud API to create custom endpoints that query data

61 changes: 61 additions & 0 deletions examples/invocable_scripts.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
"""
How to use Invocable scripts Cloud API to create custom endpoints that query data
"""
import datetime

from influxdb_client import InfluxDBClient, InvocableScriptsService, ScriptCreateRequest, ScriptInvocationParams, \
ScriptLanguage

"""
Define credentials
"""
influx_cloud_url = 'https://us-west-2-1.aws.cloud2.influxdata.com'
influx_cloud_token = '...'
bucket_name = '...'
org_name = '...'

with InfluxDBClient(url=influx_cloud_url, token=influx_cloud_token, org=org_name, debug=False, timeout=20_000) as client:
uniqueId = str(datetime.datetime.now())
"""
Find Organization ID by Organization API.
"""
org = client.organizations_api().find_organizations(org=org_name)[0]

scripts_service = InvocableScriptsService(api_client=client.api_client)

"""
Create Invocable Script
"""
print(f"------- Create -------\n")
create_request = ScriptCreateRequest(name=f"my_scrupt_{uniqueId}",
description="my first try",
language=ScriptLanguage.FLUX,
org_id=org.id,
script=f"from(bucket: params.bucket_name) |> range(start: -30d) |> limit(n:2)")

created_script = scripts_service.post_scripts(script_create_request=create_request)
print(created_script)

"""
Invoke a script
"""
print(f"\n------- Invoke -------\n")
response = scripts_service.post_scripts_id_invoke(script_id=created_script.id,
script_invocation_params=ScriptInvocationParams(
params={"bucket_name": bucket_name}))
print(response)

"""
List scripts
"""
print(f"\n------- List -------\n")
scripts = scripts_service.get_scripts().scripts
print("\n".join([f" ---\n ID: {it.id}\n Name: {it.name}\n Description: {it.description}" for it in scripts]))
print("---")

"""
Delete previously created Script
"""
print(f"------- Delete -------\n")
scripts_service.delete_scripts_id(script_id=created_script.id)
print(f" Successfully deleted script: '{created_script.name}'")
7 changes: 7 additions & 0 deletions influxdb_client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
from influxdb_client.service.dashboards_service import DashboardsService
from influxdb_client.service.delete_service import DeleteService
from influxdb_client.service.health_service import HealthService
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
from influxdb_client.service.labels_service import LabelsService
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
from influxdb_client.service.notification_rules_service import NotificationRulesService
Expand Down Expand Up @@ -233,6 +234,12 @@
from influxdb_client.domain.scraper_target_request import ScraperTargetRequest
from influxdb_client.domain.scraper_target_response import ScraperTargetResponse
from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses
from influxdb_client.domain.script import Script
from influxdb_client.domain.script_create_request import ScriptCreateRequest
from influxdb_client.domain.script_invocation_params import ScriptInvocationParams
from influxdb_client.domain.script_language import ScriptLanguage
from influxdb_client.domain.script_update_request import ScriptUpdateRequest
from influxdb_client.domain.scripts import Scripts
from influxdb_client.domain.secret_keys import SecretKeys
from influxdb_client.domain.secret_keys_response import SecretKeysResponse
from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties
Expand Down
1 change: 1 addition & 0 deletions influxdb_client/client/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from influxdb_client.service.dashboards_service import DashboardsService
from influxdb_client.service.delete_service import DeleteService
from influxdb_client.service.health_service import HealthService
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
from influxdb_client.service.labels_service import LabelsService
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
from influxdb_client.service.notification_rules_service import NotificationRulesService
Expand Down
1 change: 1 addition & 0 deletions influxdb_client/client/write/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from influxdb_client.service.dashboards_service import DashboardsService
from influxdb_client.service.delete_service import DeleteService
from influxdb_client.service.health_service import HealthService
from influxdb_client.service.invocable_scripts_service import InvocableScriptsService
from influxdb_client.service.labels_service import LabelsService
from influxdb_client.service.notification_endpoints_service import NotificationEndpointsService
from influxdb_client.service.notification_rules_service import NotificationRulesService
Expand Down
6 changes: 6 additions & 0 deletions influxdb_client/domain/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,12 @@
from influxdb_client.domain.scraper_target_request import ScraperTargetRequest
from influxdb_client.domain.scraper_target_response import ScraperTargetResponse
from influxdb_client.domain.scraper_target_responses import ScraperTargetResponses
from influxdb_client.domain.script import Script
from influxdb_client.domain.script_create_request import ScriptCreateRequest
from influxdb_client.domain.script_invocation_params import ScriptInvocationParams
from influxdb_client.domain.script_language import ScriptLanguage
from influxdb_client.domain.script_update_request import ScriptUpdateRequest
from influxdb_client.domain.scripts import Scripts
from influxdb_client.domain.secret_keys import SecretKeys
from influxdb_client.domain.secret_keys_response import SecretKeysResponse
from influxdb_client.domain.single_stat_view_properties import SingleStatViewProperties
Expand Down
Loading