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