summaryrefslogtreecommitdiff
path: root/src/services/api/graphql/bindings.py
diff options
context:
space:
mode:
authorJohn Estabrook <jestabro@vyos.io>2024-09-24 22:48:25 -0500
committerJohn Estabrook <jestabro@vyos.io>2024-09-29 22:21:21 -0500
commitfc9885f859617bab36c971f4eaa56240741f52c4 (patch)
tree7833c8e88191699b88920e02d67904101335cdbb /src/services/api/graphql/bindings.py
parent3ad911a20620a67b6a019e86da815e2a25047de7 (diff)
downloadvyos-1x-fc9885f859617bab36c971f4eaa56240741f52c4.tar.gz
vyos-1x-fc9885f859617bab36c971f4eaa56240741f52c4.zip
http-api: T6736: separate REST API and GraphQL API activation
The GraphQL API was implemented as an addition to the existing REST API. As there is no necessary dependency, separate the initialization of the respective endpoints. Factor out the REST Pydantic models and FastAPI routes for symmetry and clarity.
Diffstat (limited to 'src/services/api/graphql/bindings.py')
-rw-r--r--src/services/api/graphql/bindings.py21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/services/api/graphql/bindings.py b/src/services/api/graphql/bindings.py
index ef4966466..93dd0fbfb 100644
--- a/src/services/api/graphql/bindings.py
+++ b/src/services/api/graphql/bindings.py
@@ -1,4 +1,4 @@
-# Copyright 2021 VyOS maintainers and contributors <maintainers@vyos.io>
+# Copyright 2021-2024 VyOS maintainers and contributors <maintainers@vyos.io>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -13,24 +13,35 @@
# You should have received a copy of the GNU Lesser General Public License
# along with this library. If not, see <http://www.gnu.org/licenses/>.
+
import vyos.defaults
+
+from ariadne import make_executable_schema
+from ariadne import load_schema_from_path
+from ariadne import snake_case_fallback_resolvers
+
from . graphql.queries import query
from . graphql.mutations import mutation
from . graphql.directives import directives_dict
from . graphql.errors import op_mode_error
from . graphql.auth_token_mutation import auth_token_mutation
from . libs.token_auth import init_secret
-from . import state
-from ariadne import make_executable_schema, load_schema_from_path, snake_case_fallback_resolvers
+
+from .. session import SessionState
+
def generate_schema():
+ state = SessionState()
api_schema_dir = vyos.defaults.directories['api_schema']
- if state.settings['app'].state.vyos_auth_type == 'token':
+ if state.auth_type == 'token':
init_secret()
type_defs = load_schema_from_path(api_schema_dir)
- schema = make_executable_schema(type_defs, query, op_mode_error, mutation, auth_token_mutation, snake_case_fallback_resolvers, directives=directives_dict)
+ schema = make_executable_schema(type_defs, query, op_mode_error,
+ mutation, auth_token_mutation,
+ snake_case_fallback_resolvers,
+ directives=directives_dict)
return schema