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 }