Merge pull request #19 from rusenask/develop

Develop
pull/22/head 0.2.4
Karolis Rusenas 2017-07-02 09:33:22 +01:00 committed by GitHub
commit caddc23a21
5 changed files with 103 additions and 5 deletions

View File

@ -17,7 +17,7 @@ spec:
app: keel
spec:
containers:
- image: karolisr/keel:0.2.1
- image: karolisr/keel:0.2.3
imagePullPolicy: Always
env:
- name: PUBSUB
@ -33,6 +33,4 @@ spec:
path: /healthz
port: 9300
initialDelaySeconds: 30
timeoutSeconds: 10
securityContext:
privileged: true
timeoutSeconds: 10

View File

@ -62,6 +62,8 @@ func (p *Provider) startInternal() error {
case event := <-p.events:
log.WithFields(log.Fields{
"repository": event.Repository.Name,
"tag": event.Repository.Tag,
"registry": event.Repository.Host,
}).Info("provider.kubernetes: processing event")
_, err := p.processEvent(event)
if err != nil {

View File

@ -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")
}
}

View File

@ -38,7 +38,7 @@ func GetVersion(version string) (*types.Version, error) {
// GetVersionFromImageName - get version from image name
func GetVersionFromImageName(name string) (*types.Version, error) {
parts := strings.Split(name, ":")
if len(parts) > 0 {
if len(parts) > 1 {
return GetVersion(parts[1])
}

View File

@ -34,6 +34,11 @@ func TestGetVersionFromImageName(t *testing.T) {
args: args{name: "karolis/webhook-demo:latest"},
wantErr: true,
},
{
name: "image no tag",
args: args{name: "karolis/webhook-demo"},
wantErr: true,
},
{
name: "image webhookrelay",
args: args{name: "gcr.io/webhookrelay/webhookrelay:0.1.14"},