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