in pkg/fake/virtualmachinesapi.go [157:199]
func (c *VirtualMachinesAPI) BeginUpdate(_ context.Context, resourceGroupName string, vmName string, updates armcompute.VirtualMachineUpdate, options *armcompute.VirtualMachinesClientBeginUpdateOptions) (*runtime.Poller[armcompute.VirtualMachinesClientUpdateResponse], error) {
input := &VirtualMachineUpdateInput{
ResourceGroupName: resourceGroupName,
VMName: vmName,
Updates: updates,
Options: options,
}
return c.VirtualMachineUpdateBehavior.Invoke(input, func(input *VirtualMachineUpdateInput) (*armcompute.VirtualMachinesClientUpdateResponse, error) {
id := utils.MkVMID(input.ResourceGroupName, input.VMName)
instance, ok := c.Instances.Load(id)
if !ok {
return nil, &azcore.ResponseError{ErrorCode: errors.ResourceNotFound}
}
vm := instance.(armcompute.VirtualMachine)
// If other fields need to be updated in the future, you can similarly
// update the VM object by merging with updates.<New Field>.
vm.Tags = updates.Tags
if updates.Identity != nil {
if vm.Identity == nil {
vm.Identity = &armcompute.VirtualMachineIdentity{}
}
if updates.Identity.Type != nil {
vm.Identity.Type = updates.Identity.Type
}
if len(updates.Identity.UserAssignedIdentities) > 0 {
if vm.Identity.UserAssignedIdentities == nil {
vm.Identity.UserAssignedIdentities = make(map[string]*armcompute.UserAssignedIdentitiesValue)
}
for id, val := range updates.Identity.UserAssignedIdentities {
vm.Identity.UserAssignedIdentities[id] = val
}
}
}
// Update the stored shape
c.Instances.Store(id, vm)
return &armcompute.VirtualMachinesClientUpdateResponse{VirtualMachine: vm}, nil
})
}