(ctx devspacecontext.Context, deploymentName string, target runtime.Object, devPod *latest.DevPod)
| 207 | } |
| 208 | |
| 209 | func (p *replacer) replace(ctx devspacecontext.Context, deploymentName string, target runtime.Object, devPod *latest.DevPod) error { |
| 210 | deploymentObj, err := buildDeployment(ctx, deploymentName, target, devPod) |
| 211 | if err != nil { |
| 212 | return err |
| 213 | } |
| 214 | |
| 215 | // scale down parent |
| 216 | err = scaleDownTarget(ctx, target) |
| 217 | if err != nil { |
| 218 | return errors.Wrap(err, "scale down target") |
| 219 | } |
| 220 | ctx.Log().Debugf("Scaled down %s %s", deploymentObj.Annotations[TargetKindAnnotation], deploymentObj.Annotations[TargetNameAnnotation]) |
| 221 | |
| 222 | // create the deployment |
| 223 | deployment, err := ctx.KubeClient().KubeClient().AppsV1().Deployments(deploymentObj.Namespace).Create(ctx.Context(), deploymentObj, metav1.CreateOptions{}) |
| 224 | if err != nil { |
| 225 | if kerrors.IsAlreadyExists(err) { |
| 226 | ctx.Log().Info("Pod was already replaced, retrying to update the configuration") |
| 227 | return p.ReplacePod(ctx, devPod) |
| 228 | } |
| 229 | |
| 230 | return errors.Wrap(err, "create deployment") |
| 231 | } |
| 232 | |
| 233 | return updatePVC(ctx, deployment, devPod) |
| 234 | } |
| 235 | |
| 236 | func updatePVC(ctx devspacecontext.Context, deployment *appsv1.Deployment, devPod *latest.DevPod) error { |
| 237 | // create a pvc if needed |
no test coverage detected