Skip to content

Commit

Permalink
Fix "okteto init" when deployment has no pods (#965)
Browse files Browse the repository at this point in the history
Signed-off-by: Pablo Chico de Guzman <pchico83@gmail.com>
  • Loading branch information
pchico83 committed Jun 30, 2020
1 parent 333348c commit c5ed31f
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 27 deletions.
3 changes: 2 additions & 1 deletion cmd/init/init.go
Expand Up @@ -119,12 +119,13 @@ func Run(namespace, devPath, language, workDir string, overwrite bool) error {
suffix := fmt.Sprintf("Analyzing deployment '%s'...", d.Name)
spinner := utils.NewSpinner(suffix)
spinner.Start()
dev, err = initCMD.SetDevDefaultsFromDeployment(dev, d, container)
err = initCMD.SetDevDefaultsFromDeployment(dev, d, container)
spinner.Stop()
if err == nil {
log.Success(fmt.Sprintf("Deployment '%s' successfully analyzed", d.Name))
} else {
log.Yellow(fmt.Sprintf("Analysis for deployment '%s' failed: %s", d.Name, err))
linguist.SetForwardDefaults(dev, language)
}
}

Expand Down
42 changes: 16 additions & 26 deletions pkg/cmd/init/run.go
Expand Up @@ -34,28 +34,22 @@ var (
)

//SetDevDefaultsFromDeployment sets dev defaults from a running deployment
func SetDevDefaultsFromDeployment(dev *model.Dev, d *appsv1.Deployment, container string) (*model.Dev, error) {
func SetDevDefaultsFromDeployment(dev *model.Dev, d *appsv1.Deployment, container string) error {
ctx := context.Background()
c, _, _, err := k8Client.GetLocal()
if err != nil {
return nil, err
}

pod, err := getRunningPod(d, container, c)
if err != nil {
return nil, err
return err
}

dev = setNameAndLabelsFromDeployment(ctx, dev, d)
dev = setAnnotationsFromDeployment(dev, d)
dev = setResourcesFromPod(dev, pod, container)
setAnnotationsFromDeployment(dev, d)
setNameAndLabelsFromDeployment(ctx, dev, d)

dev, err = setForwardsFromPod(ctx, dev, pod, c)
pod, err := getRunningPod(d, container, c)
if err != nil {
return nil, err
return err
}

return dev, nil
setResourcesFromPod(dev, pod, container)
return setForwardsFromPod(ctx, dev, pod, c)
}

func getRunningPod(d *appsv1.Deployment, container string, c *kubernetes.Clientset) (*apiv1.Pod, error) {
Expand Down Expand Up @@ -84,10 +78,10 @@ func getRunningPod(d *appsv1.Deployment, container string, c *kubernetes.Clients
return pod, nil
}

func setForwardsFromPod(ctx context.Context, dev *model.Dev, pod *apiv1.Pod, c *kubernetes.Clientset) (*model.Dev, error) {
func setForwardsFromPod(ctx context.Context, dev *model.Dev, pod *apiv1.Pod, c *kubernetes.Clientset) error {
ports, err := services.GetPortsByPod(pod, c)
if err != nil {
return nil, err
return err
}
seenPorts := map[int]bool{}
for _, f := range dev.Forward {
Expand All @@ -110,32 +104,29 @@ func setForwardsFromPod(ctx context.Context, dev *model.Dev, pod *apiv1.Pod, c *
},
)
}
return dev, nil
return nil
}

func setNameAndLabelsFromDeployment(ctx context.Context, dev *model.Dev, d *appsv1.Deployment) *model.Dev {
func setNameAndLabelsFromDeployment(ctx context.Context, dev *model.Dev, d *appsv1.Deployment) {
for _, l := range componentLabels {
component := d.Labels[l]
if component == "" {
continue
}
dev.Name = component
dev.Labels = map[string]string{l: component}
return dev
return
}
dev.Name = d.Name
return dev

}

func setAnnotationsFromDeployment(dev *model.Dev, d *appsv1.Deployment) *model.Dev {
func setAnnotationsFromDeployment(dev *model.Dev, d *appsv1.Deployment) {
if v := d.Annotations[okLabels.FluxAnnotation]; v != "" {
dev.Annotations = map[string]string{"fluxcd.io/ignore": "true"}
}
return dev
}

func setResourcesFromPod(dev *model.Dev, pod *apiv1.Pod, container string) *model.Dev {
func setResourcesFromPod(dev *model.Dev, pod *apiv1.Pod, container string) {
for i := range pod.Spec.Containers {
if pod.Spec.Containers[i].Name != container {
continue
Expand All @@ -148,7 +139,6 @@ func setResourcesFromPod(dev *model.Dev, pod *apiv1.Pod, container string) *mode
},
}
}
break
return
}
return dev
}

0 comments on commit c5ed31f

Please sign in to comment.