get rid of race condition
This commit is contained in:
		
							parent
							
								
									57fa51b6c5
								
							
						
					
					
						commit
						77db11e084
					
				|  | @ -5,8 +5,11 @@ import ( | ||||||
| 	"log" | 	"log" | ||||||
| 	"time" | 	"time" | ||||||
| 
 | 
 | ||||||
|  |     "net/http" | ||||||
|  | 
 | ||||||
| 	"k8s.io/client-go/kubernetes" | 	"k8s.io/client-go/kubernetes" | ||||||
| 	"k8s.io/client-go/pkg/api" | 	"k8s.io/client-go/pkg/api" | ||||||
|  |     apierrors "k8s.io/client-go/pkg/api/errors" | ||||||
| 	"k8s.io/client-go/pkg/api/unversioned" | 	"k8s.io/client-go/pkg/api/unversioned" | ||||||
| 	"k8s.io/client-go/pkg/api/v1" | 	"k8s.io/client-go/pkg/api/v1" | ||||||
| 	"k8s.io/client-go/pkg/apis/extensions/v1beta1" | 	"k8s.io/client-go/pkg/apis/extensions/v1beta1" | ||||||
|  | @ -100,12 +103,19 @@ func newKubernetesSpiloClient(c *rest.Config) (*rest.RESTClient, error) { | ||||||
| 	return rest.RESTClientFor(c) | 	return rest.RESTClientFor(c) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func EnsureSpiloThirdPartyResource(client *kubernetes.Clientset) error { | //TODO: Move to separate package
 | ||||||
| 	_, err := client.ExtensionsV1beta1().ThirdPartyResources().Get(fmt.Sprintf("spilo.%s", VENDOR)) | func IsKubernetesResourceNotFoundError(err error) bool { | ||||||
| 	if err == nil { |     se, ok := err.(*apierrors.StatusError) | ||||||
| 		return err |     if !ok { | ||||||
| 	} |         return false | ||||||
|  |     } | ||||||
|  |     if se.Status().Code == http.StatusNotFound && se.Status().Reason == unversioned.StatusReasonNotFound { | ||||||
|  |         return true | ||||||
|  |     } | ||||||
|  |     return false | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
|  | func EnsureSpiloThirdPartyResource(client *kubernetes.Clientset) error { | ||||||
| 	// The resource doesn't exist, so we create it.
 | 	// The resource doesn't exist, so we create it.
 | ||||||
| 	tpr := v1beta1.ThirdPartyResource{ | 	tpr := v1beta1.ThirdPartyResource{ | ||||||
| 		ObjectMeta: v1.ObjectMeta{ | 		ObjectMeta: v1.ObjectMeta{ | ||||||
|  | @ -117,7 +127,11 @@ func EnsureSpiloThirdPartyResource(client *kubernetes.Clientset) error { | ||||||
| 		}, | 		}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	_, err = client.ExtensionsV1beta1().ThirdPartyResources().Create(&tpr) | 	_, err := client.ExtensionsV1beta1().ThirdPartyResources().Create(&tpr) | ||||||
| 
 | 
 | ||||||
| 	return err |     if IsKubernetesResourceNotFoundError(err) { | ||||||
|  |         return err | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return nil | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue