github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/hypervisor/rpcd/changeAddressPool.go (about)

     1  package rpcd
     2  
     3  import (
     4  	"github.com/Cloud-Foundations/Dominator/lib/errors"
     5  	"github.com/Cloud-Foundations/Dominator/lib/srpc"
     6  	"github.com/Cloud-Foundations/Dominator/proto/hypervisor"
     7  )
     8  
     9  func (t *srpcType) ChangeAddressPool(conn *srpc.Conn,
    10  	request hypervisor.ChangeAddressPoolRequest,
    11  	reply *hypervisor.ChangeAddressPoolResponse) error {
    12  	*reply = hypervisor.ChangeAddressPoolResponse{
    13  		Error: errors.ErrorToString(t.changeAddressPool(conn, request))}
    14  	return nil
    15  }
    16  
    17  func (t *srpcType) changeAddressPool(conn *srpc.Conn,
    18  	request hypervisor.ChangeAddressPoolRequest) error {
    19  	if len(request.AddressesToAdd) > 0 {
    20  		err := t.manager.AddAddressesToPool(request.AddressesToAdd)
    21  		if err != nil {
    22  			return err
    23  		}
    24  	}
    25  	if len(request.AddressesToRemove) > 0 {
    26  		err := t.manager.RemoveAddressesFromPool(request.AddressesToRemove)
    27  		if err != nil {
    28  			return err
    29  		}
    30  	}
    31  	if len(request.MaximumFreeAddresses) > 0 {
    32  		err := t.manager.RemoveExcessAddressesFromPool(
    33  			request.MaximumFreeAddresses)
    34  		if err != nil {
    35  			return err
    36  		}
    37  	}
    38  	return nil
    39  }