Skip to content

Commit

Permalink
Merge pull request #227 from microsoft/users/katlynho/VmHydration
Browse files Browse the repository at this point in the history
add VM discovery for cloudagent
  • Loading branch information
katl-msft authored Apr 4, 2024
2 parents a18e826 + 099919a commit 5d1210c
Show file tree
Hide file tree
Showing 4 changed files with 61 additions and 22 deletions.
9 changes: 9 additions & 0 deletions services/compute/compute.go
Original file line number Diff line number Diff line change
Expand Up @@ -1160,3 +1160,12 @@ type ProxyConfiguration struct {
// Alternative CA cert to use for connecting to proxy server
TrustedCa *string `json:"trustedca,omitempty"`
}

type VirtualMachineDiscovery struct {
// ID
VmId *string `json:"vmid,omitempty"`
// Name
VmName *string `json:"vmname,omitempty"`
// Type
PowerState *string `json:"powerstate,omitempty"`
}
5 changes: 5 additions & 0 deletions services/compute/virtualmachine/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ type Service interface {
RepairGuestAgent(context.Context, string, string) error
RunCommand(context.Context, string, string, *compute.VirtualMachineRunCommandRequest) (*compute.VirtualMachineRunCommandResponse, error)
Validate(context.Context, string, string) error
DiscoverVm(context.Context) (*[]compute.VirtualMachineDiscovery, error)
}

type VirtualMachineClient struct {
Expand Down Expand Up @@ -376,3 +377,7 @@ func (c *VirtualMachineClient) ListIPs(ctx context.Context, group, name string)
func (c *VirtualMachineClient) Validate(ctx context.Context, group, name string) error {
return c.internal.Validate(ctx, group, name)
}

func (c *VirtualMachineClient) DiscoverVm(ctx context.Context) (*[]compute.VirtualMachineDiscovery, error) {
return c.internal.DiscoverVm(ctx)
}
44 changes: 22 additions & 22 deletions services/compute/virtualmachine/virtualmachine.go
Original file line number Diff line number Diff line change
Expand Up @@ -450,30 +450,30 @@ func (c *client) getWssdVirtualMachineProxyConfiguration(proxyConfig *compute.Pr
// Conversion functions from wssdcloudcompute to compute

func (c *client) getVirtualMachine(vm *wssdcloudcompute.VirtualMachine, group string) *compute.VirtualMachine {
vmtype := compute.Tenant
if vm.VmType == wssdcloudcompute.VMType_LOADBALANCER {
vmtype = compute.LoadBalancer
} else if vm.VmType == wssdcloudcompute.VMType_STACKEDCONTROLPLANE {
vmtype = compute.StackedControlPlane
}
// vmtype := compute.Tenant
// if vm.VmType == wssdcloudcompute.VMType_LOADBALANCER {
// vmtype = compute.LoadBalancer
// } else if vm.VmType == wssdcloudcompute.VMType_STACKEDCONTROLPLANE {
// 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),
StorageProfile: c.getVirtualMachineStorageProfile(vm.Storage),
HardwareProfile: c.getVirtualMachineHardwareProfile(vm),
SecurityProfile: c.getVirtualMachineSecurityProfile(vm),
OsProfile: c.getVirtualMachineOSProfile(vm.Os),
NetworkProfile: c.getVirtualMachineNetworkProfile(vm.Network),
GuestAgentProfile: c.getVirtualMachineGuestAgentProfile(vm.GuestAgent),
GuestAgentInstanceView: c.getVirtualMachineGuestInstanceView(vm.GuestAgentInstanceView),
VmType: vmtype,
DisableHighAvailability: &vm.DisableHighAvailability,
Host: c.getVirtualMachineHostDescription(vm),
//ProvisioningState: status.GetProvisioningState(vm.GetStatus().GetProvisioningStatus()),
//ValidationStatus: status.GetValidationStatus(vm.GetStatus()),
Statuses: c.getVirtualMachineStatuses(vm),
// StorageProfile: c.getVirtualMachineStorageProfile(vm.Storage),
// HardwareProfile: c.getVirtualMachineHardwareProfile(vm),
// SecurityProfile: c.getVirtualMachineSecurityProfile(vm),
// OsProfile: c.getVirtualMachineOSProfile(vm.Os),
// NetworkProfile: c.getVirtualMachineNetworkProfile(vm.Network),
// GuestAgentProfile: c.getVirtualMachineGuestAgentProfile(vm.GuestAgent),
// GuestAgentInstanceView: c.getVirtualMachineGuestInstanceView(vm.GuestAgentInstanceView),
// VmType: vmtype,
// DisableHighAvailability: &vm.DisableHighAvailability,
// Host: c.getVirtualMachineHostDescription(vm),
},
// Version: &vm.Status.Version.Number,
Location: &vm.LocationName,
Expand Down
25 changes: 25 additions & 0 deletions services/compute/virtualmachine/wssd.go
Original file line number Diff line number Diff line change
Expand Up @@ -217,6 +217,31 @@ func (c *client) Validate(ctx context.Context, group, name string) error {
return nil
}

// Discover VMs on this cluster node
func (c *client) DiscoverVm(ctx context.Context) (*[]compute.VirtualMachineDiscovery, error) {
request, err := c.getVirtualMachineRequest(wssdcloudproto.Operation_DISCOVERVM, "", "", nil)
if err != nil {
return nil, err
}
response, err := c.VirtualMachineAgentClient.Invoke(ctx, request)

vms := c.getVirtualMachineFromResponse(response, "")

vmdiscoverys := []compute.VirtualMachineDiscovery{}
for _, vm := range *vms {
vmdiscovery := compute.VirtualMachineDiscovery{
VmId: vm.ID,
VmName: vm.Name,
PowerState: vm.VirtualMachineProperties.Statuses["PowerState"],
}

vmdiscoverys = append(vmdiscoverys, vmdiscovery)
}

return &vmdiscoverys, nil

}

// Private methods
func (c *client) getVirtualMachineRunCommandRequest(ctx context.Context, group, name string, request *compute.VirtualMachineRunCommandRequest) (mocRequest *wssdcloudcompute.VirtualMachineRunCommandRequest, err error) {
vms, err := c.get(ctx, group, name)
Expand Down

0 comments on commit 5d1210c

Please sign in to comment.