in pkg/transformer/openshift/openshift.go [154:222]
func (o *OpenShift) initDeploymentConfig(name string, service kobject.ServiceConfig, replicas int) *deployapi.DeploymentConfig {
containerName := []string{name}
// Properly add tags to the image name
tag := GetImageTag(service.Image)
// Use ContainerName if it was set
if service.ContainerName != "" {
containerName = []string{service.ContainerName}
}
var podSpec corev1.PodSpec
if len(service.Configs) > 0 {
podSpec = o.InitPodSpecWithConfigMap(name, " ", service)
} else {
podSpec = o.InitPodSpec(name, " ", "")
}
dc := &deployapi.DeploymentConfig{
TypeMeta: kapi.TypeMeta{
Kind: "DeploymentConfig",
APIVersion: "v1",
},
ObjectMeta: kapi.ObjectMeta{
Name: name,
Labels: transformer.ConfigLabels(name),
},
Spec: deployapi.DeploymentConfigSpec{
Replicas: int32(replicas),
Selector: transformer.ConfigLabels(name),
//UniqueLabelKey: p.Name,
Template: &corev1.PodTemplateSpec{
ObjectMeta: kapi.ObjectMeta{
Labels: transformer.ConfigLabels(name),
},
Spec: podSpec,
},
Triggers: []deployapi.DeploymentTriggerPolicy{
// Trigger new deploy when DeploymentConfig is created (config change)
deployapi.DeploymentTriggerPolicy{
Type: deployapi.DeploymentTriggerOnConfigChange,
},
deployapi.DeploymentTriggerPolicy{
Type: deployapi.DeploymentTriggerOnImageChange,
ImageChangeParams: &deployapi.DeploymentTriggerImageChangeParams{
//Automatic - if new tag is detected - update image update inside the pod template
Automatic: true,
ContainerNames: containerName,
From: corev1.ObjectReference{
Name: name + ":" + tag,
Kind: "ImageStreamTag",
},
},
},
},
},
}
update := service.GetOSUpdateStrategy()
if update != nil {
dc.Spec.Strategy = deployapi.DeploymentStrategy{
Type: deployapi.DeploymentStrategyTypeRolling,
RollingParams: update,
}
log.Debugf("Set deployment '%s' rolling update: MaxSurge: %s, MaxUnavailable: %s", name, update.MaxSurge.String(), update.MaxUnavailable.String())
}
return dc
}