/
ingress.go
31 lines (26 loc) · 1020 Bytes
/
ingress.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package repository
import (
"k8s.io/client-go/informers"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/pkg/apis/extensions/v1beta1"
)
// Ingress acceses k8s API to fetch/save Ingress objects
type Ingress struct {
client kubernetes.Interface
informerFactory informers.SharedInformerFactory
}
// Get retrieves an ingress object by its name
func (h *Ingress) Get(namespace string, key string) (*v1beta1.Ingress, error) {
return h.informerFactory.Extensions().V1beta1().Ingresses().Lister().Ingresses(namespace).Get(key)
}
// Save saves the given Ingress object to the k8s API
func (h *Ingress) Save(ingress *v1beta1.Ingress) (*v1beta1.Ingress, error) {
return h.client.ExtensionsV1beta1().Ingresses(ingress.Namespace).Update(ingress)
}
// NewIngressRepository returns a repository instance
func NewIngressRepository(client kubernetes.Interface, informerFactory informers.SharedInformerFactory) IngressRepository {
return &Ingress{
client: client,
informerFactory: informerFactory,
}
}