test(zfspv): minikube setup for travis

to run integration test cases

Signed-off-by: Pawan <pawan@mayadata.io>
This commit is contained in:
Pawan 2019-11-26 17:09:07 +05:30 committed by Kiran Mova
parent 7ab6156b98
commit d933b47c75
27 changed files with 4933 additions and 5 deletions

139
tests/k8svolume/build.go Normal file
View file

@ -0,0 +1,139 @@
/*
Copyright 2019 The OpenEBS Authors
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package k8svolume
import (
"github.com/openebs/zfs-localpv/pkg/common/errors"
corev1 "k8s.io/api/core/v1"
)
// Builder is the builder object for Volume
type Builder struct {
volume *Volume
errs []error
}
// NewBuilder returns new instance of Builder
func NewBuilder() *Builder {
return &Builder{volume: &Volume{object: &corev1.Volume{}}}
}
// WithName sets the Name field of Volume with provided value.
func (b *Builder) WithName(name string) *Builder {
if len(name) == 0 {
b.errs = append(
b.errs,
errors.New("failed to build Volume object: missing Volume name"),
)
return b
}
b.volume.object.Name = name
return b
}
// WithHostDirectory sets the VolumeSource field of Volume with provided hostpath
// as type directory.
func (b *Builder) WithHostDirectory(path string) *Builder {
if len(path) == 0 {
b.errs = append(
b.errs,
errors.New("failed to build volume object: missing volume path"),
)
return b
}
volumeSource := corev1.VolumeSource{
HostPath: &corev1.HostPathVolumeSource{
Path: path,
},
}
b.volume.object.VolumeSource = volumeSource
return b
}
// WithHostPathAndType sets the VolumeSource field of Volume with provided
// hostpath as directory path and type as directory type
func (b *Builder) WithHostPathAndType(
dirpath string,
dirtype *corev1.HostPathType,
) *Builder {
if dirtype == nil {
b.errs = append(
b.errs,
errors.New("failed to build volume object: nil volume type"),
)
return b
}
if len(dirpath) == 0 {
b.errs = append(
b.errs,
errors.New("failed to build volume object: missing volume path"),
)
return b
}
newdirtype := *dirtype
volumeSource := corev1.VolumeSource{
HostPath: &corev1.HostPathVolumeSource{
Path: dirpath,
Type: &newdirtype,
},
}
b.volume.object.VolumeSource = volumeSource
return b
}
// WithPVCSource sets the Volume field of Volume with provided pvc
func (b *Builder) WithPVCSource(pvcName string) *Builder {
if len(pvcName) == 0 {
b.errs = append(
b.errs,
errors.New("failed to build volume object: missing pvc name"),
)
return b
}
volumeSource := corev1.VolumeSource{
PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{
ClaimName: pvcName,
},
}
b.volume.object.VolumeSource = volumeSource
return b
}
// WithEmptyDir sets the EmptyDir field of the Volume with provided dir
func (b *Builder) WithEmptyDir(dir *corev1.EmptyDirVolumeSource) *Builder {
if dir == nil {
b.errs = append(
b.errs,
errors.New("failed to build volume object: nil dir"),
)
return b
}
newdir := *dir
b.volume.object.EmptyDir = &newdir
return b
}
// Build returns the Volume API instance
func (b *Builder) Build() (*corev1.Volume, error) {
if len(b.errs) > 0 {
return nil, errors.Errorf("%+v", b.errs)
}
return b.volume.object, nil
}