Skip to content

Commit 8275663

Browse files
committed
flag workflow functionality as experimental
1 parent c2f93ef commit 8275663

File tree

1 file changed

+37
-28
lines changed

1 file changed

+37
-28
lines changed

src/sasctl/_services/model_management.py

Lines changed: 37 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
# SPDX-License-Identifier: Apache-2.0
66

77
from .service import Service
8+
from ..utils.decorators import experimental
89

910
class ModelManagement(Service):
1011
"""The Model Management API provides basic resources for monitoring
@@ -19,7 +20,8 @@ class ModelManagement(Service):
1920
'performance tasks')
2021

2122
# TODO: set ds2MultiType
22-
def publish_model(self,
23+
@classmethod
24+
def publish_model(cls,
2325
model,
2426
destination,
2527
name=None,
@@ -79,15 +81,16 @@ def publish_model(self,
7981
# Publishes a model that has already been registered in the model
8082
# repository.
8183
# Unlike model_publish service, does not require Code to be specified.
82-
r = self.post('/publish',
83-
json=request,
84-
params=dict(force=force,
84+
r = cls.post('/publish',
85+
json=request,
86+
params=dict(force=force,
8587
reloadModelTable=reload_model_table),
86-
headers={'Content-Type':
88+
headers={'Content-Type':
8789
'application/vnd.sas.models.publishing.request.asynchronous+json'})
8890
return r
8991

90-
def create_performance_definition(self,
92+
@classmethod
93+
def create_performance_definition(cls,
9194
model,
9295
library_name,
9396
table_prefix,
@@ -209,11 +212,12 @@ def create_performance_definition(self,
209212
project.get('variables', []) if
210213
v.get('role') == 'output']
211214

212-
return self.post('/performanceTasks', json=request,
213-
headers={
215+
return cls.post('/performanceTasks', json=request,
216+
headers={
214217
'Content-Type': 'application/vnd.sas.models.performance.task+json'})
215218

216-
def execute_performance_definition(self, definition):
219+
@classmethod
220+
def execute_performance_definition(cls, definition):
217221
"""Launches a job to run a performance definition.
218222
219223
Parameters
@@ -227,11 +231,13 @@ def execute_performance_definition(self, definition):
227231
The executing job
228232
229233
"""
230-
definition = self.get_performance_definition(definition)
234+
definition = cls.get_performance_definition(definition)
231235

232-
return self.post('/performanceTasks/%s' % definition.id)
236+
return cls.post('/performanceTasks/%s' % definition.id)
233237

234-
def list_model_workflow_definition(self):
238+
@classmethod
239+
@experimental
240+
def list_model_workflow_definition(cls):
235241
"""List all enabled Workflow Processes to execute on Model Project.
236242
237243
Returns
@@ -245,7 +251,9 @@ def list_model_workflow_definition(self):
245251

246252
return wf.list_enabled_definitions()
247253

248-
def list_model_workflow_prompt(self, workflowName):
254+
@classmethod
255+
@experimental
256+
def list_model_workflow_prompt(cls, workflowName):
249257
"""List prompt Workflow Processes Definitions.
250258
251259
Parameters
@@ -264,16 +272,16 @@ def list_model_workflow_prompt(self, workflowName):
264272

265273
return wf.list_workflow_prompt(workflowName)
266274

267-
268-
def list_model_workflow_executed(self, projectName):
275+
@classmethod
276+
@experimental
277+
def list_model_workflow_executed(cls, projectName):
269278
"""List prompt Workflow Processes Definitions.
270279
271280
Parameters
272281
----------
273282
projectName : str
274283
Name of the Project list executed workflow
275284
276-
277285
Returns
278286
-------
279287
RestObj
@@ -285,17 +293,18 @@ def list_model_workflow_executed(self, projectName):
285293

286294
project = mr.get_project(projectName)
287295

288-
return self.get('/workflowProcesses?filter=eq(associations.solutionObjectId,%22'+project['id']+'%22)')
289-
296+
return cls.get('/workflowProcesses?filter=eq(associations.solutionObjectId,%22' + project['id'] + '%22)')
290297

291-
def execute_model_workflow_definition(self, projectName, workflowName, input=None):
298+
@classmethod
299+
@experimental
300+
def execute_model_workflow_definition(cls, project_name, workflow_name, input=None):
292301
"""Runs specific Workflow Processes Definitions.
293302
294303
Parameters
295304
----------
296-
projectName : str
305+
project_name : str
297306
Name of the Project that will execute workflow
298-
workflowName : str
307+
workflow_name : str
299308
Name or ID of an enabled workflow to execute
300309
input : dict, optional
301310
Input values for the workflow for initial workflow prompt
@@ -312,17 +321,17 @@ def execute_model_workflow_definition(self, projectName, workflowName, input=Non
312321
mr = ModelRepository()
313322
wf = Workflow()
314323

315-
project = mr.get_project(projectName)
324+
project = mr.get_project(project_name)
316325

317-
workflow = wf.run_workflow_definition(workflowName, input=input)
326+
workflow = wf.run_workflow_definition(workflow_name, input=input)
318327

319-
#Associations running workflow to model project, note workflow has to be running
328+
# Associations running workflow to model project, note workflow has to be running
320329
# THINK ABOUT: do we do a check on status of the workflow to determine if it is still running before associating?
321330

322331
input = {"processName": workflow['name'],
323332
"processId": workflow['id'],
324333
"objectType": "MM_Project",
325-
"solutionObjectName": projectName,
334+
"solutionObjectName": project_name,
326335
"solutionObjectId": project['id'],
327336
"solutionObjectUri": "/modelRepository/projects/" + project['id'],
328337
"solutionObjectMediaType": "application/vnd.sas.models.project+json"}
@@ -332,8 +341,8 @@ def execute_model_workflow_definition(self, projectName, workflowName, input=Non
332341
# e62c5562-2b11-45db-bcb7-933200cb0f0a","traceId: 3118c0fb1eb9702d","path:
333342
# /modelManagement/workflowAssociations"],"links":[],"version":2,"httpStatusCode":404}
334343
# Which is fine and expected like the Visual Experience.
335-
return self.post('/workflowAssociations',
336-
json=input,
337-
headers={'Content-Type': 'application/vnd.sas.workflow.object.association+json'})
344+
return cls.post('/workflowAssociations',
345+
json=input,
346+
headers={'Content-Type': 'application/vnd.sas.workflow.object.association+json'})
338347

339348

0 commit comments

Comments
 (0)