66from datetime import datetime , timezone
77import json
88import traceback
9+ import dotenv
10+ dotenv .load_dotenv ()
911
1012from . import handler , utils
11- from .configs import get_config
1213
1314import logging
14- logging .basicConfig (level = logging .DEBUG )
15+ logging .basicConfig (level = logging .INFO )
1516
1617app = flask .Flask (__name__ )
1718
@@ -56,7 +57,10 @@ def schedule():
5657 return response
5758
5859 # policy is a json string, so parse it now. The json
59- # has the form {"policy": "name", "preset": "config_preset_name", "config": {...}, }
60+ # has the form {"policy": "name", "preset": "preset_name", "config": {...}, }
61+ # preset represents a predefined set of config values which will be merged
62+ # with the user config. If no preset is specified, the policy name is used.
63+
6064 try :
6165 policy_dict = json .loads (policy )
6266 except json .JSONDecodeError :
@@ -69,25 +73,30 @@ def schedule():
6973
7074 policy_name = policy_dict .get ('policy' , 'dummy' )
7175 user_policy_config = policy_dict .get ('config' , {})
72- # unless specified, use policy_name to find default config for policy
73- config_preset_name = policy_dict .get ('preset' , policy_name )
76+
77+ # find if any config preset is specified
78+ config_preset_name = policy_dict .get ('preset' , None )
7479
7580 # check policy is supported
7681 if policy_name not in handler .HANDLERS :
7782 response = flask .jsonify ({
7883 'status' : 'error' ,
79- 'message' : f'Invalid policy { policy_name } '
84+ 'message' : f'Unsupported policy { policy_name } '
8085 })
8186 response .status_code = 400
8287 return response
8388
8489 try :
8590 # load policy config preset and merge with user config
86- policy_config = get_config (config_preset_name )
87- utils .nested_update (policy_config , user_policy_config , new_keys_allowed = True )
91+ if config_preset_name is None :
92+ policy_config = user_policy_config
93+ else :
94+ policy_config = get_preset_config (config_preset_name )
95+ utils .nested_update (policy_config , user_policy_config , new_keys_allowed = True )
8896
8997 # get scheduler commands
9098 commands = handler .get_handler (policy_name )(t0 , t1 , policy_config )
99+
91100 except Exception as e :
92101 response = flask .jsonify ({
93102 'status' : 'error' ,
@@ -103,4 +112,31 @@ def schedule():
103112 'message' : 'Success'
104113 })
105114 response .status_code = 200
106- return response
115+ return response
116+
117+ def get_preset_config (preset_name , default = {}):
118+ presets = {
119+ 'rest.satp1' : {
120+ 'url' : os .environ ['NOCODB_SATP1_URL' ],
121+ 'headers' : {
122+ 'accept' : 'application/json' ,
123+ 'xc-token' : os .environ ["NOCODB_TOKEN" ],
124+ },
125+ 'queries' : {
126+ 'sort' : '-from' ,
127+ 'fields' : 'program,from,to,config,status'
128+ }
129+ },
130+ 'rest.satp3' : {
131+ 'url' : os .environ ['NOCODB_SATP3_URL' ],
132+ 'headers' : {
133+ 'accept' : 'application/json' ,
134+ 'xc-token' : os .environ ["NOCODB_TOKEN" ],
135+ },
136+ 'queries' : {
137+ 'sort' : '-from' ,
138+ 'fields' : 'program,from,to,config,status'
139+ }
140+ }
141+ }
142+ return presets .get (preset_name , default )
0 commit comments