microsoft / DevHomeAzureExtension

Dev Home Azure Extension
MIT License
68 stars 15 forks source link

Adding implementation and test #61

Closed huzaifa-d closed 7 months ago

huzaifa-d commented 7 months ago

Summary of the pull request

This PR adds Dev Box functionality to the extension. Dev Boxes are cloud VMs offered by Microsoft. This PR is part of changes that will enable Dev Home to list and control Dev Boxes.

Detailed description of the pull request / Additional comments

This PR adds the actual implementation for the skeleton methods added as part of the framework PR. Ther implementation includes enumerating all the dev boxes, and their starting, stopping, deleting and restarting.

Diagram idea credit @bbonaby

sequenceDiagram
    Dev Home->>AzureExt(DevBoxProvider): GetComputeSystemsAsync()
    AzureExt(DevBoxProvider)->>ManagementService: Get all dev center projects for user
    ManagementService->>AuthenticationService: Get HTTP Client to use
    AuthenticationService->>TokenService: Get token to use
    TokenService-->>AuthenticationService: Returns AzureResourceManager token
    AuthenticationService-->>ManagementService: Returns HTTP Client w/ ARM token    
    ManagementService-->>AzureExt(DevBoxProvider): Returns projects
    AzureExt(DevBoxProvider)->>ManagementService: Get all dev boxes under project
    ManagementService->>AuthenticationService: Get HTTP Client to use
    AuthenticationService->>TokenService: Get token to use
    TokenService-->>AuthenticationService: Returns Data Plane token
    AuthenticationService-->>ManagementService: Returns Client w/ Data Plane token  
    ManagementService-->>AzureExt(DevBoxProvider): Returns Dev Boxes    
    AzureExt(DevBoxProvider)->>ManagementService: Get dev boxes' details
    ManagementService->>AuthenticationService: Get HTTP Client to use
    AuthenticationService-->>ManagementService: Returns Client w/ Data Plane token  
    ManagementService-->>AzureExt(DevBoxProvider): Returns details
    AzureExt(DevBoxProvider)-)Dev Home: Returns List of IComputeSystems

Validation steps performed

Unit Tests Manual validation

PR checklist

Note: Currently the PR doesn't build since it uses a SDK that has ComputeSystem changes as needed for this feature.