Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change strategicpatch.JSONMap type to crv1alpha1.JSONMap #372

Merged
merged 2 commits into from
Oct 29, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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