Skip to content

Commit

Permalink
Merge pull request #207 from microsoft/users/mduppre/CloudAgentVmHydr…
Browse files Browse the repository at this point in the history
…ation

[DRAFT] Hydration PoC - adding cloudagent
  • Loading branch information
mduppre authored Mar 25, 2024
2 parents 84d0364 + 2b8694e commit a18e826
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 5 deletions.
6 changes: 6 additions & 0 deletions services/compute/virtualmachine/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import (
type Service interface {
Get(context.Context, string, string) (*[]compute.VirtualMachine, error)
CreateOrUpdate(context.Context, string, string, *compute.VirtualMachine) (*compute.VirtualMachine, error)
Hydrate(context.Context, string, string) (*compute.VirtualMachine, error)
Delete(context.Context, string, string) error
Query(context.Context, string, string) (*[]compute.VirtualMachine, error)
Start(context.Context, string, string) error
Expand Down Expand Up @@ -58,6 +59,11 @@ func (c *VirtualMachineClient) CreateOrUpdate(ctx context.Context, group, name s
return c.internal.CreateOrUpdate(ctx, group, name, compute)
}

// Hydrate methods invokes create or update on the client
func (c *VirtualMachineClient) Hydrate(ctx context.Context, group, name string) (*compute.VirtualMachine, error) {
return c.internal.Hydrate(ctx, group, name)
}

// Delete methods invokes delete of the compute resource
func (c *VirtualMachineClient) Delete(ctx context.Context, group string, name string) error {
return c.internal.Delete(ctx, group, name)
Expand Down
10 changes: 5 additions & 5 deletions services/compute/virtualmachine/virtualmachine.go
Original file line number Diff line number Diff line change
Expand Up @@ -457,13 +457,13 @@ func (c *client) getVirtualMachine(vm *wssdcloudcompute.VirtualMachine, group st
vmtype = compute.StackedControlPlane
}
return &compute.VirtualMachine{
Name: &vm.Name,
ID: &vm.Id,
Tags: getComputeTags(vm.GetTags()),
Name: &vm.Name,
ID: &vm.Id,
Tags: getComputeTags(vm.GetTags()),
VirtualMachineProperties: &compute.VirtualMachineProperties{
ProvisioningState: status.GetProvisioningState(vm.GetStatus().GetProvisioningStatus()),
ValidationStatus: status.GetValidationStatus(vm.GetStatus()),
Statuses: c.getVirtualMachineStatuses(vm),
// Statuses: c.getVirtualMachineStatuses(vm),
StorageProfile: c.getVirtualMachineStorageProfile(vm.Storage),
HardwareProfile: c.getVirtualMachineHardwareProfile(vm),
SecurityProfile: c.getVirtualMachineSecurityProfile(vm),
Expand All @@ -475,7 +475,7 @@ func (c *client) getVirtualMachine(vm *wssdcloudcompute.VirtualMachine, group st
DisableHighAvailability: &vm.DisableHighAvailability,
Host: c.getVirtualMachineHostDescription(vm),
},
Version: &vm.Status.Version.Number,
// Version: &vm.Status.Version.Number,
Location: &vm.LocationName,
}
}
Expand Down
18 changes: 18 additions & 0 deletions services/compute/virtualmachine/wssd.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,24 @@ func (c *client) CreateOrUpdate(ctx context.Context, group, name string, sg *com
return &(*vms)[0], nil
}

// Hydrate
func (c *client) Hydrate(ctx context.Context, group, name string) (*compute.VirtualMachine, error) {
request, err := c.getVirtualMachineRequest(wssdcloudproto.Operation_HYDRATE, group, name, nil)
if err != nil {
return nil, err
}
response, err := c.VirtualMachineAgentClient.Invoke(ctx, request)
if err != nil {
return nil, err
}
vms := c.getVirtualMachineFromResponse(response, group)
if len(*vms) == 0 {
return nil, fmt.Errorf("Hydration of Virtual Machine failed to unknown reason.")
}

return &(*vms)[0], nil
}

// Delete methods invokes create or update on the client
func (c *client) Delete(ctx context.Context, group, name string) error {
vm, err := c.Get(ctx, group, name)
Expand Down

0 comments on commit a18e826

Please sign in to comment.