File tree Expand file tree Collapse file tree 1 file changed +21
-1
lines changed Expand file tree Collapse file tree 1 file changed +21
-1
lines changed Original file line number Diff line number Diff line change 33package addresses
44
55import (
6+ "errors"
67 "fmt"
8+ "math/rand"
9+ "time"
710
811 "github.com/paybyphone/phpipam-sdk-go/phpipam"
912 "github.com/paybyphone/phpipam-sdk-go/phpipam/client"
@@ -87,7 +90,24 @@ func NewController(sess *session.Session) *Controller {
8790
8891// CreateAddress creates an address by sending a POST request.
8992func (c * Controller ) CreateAddress (in Address ) (message string , err error ) {
90- err = c .SendRequest ("POST" , "/addresses/" , & in , & message )
93+ if in .IPAddress == "" && in .SubnetID == 0 {
94+ return message , errors .New ("ip address or subnet id must be defined" )
95+ }
96+
97+ if in .IPAddress == "" {
98+ // Retry
99+ for i := 0 ; i <= 5 ; i ++ {
100+ err = c .SendRequest ("POST" , "/addresses/first_free" , & in , & message )
101+ if err == nil {
102+ break
103+ }
104+ r := rand .Intn (500 )
105+ time .Sleep (time .Duration (r ) * time .Microsecond )
106+ }
107+ } else {
108+ err = c .SendRequest ("POST" , "/addresses/" , & in , & message )
109+ }
110+
91111 return
92112}
93113
You can’t perform that action at this time.
0 commit comments