5
5
A bucket belongs to an organization.
6
6
"""
7
7
import warnings
8
-
8
+ from influxdb_client . rest import ApiException
9
9
from influxdb_client import BucketsService , Bucket , PostBucketRequest , PatchBucketRequest
10
10
from influxdb_client .client .util .helpers import get_org_query_param
11
11
@@ -20,20 +20,19 @@ def __init__(self, influxdb_client):
20
20
21
21
def create_bucket (self , bucket = None , bucket_name = None , org_id = None , retention_rules = None ,
22
22
description = None , org = None ) -> Bucket :
23
- """Create a bucket.
23
+ """Create a bucket. Database creation via v1 API as fallback.
24
24
25
25
:param Bucket|PostBucketRequest bucket: bucket to create
26
26
:param bucket_name: bucket name
27
27
:param description: bucket description
28
28
:param org_id: org_id
29
- :param bucket_name: bucket name
30
29
:param retention_rules: retention rules array or single BucketRetentionRules
31
30
:param str, Organization org: specifies the organization for create the bucket;
32
31
Take the ``ID``, ``Name`` or ``Organization``.
33
32
If not specified the default value from ``InfluxDBClient.org`` is used.
34
- :return: Bucket
33
+ :return: Bucket or the request thread when falling back.
35
34
If the method is called asynchronously,
36
- returns the request thread.
35
+ returns also the request thread.
37
36
"""
38
37
if retention_rules is None :
39
38
retention_rules = []
@@ -56,7 +55,12 @@ def create_bucket(self, bucket=None, bucket_name=None, org_id=None, retention_ru
56
55
client = self ._influxdb_client ,
57
56
required_id = True ))
58
57
59
- return self ._buckets_service .post_buckets (post_bucket_request = bucket )
58
+ try :
59
+ return self ._buckets_service .post_buckets (post_bucket_request = bucket )
60
+ except ApiException as ex :
61
+ # Fall back to v1 API if buckets are not supported
62
+ database_name = bucket_name if bucket_name is not None else bucket
63
+ return self .create_database (database = database_name , retention_rules = retention_rules )
60
64
61
65
def create_database (self , database = None , retention_rules = None ):
62
66
"""Create a database at the v1 api (legacy).
@@ -67,16 +71,6 @@ def create_database(self, database=None, retention_rules=None):
67
71
if database is None :
68
72
raise ValueError ("Invalid value for `database`, must be defined." )
69
73
70
- if retention_rules is None :
71
- retention_rules = []
72
-
73
- rules = []
74
-
75
- if isinstance (retention_rules , list ):
76
- rules .extend (retention_rules )
77
- else :
78
- rules .append (retention_rules )
79
-
80
74
# Hedaer and local_var_params for standard procedures only
81
75
header_params = {}
82
76
header_params ['Accept' ] = self ._influxdb_client .api_client .select_header_accept (
@@ -116,17 +110,20 @@ def update_bucket(self, bucket: Bucket) -> Bucket:
116
110
return self ._buckets_service .patch_buckets_id (bucket_id = bucket .id , patch_bucket_request = request )
117
111
118
112
def delete_bucket (self , bucket ):
119
- """Delete a bucket.
113
+ """Delete a bucket. Delete a database via v1 API as fallback.
120
114
121
115
:param bucket: bucket id or Bucket
122
- :return: Bucket
116
+ :return: Bucket or the request thread when falling back
123
117
"""
124
118
if isinstance (bucket , Bucket ):
125
119
bucket_id = bucket .id
126
120
else :
127
121
bucket_id = bucket
128
122
129
- return self ._buckets_service .delete_buckets_id (bucket_id = bucket_id )
123
+ try :
124
+ return self ._buckets_service .delete_buckets_id (bucket_id = bucket_id )
125
+ except ApiException as ex :
126
+ return self .delete_database (database = bucket_id )
130
127
131
128
def delete_database (self , database = None ):
132
129
"""Delete a database at the v1 api (legacy).
0 commit comments