MCPcopy Index your code
hub / github.com/devspace-sh/devspace / buildDeployment

Function buildDeployment

pkg/devspace/services/podreplace/builder.go:31–178  ·  view source on GitHub ↗
(ctx devspacecontext.Context, name string, target runtime.Object, devPod *latest.DevPod)

Source from the content-addressed store, hash-verified

29)
30
31func buildDeployment(ctx devspacecontext.Context, name string, target runtime.Object, devPod *latest.DevPod) (*appsv1.Deployment, error) {
32 configHash, err := hashConfig(devPod)
33 if err != nil {
34 return nil, errors.Wrap(err, "hash config")
35 }
36
37 metaObject := target.(metav1.Object)
38 deployment := &appsv1.Deployment{
39 ObjectMeta: metav1.ObjectMeta{
40 Name: name,
41 Namespace: metaObject.GetNamespace(),
42 Annotations: map[string]string{
43 DevPodConfigHashAnnotation: configHash,
44 },
45 Labels: map[string]string{},
46 },
47 }
48 for k, v := range metaObject.GetAnnotations() {
49 deployment.Annotations[k] = v
50 }
51 for k, v := range metaObject.GetLabels() {
52 deployment.Labels[k] = v
53 }
54
55 podTemplate := &corev1.PodTemplateSpec{
56 ObjectMeta: metav1.ObjectMeta{
57 Annotations: make(map[string]string),
58 Labels: make(map[string]string),
59 },
60 }
61
62 switch t := target.(type) {
63 case *appsv1.ReplicaSet:
64 deployment.Annotations[TargetNameAnnotation] = t.Name
65 deployment.Annotations[TargetKindAnnotation] = "ReplicaSet"
66 deployment.Spec.Selector = t.Spec.Selector
67 podTemplate.Labels = t.Spec.Template.Labels
68 podTemplate.Annotations = t.Spec.Template.Annotations
69 podTemplate.Spec = *t.Spec.Template.Spec.DeepCopy()
70 case *appsv1.Deployment:
71 deployment.Annotations[TargetNameAnnotation] = t.Name
72 deployment.Annotations[TargetKindAnnotation] = "Deployment"
73 deployment.Spec.Selector = t.Spec.Selector
74 podTemplate.Labels = t.Spec.Template.Labels
75 podTemplate.Annotations = t.Spec.Template.Annotations
76 podTemplate.Spec = *t.Spec.Template.Spec.DeepCopy()
77 case *appsv1.StatefulSet:
78 deployment.Annotations[TargetNameAnnotation] = t.Name
79 deployment.Annotations[TargetKindAnnotation] = "StatefulSet"
80 deployment.Spec.Selector = t.Spec.Selector
81 podTemplate.Labels = t.Spec.Template.Labels
82 podTemplate.Annotations = t.Spec.Template.Annotations
83 podTemplate.Spec = *t.Spec.Template.Spec.DeepCopy()
84 podTemplate.Spec.Hostname = strings.ReplaceAll(t.Name+"-0", ".", "-")
85 for _, pvc := range t.Spec.VolumeClaimTemplates {
86 volumeName := pvc.ObjectMeta.Name
87 if volumeName == "" {
88 volumeName = "data"

Callers 2

updateNeededFunction · 0.85
replaceMethod · 0.85

Calls 12

EachDevContainerFunction · 0.92
hashConfigFunction · 0.85
matchesImageSelectorFunction · 0.85
applyPodPatchesFunction · 0.85
modifyDevContainerFunction · 0.85
persistPathsFunction · 0.85
hashImageSelectorFunction · 0.85
DeepCopyMethod · 0.65
LogMethod · 0.65
ErrorfMethod · 0.45
GetLevelMethod · 0.45
DebugfMethod · 0.45

Tested by

no test coverage detected