From 4aa31c811a9f09798e1593b39aeb0c1da1746e2a Mon Sep 17 00:00:00 2001 From: prashima Date: Fri, 19 Jan 2018 15:50:53 -0800 Subject: [PATCH] Created bootstrap logic for vSphere test Addressed comments about licensing and usless import Added comments for public function and struct --- test/e2e/storage/vsphere/BUILD | 5 ++- test/e2e/storage/vsphere/bootstrap/BUILD | 25 +++++++++++ .../storage/vsphere/bootstrap/bootstrap.go | 44 +++++++++++++++++++ test/e2e/storage/vsphere/bootstrap/context.go | 25 +++++++++++ 4 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 test/e2e/storage/vsphere/bootstrap/BUILD create mode 100644 test/e2e/storage/vsphere/bootstrap/bootstrap.go create mode 100644 test/e2e/storage/vsphere/bootstrap/context.go diff --git a/test/e2e/storage/vsphere/BUILD b/test/e2e/storage/vsphere/BUILD index 66c6bdf4f9a..b28a862ca63 100644 --- a/test/e2e/storage/vsphere/BUILD +++ b/test/e2e/storage/vsphere/BUILD @@ -62,6 +62,9 @@ filegroup( filegroup( name = "all-srcs", - srcs = [":package-srcs"], + srcs = [ + ":package-srcs", + "//test/e2e/storage/vsphere/bootstrap:all-srcs", + ], tags = ["automanaged"], ) diff --git a/test/e2e/storage/vsphere/bootstrap/BUILD b/test/e2e/storage/vsphere/bootstrap/BUILD new file mode 100644 index 00000000000..03beab680ab --- /dev/null +++ b/test/e2e/storage/vsphere/bootstrap/BUILD @@ -0,0 +1,25 @@ +load("@io_bazel_rules_go//go:def.bzl", "go_library") + +go_library( + name = "go_default_library", + srcs = [ + "bootstrap.go", + "context.go", + ], + importpath = "k8s.io/kubernetes/test/e2e/storage/vsphere/bootstrap", + visibility = ["//visibility:public"], +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/test/e2e/storage/vsphere/bootstrap/bootstrap.go b/test/e2e/storage/vsphere/bootstrap/bootstrap.go new file mode 100644 index 00000000000..c1129839e80 --- /dev/null +++ b/test/e2e/storage/vsphere/bootstrap/bootstrap.go @@ -0,0 +1,44 @@ +/* +Copyright 2018 The Kubernetes 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 bootstrap + +import ( + "sync" +) + +var once sync.Once +var waiting = make(chan bool) + +// Bootstrap takes care of initializing necessary test context for vSphere tests +func Bootstrap() { + done := make(chan bool) + go func() { + once.Do(bootstrapOnce) + <-waiting + done <- true + }() + <-done +} + +func bootstrapOnce() { + // TBD + // 1. Read vSphere conf and get VSphere instances + // 2. Get Node to VSphere mapping + // 3. Set NodeMapper in vSphere context + TestContext = Context{} + close(waiting) +} diff --git a/test/e2e/storage/vsphere/bootstrap/context.go b/test/e2e/storage/vsphere/bootstrap/context.go new file mode 100644 index 00000000000..fca4c895ce5 --- /dev/null +++ b/test/e2e/storage/vsphere/bootstrap/context.go @@ -0,0 +1,25 @@ +/* +Copyright 2018 The Kubernetes 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 bootstrap + +// Context holds common information for vSphere tests +type Context struct { + // NodeMapper and other instances, common to vSphere tests +} + +// TestContext should be used by all tests to access common context data. It should be initialized only once, during bootstrapping the tests. +var TestContext Context