Giter VIP home page Giter VIP logo

Comments (3)

bednar avatar bednar commented on May 28, 2024

Hi @trevorbonas,

Thanks for using our client.

Is this something you would be willing to help with? All PR is welcome and we will be happy to review your submission.

Regards

from influxdb-client-python.

trevorbonas avatar trevorbonas commented on May 28, 2024

@bednar I would love to but:

  • I don't know how to use these services correctly.

  • I get errors with BackupService:
    Platform: macOS Sonoma 14.1.1 Apple M1 Max.
    Python version: 3.11.6.
    influxdb-client-python version: 1.38.0.
    InfluxDB version: OSS 2.7.4.
    Reproducible code:

    from influxdb_client import InfluxDBClient
    from influxdb_client.service import BackupService
    
    # Using the Docker container setup with scripts/influxdb-restart.sh
    # and imported data from the bird migration sample set
    client = InfluxDBClient(url="http://localhost:8086", token="my-token",
        org="my-org")
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()

    Error:

    Traceback (most recent call last):
    File "/Users/trevor.bonas/reproduce.py", line 6, in <module>
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/service/backup_service.py", line 182, in get_backup_metadata_with_http_info
    return self.api_client.call_api(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 343, in call_api
    return self.__call_api(resource_path, method,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 173, in __call_api
    response_data = self.request(
                    ^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 365, in request
    return self.rest_client.GET(url,
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/rest.py", line 268, in GET
    return self.request("GET", url,
           ^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/rest.py", line 250, in request
    r.data = r.data.decode('utf8')
             ^^^^^^^^^^^^^^^^^^^^^
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 166: invalid continuation byte

    When the hardcoded value in influxdb_client/_sync/rest.py is changed from utf8 to latin1 then this error occurs:

    Traceback (most recent call last):
    File "/Users/trevor.bonas/reproduce.py", line 6, in <module>
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/service/backup_service.py", line 182, in get_backup_metadata_with_http_info
    return self.api_client.call_api(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 343, in call_api
    return self.__call_api(resource_path, method,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 185, in __call_api
    return_data = self.deserialize(response_data, response_type)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 257, in deserialize
    return self.__deserialize(data, response_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 296, in __deserialize
    return self.__deserialize_model(data, klass)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 647, in __deserialize_model
    instance = klass(**kwargs)
               ^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/domain/metadata_backup.py", line 51, in __init__
    self.kv = kv
    ^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/domain/metadata_backup.py", line 72, in kv
    raise ValueError("Invalid value for `kv`, must not be `None`")  # noqa: E501
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ValueError: Invalid value for `kv`, must not be `None`

    Argument values for get_backup_metadata_with_http_info have no effect re: the errors.

Let me know whether my usage is correct, whether you have any tips for getting BackupService working, or whether I should make a separate issue for these errors.

from influxdb-client-python.

lenoqt avatar lenoqt commented on May 28, 2024

@bednar I would love to but:

  • I don't know how to use these services correctly.

  • I get errors with BackupService:
    Platform: macOS Sonoma 14.1.1 Apple M1 Max.
    Python version: 3.11.6.
    influxdb-client-python version: 1.38.0.
    InfluxDB version: OSS 2.7.4.
    Reproducible code:

    from influxdb_client import InfluxDBClient
    from influxdb_client.service import BackupService
    
    # Using the Docker container setup with scripts/influxdb-restart.sh
    # and imported data from the bird migration sample set
    client = InfluxDBClient(url="http://localhost:8086", token="my-token",
        org="my-org")
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()

    Error:

    Traceback (most recent call last):
    File "/Users/trevor.bonas/reproduce.py", line 6, in <module>
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/service/backup_service.py", line 182, in get_backup_metadata_with_http_info
    return self.api_client.call_api(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 343, in call_api
    return self.__call_api(resource_path, method,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 173, in __call_api
    response_data = self.request(
                    ^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py", line 365, in request
    return self.rest_client.GET(url,
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/rest.py", line 268, in GET
    return self.request("GET", url,
           ^^^^^^^^^^^^^^^^^^^^^^^^
    File "/opt/homebrew/lib/python3.11/site-packages/influxdb_client/_sync/rest.py", line 250, in request
    r.data = r.data.decode('utf8')
             ^^^^^^^^^^^^^^^^^^^^^
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xed in position 166: invalid continuation byte

    When the hardcoded value in influxdb_client/_sync/rest.py is changed from utf8 to latin1 then this error occurs:

    Traceback (most recent call last):
    File "/Users/trevor.bonas/reproduce.py", line 6, in <module>
    metadata = BackupService(client.api_client).get_backup_metadata_with_http_info()
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/service/backup_service.py", line 182, in get_backup_metadata_with_http_info
    return self.api_client.call_api(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 343, in call_api
    return self.__call_api(resource_path, method,
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 185, in __call_api
    return_data = self.deserialize(response_data, response_type)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 257, in deserialize
    return self.__deserialize(data, response_type)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 296, in __deserialize
    return self.__deserialize_model(data, klass)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/_sync/api_client.py", line 647, in __deserialize_model
    instance = klass(**kwargs)
               ^^^^^^^^^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/domain/metadata_backup.py", line 51, in __init__
    self.kv = kv
    ^^^^^^^
    File "/Users/trevor.bonas/influxdb-client-python/influxdb_client/domain/metadata_backup.py", line 72, in kv
    raise ValueError("Invalid value for `kv`, must not be `None`")  # noqa: E501
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    ValueError: Invalid value for `kv`, must not be `None`

    Argument values for get_backup_metadata_with_http_info have no effect re: the errors.

Let me know whether my usage is correct, whether you have any tips for getting BackupService working, or whether I should make a separate issue for these errors.

The library is badly outdated it seems, I am trying to restore a bucket and using RestoreService.post_restore_bucket_id returns the following error, and then further checking on my server, the endpoint that is pointing to this method, doesn't exists. The other methods for restoring or taking backups also don't work, I switched to the golang version and it looks that one is up to date.

---------------------------------------------------------------------------
ApiException                              Traceback (most recent call last)
Cell In[6], line 1
----> 1 restore_srv.post_restore_bucket_id("927b185ee3412511", "../../backup-bucket/")

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/service/restore_service.py:53, in RestoreService.post_restore_bucket_id(self, bucket_id, body, **kwargs)
     51     return self.post_restore_bucket_id_with_http_info(bucket_id, body, **kwargs)  # noqa: E501
     52 else:
---> 53     (data) = self.post_restore_bucket_id_with_http_info(bucket_id, body, **kwargs)  # noqa: E501
     54     return data

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/service/restore_service.py:76, in RestoreService.post_restore_bucket_id_with_http_info(self, bucket_id, body, **kwargs)
     57 """Overwrite storage metadata for a bucket with shard info from a backup..
     58 
     59 This method makes a synchronous HTTP request by default. To make an
   (...)
     71          returns the request thread.
     72 """  # noqa: E501
     73 local_var_params, path_params, query_params, header_params, body_params = \
     74     self._post_restore_bucket_id_prepare(bucket_id, body, **kwargs)  # noqa: E501
---> 76 return self.api_client.call_api(
     77     '/api/v2/restore/bucket/{bucketID}', 'POST',
     78     path_params,
     79     query_params,
     80     header_params,
     81     body=body_params,
     82     post_params=[],
     83     files={},
     84     response_type='str',  # noqa: E501
     85     auth_settings=[],
     86     async_req=local_var_params.get('async_req'),
     87     _return_http_data_only=local_var_params.get('_return_http_data_only'),  # noqa: E501
     88     _preload_content=local_var_params.get('_preload_content', True),
     89     _request_timeout=local_var_params.get('_request_timeout'),
     90     collection_formats={},
     91     urlopen_kw=kwargs.get('urlopen_kw', None))

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py:343, in ApiClient.call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_type, auth_settings, async_req, _return_http_data_only, collection_formats, _preload_content, _request_timeout, urlopen_kw)
    304 """Make the HTTP request (synchronous) and Return deserialized data.
    305 
    306 To make an async_req request, set the async_req parameter.
   (...)
    340     then the method will return the response directly.
    341 """
    342 if not async_req:
--> 343     return self.__call_api(resource_path, method,
    344                            path_params, query_params, header_params,
    345                            body, post_params, files,
    346                            response_type, auth_settings,
    347                            _return_http_data_only, collection_formats,
    348                            _preload_content, _request_timeout, urlopen_kw)
    349 else:
    350     thread = self.pool.apply_async(self.__call_api, (resource_path,
    351                                    method, path_params, query_params,
    352                                    header_params, body,
   (...)
    356                                    collection_formats,
    357                                    _preload_content, _request_timeout, urlopen_kw))

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py:173, in ApiClient.__call_api(self, resource_path, method, path_params, query_params, header_params, body, post_params, files, response_type, auth_settings, _return_http_data_only, collection_formats, _preload_content, _request_timeout, urlopen_kw)
    170 urlopen_kw = urlopen_kw or {}
    172 # perform request and return response
--> 173 response_data = self.request(
    174     method, url, query_params=query_params, headers=header_params,
    175     post_params=post_params, body=body,
    176     _preload_content=_preload_content,
    177     _request_timeout=_request_timeout, **urlopen_kw)
    179 self.last_response = response_data
    181 return_data = response_data

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/_sync/api_client.py:388, in ApiClient.request(self, method, url, query_params, headers, post_params, body, _preload_content, _request_timeout, **urlopen_kw)
    379     return self.rest_client.OPTIONS(url,
    380                                     query_params=query_params,
    381                                     headers=headers,
   (...)
    385                                     body=body,
    386                                     **urlopen_kw)
    387 elif method == "POST":
--> 388     return self.rest_client.POST(url,
    389                                  query_params=query_params,
    390                                  headers=headers,
    391                                  post_params=post_params,
    392                                  _preload_content=_preload_content,
    393                                  _request_timeout=_request_timeout,
    394                                  body=body,
    395                                  **urlopen_kw)
    396 elif method == "PUT":
    397     return self.rest_client.PUT(url,
    398                                 query_params=query_params,
    399                                 headers=headers,
   (...)
    403                                 body=body,
    404                                 **urlopen_kw)

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/_sync/rest.py:311, in RESTClientObject.POST(self, url, headers, query_params, post_params, body, _preload_content, _request_timeout, **urlopen_kw)
    308 def POST(self, url, headers=None, query_params=None, post_params=None,
    309          body=None, _preload_content=True, _request_timeout=None, **urlopen_kw):
    310     """Perform POST HTTP request."""
--> 311     return self.request("POST", url,
    312                         headers=headers,
    313                         query_params=query_params,
    314                         post_params=post_params,
    315                         _preload_content=_preload_content,
    316                         _request_timeout=_request_timeout,
    317                         body=body,
    318                         **urlopen_kw)

File ~/virtualenvs/kpi/env/lib/python3.11/site-packages/influxdb_client/_sync/rest.py:261, in RESTClientObject.request(self, method, url, query_params, headers, body, post_params, _preload_content, _request_timeout, **urlopen_kw)
    258     _BaseRESTClient.log_body(r.data, '<<<')
    260 if not 200 <= r.status <= 299:
--> 261     raise ApiException(http_resp=r)
    263 return r

ApiException: (404)
Reason: Not Found
HTTP response headers: HTTPHeaderDict({'Content-Type': 'application/json; charset=utf-8', 'X-Influxdb-Build': 'OSS', 'X-Influxdb-Version': 'v2.7.5', 'X-Platform-Error-Code': 'not found', 'Date': 'Wed, 13 Mar 2024 12:35:42 GMT', 'Content-Length': '47'})
HTTP response body: {"code":"not found","message":"path not found"}

image

from influxdb-client-python.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.