SlideRule Provisioner
The purpose of the SlideRule Provisioner is to replace the provisioning capabilities of the SlideRule Provisioning System with a simpler, less capable, lambda-based service that provides essential functionality for developers.
Targeted Use cases
Using Makefiles, developers need to manually provision clusters, run various tests, and then destroy those clusters when they are done.
Using GitHub Actions, developers need to schedule nightly test runs against a configuration managed build and transient deployment of a cluster.
Note
User requested capacity requests have been dropped from the scope of this system and will be handled by some other system or approach.
Functions
The SlideRule Provisioner consists of the following lambda functions:
DEPLOY(cluster)
If the
clusteris running then return successIf the
clusteris scheduled for delete then return failureDeploy the
clusterand wait up to 10 minutes for completionIf the
clusteris running then return successElse return failure
SCHEDULE_DESTROY(cluster, time_to_destroy)
If the
clusteris scheduled for delete and now >= (scheduled time - 5 minutes) then return failureIf the
clusteris scheduled for delete and now < (scheduled time - 5 minutes) then remove schedule for deletionSchedule
clusterfor deletion attime_to_destroyReturn success
DESTROY(cluster)
Destroy
clusterand wait up to 10 minutes for completionIf
clusterstill running then return failureRemove all schedules for deletion
Return success
TEST(cluster, version)
Deploy unique time-limited spot EC2 instance (AWS provided AMI)
Clone sliderule repository and checkout
versionCreate sliderule conda environment
Execute Python client pytests against
clusterExecute to the Node.js client *jests against the
clusterUsing the *sliderule build environment container
Build the code with the debug configuration (which performs static analysis)
Run the Lua selftests
Run the AMS pytests
Run the Manager pytests
Terminate the EC2 instance
If all tests pass then return success
Else return failure
BUILD(cluster, version)
Deploy unique time-limited spot EC2 instance (AWS provided AMI)
Clone sliderule repository and checkout
versionExecute the build cluster makefile target for the
cluster(which pushes Docker images to the AWS container registry)Terminate the EC2 instance