mirror of https://github.com/k3s-io/k3s
65 lines
1.9 KiB
Go
65 lines
1.9 KiB
Go
/*
|
|
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 vsphere
|
|
|
|
import (
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"k8s.io/kubernetes/test/e2e/framework"
|
|
"sync"
|
|
)
|
|
|
|
var once sync.Once
|
|
var waiting = make(chan bool)
|
|
var f *framework.Framework
|
|
|
|
// Bootstrap takes care of initializing necessary test context for vSphere tests
|
|
func Bootstrap(fw *framework.Framework) {
|
|
done := make(chan bool)
|
|
f = fw
|
|
go func() {
|
|
once.Do(bootstrapOnce)
|
|
<-waiting
|
|
done <- true
|
|
}()
|
|
<-done
|
|
}
|
|
|
|
func bootstrapOnce() {
|
|
// 1. Read vSphere conf and get VSphere instances
|
|
vsphereInstances, err := GetVSphereInstances()
|
|
if err != nil {
|
|
framework.Failf("Failed to bootstrap vSphere with error: %v", err)
|
|
}
|
|
// 2. Get all nodes
|
|
nodeList, err := f.ClientSet.CoreV1().Nodes().List(metav1.ListOptions{})
|
|
if err != nil {
|
|
framework.Failf("Failed to get nodes: %v", err)
|
|
}
|
|
TestContext = VSphereContext{NodeMapper: &NodeMapper{}, VSphereInstances: vsphereInstances}
|
|
// 3. Get Node to VSphere mapping
|
|
err = TestContext.NodeMapper.GenerateNodeMap(vsphereInstances, *nodeList)
|
|
if err != nil {
|
|
framework.Failf("Failed to bootstrap vSphere with error: %v", err)
|
|
}
|
|
// 4. Generate Zone to Datastore mapping
|
|
err = TestContext.NodeMapper.GenerateZoneToDatastoreMap()
|
|
if err != nil {
|
|
framework.Failf("Failed to generate zone to datastore mapping with error: %v", err)
|
|
}
|
|
close(waiting)
|
|
}
|