func defaultRolloutStatusf(d *appsv1.Deployment) ([]byte, error) {
	b := NewForAPIObject(d)
	return b.RolloutStatusRaw()
}
defaultRolloutStatusf is the default implementation to fetch
rollout status of a deployment instance from kubernetes cluster
package deployment
import (
	"context"
	"encoding/json"
	"strings"
	"github.com/openebs/maya/pkg/debug"
	"github.com/openebs/dynamic-nfs-provisioner/pkg/kubernetes/client"
	"github.com/pkg/errors"
	appsv1 "k8s.io/api/apps/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	types "k8s.io/apimachinery/pkg/types"
	"k8s.io/client-go/kubernetes"
)
type getClientsetFn func() (*kubernetes.Clientset, error)
type getClientsetForPathFn func(path string) (*kubernetes.Clientset, error)
type getFn func(
	cli *kubernetes.Clientset,
	name string,
	namespace string,
	opts *metav1.GetOptions,
) (*appsv1.Deployment, error)
type listFn func(
	cli *kubernetes.Clientset,
	namespace string,
	opts *metav1.ListOptions,
) (*appsv1.DeploymentList, error)
type createFn func(
	cli *kubernetes.Clientset,
	namespace string,
	deploy *appsv1.Deployment,
	createOpts metav1.CreateOptions,
) (*appsv1.Deployment, error)
type updateFn func(
	cli *kubernetes.Clientset,
	namespace string,
	deploy *appsv1.Deployment,
	updateOpts metav1.UpdateOptions,
) (*appsv1.Deployment, error)
type deleteFn func(
	cli *kubernetes.Clientset,
	namespace string,
	name string,
	opts *metav1.DeleteOptions,
) error
type patchFn func(
	cli *kubernetes.Clientset,
	name, namespace string,
	pt types.PatchType,
	data []byte,
	opts metav1.PatchOptions,
	subresources ...string,
) (*appsv1.Deployment, error)
type rolloutStatusFn func(d *appsv1.Deployment) (*RolloutOutput, error)
type rolloutStatusfFn func(d *appsv1.Deployment) ([]byte, error)
func defaultGetClientset() (*kubernetes.Clientset, error) {
	return client.Instance().Clientset()
}
func defaultGetClientsetForPath(path string) (*kubernetes.Clientset, error) {
	return client.New(client.WithKubeConfigPath(path)).Clientset()
}
func defaultGet(
	cli *kubernetes.Clientset,
	name string,
	namespace string,
	opts *metav1.GetOptions,
) (*appsv1.Deployment, error) {
	return cli.AppsV1().Deployments(namespace).Get(context.TODO(), name, *opts)
}
func defaultList(
	cli *kubernetes.Clientset,
	namespace string,
	opts *metav1.ListOptions,
) (*appsv1.DeploymentList, error) {
	return cli.AppsV1().Deployments(namespace).List(context.TODO(), *opts)
}
func defaultCreate(
	cli *kubernetes.Clientset,
	namespace string,
	deploy *appsv1.Deployment,
	createOpts metav1.CreateOptions,
) (*appsv1.Deployment, error) {
	return cli.AppsV1().Deployments(namespace).Create(context.TODO(), deploy, createOpts)
}
func defaultUpdate(
	cli *kubernetes.Clientset,
	namespace string,
	deploy *appsv1.Deployment,
	updateOpts metav1.UpdateOptions,
) (*appsv1.Deployment, error) {
	return cli.AppsV1().Deployments(namespace).Update(context.TODO(), deploy, updateOpts)
}
func defaultDel(
	cli *kubernetes.Clientset,
	namespace string,
	name string,
	opts *metav1.DeleteOptions,
) error {
	return cli.AppsV1().Deployments(namespace).Delete(context.TODO(), name, *opts)
}
func defaultPatch(
	cli *kubernetes.Clientset,
	name, namespace string,
	pt types.PatchType,
	data []byte,
	patchOpts metav1.PatchOptions,
	subresources ...string,
) (*appsv1.Deployment, error) {
	return cli.AppsV1().Deployments(namespace).Patch(context.TODO(), name, pt, data, patchOpts, subresources...)
}
func defaultRolloutStatus(d *appsv1.Deployment) (*RolloutOutput, error) {
	b := NewForAPIObject(d)
	return b.RolloutStatus()
}