Skip to content

Commit

Permalink
Change strategicpatch.JSONMap type to crv1alpha1.JSONMap (#372)
Browse files Browse the repository at this point in the history
Signed-off-by: Prasad Ghangal <prasad.ghangal@gmail.com>
  • Loading branch information
PrasadG193 authored and mergify[bot] committed Oct 29, 2019
1 parent f15eb57 commit 445b018
Show file tree
Hide file tree
Showing 15 changed files with 65 additions and 46 deletions.
7 changes: 7 additions & 0 deletions pkg/apis/cr/v1alpha1/deepcopy.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,10 @@ func (in *Phase) DeepCopyInto(out *Phase) {
// TODO: Handle 'Output' map[string]interface{}
return
}

// DeepCopyInto handles JSONMap deep copies, copying the receiver, writing into out. in must be non-nil.
// The auto-generated function does not handle the map[string]interface{} type
func (in *JSONMap) DeepCopyInto(out *JSONMap) {
*out = *in
return
}
5 changes: 4 additions & 1 deletion pkg/apis/cr/v1alpha1/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,9 @@ const (
ActionSetResourceNamePlural = "actionsets"
)

// JSONMap contains PodOverride specs.
type JSONMap sp.JSONMap

var _ runtime.Object = (*ActionSet)(nil)

// +genclient
Expand Down Expand Up @@ -101,7 +104,7 @@ type ActionSpec struct {
Profile *ObjectReference `json:"profile"`
// PodOverride is used to specify pod specs that will override the
// default pod specs
PodOverride sp.JSONMap `json:"podOverride,omitempty"`
PodOverride JSONMap `json:"podOverride,omitempty"`
// Options will be used to specify additional values
// to be used in the Blueprint.
Options map[string]string `json:"options"`
Expand Down
11 changes: 11 additions & 0 deletions pkg/apis/cr/v1alpha1/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions pkg/function/args.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ package function
import (
"github.com/mitchellh/mapstructure"
"github.com/pkg/errors"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"

crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
)
Expand Down Expand Up @@ -51,8 +51,8 @@ func ArgExists(args map[string]interface{}, argName string) bool {
}

// GetPodSpecOverride merges PodOverride specs passed in args and TemplateParams and returns combined Override specs
func GetPodSpecOverride(tp param.TemplateParams, args map[string]interface{}, argName string) (sp.JSONMap, error) {
var podOverride sp.JSONMap
func GetPodSpecOverride(tp param.TemplateParams, args map[string]interface{}, argName string) (crv1alpha1.JSONMap, error) {
var podOverride crv1alpha1.JSONMap
var err error
if err = OptArg(args, KubeTaskPodOverrideArg, &podOverride, tp.PodOverride); err != nil {
return nil, err
Expand Down
4 changes: 2 additions & 2 deletions pkg/function/delete_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (

"github.com/pkg/errors"
v1 "k8s.io/api/core/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/format"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
Expand Down Expand Up @@ -60,7 +60,7 @@ func (*deleteDataFunc) Name() string {
return "DeleteData"
}

func deleteData(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, reclaimSpace bool, namespace, encryptionKey string, targetPaths, deleteTags, deleteIdentifiers []string, jobPrefix string, podOverride sp.JSONMap) (map[string]interface{}, error) {
func deleteData(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, reclaimSpace bool, namespace, encryptionKey string, targetPaths, deleteTags, deleteIdentifiers []string, jobPrefix string, podOverride crv1alpha1.JSONMap) (map[string]interface{}, error) {
options := &kube.PodOptions{
Namespace: namespace,
GenerateName: jobPrefix,
Expand Down
4 changes: 2 additions & 2 deletions pkg/function/describe_backups.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (

"github.com/pkg/errors"
v1 "k8s.io/api/core/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/format"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
Expand Down Expand Up @@ -58,7 +58,7 @@ func (*DescribeBackupsFunc) Name() string {
return "DescribeBackups"
}

func describeBackups(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, encryptionKey, targetPaths, jobPrefix string, podOverride sp.JSONMap) (map[string]interface{}, error) {
func describeBackups(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, encryptionKey, targetPaths, jobPrefix string, podOverride crv1alpha1.JSONMap) (map[string]interface{}, error) {
namespace, err := kube.GetControllerNamespace()
if err != nil {
return nil, errors.Wrapf(err, "Failed to get controller namespace")
Expand Down
4 changes: 2 additions & 2 deletions pkg/function/kube_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,10 @@ import (

"github.com/pkg/errors"
"k8s.io/api/core/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/consts"
"github.com/kanisterio/kanister/pkg/field"
"github.com/kanisterio/kanister/pkg/kube"
Expand Down Expand Up @@ -50,7 +50,7 @@ func (*kubeTaskFunc) Name() string {
return "KubeTask"
}

func kubeTask(ctx context.Context, cli kubernetes.Interface, namespace, image string, command []string, podOverride sp.JSONMap) (map[string]interface{}, error) {
func kubeTask(ctx context.Context, cli kubernetes.Interface, namespace, image string, command []string, podOverride crv1alpha1.JSONMap) (map[string]interface{}, error) {
var serviceAccount string
var err error
if namespace == "" {
Expand Down
3 changes: 1 addition & 2 deletions pkg/function/kube_task_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import (
. "gopkg.in/check.v1"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
Expand Down Expand Up @@ -127,7 +126,7 @@ func (s *KubeTaskSuite) TestKubeTask(c *C) {
StatefulSet: &param.StatefulSetParams{
Namespace: s.namespace,
},
PodOverride: sp.JSONMap{
PodOverride: crv1alpha1.JSONMap{
"containers": []map[string]interface{}{
{
"name": "container",
Expand Down
4 changes: 2 additions & 2 deletions pkg/function/prepare_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,10 @@ import (
"github.com/pkg/errors"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/format"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
Expand Down Expand Up @@ -75,7 +75,7 @@ func getVolumes(tp param.TemplateParams) (map[string]string, error) {
return vols, nil
}

func prepareData(ctx context.Context, cli kubernetes.Interface, namespace, serviceAccount, image string, vols map[string]string, podOverride sp.JSONMap, command ...string) (map[string]interface{}, error) {
func prepareData(ctx context.Context, cli kubernetes.Interface, namespace, serviceAccount, image string, vols map[string]string, podOverride crv1alpha1.JSONMap, command ...string) (map[string]interface{}, error) {
// Validate volumes
for pvc := range vols {
if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil {
Expand Down
10 changes: 5 additions & 5 deletions pkg/function/restore_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ import (
"github.com/pkg/errors"
v1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/format"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
Expand Down Expand Up @@ -66,10 +66,10 @@ func (*restoreDataFunc) Name() string {
return "RestoreData"
}

func validateAndGetOptArgs(args map[string]interface{}, tp param.TemplateParams) (string, string, string, map[string]string, string, string, sp.JSONMap, error) {
func validateAndGetOptArgs(args map[string]interface{}, tp param.TemplateParams) (string, string, string, map[string]string, string, string, crv1alpha1.JSONMap, error) {
var restorePath, encryptionKey, pod, tag, id string
var vols map[string]string
var podOverride sp.JSONMap
var podOverride crv1alpha1.JSONMap
var err error

if err = OptArg(args, RestoreDataRestorePathArg, &restorePath, "/"); err != nil {
Expand Down Expand Up @@ -107,7 +107,7 @@ func validateAndGetOptArgs(args map[string]interface{}, tp param.TemplateParams)
}

func restoreData(ctx context.Context, cli kubernetes.Interface, tp param.TemplateParams, namespace, encryptionKey, backupArtifactPrefix, restorePath, backupTag, backupID, jobPrefix, image string,
vols map[string]string, podOverride sp.JSONMap) (map[string]interface{}, error) {
vols map[string]string, podOverride crv1alpha1.JSONMap) (map[string]interface{}, error) {
// Validate volumes
for pvc := range vols {
if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil {
Expand Down Expand Up @@ -161,7 +161,7 @@ func restoreDataPodFunc(cli kubernetes.Interface, tp param.TemplateParams, names

func (*restoreDataFunc) Exec(ctx context.Context, tp param.TemplateParams, args map[string]interface{}) (map[string]interface{}, error) {
var namespace, image, backupArtifactPrefix, backupTag, backupID string
var podOverride sp.JSONMap
var podOverride crv1alpha1.JSONMap
var err error
if err = Arg(args, RestoreDataNamespaceArg, &namespace); err != nil {
return nil, err
Expand Down
7 changes: 3 additions & 4 deletions pkg/function/restore_data_all.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,8 @@ import (

"github.com/pkg/errors"

sp "k8s.io/apimachinery/pkg/util/strategicpatch"

kanister "github.com/kanisterio/kanister/pkg"
crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/kube"
"github.com/kanisterio/kanister/pkg/param"
"github.com/kanisterio/kanister/pkg/restic"
Expand Down Expand Up @@ -62,10 +61,10 @@ func (*restoreDataAllFunc) Name() string {
return "RestoreDataAll"
}

func validateAndGetRestoreAllOptArgs(args map[string]interface{}, tp param.TemplateParams) (string, string, []string, sp.JSONMap, error) {
func validateAndGetRestoreAllOptArgs(args map[string]interface{}, tp param.TemplateParams) (string, string, []string, crv1alpha1.JSONMap, error) {
var restorePath, encryptionKey, pods string
var ps []string
var podOverride sp.JSONMap
var podOverride crv1alpha1.JSONMap
var err error

if err = OptArg(args, RestoreDataAllRestorePathArg, &restorePath, "/"); err != nil {
Expand Down
7 changes: 3 additions & 4 deletions pkg/function/restore_data_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ package function
import (
. "gopkg.in/check.v1"

sp "k8s.io/apimachinery/pkg/util/strategicpatch"

crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/param"
)

Expand Down Expand Up @@ -93,7 +92,7 @@ func (s *RestoreDataTestSuite) TestValidateAndGetOptArgs(c *C) {
args: map[string]interface{}{
RestoreDataPodArg: "some-pod",
RestoreDataBackupIdentifierArg: "backup123",
RestoreDataPodOverrideArg: sp.JSONMap{
RestoreDataPodOverrideArg: crv1alpha1.JSONMap{
"containers": []map[string]interface{}{
{
"name": "container",
Expand All @@ -104,7 +103,7 @@ func (s *RestoreDataTestSuite) TestValidateAndGetOptArgs(c *C) {
},
errChecker: IsNil,
tp: param.TemplateParams{
PodOverride: sp.JSONMap{
PodOverride: crv1alpha1.JSONMap{
"dnsPolicy": "ClusterFirst",
},
},
Expand Down
7 changes: 4 additions & 3 deletions pkg/kube/pod.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import (
sp "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/kubernetes"

crv1alpha1 "github.com/kanisterio/kanister/pkg/apis/cr/v1alpha1"
"github.com/kanisterio/kanister/pkg/log"
"github.com/kanisterio/kanister/pkg/poll"
)
Expand All @@ -38,7 +39,7 @@ type PodOptions struct {
Command []string
Volumes map[string]string
ServiceAccountName string
PodOverride sp.JSONMap
PodOverride crv1alpha1.JSONMap
}

// CreatePod creates a pod with a single container based on the specified image
Expand Down Expand Up @@ -146,7 +147,7 @@ func WaitForPodCompletion(ctx context.Context, cli kubernetes.Interface, namespa
}

// use Strategic Merge to patch default pod specs with the passed specs
func patchDefaultPodSpecs(defaultPodSpecs v1.PodSpec, override sp.JSONMap) (v1.PodSpec, error) {
func patchDefaultPodSpecs(defaultPodSpecs v1.PodSpec, override crv1alpha1.JSONMap) (v1.PodSpec, error) {
// Merge default specs and override specs with StrategicMergePatch
mergedPatch, err := strategicMergeJsonPatch(defaultPodSpecs, override)
if err != nil {
Expand All @@ -163,7 +164,7 @@ func patchDefaultPodSpecs(defaultPodSpecs v1.PodSpec, override sp.JSONMap) (v1.P
}

// CreateAndMergeJsonPatch uses Strategic Merge to merge two Pod spec configuration
func CreateAndMergeJsonPatch(original, override sp.JSONMap) (sp.JSONMap, error) {
func CreateAndMergeJsonPatch(original, override crv1alpha1.JSONMap) (crv1alpha1.JSONMap, error) {
// Merge json specs with StrategicMerge
mergedPatch, err := strategicMergeJsonPatch(original, override)
if err != nil {
Expand Down
Loading

0 comments on commit 445b018

Please sign in to comment.