mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-11-04 01:51:04 +01:00 
			
		
		
		
	feat: update functions to use set command
This commit is contained in:
		
							parent
							
								
									cc9eeda889
								
							
						
					
					
						commit
						ea9aaa6022
					
				
							
								
								
									
										34
									
								
								grpcv1.go
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								grpcv1.go
									
									
									
									
									
								
							@ -3,8 +3,6 @@ package headscale
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"context"
 | 
						"context"
 | 
				
			||||||
	"fmt"
 | 
					 | 
				
			||||||
	"strconv"
 | 
					 | 
				
			||||||
	"time"
 | 
						"time"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
						v1 "github.com/juanfont/headscale/gen/go/headscale/v1"
 | 
				
			||||||
@ -184,35 +182,23 @@ func (api headscaleV1APIServer) GetMachine(
 | 
				
			|||||||
	return &v1.GetMachineResponse{Machine: machine.toProto()}, nil
 | 
						return &v1.GetMachineResponse{Machine: machine.toProto()}, nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (api headscaleV1APIServer) UpdateMachine(
 | 
					func (api headscaleV1APIServer) SetTags(
 | 
				
			||||||
	ctx context.Context,
 | 
						ctx context.Context,
 | 
				
			||||||
	request *v1.UpdateMachineRequest,
 | 
						request *v1.SetTagsRequest,
 | 
				
			||||||
) (*v1.UpdateMachineResponse, error) {
 | 
					) (*v1.SetTagsResponse, error) {
 | 
				
			||||||
	rMachine := request.GetMachine()
 | 
						machine, err := api.h.GetMachineByID(request.GetMachineId())
 | 
				
			||||||
	machine, err := api.h.GetMachineByID(rMachine.Id)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	machine.ForcedTags = rMachine.ForcedTags
 | 
						api.h.SetTags(machine, request.GetTags())
 | 
				
			||||||
	machine.Name = rMachine.Name
 | 
					 | 
				
			||||||
	id, err := strconv.Atoi(rMachine.Namespace.Id)
 | 
					 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, fmt.Errorf("failed to convert namespace id to integer: %w", err)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	machine.NamespaceID = uint(id)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	err = api.h.UpdateDBMachine(*machine)
 | 
						log.Trace().
 | 
				
			||||||
	if err != nil {
 | 
							Str("machine", machine.Name).
 | 
				
			||||||
		return nil, err
 | 
							Strs("tags", request.GetTags()).
 | 
				
			||||||
	}
 | 
							Msg("Changing tags of machine")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	machine, err = api.h.GetMachineByID(rMachine.Id)
 | 
						return &v1.SetTagsResponse{Machine: machine.toProto()}, nil
 | 
				
			||||||
	if err != nil {
 | 
					 | 
				
			||||||
		return nil, err
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return &v1.UpdateMachineResponse{Machine: machine.toProto()}, nil
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (api headscaleV1APIServer) DeleteMachine(
 | 
					func (api headscaleV1APIServer) DeleteMachine(
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										19
									
								
								machine.go
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								machine.go
									
									
									
									
									
								
							@ -360,18 +360,15 @@ func (h *Headscale) UpdateMachine(machine *Machine) error {
 | 
				
			|||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// UpdateDBMachine takes a Machine struct pointer (typically already loaded from database
 | 
					// SetTags takes a Machine struct pointer and update the forced tags.
 | 
				
			||||||
// search for the same machine in the database and update the latter.
 | 
					func (h *Headscale) SetTags(machine *Machine, tags []string) error {
 | 
				
			||||||
func (h *Headscale) UpdateDBMachine(machine Machine) error {
 | 
						machine.ForcedTags = tags
 | 
				
			||||||
	destMachine := Machine{}
 | 
						err := h.UpdateACLRules()
 | 
				
			||||||
	if result := h.db.Where("id = ?", machine.ID).Find(&destMachine); result.Error != nil {
 | 
						if err != nil {
 | 
				
			||||||
		return result.Error
 | 
							return err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	destMachine.Name = machine.Name
 | 
						h.setLastStateChangeToNow(machine.Namespace.Name)
 | 
				
			||||||
	destMachine.NamespaceID = machine.NamespaceID
 | 
						h.db.Save(machine)
 | 
				
			||||||
	destMachine.ForcedTags = machine.ForcedTags
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	h.db.Save(destMachine)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return nil
 | 
						return nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user