func()

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
	})
}