@@ -117,7 +117,25 @@ func resourceMemberV2Create(d *schema.ResourceData, meta interface{}) error {
117117 poolID := d .Get ("pool_id" ).(string )
118118
119119 log .Printf ("[DEBUG] Create Options: %#v" , createOpts )
120- member , err := pools .CreateMember (networkingClient , poolID , createOpts ).Extract ()
120+
121+ var member * pools.Member
122+ err = resource .Retry (10 * time .Minute , func () * resource.RetryError {
123+ var err error
124+ log .Printf ("[DEBUG] Attempting to create LBaaSV2 member" )
125+ member , err = pools .CreateMember (networkingClient , poolID , createOpts ).Extract ()
126+ if err != nil {
127+ if errCode , ok := err .(gophercloud.ErrUnexpectedResponseCode ); ok {
128+ if errCode .Actual == 409 || errCode .Actual == 500 {
129+ log .Printf ("[DEBUG] OpenStack LBaaSV2 member is still creating." )
130+ return resource .RetryableError (err )
131+ }
132+ }
133+ return resource .NonRetryableError (err )
134+ }
135+
136+ return nil
137+ })
138+
121139 if err != nil {
122140 return fmt .Errorf ("Error creating OpenStack LBaaSV2 member: %s" , err )
123141 }
@@ -261,7 +279,7 @@ func waitForMemberDelete(networkingClient *gophercloud.ServiceClient, poolID str
261279 if errCode , ok := err .(gophercloud.ErrUnexpectedResponseCode ); ok {
262280 if errCode .Actual == 409 {
263281 log .Printf ("[DEBUG] OpenStack LBaaSV2 Member (%s) is still in use." , memberID )
264- return member , "ACTIVE " , nil
282+ return member , "PENDING_DELETE " , nil
265283 }
266284 }
267285
0 commit comments