initial work on helm provier
parent
8f2aca1fad
commit
e0dc8c0b77
|
@ -0,0 +1,58 @@
|
||||||
|
package helm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"k8s.io/helm/pkg/helm"
|
||||||
|
helm_env "k8s.io/helm/pkg/helm/environment"
|
||||||
|
rls "k8s.io/helm/pkg/proto/hapi/services"
|
||||||
|
"k8s.io/helm/pkg/tlsutil"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
tlsCaCertFile string // path to TLS CA certificate file
|
||||||
|
tlsCertFile string // path to TLS certificate file
|
||||||
|
tlsKeyFile string // path to TLS key file
|
||||||
|
tlsVerify bool // enable TLS and verify remote certificates
|
||||||
|
tlsEnable bool // enable TLS
|
||||||
|
|
||||||
|
// kubeContext string
|
||||||
|
// tillerTunnel *kube.Tunnel
|
||||||
|
settings helm_env.EnvSettings
|
||||||
|
)
|
||||||
|
|
||||||
|
func newClient() helm.Interface {
|
||||||
|
options := []helm.Option{helm.Host(settings.TillerHost)}
|
||||||
|
|
||||||
|
if tlsVerify || tlsEnable {
|
||||||
|
tlsopts := tlsutil.Options{KeyFile: tlsKeyFile, CertFile: tlsCertFile, InsecureSkipVerify: true}
|
||||||
|
if tlsVerify {
|
||||||
|
tlsopts.CaCertFile = tlsCaCertFile
|
||||||
|
tlsopts.InsecureSkipVerify = false
|
||||||
|
}
|
||||||
|
tlscfg, err := tlsutil.ClientConfig(tlsopts)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Fprintln(os.Stderr, err)
|
||||||
|
os.Exit(2)
|
||||||
|
}
|
||||||
|
options = append(options, helm.WithTLS(tlscfg))
|
||||||
|
}
|
||||||
|
return helm.NewClient(options...)
|
||||||
|
}
|
||||||
|
|
||||||
|
type HelmImplementer struct {
|
||||||
|
client helm.Interface
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewHelmImplementer() *HelmImplementer {
|
||||||
|
client := newClient()
|
||||||
|
|
||||||
|
return &HelmImplementer{
|
||||||
|
client: client,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i *HelmImplementer) ListReleases(opts ...helm.ReleaseListOption) (*rls.ListReleasesResponse, error) {
|
||||||
|
return i.client.ListReleases(opts...)
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
package helm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestImplementerList(t *testing.T) {
|
||||||
|
imp := NewHelmImplementer()
|
||||||
|
releases, err := imp.ListReleases()
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("unexpected error: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if releases.Count == 0 {
|
||||||
|
t.Errorf("why no releases? ")
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1 @@
|
||||||
|
package helm
|
|
@ -0,0 +1,37 @@
|
||||||
|
package helm
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/rusenask/keel/extension/notification"
|
||||||
|
"github.com/rusenask/keel/types"
|
||||||
|
)
|
||||||
|
|
||||||
|
// ProviderName - provider name
|
||||||
|
const ProviderName = "helm"
|
||||||
|
|
||||||
|
// Provider - kubernetes provider for auto update
|
||||||
|
type Provider struct {
|
||||||
|
sender notification.Sender
|
||||||
|
|
||||||
|
events chan *types.Event
|
||||||
|
stop chan struct{}
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewProvider - create new kubernetes based provider
|
||||||
|
func NewProvider(sender notification.Sender) (*Provider, error) {
|
||||||
|
return &Provider{
|
||||||
|
events: make(chan *types.Event, 100),
|
||||||
|
stop: make(chan struct{}),
|
||||||
|
sender: sender,
|
||||||
|
}, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Submit - submit event to provider
|
||||||
|
func (p *Provider) Submit(event types.Event) error {
|
||||||
|
p.events <- &event
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetName - get provider name
|
||||||
|
func (p *Provider) GetName() string {
|
||||||
|
return ProviderName
|
||||||
|
}
|
Loading…
Reference in New Issue