./gradlew clean build
./gradlew bootRun
- custom exception handling
- unit tests for vm provisioning
- integration testing / wiremock
- resilience failsafe/resiliencej
- proper jwt management
GET /api/v1/users/sign-in
API for user signup - Fields: Name, email-address, mobile no, password, role. Email and mobile no, role must be unique. Role can be master and non-master. Master accounts can view details of all user VMs while the non-master accounts can view only their own vm details. Master account can delete other user accounts.UserControllerTest#should_signUp
GET /api/v1/users/sign-in
API to obtain JWT token based on credentialsUserControllerTest#should_signIn
POST /api/v1/vm/provision
API for Requesting VM provisioning with following details: OS, RAM, Hard-disk and CPU cores.VMControllerTest#should_provision
GET /api/v1/vm?userId={id}
API for displaying list of VMs requested by particular user.VMControllerTest#should_getAllVMForUser
GET /api/v1/vm?limit={n}
API to list the top 'n' VMs by Memory for logged in userVMControllerTest#should_getTopNVmByMemForCurrentUser
DELETE /api/v1/users/{userId}
API to delete the user account. If account gets deleted, all registered vms must be deleted alsoUserControllerTest#should_deleteUser
GET /api/v1/vm?limit={n}&all=true
API to list the top 'n' VMs by memory across all users in systemVMControllerTest#should_getTopNVmByMemInTheSystem
Anton Batiaev anton@batiaev.com