diff --git a/bot/approvals.go b/bot/approvals.go index 0e263ff5..663e2a97 100644 --- a/bot/approvals.go +++ b/bot/approvals.go @@ -44,7 +44,7 @@ func (b *Bot) requestApproval(req *types.Approval) error { []slack.AttachmentField{ slack.AttachmentField{ Title: "Approval required!", - Value: req.Message + "\n" + fmt.Sprintf("To vote for change type 'lgtm ' to reject it: 'reject ."), + Value: req.Message + "\n" + fmt.Sprintf("To vote for change type '%s lgtm ' to reject it: '%s reject .", b.name, b.name), Short: false, }, slack.AttachmentField{ @@ -106,7 +106,8 @@ func (b *Bot) processApprovedResponse(approvalResponse *approvalResponse) error continue } fmt.Println("approving: ", identifier) - approval, err := b.approvalsManager.Approve(identifier) + fmt.Println("user: ", approvalResponse.User) + approval, err := b.approvalsManager.Approve(identifier, approvalResponse.User) if err != nil { log.WithFields(log.Fields{ "error": err, diff --git a/constants/constants.go b/constants/constants.go index 833c94a9..e18be1da 100644 --- a/constants/constants.go +++ b/constants/constants.go @@ -3,6 +3,9 @@ package constants // DefaultDockerRegistry - default docker registry const DefaultDockerRegistry = "https://index.docker.io" +// DefaultNamespace - default namespace to initialise configmaps based kv +const DefaultNamespace = "kube-system" + // WebhookEndpointEnv if set - enables webhook notifications const WebhookEndpointEnv = "WEBHOOK_ENDPOINT" diff --git a/provider/helm/approvals.go b/provider/helm/approvals.go index b15da915..c1640877 100644 --- a/provider/helm/approvals.go +++ b/provider/helm/approvals.go @@ -59,14 +59,12 @@ func (p *Provider) isApproved(event *types.Event, plan *UpdatePlan) (bool, error Deadline: time.Now().Add(time.Duration(plan.Config.ApprovalDeadline) * time.Hour), } - approval.Message = fmt.Sprintf("New image is available for deployment %s/%s (%s).", + approval.Message = fmt.Sprintf("New image is available for release %s/%s (%s).", plan.Namespace, plan.Name, approval.Delta(), ) - fmt.Println("requesting approval, ns: ", plan.Namespace) - return false, p.approvalManager.Create(approval) } diff --git a/provider/kubernetes/implementer.go b/provider/kubernetes/implementer.go index 0ed6d403..6543edee 100644 --- a/provider/kubernetes/implementer.go +++ b/provider/kubernetes/implementer.go @@ -5,6 +5,7 @@ import ( meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/client-go/kubernetes" + core_v1 "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/apis/extensions/v1beta1" "k8s.io/client-go/rest" @@ -21,6 +22,7 @@ type Implementer interface { Update(deployment *v1beta1.Deployment) error Secret(namespace, name string) (*v1.Secret, error) Pods(namespace, labelSelector string) (*v1.PodList, error) + ConfigMaps(namespace string) core_v1.ConfigMapInterface } // KubernetesImplementer - default kubernetes client implementer, uses @@ -112,3 +114,8 @@ func (i *KubernetesImplementer) Secret(namespace, name string) (*v1.Secret, erro func (i *KubernetesImplementer) Pods(namespace, labelSelector string) (*v1.PodList, error) { return i.client.Pods(namespace).List(meta_v1.ListOptions{LabelSelector: labelSelector}) } + +// ConfigMaps - returns an interface to config maps for a specified namespace +func (i *KubernetesImplementer) ConfigMaps(namespace string) core_v1.ConfigMapInterface { + return i.client.ConfigMaps(namespace) +} diff --git a/provider/kubernetes/kubernetes_test.go b/provider/kubernetes/kubernetes_test.go index 4378caf4..1a2c6dd0 100644 --- a/provider/kubernetes/kubernetes_test.go +++ b/provider/kubernetes/kubernetes_test.go @@ -11,6 +11,7 @@ import ( "github.com/rusenask/keel/util/codecs" meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + core_v1 "k8s.io/client-go/kubernetes/typed/core/v1" "k8s.io/client-go/pkg/api/v1" "k8s.io/client-go/pkg/apis/extensions/v1beta1" ) @@ -76,6 +77,10 @@ func (i *fakeImplementer) Pods(namespace, labelSelector string) (*v1.PodList, er return i.podList, nil } +func (i *fakeImplementer) ConfigMaps(namespace string) core_v1.ConfigMapInterface { + return nil +} + type fakeSender struct { sentEvent types.EventNotification }