From 9afcc39f4642ebd927069d8ab6779e3475e68d6b Mon Sep 17 00:00:00 2001 From: VicYu Date: Mon, 26 Dec 2016 10:42:28 +0800 Subject: [PATCH 1/4] Add get_list_measurements and drop_measurement Dear maintainer, Look likes we are missing the get list measurements and drop measurement feature for client. pls accept this pr. --- influxdb/client.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/influxdb/client.py b/influxdb/client.py index 7930679c..28dd74d6 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -547,6 +547,32 @@ def drop_database(self, dbname): """ self.query("DROP DATABASE {0}".format(quote_ident(dbname))) + def get_list_measurements(self): + """Get the list of measurements in InfluxDB. + + :returns: all measurements in InfluxDB + :rtype: list of dictionaries + + :Example: + + :: + + >> dbs = client.get_list_measurements() + >> dbs + [{u'name': u'measurements1'}, + {u'name': u'measurements2'}, + {u'name': u'measurements3'}] + """ + return list(self.query("SHOW MEASUREMENTS").get_points()) + + def drop_measurement(self, measurementname): + """Drop a measurement from InfluxDB. + + :param dbname: the name of the measurement to drop + :type dbname: str + """ + self.query("DROP MEASUREMENT {0}".format(quote_ident(measurementname))) + def create_retention_policy(self, name, duration, replication, database=None, default=False): """Create a retention policy for a database. From 0a8b58558d583d2856a482298c6d5c68f204f1bc Mon Sep 17 00:00:00 2001 From: vic Date: Mon, 26 Dec 2016 14:04:31 +0800 Subject: [PATCH 2/4] add test case --- influxdb/tests/client_test.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/influxdb/tests/client_test.py b/influxdb/tests/client_test.py index 8768d170..63810724 100644 --- a/influxdb/tests/client_test.py +++ b/influxdb/tests/client_test.py @@ -466,6 +466,19 @@ def test_drop_database(self): 'drop database "new_db"' ) + def test_drop_measurement(self): + with requests_mock.Mocker() as m: + m.register_uri( + requests_mock.GET, + "http://localhost:8086/query", + text='{"results":[{}]}' + ) + self.cli.drop_measurement('new_measurement') + self.assertEqual( + m.last_request.qs['q'][0], + 'drop measurement "new_measurement"' + ) + def test_drop_numeric_named_database(self): """Test drop numeric db for TestInfluxDBClient object.""" with requests_mock.Mocker() as m: @@ -504,6 +517,23 @@ def test_get_list_database_fails(self): with _mocked_session(cli, 'get', 401): cli.get_list_database() + def test_get_list_measurements(self): + data = { + "results": [{ + "series": [ + {"name": "measurements", + "columns": ["name"], + "values": [["cpu"], ["disk"] + ]}]} + ] + } + + with _mocked_session(self.cli, 'get', 200, json.dumps(data)): + self.assertListEqual( + self.cli.get_list_measurements(), + [{'name': 'cpu'}, {'name': 'disk'}] + ) + def test_create_retention_policy_default(self): """Test create default ret policy for TestInfluxDBClient object.""" example_response = '{"results":[{}]}' From 9a0aadc625f9db6140d5c438f10f87e3fbcca3bd Mon Sep 17 00:00:00 2001 From: vic Date: Fri, 17 Mar 2017 15:01:22 +0800 Subject: [PATCH 3/4] fix: dbname -> measurement --- influxdb/client.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/influxdb/client.py b/influxdb/client.py index 28dd74d6..2b6dc689 100644 --- a/influxdb/client.py +++ b/influxdb/client.py @@ -565,13 +565,13 @@ def get_list_measurements(self): """ return list(self.query("SHOW MEASUREMENTS").get_points()) - def drop_measurement(self, measurementname): + def drop_measurement(self, measurement): """Drop a measurement from InfluxDB. - :param dbname: the name of the measurement to drop - :type dbname: str + :param measurement: the name of the measurement to drop + :type measurement: str """ - self.query("DROP MEASUREMENT {0}".format(quote_ident(measurementname))) + self.query("DROP MEASUREMENT {0}".format(quote_ident(measurement))) def create_retention_policy(self, name, duration, replication, database=None, default=False): From 5ce6b108172f0fb328cf259b5fe63ea86df444af Mon Sep 17 00:00:00 2001 From: vic Date: Fri, 8 Sep 2017 09:34:23 +0800 Subject: [PATCH 4/4] add docstring --- influxdb/tests/client_test.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/influxdb/tests/client_test.py b/influxdb/tests/client_test.py index 63810724..5c4f26dd 100644 --- a/influxdb/tests/client_test.py +++ b/influxdb/tests/client_test.py @@ -467,6 +467,7 @@ def test_drop_database(self): ) def test_drop_measurement(self): + """Test drop measurement for TestInfluxDBClient object.""" with requests_mock.Mocker() as m: m.register_uri( requests_mock.GET, @@ -518,6 +519,7 @@ def test_get_list_database_fails(self): cli.get_list_database() def test_get_list_measurements(self): + """Test get list of measurements for TestInfluxDBClient object.""" data = { "results": [{ "series": [