package controller

import (
	corev1 "k8s.io/api/core/v1"
	"k8s.io/apimachinery/pkg/api/errors"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

func (c *Controller) ListPods(namespace string, opts metav1.ListOptions) (*corev1.PodList, error) {
	return c.kubeCli.CoreV1().Pods(namespace).List(opts)
}

func (c *Controller) GetPod(name, namespace string) (*corev1.Pod, error) {
	return c.kubeCli.CoreV1().Pods(namespace).Get(name, metav1.GetOptions{})
}

func (c *Controller) DeletePod(name, namespace string) error {
	_, err := c.GetPod(name, namespace)
	if err != nil {
		if errors.IsNotFound(err) {
			return nil
		}
		return err
	}

	err = c.kubeCli.CoreV1().Pods(namespace).Delete(name, &metav1.DeleteOptions{})
	return err
}

func (c *Controller) UpdatePod(pod *corev1.Pod, namespace string) (*corev1.Pod, error) {
	return c.kubeCli.CoreV1().Pods(namespace).Update(pod)
}
