Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
8a922e22
Commit
8a922e22
authored
Nov 23, 2015
by
Jerzy Szczepkowski
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Refactor GCE wrapper library to allow execution from E2E test suite"
parent
6fd98606
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
103 additions
and
239 deletions
+103
-239
gce.go
pkg/cloudprovider/providers/gce/gce.go
+38
-122
persistentvolume_recycler_controller.go
.../persistentvolume/persistentvolume_recycler_controller.go
+0
-4
volumes.go
pkg/kubelet/volumes.go
+0
-5
gce_util.go
pkg/volume/gce_pd/gce_util.go
+2
-2
plugins.go
pkg/volume/plugins.go
+0
-3
testing.go
pkg/volume/testing.go
+0
-5
e2e_test.go
test/e2e/e2e_test.go
+0
-11
pd.go
test/e2e/pd.go
+63
-87
No files found.
pkg/cloudprovider/providers/gce/gce.go
View file @
8a922e22
...
@@ -62,12 +62,13 @@ const (
...
@@ -62,12 +62,13 @@ const (
// GCECloud is an implementation of Interface, TCPLoadBalancer and Instances for Google Compute Engine.
// GCECloud is an implementation of Interface, TCPLoadBalancer and Instances for Google Compute Engine.
type
GCECloud
struct
{
type
GCECloud
struct
{
service
*
compute
.
Service
service
*
compute
.
Service
containerService
*
container
.
Service
containerService
*
container
.
Service
projectID
string
projectID
string
zone
string
zone
string
networkURL
string
instanceID
string
useMetadataServer
bool
externalID
string
networkURL
string
}
}
type
Config
struct
{
type
Config
struct
{
...
@@ -100,7 +101,7 @@ func getProjectAndZone() (string, string, error) {
...
@@ -100,7 +101,7 @@ func getProjectAndZone() (string, string, error) {
return
projectID
,
zone
,
nil
return
projectID
,
zone
,
nil
}
}
func
getInstanceID
ViaMetadata
()
(
string
,
error
)
{
func
getInstanceID
()
(
string
,
error
)
{
result
,
err
:=
metadata
.
Get
(
"instance/hostname"
)
result
,
err
:=
metadata
.
Get
(
"instance/hostname"
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
...
@@ -112,7 +113,7 @@ func getInstanceIDViaMetadata() (string, error) {
...
@@ -112,7 +113,7 @@ func getInstanceIDViaMetadata() (string, error) {
return
parts
[
0
],
nil
return
parts
[
0
],
nil
}
}
func
getCurrentExternalID
ViaMetadata
()
(
string
,
error
)
{
func
getCurrentExternalID
()
(
string
,
error
)
{
externalID
,
err
:=
metadata
.
Get
(
"instance/id"
)
externalID
,
err
:=
metadata
.
Get
(
"instance/id"
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
fmt
.
Errorf
(
"couldn't get external ID: %v"
,
err
)
return
""
,
fmt
.
Errorf
(
"couldn't get external ID: %v"
,
err
)
...
@@ -120,7 +121,7 @@ func getCurrentExternalIDViaMetadata() (string, error) {
...
@@ -120,7 +121,7 @@ func getCurrentExternalIDViaMetadata() (string, error) {
return
externalID
,
nil
return
externalID
,
nil
}
}
func
getNetworkName
ViaMetadata
()
(
string
,
error
)
{
func
getNetworkName
()
(
string
,
error
)
{
result
,
err
:=
metadata
.
Get
(
"instance/network-interfaces/0/network"
)
result
,
err
:=
metadata
.
Get
(
"instance/network-interfaces/0/network"
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
...
@@ -132,32 +133,28 @@ func getNetworkNameViaMetadata() (string, error) {
...
@@ -132,32 +133,28 @@ func getNetworkNameViaMetadata() (string, error) {
return
parts
[
3
],
nil
return
parts
[
3
],
nil
}
}
func
getNetworkNameViaAPICall
(
svc
*
compute
.
Service
,
projectID
string
)
(
string
,
error
)
{
networkList
,
err
:=
svc
.
Networks
.
List
(
projectID
)
.
Do
()
if
err
!=
nil
{
return
""
,
err
}
if
networkList
==
nil
||
len
(
networkList
.
Items
)
<=
0
{
return
""
,
fmt
.
Errorf
(
"GCE Network List call returned no networks for project %q."
,
projectID
)
}
return
networkList
.
Items
[
0
]
.
Name
,
nil
}
// newGCECloud creates a new instance of GCECloud.
// newGCECloud creates a new instance of GCECloud.
func
newGCECloud
(
config
io
.
Reader
)
(
*
GCECloud
,
error
)
{
func
newGCECloud
(
config
io
.
Reader
)
(
*
GCECloud
,
error
)
{
projectID
,
zone
,
err
:=
getProjectAndZone
()
projectID
,
zone
,
err
:=
getProjectAndZone
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
// TODO: if we want to use this on a machine that doesn't have the http://metadata server
networkName
,
err
:=
getNetworkNameViaMetadata
()
// e.g. on a user's machine (not VM) somewhere, we need to have an alternative for
// instance id lookup.
instanceID
,
err
:=
getInstanceID
()
if
err
!=
nil
{
return
nil
,
err
}
externalID
,
err
:=
getCurrentExternalID
()
if
err
!=
nil
{
return
nil
,
err
}
networkName
,
err
:=
getNetworkName
()
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
networkURL
:=
gceNetworkURL
(
projectID
,
networkName
)
networkURL
:=
gceNetworkURL
(
projectID
,
networkName
)
tokenSource
:=
google
.
ComputeTokenSource
(
""
)
tokenSource
:=
google
.
ComputeTokenSource
(
""
)
if
config
!=
nil
{
if
config
!=
nil
{
var
cfg
Config
var
cfg
Config
...
@@ -179,51 +176,23 @@ func newGCECloud(config io.Reader) (*GCECloud, error) {
...
@@ -179,51 +176,23 @@ func newGCECloud(config io.Reader) (*GCECloud, error) {
tokenSource
=
newAltTokenSource
(
cfg
.
Global
.
TokenURL
,
cfg
.
Global
.
TokenBody
)
tokenSource
=
newAltTokenSource
(
cfg
.
Global
.
TokenURL
,
cfg
.
Global
.
TokenBody
)
}
}
}
}
return
CreateGCECloud
(
projectID
,
zone
,
networkURL
,
tokenSource
,
true
/* useMetadataServer */
)
}
// Creates a GCECloud object using the specified parameters.
// If no networkUrl is specified, loads networkName via rest call.
// If no tokenSource is specified, uses oauth2.DefaultTokenSource.
func
CreateGCECloud
(
projectID
,
zone
,
networkURL
string
,
tokenSource
oauth2
.
TokenSource
,
useMetadataServer
bool
)
(
*
GCECloud
,
error
)
{
if
tokenSource
==
nil
{
var
err
error
tokenSource
,
err
=
google
.
DefaultTokenSource
(
oauth2
.
NoContext
,
compute
.
CloudPlatformScope
,
compute
.
ComputeScope
)
if
err
!=
nil
{
return
nil
,
err
}
}
client
:=
oauth2
.
NewClient
(
oauth2
.
NoContext
,
tokenSource
)
client
:=
oauth2
.
NewClient
(
oauth2
.
NoContext
,
tokenSource
)
svc
,
err
:=
compute
.
New
(
client
)
svc
,
err
:=
compute
.
New
(
client
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
containerSvc
,
err
:=
container
.
New
(
client
)
containerSvc
,
err
:=
container
.
New
(
client
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
err
return
nil
,
err
}
}
if
networkURL
==
""
{
networkName
,
err
:=
getNetworkNameViaAPICall
(
svc
,
projectID
)
if
err
!=
nil
{
return
nil
,
err
}
networkURL
=
gceNetworkURL
(
projectID
,
networkName
)
}
return
&
GCECloud
{
return
&
GCECloud
{
service
:
svc
,
service
:
svc
,
containerService
:
containerSvc
,
containerService
:
containerSvc
,
projectID
:
projectID
,
projectID
:
projectID
,
zone
:
zone
,
zone
:
zone
,
networkURL
:
networkURL
,
instanceID
:
instanceID
,
useMetadataServer
:
useMetadataServer
,
externalID
:
externalID
,
networkURL
:
networkURL
,
},
nil
},
nil
}
}
...
@@ -1399,31 +1368,16 @@ func (gce *GCECloud) NodeAddresses(_ string) ([]api.NodeAddress, error) {
...
@@ -1399,31 +1368,16 @@ func (gce *GCECloud) NodeAddresses(_ string) ([]api.NodeAddress, error) {
},
nil
},
nil
}
}
// isCurrentInstance uses metadata server to check if specified instanceID matches current machine's instanceID
func
(
gce
*
GCECloud
)
isCurrentInstance
(
instance
string
)
bool
{
func
(
gce
*
GCECloud
)
isCurrentInstance
(
instanceID
string
)
bool
{
return
gce
.
instanceID
==
canonicalizeInstanceName
(
instance
)
currentInstanceID
,
err
:=
getInstanceIDViaMetadata
()
if
err
!=
nil
{
// Log and swallow error
glog
.
Errorf
(
"Failed to fetch instanceID via Metadata: %v"
,
err
)
return
false
}
return
currentInstanceID
==
canonicalizeInstanceName
(
instanceID
)
}
}
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
// ExternalID returns the cloud provider ID of the specified instance (deprecated).
func
(
gce
*
GCECloud
)
ExternalID
(
instance
string
)
(
string
,
error
)
{
func
(
gce
*
GCECloud
)
ExternalID
(
instance
string
)
(
string
,
error
)
{
if
gce
.
useMetadataServer
{
// if we are asking about the current instance, just go to metadata
// Use metadata, if possible, to fetch ID. See issue #12000
if
gce
.
isCurrentInstance
(
instance
)
{
if
gce
.
isCurrentInstance
(
instance
)
{
return
gce
.
externalID
,
nil
externalInstanceID
,
err
:=
getCurrentExternalIDViaMetadata
()
if
err
==
nil
{
return
externalInstanceID
,
nil
}
}
}
}
// Fallback to GCE API call if metadata server fails to retrieve ID
inst
,
err
:=
gce
.
getInstanceByName
(
instance
)
inst
,
err
:=
gce
.
getInstanceByName
(
instance
)
if
err
!=
nil
{
if
err
!=
nil
{
return
""
,
err
return
""
,
err
...
@@ -1540,29 +1494,7 @@ func (gce *GCECloud) GetZone() (cloudprovider.Zone, error) {
...
@@ -1540,29 +1494,7 @@ func (gce *GCECloud) GetZone() (cloudprovider.Zone, error) {
},
nil
},
nil
}
}
func
(
gce
*
GCECloud
)
CreateDisk
(
name
string
,
sizeGb
int64
)
error
{
func
(
gce
*
GCECloud
)
AttachDisk
(
diskName
string
,
readOnly
bool
)
error
{
diskToCreate
:=
&
compute
.
Disk
{
Name
:
name
,
SizeGb
:
sizeGb
,
}
createOp
,
err
:=
gce
.
service
.
Disks
.
Insert
(
gce
.
projectID
,
gce
.
zone
,
diskToCreate
)
.
Do
()
if
err
!=
nil
{
return
err
}
return
gce
.
waitForZoneOp
(
createOp
)
}
func
(
gce
*
GCECloud
)
DeleteDisk
(
diskToDelete
string
)
error
{
deleteOp
,
err
:=
gce
.
service
.
Disks
.
Delete
(
gce
.
projectID
,
gce
.
zone
,
diskToDelete
)
.
Do
()
if
err
!=
nil
{
return
err
}
return
gce
.
waitForZoneOp
(
deleteOp
)
}
func
(
gce
*
GCECloud
)
AttachDisk
(
diskName
,
instanceID
string
,
readOnly
bool
)
error
{
disk
,
err
:=
gce
.
getDisk
(
diskName
)
disk
,
err
:=
gce
.
getDisk
(
diskName
)
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
...
@@ -1573,7 +1505,7 @@ func (gce *GCECloud) AttachDisk(diskName, instanceID string, readOnly bool) erro
...
@@ -1573,7 +1505,7 @@ func (gce *GCECloud) AttachDisk(diskName, instanceID string, readOnly bool) erro
}
}
attachedDisk
:=
gce
.
convertDiskToAttachedDisk
(
disk
,
readWrite
)
attachedDisk
:=
gce
.
convertDiskToAttachedDisk
(
disk
,
readWrite
)
attachOp
,
err
:=
gce
.
service
.
Instances
.
AttachDisk
(
gce
.
projectID
,
gce
.
zone
,
instanceID
,
attachedDisk
)
.
Do
()
attachOp
,
err
:=
gce
.
service
.
Instances
.
AttachDisk
(
gce
.
projectID
,
gce
.
zone
,
gce
.
instanceID
,
attachedDisk
)
.
Do
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -1581,8 +1513,8 @@ func (gce *GCECloud) AttachDisk(diskName, instanceID string, readOnly bool) erro
...
@@ -1581,8 +1513,8 @@ func (gce *GCECloud) AttachDisk(diskName, instanceID string, readOnly bool) erro
return
gce
.
waitForZoneOp
(
attachOp
)
return
gce
.
waitForZoneOp
(
attachOp
)
}
}
func
(
gce
*
GCECloud
)
DetachDisk
(
devicePath
,
instanceID
string
)
error
{
func
(
gce
*
GCECloud
)
DetachDisk
(
devicePath
string
)
error
{
detachOp
,
err
:=
gce
.
service
.
Instances
.
DetachDisk
(
gce
.
projectID
,
gce
.
zone
,
instanceID
,
devicePath
)
.
Do
()
detachOp
,
err
:=
gce
.
service
.
Instances
.
DetachDisk
(
gce
.
projectID
,
gce
.
zone
,
gce
.
instanceID
,
devicePath
)
.
Do
()
if
err
!=
nil
{
if
err
!=
nil
{
return
err
return
err
}
}
...
@@ -1590,22 +1522,6 @@ func (gce *GCECloud) DetachDisk(devicePath, instanceID string) error {
...
@@ -1590,22 +1522,6 @@ func (gce *GCECloud) DetachDisk(devicePath, instanceID string) error {
return
gce
.
waitForZoneOp
(
detachOp
)
return
gce
.
waitForZoneOp
(
detachOp
)
}
}
func
(
gce
*
GCECloud
)
DiskIsAttached
(
diskName
,
instanceID
string
)
(
bool
,
error
)
{
instance
,
err
:=
gce
.
service
.
Instances
.
Get
(
gce
.
projectID
,
gce
.
zone
,
instanceID
)
.
Do
()
if
err
!=
nil
{
return
false
,
err
}
for
_
,
disk
:=
range
instance
.
Disks
{
if
disk
.
DeviceName
==
diskName
{
// Disk is still attached to node
return
true
,
nil
}
}
return
false
,
nil
}
func
(
gce
*
GCECloud
)
getDisk
(
diskName
string
)
(
*
compute
.
Disk
,
error
)
{
func
(
gce
*
GCECloud
)
getDisk
(
diskName
string
)
(
*
compute
.
Disk
,
error
)
{
return
gce
.
service
.
Disks
.
Get
(
gce
.
projectID
,
gce
.
zone
,
diskName
)
.
Do
()
return
gce
.
service
.
Disks
.
Get
(
gce
.
projectID
,
gce
.
zone
,
diskName
)
.
Do
()
}
}
...
...
pkg/controller/persistentvolume/persistentvolume_recycler_controller.go
View file @
8a922e22
...
@@ -294,7 +294,3 @@ func (f *PersistentVolumeRecycler) GetMounter() mount.Interface {
...
@@ -294,7 +294,3 @@ func (f *PersistentVolumeRecycler) GetMounter() mount.Interface {
func
(
f
*
PersistentVolumeRecycler
)
GetWriter
()
ioutil
.
Writer
{
func
(
f
*
PersistentVolumeRecycler
)
GetWriter
()
ioutil
.
Writer
{
return
nil
return
nil
}
}
func
(
f
*
PersistentVolumeRecycler
)
GetHostName
()
string
{
return
""
}
pkg/kubelet/volumes.go
View file @
8a922e22
...
@@ -93,11 +93,6 @@ func (vh *volumeHost) GetWriter() io.Writer {
...
@@ -93,11 +93,6 @@ func (vh *volumeHost) GetWriter() io.Writer {
return
vh
.
kubelet
.
writer
return
vh
.
kubelet
.
writer
}
}
// Returns the hostname of the host kubelet is running on
func
(
vh
*
volumeHost
)
GetHostName
()
string
{
return
vh
.
kubelet
.
hostname
}
func
(
kl
*
Kubelet
)
newVolumeBuilderFromPlugins
(
spec
*
volume
.
Spec
,
pod
*
api
.
Pod
,
opts
volume
.
VolumeOptions
)
(
volume
.
Builder
,
error
)
{
func
(
kl
*
Kubelet
)
newVolumeBuilderFromPlugins
(
spec
*
volume
.
Spec
,
pod
*
api
.
Pod
,
opts
volume
.
VolumeOptions
)
(
volume
.
Builder
,
error
)
{
plugin
,
err
:=
kl
.
volumePluginMgr
.
FindPluginBySpec
(
spec
)
plugin
,
err
:=
kl
.
volumePluginMgr
.
FindPluginBySpec
(
spec
)
if
err
!=
nil
{
if
err
!=
nil
{
...
...
pkg/volume/gce_pd/gce_util.go
View file @
8a922e22
...
@@ -132,7 +132,7 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) (
...
@@ -132,7 +132,7 @@ func attachDiskAndVerify(b *gcePersistentDiskBuilder, sdBeforeSet sets.String) (
glog
.
Warningf
(
"Retrying attach for GCE PD %q (retry count=%v)."
,
b
.
pdName
,
numRetries
)
glog
.
Warningf
(
"Retrying attach for GCE PD %q (retry count=%v)."
,
b
.
pdName
,
numRetries
)
}
}
if
err
:=
gceCloud
.
AttachDisk
(
b
.
pdName
,
b
.
plugin
.
host
.
GetHostName
(),
b
.
readOnly
);
err
!=
nil
{
if
err
:=
gceCloud
.
AttachDisk
(
b
.
pdName
,
b
.
readOnly
);
err
!=
nil
{
glog
.
Errorf
(
"Error attaching PD %q: %v"
,
b
.
pdName
,
err
)
glog
.
Errorf
(
"Error attaching PD %q: %v"
,
b
.
pdName
,
err
)
time
.
Sleep
(
errorSleepDuration
)
time
.
Sleep
(
errorSleepDuration
)
continue
continue
...
@@ -206,7 +206,7 @@ func detachDiskAndVerify(c *gcePersistentDiskCleaner) {
...
@@ -206,7 +206,7 @@ func detachDiskAndVerify(c *gcePersistentDiskCleaner) {
glog
.
Warningf
(
"Retrying detach for GCE PD %q (retry count=%v)."
,
c
.
pdName
,
numRetries
)
glog
.
Warningf
(
"Retrying detach for GCE PD %q (retry count=%v)."
,
c
.
pdName
,
numRetries
)
}
}
if
err
:=
gceCloud
.
DetachDisk
(
c
.
pdName
,
c
.
plugin
.
host
.
GetHostName
()
);
err
!=
nil
{
if
err
:=
gceCloud
.
DetachDisk
(
c
.
pdName
);
err
!=
nil
{
glog
.
Errorf
(
"Error detaching PD %q: %v"
,
c
.
pdName
,
err
)
glog
.
Errorf
(
"Error detaching PD %q: %v"
,
c
.
pdName
,
err
)
time
.
Sleep
(
errorSleepDuration
)
time
.
Sleep
(
errorSleepDuration
)
continue
continue
...
...
pkg/volume/plugins.go
View file @
8a922e22
...
@@ -156,9 +156,6 @@ type VolumeHost interface {
...
@@ -156,9 +156,6 @@ type VolumeHost interface {
// Get writer interface for writing data to disk.
// Get writer interface for writing data to disk.
GetWriter
()
io
.
Writer
GetWriter
()
io
.
Writer
// Returns the hostname of the host kubelet is running on
GetHostName
()
string
}
}
// VolumePluginMgr tracks registered plugins.
// VolumePluginMgr tracks registered plugins.
...
...
pkg/volume/testing.go
View file @
8a922e22
...
@@ -92,11 +92,6 @@ func (f *fakeVolumeHost) NewWrapperCleaner(spec *Spec, podUID types.UID) (Cleane
...
@@ -92,11 +92,6 @@ func (f *fakeVolumeHost) NewWrapperCleaner(spec *Spec, podUID types.UID) (Cleane
return
plug
.
NewCleaner
(
spec
.
Name
(),
podUID
)
return
plug
.
NewCleaner
(
spec
.
Name
(),
podUID
)
}
}
// Returns the hostname of the host kubelet is running on
func
(
f
*
fakeVolumeHost
)
GetHostName
()
string
{
return
"fakeHostName"
}
func
ProbeVolumePlugins
(
config
VolumeConfig
)
[]
VolumePlugin
{
func
ProbeVolumePlugins
(
config
VolumeConfig
)
[]
VolumePlugin
{
if
_
,
ok
:=
config
.
OtherAttributes
[
"fake-property"
];
ok
{
if
_
,
ok
:=
config
.
OtherAttributes
[
"fake-property"
];
ok
{
return
[]
VolumePlugin
{
return
[]
VolumePlugin
{
...
...
test/e2e/e2e_test.go
View file @
8a922e22
...
@@ -33,7 +33,6 @@ import (
...
@@ -33,7 +33,6 @@ import (
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/client/unversioned/clientcmd"
"k8s.io/kubernetes/pkg/cloudprovider"
"k8s.io/kubernetes/pkg/cloudprovider"
gcecloud
"k8s.io/kubernetes/pkg/cloudprovider/providers/gce"
"k8s.io/kubernetes/pkg/util"
"k8s.io/kubernetes/pkg/util"
)
)
...
@@ -102,16 +101,6 @@ func TestE2E(t *testing.T) {
...
@@ -102,16 +101,6 @@ func TestE2E(t *testing.T) {
glog
.
Info
(
"The --provider flag is not set. Treating as a conformance test. Some tests may not be run."
)
glog
.
Info
(
"The --provider flag is not set. Treating as a conformance test. Some tests may not be run."
)
}
}
if
testContext
.
Provider
==
"gce"
||
testContext
.
Provider
==
"gke"
{
var
err
error
Logf
(
"Fetching cloud provider for %q
\r\n
"
,
testContext
.
Provider
)
cloudConfig
.
Provider
,
err
=
gcecloud
.
CreateGCECloud
(
testContext
.
CloudConfig
.
ProjectID
,
testContext
.
CloudConfig
.
Zone
,
""
/* networkUrl */
,
nil
/* tokenSource */
,
false
/* useMetadataServer */
)
if
err
!=
nil
{
glog
.
Fatal
(
"Error building GCE provider: "
,
err
)
}
}
if
testContext
.
Provider
==
"aws"
{
if
testContext
.
Provider
==
"aws"
{
awsConfig
:=
"[Global]
\n
"
awsConfig
:=
"[Global]
\n
"
if
cloudConfig
.
Zone
==
""
{
if
cloudConfig
.
Zone
==
""
{
...
...
test/e2e/pd.go
View file @
8a922e22
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment