Merge pull request #84463 from clarklee92/move-funcs-of-create

Move funcs of create.go to e2e/storage
This commit is contained in:
Kubernetes Prow Robot 2019-11-01 18:08:26 -07:00 committed by GitHub
commit 9820925e07
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 65 additions and 60 deletions

View File

@ -4,7 +4,6 @@ go_library(
name = "go_default_library", name = "go_default_library",
srcs = [ srcs = [
"cleanup.go", "cleanup.go",
"create.go",
"exec_util.go", "exec_util.go",
"expect.go", "expect.go",
"flake_reporting_util.go", "flake_reporting_util.go",
@ -44,8 +43,6 @@ go_library(
"//staging/src/k8s.io/api/core/v1:go_default_library", "//staging/src/k8s.io/api/core/v1:go_default_library",
"//staging/src/k8s.io/api/policy/v1beta1:go_default_library", "//staging/src/k8s.io/api/policy/v1beta1:go_default_library",
"//staging/src/k8s.io/api/rbac/v1:go_default_library", "//staging/src/k8s.io/api/rbac/v1:go_default_library",
"//staging/src/k8s.io/api/storage/v1:go_default_library",
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/fields:go_default_library",
@ -71,7 +68,6 @@ go_library(
"//staging/src/k8s.io/client-go/rest:go_default_library", "//staging/src/k8s.io/client-go/rest:go_default_library",
"//staging/src/k8s.io/client-go/restmapper:go_default_library", "//staging/src/k8s.io/client-go/restmapper:go_default_library",
"//staging/src/k8s.io/client-go/scale:go_default_library", "//staging/src/k8s.io/client-go/scale:go_default_library",
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library", "//staging/src/k8s.io/client-go/tools/clientcmd:go_default_library",
"//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library", "//staging/src/k8s.io/client-go/tools/clientcmd/api:go_default_library",
"//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library", "//staging/src/k8s.io/client-go/tools/remotecommand:go_default_library",
@ -86,7 +82,6 @@ go_library(
"//test/e2e/framework/pod:go_default_library", "//test/e2e/framework/pod:go_default_library",
"//test/e2e/framework/resource:go_default_library", "//test/e2e/framework/resource:go_default_library",
"//test/e2e/framework/ssh:go_default_library", "//test/e2e/framework/ssh:go_default_library",
"//test/e2e/framework/testfiles:go_default_library",
"//test/e2e/manifest:go_default_library", "//test/e2e/manifest:go_default_library",
"//test/e2e/system:go_default_library", "//test/e2e/system:go_default_library",
"//test/utils:go_default_library", "//test/utils:go_default_library",

View File

@ -187,7 +187,7 @@ func (h *hostpathCSIDriver) PrepareTest(f *framework.Framework) (*testsuites.Per
SnapshotterContainerName: "csi-snapshotter", SnapshotterContainerName: "csi-snapshotter",
NodeName: node.Name, NodeName: node.Name,
} }
cleanup, err := config.Framework.CreateFromManifests(func(item interface{}) error { cleanup, err := utils.CreateFromManifests(config.Framework, func(item interface{}) error {
return utils.PatchCSIDeployment(config.Framework, o, item) return utils.PatchCSIDeployment(config.Framework, o, item)
}, },
h.manifests...) h.manifests...)
@ -329,7 +329,7 @@ func (m *mockCSIDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTest
storagev1beta1.VolumeLifecycleEphemeral, storagev1beta1.VolumeLifecycleEphemeral,
}, },
} }
cleanup, err := f.CreateFromManifests(func(item interface{}) error { cleanup, err := utils.CreateFromManifests(f, func(item interface{}) error {
return utils.PatchCSIDeployment(f, o, item) return utils.PatchCSIDeployment(f, o, item)
}, },
m.manifests...) m.manifests...)
@ -459,7 +459,7 @@ func (g *gcePDCSIDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTes
"test/e2e/testing-manifests/storage-csi/gce-pd/controller_ss.yaml", "test/e2e/testing-manifests/storage-csi/gce-pd/controller_ss.yaml",
} }
cleanup, err := f.CreateFromManifests(nil, manifests...) cleanup, err := utils.CreateFromManifests(f, nil, manifests...)
if err != nil { if err != nil {
framework.Failf("deploying csi gce-pd driver: %v", err) framework.Failf("deploying csi gce-pd driver: %v", err)
} }

View File

@ -18,6 +18,7 @@ go_library(
"//test/e2e/framework/volume:go_default_library", "//test/e2e/framework/volume:go_default_library",
"//test/e2e/storage/testpatterns:go_default_library", "//test/e2e/storage/testpatterns:go_default_library",
"//test/e2e/storage/testsuites:go_default_library", "//test/e2e/storage/testsuites:go_default_library",
"//test/e2e/storage/utils:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library", "//vendor/github.com/pkg/errors:go_default_library",

View File

@ -34,6 +34,7 @@ import (
"k8s.io/kubernetes/test/e2e/framework/volume" "k8s.io/kubernetes/test/e2e/framework/volume"
"k8s.io/kubernetes/test/e2e/storage/testpatterns" "k8s.io/kubernetes/test/e2e/storage/testpatterns"
"k8s.io/kubernetes/test/e2e/storage/testsuites" "k8s.io/kubernetes/test/e2e/storage/testsuites"
"k8s.io/kubernetes/test/e2e/storage/utils"
"github.com/onsi/ginkgo" "github.com/onsi/ginkgo"
"github.com/onsi/gomega" "github.com/onsi/gomega"
@ -271,11 +272,11 @@ func (d *driverDefinition) GetDynamicProvisionStorageClass(config *testsuites.Pe
return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix) return testsuites.GetStorageClass(provisioner, parameters, nil, ns, suffix)
} }
items, err := f.LoadFromManifests(d.StorageClass.FromFile) items, err := utils.LoadFromManifests(d.StorageClass.FromFile)
framework.ExpectNoError(err, "load storage class from %s", d.StorageClass.FromFile) framework.ExpectNoError(err, "load storage class from %s", d.StorageClass.FromFile)
framework.ExpectEqual(len(items), 1, "exactly one item from %s", d.StorageClass.FromFile) framework.ExpectEqual(len(items), 1, "exactly one item from %s", d.StorageClass.FromFile)
err = f.PatchItems(items...) err = utils.PatchItems(f, items...)
framework.ExpectNoError(err, "patch items") framework.ExpectNoError(err, "patch items")
sc, ok := items[0].(*storagev1.StorageClass) sc, ok := items[0].(*storagev1.StorageClass)

View File

@ -5,6 +5,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = [ srcs = [
"create.go",
"deployment.go", "deployment.go",
"framework.go", "framework.go",
"host_exec.go", "host_exec.go",
@ -20,19 +21,25 @@ go_library(
"//staging/src/k8s.io/api/storage/v1beta1:go_default_library", "//staging/src/k8s.io/api/storage/v1beta1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/uuid:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
"//staging/src/k8s.io/client-go/util/exec:go_default_library", "//staging/src/k8s.io/client-go/util/exec:go_default_library",
"//test/e2e/framework:go_default_library", "//test/e2e/framework:go_default_library",
"//test/e2e/framework/log:go_default_library", "//test/e2e/framework/log:go_default_library",
"//test/e2e/framework/node:go_default_library", "//test/e2e/framework/node:go_default_library",
"//test/e2e/framework/pod:go_default_library", "//test/e2e/framework/pod:go_default_library",
"//test/e2e/framework/ssh:go_default_library", "//test/e2e/framework/ssh:go_default_library",
"//test/e2e/framework/testfiles:go_default_library",
"//test/utils/image:go_default_library", "//test/utils/image:go_default_library",
"//vendor/github.com/onsi/ginkgo:go_default_library", "//vendor/github.com/onsi/ginkgo:go_default_library",
"//vendor/github.com/onsi/gomega:go_default_library", "//vendor/github.com/onsi/gomega:go_default_library",
"//vendor/github.com/pkg/errors:go_default_library",
"//vendor/k8s.io/utils/exec:go_default_library", "//vendor/k8s.io/utils/exec:go_default_library",
], ],
) )

View File

@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
limitations under the License. limitations under the License.
*/ */
package framework package utils
import ( import (
"bytes" "bytes"
@ -34,6 +34,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/kubernetes/scheme" "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/cache" "k8s.io/client-go/tools/cache"
"k8s.io/kubernetes/test/e2e/framework"
e2epod "k8s.io/kubernetes/test/e2e/framework/pod" e2epod "k8s.io/kubernetes/test/e2e/framework/pod"
"k8s.io/kubernetes/test/e2e/framework/testfiles" "k8s.io/kubernetes/test/e2e/framework/testfiles"
) )
@ -51,7 +52,7 @@ import (
// and silently ignored // and silently ignored
// - the latest stable API version for each item is used, regardless of what // - the latest stable API version for each item is used, regardless of what
// is specified in the manifest files // is specified in the manifest files
func (f *Framework) LoadFromManifests(files ...string) ([]interface{}, error) { func LoadFromManifests(files ...string) ([]interface{}, error) {
var items []interface{} var items []interface{}
err := visitManifests(func(data []byte) error { err := visitManifests(func(data []byte) error {
// Ignore any additional fields for now, just determine what we have. // Ignore any additional fields for now, just determine what we have.
@ -80,7 +81,7 @@ func visitManifests(cb func([]byte) error, files ...string) error {
for _, fileName := range files { for _, fileName := range files {
data, err := testfiles.Read(fileName) data, err := testfiles.Read(fileName)
if err != nil { if err != nil {
Failf("reading manifest file: %v", err) framework.Failf("reading manifest file: %v", err)
} }
// Split at the "---" separator before working on // Split at the "---" separator before working on
@ -113,11 +114,11 @@ func visitManifests(cb func([]byte) error, files ...string) error {
// PatchItems has some limitations: // PatchItems has some limitations:
// - only some common items are supported, unknown ones trigger an error // - only some common items are supported, unknown ones trigger an error
// - only the latest stable API version for each item is supported // - only the latest stable API version for each item is supported
func (f *Framework) PatchItems(items ...interface{}) error { func PatchItems(f *framework.Framework, items ...interface{}) error {
for _, item := range items { for _, item := range items {
// Uncomment when debugging the loading and patching of items. // Uncomment when debugging the loading and patching of items.
// Logf("patching original content of %T:\n%s", item, PrettyPrint(item)) // Logf("patching original content of %T:\n%s", item, PrettyPrint(item))
if err := f.patchItemRecursively(item); err != nil { if err := patchItemRecursively(f, item); err != nil {
return err return err
} }
} }
@ -138,15 +139,15 @@ func (f *Framework) PatchItems(items ...interface{}) error {
// PatchItems has the some limitations as LoadFromManifests: // PatchItems has the some limitations as LoadFromManifests:
// - only some common items are supported, unknown ones trigger an error // - only some common items are supported, unknown ones trigger an error
// - only the latest stable API version for each item is supported // - only the latest stable API version for each item is supported
func (f *Framework) CreateItems(items ...interface{}) (func(), error) { func CreateItems(f *framework.Framework, items ...interface{}) (func(), error) {
var destructors []func() error var destructors []func() error
var cleanupHandle CleanupActionHandle var cleanupHandle framework.CleanupActionHandle
cleanup := func() { cleanup := func() {
if cleanupHandle == nil { if cleanupHandle == nil {
// Already done. // Already done.
return return
} }
RemoveCleanupAction(cleanupHandle) framework.RemoveCleanupAction(cleanupHandle)
// TODO (?): use same logic as framework.go for determining // TODO (?): use same logic as framework.go for determining
// whether we are expected to clean up? This would change the // whether we are expected to clean up? This would change the
@ -155,11 +156,11 @@ func (f *Framework) CreateItems(items ...interface{}) (func(), error) {
// to non-namespaced items. // to non-namespaced items.
for _, destructor := range destructors { for _, destructor := range destructors {
if err := destructor(); err != nil && !apierrs.IsNotFound(err) { if err := destructor(); err != nil && !apierrs.IsNotFound(err) {
Logf("deleting failed: %s", err) framework.Logf("deleting failed: %s", err)
} }
} }
} }
cleanupHandle = AddCleanupAction(cleanup) cleanupHandle = framework.AddCleanupAction(cleanup)
var result error var result error
for _, item := range items { for _, item := range items {
@ -168,12 +169,12 @@ func (f *Framework) CreateItems(items ...interface{}) (func(), error) {
description := describeItem(item) description := describeItem(item)
// Uncomment this line to get a full dump of the entire item. // Uncomment this line to get a full dump of the entire item.
// description = fmt.Sprintf("%s:\n%s", description, PrettyPrint(item)) // description = fmt.Sprintf("%s:\n%s", description, PrettyPrint(item))
Logf("creating %s", description) framework.Logf("creating %s", description)
for _, factory := range factories { for _, factory := range factories {
destructor, err := factory.Create(f, item) destructor, err := factory.Create(f, item)
if destructor != nil { if destructor != nil {
destructors = append(destructors, func() error { destructors = append(destructors, func() error {
Logf("deleting %s", description) framework.Logf("deleting %s", description)
return destructor() return destructor()
}) })
} }
@ -202,12 +203,12 @@ func (f *Framework) CreateItems(items ...interface{}) (func(), error) {
// CreateFromManifests is a combination of LoadFromManifests, // CreateFromManifests is a combination of LoadFromManifests,
// PatchItems, patching with an optional custom function, // PatchItems, patching with an optional custom function,
// and CreateItems. // and CreateItems.
func (f *Framework) CreateFromManifests(patch func(item interface{}) error, files ...string) (func(), error) { func CreateFromManifests(f *framework.Framework, patch func(item interface{}) error, files ...string) (func(), error) {
items, err := f.LoadFromManifests(files...) items, err := LoadFromManifests(files...)
if err != nil { if err != nil {
return nil, errors.Wrap(err, "CreateFromManifests") return nil, errors.Wrap(err, "CreateFromManifests")
} }
if err := f.PatchItems(items...); err != nil { if err := PatchItems(f, items...); err != nil {
return nil, err return nil, err
} }
if patch != nil { if patch != nil {
@ -217,7 +218,7 @@ func (f *Framework) CreateFromManifests(patch func(item interface{}) error, file
} }
} }
} }
return f.CreateItems(items...) return CreateItems(f, items...)
} }
// What is a subset of metav1.TypeMeta which (in contrast to // What is a subset of metav1.TypeMeta which (in contrast to
@ -257,7 +258,7 @@ type ItemFactory interface {
// error or a cleanup function for the created item. // error or a cleanup function for the created item.
// If the item is of an unsupported type, it must return // If the item is of an unsupported type, it must return
// an error that has errorItemNotSupported as cause. // an error that has errorItemNotSupported as cause.
Create(f *Framework, item interface{}) (func() error, error) Create(f *framework.Framework, item interface{}) (func() error, error)
} }
// describeItem always returns a string that describes the item, // describeItem always returns a string that describes the item,
@ -292,7 +293,7 @@ var factories = map[What]ItemFactory{
// PatchName makes the name of some item unique by appending the // PatchName makes the name of some item unique by appending the
// generated unique name. // generated unique name.
func (f *Framework) PatchName(item *string) { func PatchName(f *framework.Framework, item *string) {
if *item != "" { if *item != "" {
*item = *item + "-" + f.UniqueName *item = *item + "-" + f.UniqueName
} }
@ -301,64 +302,64 @@ func (f *Framework) PatchName(item *string) {
// PatchNamespace moves the item into the test's namespace. Not // PatchNamespace moves the item into the test's namespace. Not
// all items can be namespaced. For those, the name also needs to be // all items can be namespaced. For those, the name also needs to be
// patched. // patched.
func (f *Framework) PatchNamespace(item *string) { func PatchNamespace(f *framework.Framework, item *string) {
if f.Namespace != nil { if f.Namespace != nil {
*item = f.Namespace.GetName() *item = f.Namespace.GetName()
} }
} }
func (f *Framework) patchItemRecursively(item interface{}) error { func patchItemRecursively(f *framework.Framework, item interface{}) error {
switch item := item.(type) { switch item := item.(type) {
case *rbacv1.Subject: case *rbacv1.Subject:
f.PatchNamespace(&item.Namespace) PatchNamespace(f, &item.Namespace)
case *rbacv1.RoleRef: case *rbacv1.RoleRef:
// TODO: avoid hard-coding this special name. Perhaps add a Framework.PredefinedRoles // TODO: avoid hard-coding this special name. Perhaps add a Framework.PredefinedRoles
// which contains all role names that are defined cluster-wide before the test starts? // which contains all role names that are defined cluster-wide before the test starts?
// All those names are excempt from renaming. That list could be populated by querying // All those names are excempt from renaming. That list could be populated by querying
// and get extended by tests. // and get extended by tests.
if item.Name != "e2e-test-privileged-psp" { if item.Name != "e2e-test-privileged-psp" {
f.PatchName(&item.Name) PatchName(f, &item.Name)
} }
case *rbacv1.ClusterRole: case *rbacv1.ClusterRole:
f.PatchName(&item.Name) PatchName(f, &item.Name)
case *rbacv1.Role: case *rbacv1.Role:
f.PatchNamespace(&item.Namespace) PatchNamespace(f, &item.Namespace)
// Roles are namespaced, but because for RoleRef above we don't // Roles are namespaced, but because for RoleRef above we don't
// know whether the referenced role is a ClusterRole or Role // know whether the referenced role is a ClusterRole or Role
// and therefore always renames, we have to do the same here. // and therefore always renames, we have to do the same here.
f.PatchName(&item.Name) PatchName(f, &item.Name)
case *storagev1.StorageClass: case *storagev1.StorageClass:
f.PatchName(&item.Name) PatchName(f, &item.Name)
case *storagev1beta1.CSIDriver: case *storagev1beta1.CSIDriver:
f.PatchName(&item.Name) PatchName(f, &item.Name)
case *v1.ServiceAccount: case *v1.ServiceAccount:
f.PatchNamespace(&item.ObjectMeta.Namespace) PatchNamespace(f, &item.ObjectMeta.Namespace)
case *v1.Secret: case *v1.Secret:
f.PatchNamespace(&item.ObjectMeta.Namespace) PatchNamespace(f, &item.ObjectMeta.Namespace)
case *rbacv1.ClusterRoleBinding: case *rbacv1.ClusterRoleBinding:
f.PatchName(&item.Name) PatchName(f, &item.Name)
for i := range item.Subjects { for i := range item.Subjects {
if err := f.patchItemRecursively(&item.Subjects[i]); err != nil { if err := patchItemRecursively(f, &item.Subjects[i]); err != nil {
return errors.Wrapf(err, "%T", f) return errors.Wrapf(err, "%T", f)
} }
} }
if err := f.patchItemRecursively(&item.RoleRef); err != nil { if err := patchItemRecursively(f, &item.RoleRef); err != nil {
return errors.Wrapf(err, "%T", f) return errors.Wrapf(err, "%T", f)
} }
case *rbacv1.RoleBinding: case *rbacv1.RoleBinding:
f.PatchNamespace(&item.Namespace) PatchNamespace(f, &item.Namespace)
for i := range item.Subjects { for i := range item.Subjects {
if err := f.patchItemRecursively(&item.Subjects[i]); err != nil { if err := patchItemRecursively(f, &item.Subjects[i]); err != nil {
return errors.Wrapf(err, "%T", f) return errors.Wrapf(err, "%T", f)
} }
} }
if err := f.patchItemRecursively(&item.RoleRef); err != nil { if err := patchItemRecursively(f, &item.RoleRef); err != nil {
return errors.Wrapf(err, "%T", f) return errors.Wrapf(err, "%T", f)
} }
case *v1.Service: case *v1.Service:
f.PatchNamespace(&item.ObjectMeta.Namespace) PatchNamespace(f, &item.ObjectMeta.Namespace)
case *appsv1.StatefulSet: case *appsv1.StatefulSet:
f.PatchNamespace(&item.ObjectMeta.Namespace) PatchNamespace(f, &item.ObjectMeta.Namespace)
if err := e2epod.PatchContainerImages(item.Spec.Template.Spec.Containers); err != nil { if err := e2epod.PatchContainerImages(item.Spec.Template.Spec.Containers); err != nil {
return err return err
} }
@ -366,7 +367,7 @@ func (f *Framework) patchItemRecursively(item interface{}) error {
return err return err
} }
case *appsv1.DaemonSet: case *appsv1.DaemonSet:
f.PatchNamespace(&item.ObjectMeta.Namespace) PatchNamespace(f, &item.ObjectMeta.Namespace)
if err := e2epod.PatchContainerImages(item.Spec.Template.Spec.Containers); err != nil { if err := e2epod.PatchContainerImages(item.Spec.Template.Spec.Containers); err != nil {
return err return err
} }
@ -390,7 +391,7 @@ func (f *serviceAccountFactory) New() runtime.Object {
return &v1.ServiceAccount{} return &v1.ServiceAccount{}
} }
func (*serviceAccountFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*serviceAccountFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*v1.ServiceAccount) item, ok := i.(*v1.ServiceAccount)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -410,13 +411,13 @@ func (f *clusterRoleFactory) New() runtime.Object {
return &rbacv1.ClusterRole{} return &rbacv1.ClusterRole{}
} }
func (*clusterRoleFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*clusterRoleFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*rbacv1.ClusterRole) item, ok := i.(*rbacv1.ClusterRole)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
} }
Logf("Define cluster role %v", item.GetName()) framework.Logf("Define cluster role %v", item.GetName())
client := f.ClientSet.RbacV1().ClusterRoles() client := f.ClientSet.RbacV1().ClusterRoles()
if _, err := client.Create(item); err != nil { if _, err := client.Create(item); err != nil {
return nil, errors.Wrap(err, "create ClusterRole") return nil, errors.Wrap(err, "create ClusterRole")
@ -432,7 +433,7 @@ func (f *clusterRoleBindingFactory) New() runtime.Object {
return &rbacv1.ClusterRoleBinding{} return &rbacv1.ClusterRoleBinding{}
} }
func (*clusterRoleBindingFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*clusterRoleBindingFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*rbacv1.ClusterRoleBinding) item, ok := i.(*rbacv1.ClusterRoleBinding)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -453,7 +454,7 @@ func (f *roleFactory) New() runtime.Object {
return &rbacv1.Role{} return &rbacv1.Role{}
} }
func (*roleFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*roleFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*rbacv1.Role) item, ok := i.(*rbacv1.Role)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -474,7 +475,7 @@ func (f *roleBindingFactory) New() runtime.Object {
return &rbacv1.RoleBinding{} return &rbacv1.RoleBinding{}
} }
func (*roleBindingFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*roleBindingFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*rbacv1.RoleBinding) item, ok := i.(*rbacv1.RoleBinding)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -495,7 +496,7 @@ func (f *serviceFactory) New() runtime.Object {
return &v1.Service{} return &v1.Service{}
} }
func (*serviceFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*serviceFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*v1.Service) item, ok := i.(*v1.Service)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -516,7 +517,7 @@ func (f *statefulSetFactory) New() runtime.Object {
return &appsv1.StatefulSet{} return &appsv1.StatefulSet{}
} }
func (*statefulSetFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*statefulSetFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*appsv1.StatefulSet) item, ok := i.(*appsv1.StatefulSet)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -537,7 +538,7 @@ func (f *daemonSetFactory) New() runtime.Object {
return &appsv1.DaemonSet{} return &appsv1.DaemonSet{}
} }
func (*daemonSetFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*daemonSetFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*appsv1.DaemonSet) item, ok := i.(*appsv1.DaemonSet)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -558,7 +559,7 @@ func (f *storageClassFactory) New() runtime.Object {
return &storagev1.StorageClass{} return &storagev1.StorageClass{}
} }
func (*storageClassFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*storageClassFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*storagev1.StorageClass) item, ok := i.(*storagev1.StorageClass)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -579,7 +580,7 @@ func (f *csiDriverFactory) New() runtime.Object {
return &storagev1beta1.CSIDriver{} return &storagev1beta1.CSIDriver{}
} }
func (*csiDriverFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*csiDriverFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*storagev1beta1.CSIDriver) item, ok := i.(*storagev1beta1.CSIDriver)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported
@ -600,7 +601,7 @@ func (f *secretFactory) New() runtime.Object {
return &v1.Secret{} return &v1.Secret{}
} }
func (*secretFactory) Create(f *Framework, i interface{}) (func() error, error) { func (*secretFactory) Create(f *framework.Framework, i interface{}) (func() error, error) {
item, ok := i.(*v1.Secret) item, ok := i.(*v1.Secret)
if !ok { if !ok {
return nil, errorItemNotSupported return nil, errorItemNotSupported