commit
caddc23a21
|
@ -17,7 +17,7 @@ spec:
|
||||||
app: keel
|
app: keel
|
||||||
spec:
|
spec:
|
||||||
containers:
|
containers:
|
||||||
- image: karolisr/keel:0.2.1
|
- image: karolisr/keel:0.2.3
|
||||||
imagePullPolicy: Always
|
imagePullPolicy: Always
|
||||||
env:
|
env:
|
||||||
- name: PUBSUB
|
- name: PUBSUB
|
||||||
|
@ -34,5 +34,3 @@ spec:
|
||||||
port: 9300
|
port: 9300
|
||||||
initialDelaySeconds: 30
|
initialDelaySeconds: 30
|
||||||
timeoutSeconds: 10
|
timeoutSeconds: 10
|
||||||
securityContext:
|
|
||||||
privileged: true
|
|
||||||
|
|
|
@ -62,6 +62,8 @@ func (p *Provider) startInternal() error {
|
||||||
case event := <-p.events:
|
case event := <-p.events:
|
||||||
log.WithFields(log.Fields{
|
log.WithFields(log.Fields{
|
||||||
"repository": event.Repository.Name,
|
"repository": event.Repository.Name,
|
||||||
|
"tag": event.Repository.Tag,
|
||||||
|
"registry": event.Repository.Host,
|
||||||
}).Info("provider.kubernetes: processing event")
|
}).Info("provider.kubernetes: processing event")
|
||||||
_, err := p.processEvent(event)
|
_, err := p.processEvent(event)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -492,3 +492,96 @@ func TestGetImpactedTwoSameContainersInSameDeployment(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestGetImpactedUntaggedImage(t *testing.T) {
|
||||||
|
fp := &fakeImplementer{}
|
||||||
|
fp.namespaces = &v1.NamespaceList{
|
||||||
|
Items: []v1.Namespace{
|
||||||
|
v1.Namespace{
|
||||||
|
meta_v1.TypeMeta{},
|
||||||
|
meta_v1.ObjectMeta{Name: "xxxx"},
|
||||||
|
v1.NamespaceSpec{},
|
||||||
|
v1.NamespaceStatus{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
fp.deploymentList = &v1beta1.DeploymentList{
|
||||||
|
Items: []v1beta1.Deployment{
|
||||||
|
v1beta1.Deployment{
|
||||||
|
meta_v1.TypeMeta{},
|
||||||
|
meta_v1.ObjectMeta{
|
||||||
|
Name: "dep-1",
|
||||||
|
Namespace: "xxxx",
|
||||||
|
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||||
|
},
|
||||||
|
v1beta1.DeploymentSpec{
|
||||||
|
Template: v1.PodTemplateSpec{
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
v1.Container{
|
||||||
|
Image: "gcr.io/v2-namespace/hello-world",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
v1beta1.DeploymentStatus{},
|
||||||
|
},
|
||||||
|
v1beta1.Deployment{
|
||||||
|
meta_v1.TypeMeta{},
|
||||||
|
meta_v1.ObjectMeta{
|
||||||
|
Name: "dep-2",
|
||||||
|
Namespace: "xxxx",
|
||||||
|
Labels: map[string]string{types.KeelPolicyLabel: "all"},
|
||||||
|
},
|
||||||
|
v1beta1.DeploymentSpec{
|
||||||
|
Template: v1.PodTemplateSpec{
|
||||||
|
Spec: v1.PodSpec{
|
||||||
|
Containers: []v1.Container{
|
||||||
|
v1.Container{
|
||||||
|
Image: "gcr.io/v2-namespace/hello-world:1.1.1",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
v1beta1.DeploymentStatus{},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
provider, err := NewProvider(fp)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("failed to get provider: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
// creating "new version" event
|
||||||
|
repo := &types.Repository{
|
||||||
|
Name: "gcr.io/v2-namespace/hello-world",
|
||||||
|
Tag: "1.1.2",
|
||||||
|
}
|
||||||
|
|
||||||
|
deps, err := provider.impactedDeployments(repo)
|
||||||
|
if err != nil {
|
||||||
|
t.Errorf("failed to get deployments: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(deps) != 1 {
|
||||||
|
t.Errorf("expected to find 1 deployment but found %s", len(deps))
|
||||||
|
}
|
||||||
|
|
||||||
|
found := false
|
||||||
|
for _, c := range deps[0].Spec.Template.Spec.Containers {
|
||||||
|
|
||||||
|
containerImageName := versionreg.ReplaceAllString(c.Image, "")
|
||||||
|
|
||||||
|
if containerImageName == repo.Name {
|
||||||
|
found = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
t.Errorf("couldn't find expected deployment in impacted deployment list")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -38,7 +38,7 @@ func GetVersion(version string) (*types.Version, error) {
|
||||||
// GetVersionFromImageName - get version from image name
|
// GetVersionFromImageName - get version from image name
|
||||||
func GetVersionFromImageName(name string) (*types.Version, error) {
|
func GetVersionFromImageName(name string) (*types.Version, error) {
|
||||||
parts := strings.Split(name, ":")
|
parts := strings.Split(name, ":")
|
||||||
if len(parts) > 0 {
|
if len(parts) > 1 {
|
||||||
return GetVersion(parts[1])
|
return GetVersion(parts[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,11 @@ func TestGetVersionFromImageName(t *testing.T) {
|
||||||
args: args{name: "karolis/webhook-demo:latest"},
|
args: args{name: "karolis/webhook-demo:latest"},
|
||||||
wantErr: true,
|
wantErr: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "image no tag",
|
||||||
|
args: args{name: "karolis/webhook-demo"},
|
||||||
|
wantErr: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "image webhookrelay",
|
name: "image webhookrelay",
|
||||||
args: args{name: "gcr.io/webhookrelay/webhookrelay:0.1.14"},
|
args: args{name: "gcr.io/webhookrelay/webhookrelay:0.1.14"},
|
||||||
|
|
Loading…
Reference in New Issue