Skip to content

Commit

Permalink
Return error while creating kubernetes client (kanisterio#3134)
Browse files Browse the repository at this point in the history
  • Loading branch information
pavannd1 authored Jun 12, 2018
1 parent 1059587 commit 569a56c
Show file tree
Hide file tree
Showing 14 changed files with 62 additions and 27 deletions.
5 changes: 4 additions & 1 deletion pkg/function/backup_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@ func (*backupDataFunc) Exec(ctx context.Context, tp param.TemplateParams, args m
if err = validateProfile(tp.Profile); err != nil {
return errors.Wrapf(err, "Failed to validate Profile")
}
cli := kube.NewClient()
cli, err := kube.NewClient()
if err != nil {
return errors.Wrapf(err, "Failed to create Kubernetes client")
}
// Create backup and dump it on the object store
cmd := generateBackupCommand(includePath, backupArtifact, tp.Profile)
stdout, stderr, err := kube.Exec(cli, namespace, pod, container, cmd)
Expand Down
6 changes: 4 additions & 2 deletions pkg/function/kube_exec.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,12 @@ func (*kubeExecFunc) Name() string {
}

func (kef *kubeExecFunc) Exec(ctx context.Context, tp param.TemplateParams, args map[string]interface{}) error {
cli := kube.NewClient()
cli, err := kube.NewClient()
if err != nil {
return err
}
var namespace, pod, container string
var cmd []string
var err error
if err = Arg(args, KubeExecNamespaceArg, &namespace); err != nil {
return err
}
Expand Down
6 changes: 4 additions & 2 deletions pkg/function/kube_exec_all.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,10 +36,12 @@ func (*kubeExecAllFunc) Name() string {
}

func (*kubeExecAllFunc) Exec(ctx context.Context, tp param.TemplateParams, args map[string]interface{}) error {
cli := kube.NewClient()
cli, err := kube.NewClient()
if err != nil {
return err
}
var namespace, pods, containers string
var cmd []string
var err error
if err = Arg(args, KubeExecAllNamespaceArg, &namespace); err != nil {
return err
}
Expand Down
5 changes: 4 additions & 1 deletion pkg/function/kube_task.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,10 @@ func (ktf *kubeTaskFunc) Exec(ctx context.Context, tp param.TemplateParams, args
}

jobName := generateJobName(jobPrefix)
clientset := kube.NewClient()
clientset, err := kube.NewClient()
if err != nil {
return errors.Wrapf(err, "Failed to create Kubernetes client")
}
serviceAccount, err := kube.GetControllerServiceAccount(clientset)
if err != nil {
return errors.Wrap(err, "Failed to get Controller Service Account")
Expand Down
4 changes: 3 additions & 1 deletion pkg/function/kube_task_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ type KubeTaskSuite struct {
}

func (s *KubeTaskSuite) SetUpSuite(c *C) {
s.cli = kube.NewClient()
cli, err := kube.NewClient()
c.Assert(err, IsNil)
s.cli = cli

ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Expand Down
5 changes: 4 additions & 1 deletion pkg/function/prepare_data.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,10 @@ func (*prepareDataFunc) Exec(ctx context.Context, tp param.TemplateParams, args
if err = OptArg(args, PrepareDataServiceAccount, &serviceAccount, ""); err != nil {
return err
}
cli := kube.NewClient()
cli, err := kube.NewClient()
if err != nil {
return errors.Wrapf(err, "Failed to create Kubernetes client")
}
// Validate volumes
for pvc := range vols {
if _, err := cli.CoreV1().PersistentVolumeClaims(namespace).Get(pvc, metav1.GetOptions{}); err != nil {
Expand Down
4 changes: 3 additions & 1 deletion pkg/function/prepare_data_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ type PrepareDataSuite struct {
}

func (s *PrepareDataSuite) SetUpSuite(c *C) {
s.cli = kube.NewClient()
cli, err := kube.NewClient()
c.Assert(err, IsNil)
s.cli = cli

ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
Expand Down
5 changes: 4 additions & 1 deletion pkg/function/scale_workload.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,10 @@ func (*scaleWorkloadFunc) Exec(ctx context.Context, tp param.TemplateParams, arg
return err
}

cli := kube.NewClient()
cli, err := kube.NewClient()
if err != nil {
return errors.Wrapf(err, "Failed to create Kubernetes client")
}
switch strings.ToLower(kind) {
case "statefulset":
return kube.ScaleStatefulSet(ctx, cli, namespace, name, replicas)
Expand Down
10 changes: 5 additions & 5 deletions pkg/kube/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,17 +36,17 @@ func LoadConfig() (*rest.Config, error) {
return newClientConfig().ClientConfig()
}

// NewClient returns a k8 client configured by the k10 environment.
func NewClient() kubernetes.Interface {
// NewClient returns a k8 client configured by the kanister environment.
func NewClient() (kubernetes.Interface, error) {
config, err := LoadConfig()
if err != nil {
panic(err.Error())
return nil, err
}

// creates the clientset
clientset, err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
return nil, err
}
return clientset
return clientset, nil
}
3 changes: 2 additions & 1 deletion pkg/kube/exec_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@ var _ = Suite(&ExecSuite{})

func (s *ExecSuite) TestExecEcho(c *C) {
cmd := []string{"sh", "-c", "echo badabing"}
cli := NewClient()
cli, err := NewClient()
c.Assert(err, IsNil)
pods, err := cli.Core().Pods(defaultNamespace).List(emptyListOptions)
c.Assert(err, IsNil)
if len(pods.Items) == 0 {
Expand Down
24 changes: 16 additions & 8 deletions pkg/kube/job_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,8 @@ func (s *JobSuite) SetUpSuite(c *C) {

// Verifies that the Job object is not created if the job name is not specified.
func (s *JobSuite) TestJobsNoName(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, "", nil, "sleep", "10")
c.Assert(job, IsNil)
Expand All @@ -40,7 +41,8 @@ func (s *JobSuite) TestJobsNoName(c *C) {

// Verifies that the Job object is not created if the image is not specified.
func (s *JobSuite) TestJobsNoImage(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, "", nil, "sleep", "10")
c.Assert(job, IsNil)
Expand All @@ -49,7 +51,8 @@ func (s *JobSuite) TestJobsNoImage(c *C) {

// Verifies that the Job object is not created if the namespace is not specified.
func (s *JobSuite) TestJobsNoNamespace(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, "", testJobServiceAccount, testJobImage, nil, "sleep", "10")
c.Assert(job.namespace, Equals, "default")
Expand All @@ -65,7 +68,8 @@ func (s *JobSuite) TestJobsNoClientset(c *C) {

// Verifies that the Job object is not created if the command is not passed.
func (s *JobSuite) TestJobsNoCommand(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, testJobImage, nil, "")
c.Assert(job, IsNil)
Expand Down Expand Up @@ -109,7 +113,8 @@ func waitForJobCount(clientset kubernetes.Interface, namespace string, expectedC
// Verifies that the basic Job creation and deletion completes successfully.
func (s *JobSuite) TestJobsBasic(c *C) {
namespace := "default"
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

origJobCount := getK8sJobCount(clientset, namespace, c)

Expand Down Expand Up @@ -140,7 +145,8 @@ func (s *JobSuite) TestJobsBasic(c *C) {
// Verifies that deleting the Job while it is running works.
func (s *JobSuite) TestJobsDeleteWhileRunning(c *C) {
namespace := "default"
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, testJobImage, nil, "sleep", "300")

Expand All @@ -165,7 +171,8 @@ func cancelLater(cancel func()) {

// Verifies that cancelling the context results in WaitForCompletion finishing.
func (s *JobSuite) TestJobsWaitAfterDelete(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, testJobImage, nil, "sleep", "300")

Expand All @@ -188,7 +195,8 @@ func (s *JobSuite) TestJobsWaitAfterDelete(c *C) {
}

func (s *JobSuite) TestJobsWaitOnNonExistentJob(c *C) {
clientset := NewClient()
clientset, err := NewClient()
c.Assert(err, IsNil)

job, err := NewJob(clientset, testJobName, testJobNamespace, testJobServiceAccount, testJobImage, nil, "sleep", "300")

Expand Down
4 changes: 3 additions & 1 deletion pkg/kube/statefulset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@ var _ = Suite(&StatefulSetSuite{})

func (s *StatefulSetSuite) SetUpSuite(c *C) {
c.Skip("Too slow")
s.cli = NewClient()
cli, err := NewClient()
c.Assert(err, IsNil)
s.cli = cli
ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
GenerateName: "statefulsettest-",
Expand Down
4 changes: 3 additions & 1 deletion pkg/param/param_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,9 @@ type ParamsSuite struct {
var _ = Suite(&ParamsSuite{})

func (s *ParamsSuite) SetUpSuite(c *C) {
s.cli = kube.NewClient()
cli, err := kube.NewClient()
c.Assert(err, IsNil)
s.cli = cli
ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
GenerateName: "kanisterparamstest-",
Expand Down
4 changes: 3 additions & 1 deletion pkg/resource/resource_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@ type ResourceSuite struct {
var _ = Suite(&ResourceSuite{})

func (s *ResourceSuite) SetUpSuite(c *C) {
s.cli = kube.NewClient()
cli, err := kube.NewClient()
c.Assert(err, IsNil)
s.cli = cli
ns := &v1.Namespace{
ObjectMeta: metav1.ObjectMeta{
GenerateName: "kanistercontrollertest-",
Expand Down

0 comments on commit 569a56c

Please sign in to comment.