Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/swagger-spec/oapi-v1.json
Original file line number Diff line number Diff line change
Expand Up @@ -16076,7 +16076,7 @@
},
"from": {
"$ref": "v1.ObjectReference",
"description": "a reference to an ImageRepository, ImageStream, or ImageStreamTag to watch for changes"
"description": "a reference to an ImageStreamTag to watch for changes"
},
"lastTriggeredImage": {
"type": "string",
Expand Down
94 changes: 58 additions & 36 deletions pkg/api/deep_copy_generated.go
Original file line number Diff line number Diff line change
Expand Up @@ -1324,8 +1324,11 @@ func deepCopy_api_DeploymentCause(in deployapi.DeploymentCause, out *deployapi.D
}

func deepCopy_api_DeploymentCauseImageTrigger(in deployapi.DeploymentCauseImageTrigger, out *deployapi.DeploymentCauseImageTrigger, c *conversion.Cloner) error {
out.RepositoryName = in.RepositoryName
out.Tag = in.Tag
if newVal, err := c.DeepCopy(in.From); err != nil {
return err
} else {
out.From = newVal.(pkgapi.ObjectReference)
}
return nil
}

Expand All @@ -1340,27 +1343,11 @@ func deepCopy_api_DeploymentConfig(in deployapi.DeploymentConfig, out *deployapi
} else {
out.ObjectMeta = newVal.(pkgapi.ObjectMeta)
}
if in.Triggers != nil {
out.Triggers = make([]deployapi.DeploymentTriggerPolicy, len(in.Triggers))
for i := range in.Triggers {
if err := deepCopy_api_DeploymentTriggerPolicy(in.Triggers[i], &out.Triggers[i], c); err != nil {
return err
}
}
} else {
out.Triggers = nil
}
if err := deepCopy_api_DeploymentTemplate(in.Template, &out.Template, c); err != nil {
if err := deepCopy_api_DeploymentConfigSpec(in.Spec, &out.Spec, c); err != nil {
return err
}
out.LatestVersion = in.LatestVersion
if in.Details != nil {
out.Details = new(deployapi.DeploymentDetails)
if err := deepCopy_api_DeploymentDetails(*in.Details, out.Details, c); err != nil {
return err
}
} else {
out.Details = nil
if err := deepCopy_api_DeploymentConfigStatus(in.Status, &out.Status, c); err != nil {
return err
}
return nil
}
Expand Down Expand Up @@ -1414,6 +1401,54 @@ func deepCopy_api_DeploymentConfigRollbackSpec(in deployapi.DeploymentConfigRoll
return nil
}

func deepCopy_api_DeploymentConfigSpec(in deployapi.DeploymentConfigSpec, out *deployapi.DeploymentConfigSpec, c *conversion.Cloner) error {
if err := deepCopy_api_DeploymentStrategy(in.Strategy, &out.Strategy, c); err != nil {
return err
}
if in.Triggers != nil {
out.Triggers = make([]deployapi.DeploymentTriggerPolicy, len(in.Triggers))
for i := range in.Triggers {
if err := deepCopy_api_DeploymentTriggerPolicy(in.Triggers[i], &out.Triggers[i], c); err != nil {
return err
}
}
} else {
out.Triggers = nil
}
out.Replicas = in.Replicas
if in.Selector != nil {
out.Selector = make(map[string]string)
for key, val := range in.Selector {
out.Selector[key] = val
}
} else {
out.Selector = nil
}
if in.Template != nil {
if newVal, err := c.DeepCopy(in.Template); err != nil {
return err
} else {
out.Template = newVal.(*pkgapi.PodTemplateSpec)
}
} else {
out.Template = nil
}
return nil
}

func deepCopy_api_DeploymentConfigStatus(in deployapi.DeploymentConfigStatus, out *deployapi.DeploymentConfigStatus, c *conversion.Cloner) error {
out.LatestVersion = in.LatestVersion
if in.Details != nil {
out.Details = new(deployapi.DeploymentDetails)
if err := deepCopy_api_DeploymentDetails(*in.Details, out.Details, c); err != nil {
return err
}
} else {
out.Details = nil
}
return nil
}

func deepCopy_api_DeploymentDetails(in deployapi.DeploymentDetails, out *deployapi.DeploymentDetails, c *conversion.Cloner) error {
out.Message = in.Message
if in.Causes != nil {
Expand Down Expand Up @@ -1539,18 +1574,6 @@ func deepCopy_api_DeploymentStrategy(in deployapi.DeploymentStrategy, out *deplo
return nil
}

func deepCopy_api_DeploymentTemplate(in deployapi.DeploymentTemplate, out *deployapi.DeploymentTemplate, c *conversion.Cloner) error {
if err := deepCopy_api_DeploymentStrategy(in.Strategy, &out.Strategy, c); err != nil {
return err
}
if newVal, err := c.DeepCopy(in.ControllerTemplate); err != nil {
return err
} else {
out.ControllerTemplate = newVal.(pkgapi.ReplicationControllerSpec)
}
return nil
}

func deepCopy_api_DeploymentTriggerImageChangeParams(in deployapi.DeploymentTriggerImageChangeParams, out *deployapi.DeploymentTriggerImageChangeParams, c *conversion.Cloner) error {
out.Automatic = in.Automatic
if in.ContainerNames != nil {
Expand All @@ -1561,13 +1584,11 @@ func deepCopy_api_DeploymentTriggerImageChangeParams(in deployapi.DeploymentTrig
} else {
out.ContainerNames = nil
}
out.RepositoryName = in.RepositoryName
if newVal, err := c.DeepCopy(in.From); err != nil {
return err
} else {
out.From = newVal.(pkgapi.ObjectReference)
}
out.Tag = in.Tag
out.LastTriggeredImage = in.LastTriggeredImage
return nil
}
Expand Down Expand Up @@ -2908,11 +2929,12 @@ func init() {
deepCopy_api_DeploymentConfigList,
deepCopy_api_DeploymentConfigRollback,
deepCopy_api_DeploymentConfigRollbackSpec,
deepCopy_api_DeploymentConfigSpec,
deepCopy_api_DeploymentConfigStatus,
deepCopy_api_DeploymentDetails,
deepCopy_api_DeploymentLog,
deepCopy_api_DeploymentLogOptions,
deepCopy_api_DeploymentStrategy,
deepCopy_api_DeploymentTemplate,
deepCopy_api_DeploymentTriggerImageChangeParams,
deepCopy_api_DeploymentTriggerPolicy,
deepCopy_api_ExecNewPodHook,
Expand Down
87 changes: 41 additions & 46 deletions pkg/api/graph/graphview/veneering_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -145,13 +145,13 @@ func TestBareBCGroup(t *testing.T) {
coveredNodes.Insert(coveredByBCs.List()...)

if e, a := 0, len(serviceGroups); e != a {
t.Errorf("expected %v, got %v", e, a)
t.Errorf("expected %v services, got %v", e, a)
}
if e, a := 0, len(bareDCPipelines); e != a {
t.Errorf("expected %v, got %v", e, a)
t.Errorf("expected %v deploymentConfigs, got %v", e, a)
}
if e, a := 1, len(bareBCPipelines); e != a {
t.Errorf("expected %v, got %v", e, a)
t.Errorf("expected %v buildConfigs, got %v", e, a)
}
}

Expand Down Expand Up @@ -259,38 +259,35 @@ func TestGraph(t *testing.T) {
})
deploygraph.EnsureDeploymentConfigNode(g, &deployapi.DeploymentConfig{
ObjectMeta: kapi.ObjectMeta{Namespace: "other", Name: "deploy1"},
Triggers: []deployapi.DeploymentTriggerPolicy{
{
ImageChangeParams: &deployapi.DeploymentTriggerImageChangeParams{
From: kapi.ObjectReference{Namespace: "default", Name: "other"},
ContainerNames: []string{"1", "2"},
Tag: "tag1",
Spec: deployapi.DeploymentConfigSpec{
Triggers: []deployapi.DeploymentTriggerPolicy{
{
ImageChangeParams: &deployapi.DeploymentTriggerImageChangeParams{
From: kapi.ObjectReference{Kind: "ImageStreamTag", Namespace: "default", Name: "other:tag1"},
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change here. Did this previously get mutated this way in conversion? the ImageStreamTag I would have expected, but not :tag1

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess alternatively, was this simply an invalid construct that could never have been created in the external version of the API?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess alternatively, was this simply an invalid construct that could never have been created in the external version of the API?

Yes, we don't expose Tag and RepositoryName. Furthermore, answering your 1st question, if the object reference here is an ImageStream (kind is missing from this test but generally defaulting would set it to an ImageStreamTag, validation would set it to an ImageStream, still not confused? :) ) then yes, it would be converted like this.

ContainerNames: []string{"1", "2"},
},
},
},
},
Template: deployapi.DeploymentTemplate{
ControllerTemplate: kapi.ReplicationControllerSpec{
Template: &kapi.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{
Labels: map[string]string{
"deploymentconfig": "deploy1",
"env": "prod",
},
Template: &kapi.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{
Labels: map[string]string{
"deploymentconfig": "deploy1",
"env": "prod",
},
Spec: kapi.PodSpec{
Containers: []kapi.Container{
{
Name: "1",
Image: "mycustom/repo/image",
},
{
Name: "2",
Image: "mycustom/repo/image2",
},
{
Name: "3",
Image: "mycustom/repo/image3",
},
},
Spec: kapi.PodSpec{
Containers: []kapi.Container{
{
Name: "1",
Image: "mycustom/repo/image",
},
{
Name: "2",
Image: "mycustom/repo/image2",
},
{
Name: "3",
Image: "mycustom/repo/image3",
},
},
},
Expand All @@ -299,21 +296,19 @@ func TestGraph(t *testing.T) {
})
deploygraph.EnsureDeploymentConfigNode(g, &deployapi.DeploymentConfig{
ObjectMeta: kapi.ObjectMeta{Namespace: "default", Name: "deploy2"},
Template: deployapi.DeploymentTemplate{
ControllerTemplate: kapi.ReplicationControllerSpec{
Template: &kapi.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{
Labels: map[string]string{
"deploymentconfig": "deploy2",
"env": "dev",
},
Spec: deployapi.DeploymentConfigSpec{
Template: &kapi.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{
Labels: map[string]string{
"deploymentconfig": "deploy2",
"env": "dev",
},
Spec: kapi.PodSpec{
Containers: []kapi.Container{
{
Name: "1",
Image: "someother/image:v1",
},
},
Spec: kapi.PodSpec{
Containers: []kapi.Container{
{
Name: "1",
Image: "someother/image:v1",
},
},
},
Expand Down
27 changes: 10 additions & 17 deletions pkg/api/serialization_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,16 +220,16 @@ func fuzzInternalObject(t *testing.T, forVersion string, item runtime.Object, se
},
func(j *deploy.DeploymentConfig, c fuzz.Continue) {
c.FuzzNoCustom(j)
j.Triggers = []deploy.DeploymentTriggerPolicy{{Type: deploy.DeploymentTriggerOnConfigChange}}
j.Spec.Triggers = []deploy.DeploymentTriggerPolicy{{Type: deploy.DeploymentTriggerOnConfigChange}}
if forVersion == "v1beta3" {
// v1beta3 does not contain the PodSecurityContext type. For this API version, only fuzz
// the host namespace fields. The fields set to nil here are the other fields of the
// PodSecurityContext that will not roundtrip correctly from internal->v1beta3->internal.
j.Template.ControllerTemplate.Template.Spec.SecurityContext.SELinuxOptions = nil
j.Template.ControllerTemplate.Template.Spec.SecurityContext.RunAsUser = nil
j.Template.ControllerTemplate.Template.Spec.SecurityContext.RunAsNonRoot = nil
j.Template.ControllerTemplate.Template.Spec.SecurityContext.SupplementalGroups = nil
j.Template.ControllerTemplate.Template.Spec.SecurityContext.FSGroup = nil
j.Spec.Template.Spec.SecurityContext.SELinuxOptions = nil
j.Spec.Template.Spec.SecurityContext.RunAsUser = nil
j.Spec.Template.Spec.SecurityContext.RunAsNonRoot = nil
j.Spec.Template.Spec.SecurityContext.SupplementalGroups = nil
j.Spec.Template.Spec.SecurityContext.FSGroup = nil
}
},
func(j *deploy.DeploymentStrategy, c fuzz.Continue) {
Expand Down Expand Up @@ -283,24 +283,17 @@ func fuzzInternalObject(t *testing.T, forVersion string, item runtime.Object, se
func(j *deploy.DeploymentCauseImageTrigger, c fuzz.Continue) {
c.FuzzNoCustom(j)
specs := []string{"", "a/b", "a/b/c", "a:5000/b/c", "a/b", "a/b"}
tags := []string{"", "stuff", "other"}
j.RepositoryName = specs[c.Intn(len(specs))]
if len(j.RepositoryName) > 0 {
j.Tag = tags[c.Intn(len(tags))]
} else {
j.Tag = ""
tags := []string{"stuff", "other"}
j.From.Name = specs[c.Intn(len(specs))]
if len(j.From.Name) > 0 {
j.From.Name = image.JoinImageStreamTag(j.From.Name, tags[c.Intn(len(tags))])
}
},
func(j *deploy.DeploymentTriggerImageChangeParams, c fuzz.Continue) {
c.FuzzNoCustom(j)
specs := []string{"a/b", "a/b/c", "a:5000/b/c", "a/b:latest", "a/b@test"}
j.From.Kind = "DockerImage"
j.From.Name = specs[c.Intn(len(specs))]
if ref, err := image.ParseDockerImageReference(j.From.Name); err == nil {
j.Tag = ref.Tag
ref.Tag, ref.ID = "", ""
j.RepositoryName = ref.String()
}
},
func(j *runtime.EmbeddedObject, c fuzz.Continue) {
// runtime.EmbeddedObject causes a panic inside of fuzz because runtime.Object isn't handled.
Expand Down
Loading