From dd5f5a52d562fed80e89c8199433032cc99a44ff Mon Sep 17 00:00:00 2001 From: Chengbiao Jin Date: Wed, 7 May 2025 14:20:16 -0700 Subject: [PATCH 1/3] feat: update installQueries and checkQueryInstallationStatus implementation and tests --- pyTigerGraph/pyTigerGraphQuery.py | 75 +++++++++++++++-- pyTigerGraph/pytgasync/pyTigerGraphQuery.py | 75 +++++++++++++++-- tests/test_pyTigerGraphQuery.py | 92 +++++++++++++++++++++ tests/test_pyTigerGraphQueryAsync.py | 92 +++++++++++++++++++++ 4 files changed, 322 insertions(+), 12 deletions(-) diff --git a/pyTigerGraph/pyTigerGraphQuery.py b/pyTigerGraph/pyTigerGraphQuery.py index f8751ecf..d0c12c61 100644 --- a/pyTigerGraph/pyTigerGraphQuery.py +++ b/pyTigerGraph/pyTigerGraphQuery.py @@ -5,9 +5,11 @@ """ import json import logging +import re from datetime import datetime from typing import TYPE_CHECKING, Union, Optional +import pandas as pd if TYPE_CHECKING: import pandas as pd @@ -102,13 +104,74 @@ def getInstalledQueries(self, fmt: str = "py") -> Union[dict, str, 'pd.DataFrame return ret - # TODO installQueries() - # POST /gsql/queries/install - # xref:tigergraph-server:API:built-in-endpoints.adoc#_install_a_query[Install a query] + def installQueries(self, queries: Union[str, list], flag: Union[str, list] = None) -> str: + """Installs one or more queries. - # TODO checkQueryInstallationStatus() - # GET /gsql/queries/install/{request_id} - # xref:tigergraph-server:API:built-in-endpoints.adoc#_check_query_installation_status[Check query installation status] + Args: + queries: + A single query string or a list of query strings to install. Use '*' or 'all' to install all queries. + flag: + Method to install queries. + - '-single' Install the query in single gpr mode. + - '-legacy' Install the query in UDF mode. + - '-debug' Present results contains debug info. + - '-cost' Present results contains performance consumption. + - '-force' Install the query even if it already installed. + + Returns: + The response from the server. + + Endpoints: + GET /gsql/queries/install + See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_install_a_query + """ + logger.info("entry: installQueries") + if logger.level == logging.DEBUG: + logger.debug("params: " + self._locals(locals())) + + params = {} + if isinstance(queries, list): + queries = ",".join(queries) + params["queries"] = queries + + if flag: + if isinstance(flag, list): + flag = ",".join(flag) + params["flag"] = flag + + ret = self._req("POST", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + + if logger.level == logging.DEBUG: + logger.debug("return: " + str(ret)) + logger.info("exit: installQueries") + + return ret + + def checkQueryInstallationStatus(self, requestId: str) -> dict: + """Checks the status of query installation. + + Args: + requestId: + The request ID returned from installQueries. + + Returns: + A dictionary containing the installation status. + + Endpoints: + GET /gsql/queries/install/{request_id} + See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_check_query_installation_status + """ + logger.info("entry: checkQueryInstallationStatus") + if logger.level == logging.DEBUG: + logger.debug("params: " + self._locals(locals())) + + ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install&requestid=" + requestId, authMode="pwd") + + if logger.level == logging.DEBUG: + logger.debug("return: " + str(ret)) + logger.info("exit: checkQueryInstallationStatus") + + return ret def runInstalledQuery(self, queryName: str, params: Union[str, dict] = None, timeout: int = None, sizeLimit: int = None, usePost: bool = False, runAsync: bool = False, diff --git a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py index 2f497d63..48c50c10 100644 --- a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py +++ b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py @@ -4,8 +4,10 @@ All functions in this module are called as methods on a link:https://docs.tigergraph.com/pytigergraph/current/core-functions/base[`TigerGraphConnection` object]. """ import logging +import re from typing import TYPE_CHECKING, Union, Optional +import pandas as pd if TYPE_CHECKING: import pandas as pd @@ -97,13 +99,74 @@ async def getInstalledQueries(self, fmt: str = "py") -> Union[dict, str, 'pd.Dat return ret - # TODO installQueries() - # POST /gsql/queries/install - # xref:tigergraph-server:API:built-in-endpoints.adoc#_install_a_query[Install a query] + async def installQueries(self, queries: Union[str, list], flag: Union[str, list] = None) -> str: + """Installs one or more queries. - # TODO checkQueryInstallationStatus() - # GET /gsql/queries/install/{request_id} - # xref:tigergraph-server:API:built-in-endpoints.adoc#_check_query_installation_status[Check query installation status] + Args: + queries: + A single query string or a list of query strings to install. Use '*' or 'all' to install all queries. + flag: + Method to install queries. + - '-single' Install the query in single gpr mode. + - '-legacy' Install the query in UDF mode. + - '-debug' Present results contains debug info. + - '-cost' Present results contains performance consumption. + - '-force' Install the query even if it already installed. + + Returns: + The response from the server. + + Endpoints: + GET /gsql/queries/install + See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_install_a_query + """ + logger.info("entry: installQueries") + if logger.level == logging.DEBUG: + logger.debug("params: " + self._locals(locals())) + + params = {} + if isinstance(queries, list): + queries = ",".join(queries) + params["queries"] = queries + + if flag: + if isinstance(flag, list): + flag = ",".join(flag) + params["flag"] = flag + + ret = await self._req("POST", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + + if logger.level == logging.DEBUG: + logger.debug("return: " + str(ret)) + logger.info("exit: installQueries") + + return ret + + async def checkQueryInstallationStatus(self, requestId: str) -> dict: + """Checks the status of query installation. + + Args: + requestId: + The request ID returned from installQueries. + + Returns: + A dictionary containing the installation status. + + Endpoints: + GET /gsql/queries/install/{request_id} + See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_check_query_installation_status + """ + logger.info("entry: checkQueryInstallationStatus") + if logger.level == logging.DEBUG: + logger.debug("params: " + self._locals(locals())) + + ret = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install&requestid=" + requestId, authMode="pwd") + + if logger.level == logging.DEBUG: + logger.debug("return: " + str(ret)) + logger.info("exit: checkQueryInstallationStatus") + + return ret async def runInstalledQuery(self, queryName: str, params: Union[str, dict] = None, timeout: int = None, sizeLimit: int = None, usePost: bool = False, runAsync: bool = False, diff --git a/tests/test_pyTigerGraphQuery.py b/tests/test_pyTigerGraphQuery.py index 9f752227..28c035ba 100644 --- a/tests/test_pyTigerGraphQuery.py +++ b/tests/test_pyTigerGraphQuery.py @@ -158,6 +158,98 @@ def test_11_queryDescriptions(self): self.assertEqual( "This function is only supported on versions of TigerGraph >= 4.0.0.", tge.exception.message) + def test_installQueries(self): + # First create the queries using gsql + queries = [ + """ + CREATE QUERY test_install_query() { + PRINT "Hello World"; + } + """, + """ + CREATE QUERY test_install_query1() { + PRINT "Hello World 1"; + } + """, + """ + CREATE QUERY test_install_query2() { + PRINT "Hello World 2"; + } + """, + """ + CREATE QUERY test_install_query_with_flag() { + PRINT "Hello World"; + } + """, + """ + CREATE QUERY test_install_query_with_multiple_flags() { + PRINT "Hello World"; + } + """ + ] + + # Create all queries first + for query in queries: + self.conn.gsql(query) + + # Test installing a single query + requestId = self.conn.installQueries("test_install_query") + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing multiple queries + requestId = self.conn.installQueries(["test_install_query1", "test_install_query2"]) + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing with flags + requestId = self.conn.installQueries("test_install_query_with_flag", flag="-force") + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing with multiple flags + requestId = self.conn.installQueries("test_install_query_with_multiple_flags", flag=["-force", "-debug"]) + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing all queries + requestId = self.conn.installQueries("all") + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing all queries with asterisk + requestId = self.conn.installQueries("*") + self.assertIsInstance(requestId, str) + + # Check installation status + status = self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test invalid query name + with self.assertRaises(ValueError): + self.conn.installQueries("non_existent_query") + if __name__ == '__main__': unittest.main() diff --git a/tests/test_pyTigerGraphQueryAsync.py b/tests/test_pyTigerGraphQueryAsync.py index d983c39c..0f58bb0d 100644 --- a/tests/test_pyTigerGraphQueryAsync.py +++ b/tests/test_pyTigerGraphQueryAsync.py @@ -161,6 +161,98 @@ async def test_11_queryDescriptions(self): self.assertEqual( "This function is only supported on versions of TigerGraph >= 4.0.0.", tge.exception.message) + async def test_04_installQueries(self): + # First create the queries using gsql + queries = [ + """ + CREATE QUERY test_install_query_async() { + PRINT "Hello World"; + } + """, + """ + CREATE QUERY test_install_query1_async() { + PRINT "Hello World 1"; + } + """, + """ + CREATE QUERY test_install_query2_async() { + PRINT "Hello World 2"; + } + """, + """ + CREATE QUERY test_install_query_with_flag_async() { + PRINT "Hello World"; + } + """, + """ + CREATE QUERY test_install_query_with_multiple_flags_async() { + PRINT "Hello World"; + } + """ + ] + + # Create all queries first + for query in queries: + await self.conn.gsql(query) + + # Test installing a single query + requestId = await self.conn.installQueries("test_install_query_async") + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing multiple queries + requestId = await self.conn.installQueries(["test_install_query1_async", "test_install_query2_async"]) + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing with flags + requestId = await self.conn.installQueries("test_install_query_with_flag_async", flag="-force") + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing with multiple flags + requestId = await self.conn.installQueries("test_install_query_with_multiple_flags_async", flag=["-force", "-debug"]) + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing all queries + requestId = await self.conn.installQueries("all") + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test installing all queries with asterisk + requestId = await self.conn.installQueries("*") + self.assertIsInstance(requestId, str) + + # Check installation status + status = await self.conn.checkQueryInstallationStatus(requestId) + self.assertIn("status", status) + self.assertEqual(status["status"], "success") + + # Test invalid query name + with self.assertRaises(ValueError): + await self.conn.installQueries("non_existent_query") + if __name__ == '__main__': unittest.main() From ce15fe0aa6d3de71768770e600074ff0ee7e11a4 Mon Sep 17 00:00:00 2001 From: Chengbiao Jin Date: Mon, 12 May 2025 13:36:18 -0700 Subject: [PATCH 2/3] feat: Add API to install all queries - Add support for installing all queries using '*' or 'all' in installQueries() - Add support for installing multiple queries at once - Add support for installing queries with flags - Add support for checking query installation status --- pyTigerGraph/__init__.py | 2 +- pyTigerGraph/pyTigerGraphQuery.py | 9 ++-- pyTigerGraph/pytgasync/pyTigerGraphQuery.py | 19 ++++++-- tests/test_pyTigerGraphQueryAsync.py | 54 +++++---------------- 4 files changed, 31 insertions(+), 53 deletions(-) diff --git a/pyTigerGraph/__init__.py b/pyTigerGraph/__init__.py index 64282986..7b4172fa 100644 --- a/pyTigerGraph/__init__.py +++ b/pyTigerGraph/__init__.py @@ -2,6 +2,6 @@ from pyTigerGraph.pytgasync.pyTigerGraph import AsyncTigerGraphConnection from pyTigerGraph.common.exception import TigerGraphException -__version__ = "1.8.7" +__version__ = "1.8.8" __license__ = "Apache 2" diff --git a/pyTigerGraph/pyTigerGraphQuery.py b/pyTigerGraph/pyTigerGraphQuery.py index d0c12c61..32b491f6 100644 --- a/pyTigerGraph/pyTigerGraphQuery.py +++ b/pyTigerGraph/pyTigerGraphQuery.py @@ -5,11 +5,9 @@ """ import json import logging -import re from datetime import datetime from typing import TYPE_CHECKING, Union, Optional -import pandas as pd if TYPE_CHECKING: import pandas as pd @@ -122,14 +120,15 @@ def installQueries(self, queries: Union[str, list], flag: Union[str, list] = Non The response from the server. Endpoints: - GET /gsql/queries/install + GET /gsql/v1/queries/install See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_install_a_query """ logger.info("entry: installQueries") if logger.level == logging.DEBUG: logger.debug("params: " + self._locals(locals())) - + params = {} + params["graph"] = self.graphname if isinstance(queries, list): queries = ",".join(queries) params["queries"] = queries @@ -139,7 +138,7 @@ def installQueries(self, queries: Union[str, list], flag: Union[str, list] = Non flag = ",".join(flag) params["flag"] = flag - ret = self._req("POST", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="message") if logger.level == logging.DEBUG: logger.debug("return: " + str(ret)) diff --git a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py index 48c50c10..ec7dcc1f 100644 --- a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py +++ b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py @@ -4,10 +4,9 @@ All functions in this module are called as methods on a link:https://docs.tigergraph.com/pytigergraph/current/core-functions/base[`TigerGraphConnection` object]. """ import logging -import re +import time from typing import TYPE_CHECKING, Union, Optional -import pandas as pd if TYPE_CHECKING: import pandas as pd @@ -117,14 +116,15 @@ async def installQueries(self, queries: Union[str, list], flag: Union[str, list] The response from the server. Endpoints: - GET /gsql/queries/install + GET /gsql/v1/queries/install See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_install_a_query """ logger.info("entry: installQueries") if logger.level == logging.DEBUG: logger.debug("params: " + self._locals(locals())) - + params = {} + params["graph"] = self.graphname if isinstance(queries, list): queries = ",".join(queries) params["queries"] = queries @@ -134,7 +134,16 @@ async def installQueries(self, queries: Union[str, list], flag: Union[str, list] flag = ",".join(flag) params["flag"] = flag - ret = await self._req("POST", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + request_id = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + + ret = None + while not ret: + ret = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install/" + str(request_id), resKey="message") + if "SUCCESS" in ret or "FAILED" in ret: + break + else: + ret = None + time.sleep(1) if logger.level == logging.DEBUG: logger.debug("return: " + str(ret)) diff --git a/tests/test_pyTigerGraphQueryAsync.py b/tests/test_pyTigerGraphQueryAsync.py index 0f58bb0d..b3951931 100644 --- a/tests/test_pyTigerGraphQueryAsync.py +++ b/tests/test_pyTigerGraphQueryAsync.py @@ -196,58 +196,28 @@ async def test_04_installQueries(self): await self.conn.gsql(query) # Test installing a single query - requestId = await self.conn.installQueries("test_install_query_async") - self.assertIsInstance(requestId, str) + result = await self.conn.installQueries("test_install_query_async") + self.assertIn("SUCCESS", result) - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") - # Test installing multiple queries - requestId = await self.conn.installQueries(["test_install_query1_async", "test_install_query2_async"]) - self.assertIsInstance(requestId, str) - - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + result = await self.conn.installQueries(["test_install_query1_async", "test_install_query2_async"]) + self.assertIn("SUCCESS", result) # Test installing with flags - requestId = await self.conn.installQueries("test_install_query_with_flag_async", flag="-force") - self.assertIsInstance(requestId, str) - - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + result = await self.conn.installQueries("test_install_query_with_flag_async", flag="-force") + self.assertIn("SUCCESS", result) # Test installing with multiple flags - requestId = await self.conn.installQueries("test_install_query_with_multiple_flags_async", flag=["-force", "-debug"]) - self.assertIsInstance(requestId, str) - - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + result = await self.conn.installQueries("test_install_query_with_multiple_flags_async", flag=["-force", "-debug"]) + self.assertIn("SUCCESS", result) # Test installing all queries - requestId = await self.conn.installQueries("all") - self.assertIsInstance(requestId, str) - - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + result = await self.conn.installQueries("all") + self.assertIn("SUCCESS", result) # Test installing all queries with asterisk - requestId = await self.conn.installQueries("*") - self.assertIsInstance(requestId, str) - - # Check installation status - status = await self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + result = await self.conn.installQueries("*") + self.assertIn("SUCCESS", result) # Test invalid query name with self.assertRaises(ValueError): From ef4fe657990afeed9494c06a0cc027aaf1452298 Mon Sep 17 00:00:00 2001 From: Chengbiao Jin Date: Fri, 30 May 2025 14:09:19 -0700 Subject: [PATCH 3/3] revise return valule for query install status --- pyTigerGraph/pyTigerGraphQuery.py | 10 +++--- pyTigerGraph/pytgasync/pyTigerGraphBase.py | 2 +- pyTigerGraph/pytgasync/pyTigerGraphQuery.py | 14 ++++---- tests/test_pyTigerGraphQuery.py | 36 ++++++++++----------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/pyTigerGraph/pyTigerGraphQuery.py b/pyTigerGraph/pyTigerGraphQuery.py index 32b491f6..dce4275f 100644 --- a/pyTigerGraph/pyTigerGraphQuery.py +++ b/pyTigerGraph/pyTigerGraphQuery.py @@ -138,7 +138,7 @@ def installQueries(self, queries: Union[str, list], flag: Union[str, list] = Non flag = ",".join(flag) params["flag"] = flag - ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="message") + ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, authMode="pwd", resKey="") if logger.level == logging.DEBUG: logger.debug("return: " + str(ret)) @@ -146,7 +146,7 @@ def installQueries(self, queries: Union[str, list], flag: Union[str, list] = Non return ret - def checkQueryInstallationStatus(self, requestId: str) -> dict: + def getQueryInstallationStatus(self, requestId: str) -> dict: """Checks the status of query installation. Args: @@ -160,15 +160,15 @@ def checkQueryInstallationStatus(self, requestId: str) -> dict: GET /gsql/queries/install/{request_id} See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_check_query_installation_status """ - logger.info("entry: checkQueryInstallationStatus") + logger.info("entry: getQueryInstallationStatus") if logger.level == logging.DEBUG: logger.debug("params: " + self._locals(locals())) - ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install&requestid=" + requestId, authMode="pwd") + ret = self._req("GET", self.gsUrl + "/gsql/v1/queries/install&requestid=" + requestId, authMode="pwd", resKey="") if logger.level == logging.DEBUG: logger.debug("return: " + str(ret)) - logger.info("exit: checkQueryInstallationStatus") + logger.info("exit: getQueryInstallationStatus") return ret diff --git a/pyTigerGraph/pytgasync/pyTigerGraphBase.py b/pyTigerGraph/pytgasync/pyTigerGraphBase.py index b12ea4e9..feef2dcf 100644 --- a/pyTigerGraph/pytgasync/pyTigerGraphBase.py +++ b/pyTigerGraph/pytgasync/pyTigerGraphBase.py @@ -134,7 +134,7 @@ async def _req(self, method: str, url: str, authMode: str = "token", headers: di authMode, headers, url, method, data) if "GSQL-TIMEOUT" in _headers: - http_timeout = (10, int(_headers["GSQL-TIMEOUT"]/1000) + 10) + http_timeout = (10, int(int(_headers["GSQL-TIMEOUT"])/1000) + 10) else: http_timeout = None diff --git a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py index ec7dcc1f..79ff0e20 100644 --- a/pyTigerGraph/pytgasync/pyTigerGraphQuery.py +++ b/pyTigerGraph/pytgasync/pyTigerGraphQuery.py @@ -134,12 +134,12 @@ async def installQueries(self, queries: Union[str, list], flag: Union[str, list] flag = ",".join(flag) params["flag"] = flag - request_id = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, resKey="requestId") + request_id = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install", params=params, authMode="pwd", resKey="requestId") ret = None while not ret: - ret = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install/" + str(request_id), resKey="message") - if "SUCCESS" in ret or "FAILED" in ret: + ret = await self._req("GET", self.gsUrl + "/gsql/v1/queries/install/" + str(request_id), authMode="pwd", resKey="") + if "SUCCESS" in ret["message"] or "FAILED" in ret["message"]: break else: ret = None @@ -151,8 +151,8 @@ async def installQueries(self, queries: Union[str, list], flag: Union[str, list] return ret - async def checkQueryInstallationStatus(self, requestId: str) -> dict: - """Checks the status of query installation. + async def getQueryInstallationStatus(self, requestId: str) -> dict: + """Get the status of query installation. Args: requestId: @@ -165,7 +165,7 @@ async def checkQueryInstallationStatus(self, requestId: str) -> dict: GET /gsql/queries/install/{request_id} See https://docs.tigergraph.com/tigergraph-server/current/api/built-in-endpoints#_check_query_installation_status """ - logger.info("entry: checkQueryInstallationStatus") + logger.info("entry: getQueryInstallationStatus") if logger.level == logging.DEBUG: logger.debug("params: " + self._locals(locals())) @@ -173,7 +173,7 @@ async def checkQueryInstallationStatus(self, requestId: str) -> dict: if logger.level == logging.DEBUG: logger.debug("return: " + str(ret)) - logger.info("exit: checkQueryInstallationStatus") + logger.info("exit: getQueryInstallationStatus") return ret diff --git a/tests/test_pyTigerGraphQuery.py b/tests/test_pyTigerGraphQuery.py index 28c035ba..c60d1d9e 100644 --- a/tests/test_pyTigerGraphQuery.py +++ b/tests/test_pyTigerGraphQuery.py @@ -197,54 +197,54 @@ def test_installQueries(self): self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "success") # Test installing multiple queries requestId = self.conn.installQueries(["test_install_query1", "test_install_query2"]) self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "SUCCESS") # Test installing with flags requestId = self.conn.installQueries("test_install_query_with_flag", flag="-force") self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "SUCCESS") # Test installing with multiple flags requestId = self.conn.installQueries("test_install_query_with_multiple_flags", flag=["-force", "-debug"]) self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "SUCCESS") # Test installing all queries requestId = self.conn.installQueries("all") self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "SUCCESS") # Test installing all queries with asterisk requestId = self.conn.installQueries("*") self.assertIsInstance(requestId, str) # Check installation status - status = self.conn.checkQueryInstallationStatus(requestId) - self.assertIn("status", status) - self.assertEqual(status["status"], "success") + status = self.conn.getQueryInstallationStatus(requestId) + self.assertIn("message", status) + self.assertIn(status["message"], "SUCCESS") # Test invalid query name with self.assertRaises(ValueError):