8000 create_job() & create_session() · srijan-deepsource/python-sasctl@9d25733 · GitHub
[go: up one dir, main page]

Skip to content

Commit 9d25733

Browse files
committed
create_job() & create_session()
1 parent f72c536 commit 9d25733

File tree

3 files changed

+94
-0
lines changed

3 files changed

+94
-0
lines changed

src/sasctl/_services/compute.py

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,78 @@ class Compute(Service):
1818
list_contexts, get_context, update_context, delete_context = Service._crud_funcs(
1919
'/contexts'
2020
)
21+
22+
list_servers, _, _, _ = Service._crud_funcs('/servers')
23+
24+
list_sessions, _, _, _ = Service._crud_funcs('/sessions')
25+
26+
@classmethod
27+
def create_job(
28+
cls,
29+
session,
30+
code,
31+
name=None,
32+
description=None,
33+
environment=None,
34+
variables=None,
35+
resources=None,
36+
attributes=None,
37+
):
38+
"""
39+
40+
Parameters
41+
----------
42+
session
43+
code
44+
name
45+
description
46+
environment
47+
variables
48+
resources
49+
attributes
50+
51+
Returns
52+
-------
53+
54+
"""
55+
56+
# TODO: if code is URI pass in codeUri field.
57+
code = code.split('\n')
58+
59+
variables = variables or []
60+
resources = resources or []
61+
environment = environment or {}
62+
attributes = attributes or {}
63+
data = {
64+
'version': 3,
65+
'name': name,
66+
'description': description,
67+
'environment': environment,
68+
'variables': variables,
69+
'code': code,
70+
'resources': resources,
71+
'attributes': attributes,
72+
}
73+
74+
return cls.request_link(session, 'execute', json=data)
75+
76+
@classmethod
77+
def create_session(cls, context):
78+
"""Create a new session based on an existing Compute Context.
79+
80+
If a reusable SAS Compute Server is available to handle this session, a new session is created on that SAS
81+
Compute Server. Otherwise, a new SAS Compute Server is created and the new session is created there.
82+
83+
Parameters
84+
----------
85+
context : RestObj
86+
An existing Compute Context as returned by `get_context`.
87+
88+
Returns
89+
-------
90+
RestObj
91+
Session details
92+
"""
93+
context = cls.get_context(context)
94+
95+
return cls.request_link(context, 'createSession')

src/sasctl/_services/job_definitions.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,8 @@ def create_definition(
7070
properties = properties or {}
7171
properties = [{'name': k, 'value': v} for k, v in properties.items()]
7272

73+
parameters = parameters or []
74+
7375
clean_parameters = []
7476
for param in parameters:
7577
param_type = str(param.get('type', '')).upper()

src/sasctl/_services/job_execution.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,20 @@ class JobExecution(Service):
1717
"""
1818

1919
_SERVICE_ROOT = '/jobExecution'
20+
21+
@classmethod
22+
def create_job(cls, definition, name=None, description=None, parameters=None):
23+
24+
# TODO: parameters
25+
# TODO: definition id not RestObj passed
26+
# TODO: get link fails
27+
uri = cls.get_link(definition, 'self')['uri']
28+
29+
data = {
30+
'jobDefinitionUri': uri
31+
}
32+
33+
headers = {
34+
'Accept': 'application/vnd.sas.job.execution.job+json'
35+
}
36+
return cls.post('/jobs', headers=headers, json=data)

0 commit comments

Comments
 (0)
0