2017-07-02 19:09:21 +00:00
|
|
|
package testing
|
|
|
|
|
|
|
|
import (
|
2018-04-20 18:23:25 +00:00
|
|
|
"github.com/keel-hq/keel/internal/k8s"
|
2018-10-14 14:06:02 +00:00
|
|
|
"github.com/keel-hq/keel/types"
|
|
|
|
"github.com/keel-hq/keel/util/image"
|
2018-04-20 18:23:25 +00:00
|
|
|
|
|
|
|
apps_v1 "k8s.io/api/apps/v1"
|
2018-03-03 20:06:54 +00:00
|
|
|
"k8s.io/api/core/v1"
|
2018-03-04 12:15:58 +00:00
|
|
|
meta_v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
2017-09-24 12:06:28 +00:00
|
|
|
core_v1 "k8s.io/client-go/kubernetes/typed/core/v1"
|
2017-07-02 19:09:21 +00:00
|
|
|
)
|
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// FakeK8sImplementer - fake implementer used for testing
|
2017-07-02 19:09:21 +00:00
|
|
|
type FakeK8sImplementer struct {
|
|
|
|
NamespacesList *v1.NamespaceList
|
2018-04-20 18:23:25 +00:00
|
|
|
DeploymentSingle *apps_v1.Deployment
|
|
|
|
DeploymentList *apps_v1.DeploymentList
|
2017-07-02 19:09:21 +00:00
|
|
|
|
|
|
|
// stores value of an updated deployment
|
2018-04-20 18:23:25 +00:00
|
|
|
Updated *k8s.GenericResource
|
2017-07-28 21:54:21 +00:00
|
|
|
|
|
|
|
AvailableSecret *v1.Secret
|
2017-07-30 14:06:01 +00:00
|
|
|
|
2017-07-31 22:51:03 +00:00
|
|
|
AvailablePods *v1.PodList
|
2018-03-04 12:15:58 +00:00
|
|
|
DeletedPods []*v1.Pod
|
2017-07-31 22:51:03 +00:00
|
|
|
|
2017-07-30 14:06:01 +00:00
|
|
|
// error to return
|
|
|
|
Error error
|
2017-07-02 19:09:21 +00:00
|
|
|
}
|
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Namespaces - available namespaces
|
2017-07-02 19:09:21 +00:00
|
|
|
func (i *FakeK8sImplementer) Namespaces() (*v1.NamespaceList, error) {
|
|
|
|
return i.NamespacesList, nil
|
|
|
|
}
|
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Deployment - available deployment, doesn't filter anything
|
2018-04-20 18:23:25 +00:00
|
|
|
func (i *FakeK8sImplementer) Deployment(namespace, name string) (*apps_v1.Deployment, error) {
|
2017-07-02 19:09:21 +00:00
|
|
|
return i.DeploymentSingle, nil
|
|
|
|
}
|
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Deployments - available deployments
|
2018-04-20 18:23:25 +00:00
|
|
|
func (i *FakeK8sImplementer) Deployments(namespace string) (*apps_v1.DeploymentList, error) {
|
2017-07-02 19:09:21 +00:00
|
|
|
return i.DeploymentList, nil
|
|
|
|
}
|
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Update - update deployment
|
2018-04-20 18:23:25 +00:00
|
|
|
func (i *FakeK8sImplementer) Update(obj *k8s.GenericResource) error {
|
|
|
|
i.Updated = obj
|
2017-07-02 19:09:21 +00:00
|
|
|
return nil
|
|
|
|
}
|
2017-07-28 21:54:21 +00:00
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Secret - get secret
|
2017-07-28 21:54:21 +00:00
|
|
|
func (i *FakeK8sImplementer) Secret(namespace, name string) (*v1.Secret, error) {
|
2017-07-30 14:06:01 +00:00
|
|
|
if i.Error != nil {
|
|
|
|
return nil, i.Error
|
|
|
|
}
|
2017-07-28 21:54:21 +00:00
|
|
|
return i.AvailableSecret, nil
|
|
|
|
}
|
2017-07-31 22:51:03 +00:00
|
|
|
|
2017-08-08 20:47:29 +00:00
|
|
|
// Pods - available pods
|
2017-07-31 22:51:03 +00:00
|
|
|
func (i *FakeK8sImplementer) Pods(namespace, labelSelector string) (*v1.PodList, error) {
|
|
|
|
return i.AvailablePods, nil
|
|
|
|
}
|
2017-09-24 12:06:28 +00:00
|
|
|
|
|
|
|
// ConfigMaps - returns nothing (not implemented)
|
|
|
|
func (i *FakeK8sImplementer) ConfigMaps(namespace string) core_v1.ConfigMapInterface {
|
|
|
|
panic("not implemented")
|
2018-03-04 12:15:58 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// DeletePod - adds pod to DeletedPods list
|
|
|
|
func (i *FakeK8sImplementer) DeletePod(namespace, name string, opts *meta_v1.DeleteOptions) error {
|
|
|
|
i.DeletedPods = append(i.DeletedPods, &v1.Pod{
|
|
|
|
meta_v1.TypeMeta{},
|
|
|
|
meta_v1.ObjectMeta{
|
|
|
|
Name: name,
|
|
|
|
Namespace: namespace,
|
|
|
|
},
|
|
|
|
v1.PodSpec{},
|
|
|
|
v1.PodStatus{},
|
|
|
|
})
|
2017-09-24 12:06:28 +00:00
|
|
|
return nil
|
|
|
|
}
|
2018-10-14 14:06:02 +00:00
|
|
|
|
|
|
|
func GetTrackedImage(i string) *types.TrackedImage {
|
|
|
|
ref, err := image.Parse(i)
|
|
|
|
if err != nil {
|
|
|
|
panic(err)
|
|
|
|
}
|
|
|
|
return &types.TrackedImage{
|
2018-10-14 21:18:39 +00:00
|
|
|
Image: ref,
|
|
|
|
PollSchedule: "",
|
|
|
|
Trigger: types.TriggerTypeDefault,
|
|
|
|
Provider: "",
|
|
|
|
Namespace: "",
|
|
|
|
Meta: make(map[string]string),
|
|
|
|
SemverPreReleaseTags: make(map[string]string),
|
2018-11-14 20:59:07 +00:00
|
|
|
Tags: []string{ref.Tag()},
|
2018-10-14 14:06:02 +00:00
|
|
|
}
|
|
|
|
}
|