mirror of
https://github.com/eliasstepanik/caddy-ingess.git
synced 2026-01-20 16:58:34 +00:00
53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package store
|
|
|
|
import (
|
|
"bitbucket.org/lightcodelabs/ingress/internal/caddy"
|
|
"k8s.io/api/extensions/v1beta1"
|
|
v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/client-go/kubernetes"
|
|
"k8s.io/klog"
|
|
)
|
|
|
|
// Store represents a collection of ingresses and secrets that we are monitoring.
|
|
type Store struct {
|
|
Ingresses []*v1beta1.Ingress
|
|
Secrets []interface{} // TODO :- should we store the secrets in the ingress object?
|
|
CaddyConfig *caddy.Config
|
|
}
|
|
|
|
// NewStore returns a new store that keeps track of ingresses and secrets. It will attempt to get
|
|
// all current ingresses before returning.
|
|
func NewStore(kubeClient *kubernetes.Clientset) *Store {
|
|
ingresses, err := kubeClient.ExtensionsV1beta1().Ingresses("").List(v1.ListOptions{})
|
|
if err != nil {
|
|
klog.Errorf("could not get existing ingresses in cluster")
|
|
return &Store{}
|
|
}
|
|
|
|
s := &Store{
|
|
Ingresses: []*v1beta1.Ingress{},
|
|
CaddyConfig: caddy.NewConfig(),
|
|
}
|
|
|
|
for _, i := range ingresses.Items {
|
|
s.Ingresses = append(s.Ingresses, &i)
|
|
}
|
|
|
|
return s
|
|
}
|
|
|
|
// AddIngress adds an ingress to the store
|
|
func (s *Store) AddIngress(ing *v1beta1.Ingress) {
|
|
isUniq := true
|
|
|
|
for _, i := range s.Ingresses {
|
|
if i.GetUID() == ing.GetUID() {
|
|
isUniq = false
|
|
}
|
|
}
|
|
|
|
if isUniq {
|
|
s.Ingresses = append(s.Ingresses, ing)
|
|
}
|
|
}
|