Open mjstealey opened 1 year ago
Define APCF ssh scripts and expected exit response for success/failure at each relevant portal experiment state transition
ACTIVE_DEVELOPMENT
SAVING_DEVELOPMENT
ACTIVE_EMULATION
SAVED
ACTIVE_SANDBOX
SAVING_SANDBOX
ACTIVE_TESTBED
WAIT_DEVELOPMENT_DEPLOY
WAIT_SANDBOX_DEPLOY
WAIT_EMULATION_SCHEDULE
WAIT_TESTBED_SCHEDULE
WAIT_EMULATION_DEPLOY
WAIT_TESTBED_DEPLOY
SAME_STATE
# production SAVE sudo python3 /home/aerpawops/AERPAW-Dev/workflow-scripts/ap-cf-saveexit-ve-exp.py ${experiment_id} save # production SAVE & EXIT sudo python3 /home/aerpawops/AERPAW-Dev/workflow-scripts/ap-cf-saveexit-ve-exp.py ${experiment_id} save-and-exit # mock success TBD # mock failure TBD # response on success { "result": "Success", "msg": "None" } # exit code 0 = success 1 = failure
saved_to_wait_development_deploy(request, experiment: AerpawExperiment)
# production /home/aerpawops/AERPAW-Dev/workflow-scripts/ap-cf-deploy-ve-exp.py ${experiment_id} # mock success /home/aerpawops/AERPAW-Dev/workflow-scripts/mock-tests/apcf_deploy_ve_exp_success.py ${experiment_id} # mock failure /home/aerpawops/AERPAW-Dev/workflow-scripts/mock-tests/apcf_deploy_ve_exp_failure.py ${experiment_id} # response on success { "msg": "Placeholder for future return data", "urn": "/home/aerpawops/experiments/{experiment_uuid}" } # exit code 0 = success 1 = failure
(E&&P)|T
# production /home/aerpawops/AERPAW-Dev/workflow-scripts/ap-cf-submit-to-tbed.py {0} # mock success /home/aerpawops/AERPAW-Dev/workflow-scripts/mock-tests/apcf_deploy_ve_exp_success.py ${experiment_id} # mock failure /home/aerpawops/AERPAW-Dev/workflow-scripts/mock-tests/apcf_deploy_ve_exp_failure.py ${experiment_id} # response on success { "msg": "Placeholder for future return data", "urn": "/home/aerpawops/experiments/{experiment_uuid}" } # exit code 0 = success 1 = failure
def wait_development_deploy(request, experiment: AerpawExperiment, command: str) -> None: ssh_call = AerpawSsh(hostname=aerpaw_ops_host, username=aerpaw_ops_user, keyfile=aerpaw_ops_key_file) response, exit_code = ssh_call.send_command(command, verbose=True) if MOCK_OPS: # add sleep when using mock to simulate remote processing delay time.sleep(10) print('response: ' + response) print('exit code: ' + str(exit_code)) # next state transition if exit_code == 0: # apcf_deploy_ve_exp - success # - wait_development_deploy --> active_development wait_development_deploy_to_active_development(request=request, experiment=experiment) else: # apcf_deploy_ve_exp - failure # - wait_development_deploy --> saved wait_development_deploy_to_saved(request=request, experiment=experiment) raise NotFound( detail="DeployError: unable to deploy active_development for /experiments/{0}/state".format(experiment.id))
Define APCF ssh scripts and expected exit response for success/failure at each relevant portal experiment state transition
Overview
ACTIVE_DEVELOPMENT
-->SAVING_DEVELOPMENT
ACTIVE_EMULATION
-->SAVED
ACTIVE_SANDBOX
-->SAVING_SANDBOX
ACTIVE_TESTBED
-->SAVED
SAVING_DEVELOPMENT
-->SAVED
SAVING_DEVELOPMENT
-->ACTIVE_DEVELOPMENT
SAVING_SANDBOX
-->SAVED
SAVING_SANDBOX
-->ACTIVE_SANDBOX
SAVED
-->WAIT_DEVELOPMENT_DEPLOY
SAVED
-->WAIT_SANDBOX_DEPLOY
SAVED
-->WAIT_EMULATION_SCHEDULE
SAVED
-->WAIT_TESTBED_SCHEDULE
WAIT_DEVELOPMENT_DEPLOY
-->ACTIVE_DEVELOPMENT
WAIT_DEVELOPMENT_DEPLOY
-->SAVED
WAIT_EMULATION_DEPLOY
-->ACTIVE_EMULATION
WAIT_EMULATION_DEPLOY
-->SAVED
WAIT_EMULATION_SCHEDULE
-->WAIT_EMULATION_DEPLOY
WAIT_EMULATION_SCHEDULE
-->SAVED
WAIT_SANDBOX_DEPLOY
-->ACTIVE_SANDBOX
WAIT_SANDBOX_DEPLOY
-->SAVED
WAIT_TESTBED_DEPLOY
-->ACTIVE_TESTBED
WAIT_TESTBED_DEPLOY
-->SAVED
WAIT_TESTBED_SCHEDULE
-->WAIT_TESTBED_DEPLOY
WAIT_TESTBED_SCHEDULE
-->SAVED
SAME_STATE
-->SAME_STATE
Details
ACTIVE_DEVELOPMENT
-->SAVING_DEVELOPMENT
ACTIVE_EMULATION
-->SAVED
ACTIVE_SANDBOX
-->SAVING_SANDBOX
ACTIVE_TESTBED
-->SAVED
SAVING_DEVELOPMENT
-->SAVED
SAVING_DEVELOPMENT
-->ACTIVE_DEVELOPMENT
SAVING_SANDBOX
-->SAVED
SAVING_SANDBOX
-->ACTIVE_SANDBOX
SAVED
-->WAIT_DEVELOPMENT_DEPLOY
saved_to_wait_development_deploy(request, experiment: AerpawExperiment)
using commands from belowSAVED
-->WAIT_SANDBOX_DEPLOY
SAVED
-->WAIT_EMULATION_SCHEDULE
SAVED
-->WAIT_TESTBED_SCHEDULE
(E&&P)|T
WAIT_DEVELOPMENT_DEPLOY
-->ACTIVE_DEVELOPMENT
saved_to_wait_development_deploy(request, experiment: AerpawExperiment)
WAIT_DEVELOPMENT_DEPLOY
-->SAVED
saved_to_wait_development_deploy(request, experiment: AerpawExperiment)
WAIT_EMULATION_DEPLOY
-->ACTIVE_EMULATION
WAIT_EMULATION_DEPLOY
-->SAVED
WAIT_EMULATION_SCHEDULE
-->WAIT_EMULATION_DEPLOY
WAIT_EMULATION_SCHEDULE
-->SAVED
WAIT_SANDBOX_DEPLOY
-->ACTIVE_SANDBOX
WAIT_SANDBOX_DEPLOY
-->SAVED
WAIT_TESTBED_DEPLOY
-->ACTIVE_TESTBED
WAIT_TESTBED_DEPLOY
-->SAVED
WAIT_TESTBED_SCHEDULE
-->WAIT_TESTBED_DEPLOY
WAIT_TESTBED_SCHEDULE
-->SAVED
SAME_STATE
-->SAME_STATE