Skip to content

Commit 234cf41

Browse files
authored
Merge pull request #10 from simonsobs/refactor
remove old policy handlers and add rest handler
2 parents 5fb460b + 3863d40 commit 234cf41

File tree

11 files changed

+136
-1708
lines changed

11 files changed

+136
-1708
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ build
88
htmlcov
99
pycache
1010
*.egg-info
11+
.env

requirements.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ gunicorn
44
numpy
55
pyyaml
66
pandas
7-
schedlib @ git+https://github.com/simonsobs/scheduler.git@v0.1.0
7+
python-dotenv
8+
requests

src/scheduler_server/app.py

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,13 @@
66
from datetime import datetime, timezone
77
import json
88
import traceback
9+
import dotenv
10+
dotenv.load_dotenv()
911

1012
from . import handler, utils
11-
from .configs import get_config
1213

1314
import logging
14-
logging.basicConfig(level=logging.DEBUG)
15+
logging.basicConfig(level=logging.INFO)
1516

1617
app = 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)

src/scheduler_server/configs/__init__.py

Lines changed: 0 additions & 13 deletions
This file was deleted.

src/scheduler_server/configs/basic.py

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)