Commit Graph

49 Commits

Author SHA1 Message Date
Walter Fender
f3f46d5f5a Moving the cloudprovider interface to staging.
Individual implementations are not yet being moved.
Fixed all dependencies which call the interface.
Fixed golint exceptions to reflect the move.
Added project info as per @dims and
https://github.com/kubernetes/kubernetes-template-project.
Added dims to the security contacts.
Fixed minor issues.
Added missing template files.
Copied ControllerClientBuilder interface to cp.
This allows us to break the only dependency on K8s/K8s.
Added TODO to ControllerClientBuilder.
Fixed GoDeps.
Factored in feedback from JustinSB.
2018-10-04 14:41:20 -07:00
hui luo
ce15129b9e add test to verify vsphere cloud provider report node hostname
as in pull #67922 has modify vsphere cloud provider to report
node hostname, this patch is to add the test for it.

also fix an issue at InstanceID(), it suppose to return
cloudprovider.InstanceNotFound when vm not found, after the fix,
test TestInstance() can pass
2018-08-29 11:46:24 -07:00
Doug MacEachern
ec732d8aab vsphere: support zone tags at any level in the hierarchy
Rather than just looking for zone tags at the VM's Host level, traverse up the hierarchy.
This allows zone tags to be attached at host level, along with cluster, datacenter, root folder
and any inventory folders in between.

Issue #64021
2018-08-23 14:57:21 -07:00
Doug MacEachern
11af6932e5 vsphere: add tests for Cloud Provider Zones implementation
- Add tests for GetZones()

- Fix bug where a host tag other than region or zone caused an error

- Fix bug where GetZones() errored if zone tag was set, but region was not

Follow up to PR #66795 / towards #64021
2018-08-22 18:47:30 -07:00
Doug MacEachern
5816a8bc18 godeps: update vmware/govmomi
Update required to continue work on #64021

- The govmomi tag API changed

- Pulling in the new vapi/simulator package for testing the VCP Zones impl
2018-08-22 11:11:11 -07:00
jiatongw
af5084ea75 Add TestZone() 2018-08-06 15:19:10 -07:00
Jiatong Wang
4d578d1389 Add error check and ignore unused variable (SA4006) 2018-07-17 10:41:06 -07:00
Maria Ntalla
7ade8261f6 Pass through CA cert file to the connection when multiple vcenters are configured 2018-06-08 12:00:11 +01:00
Maria Ntalla
b83028325c Introduce thumbprints per vcenter 2018-06-08 12:00:11 +01:00
Maria Ntalla
0cbe25436d Resolve paths of test fixtures at runtime
This will help with bazel tests, which seem to use a different working
directory from local test runs.
2018-06-08 12:00:11 +01:00
Maria Ntalla
b85d760011 Improve godocs and testcase naming 2018-06-08 12:00:11 +01:00
Maria Ntalla
9fc231e5c0 Setup TLS with CA Cert
- Extend config to take a path to a CA Certificate
- Use the CA Cert when establishing a connection with the SOAP client

Testing
We provide certs and keys for tests as fixtures, `vclib/fixtures`.
Those were created (and can be regenerated) using `vclib/fixtures/createCerts.sh`.

At the moment it's possible to configure a CA path and at the same time allow insecure
communication between vsphere cloud provider and vcenter. This may
change in the future; we might opt for overwriting the insecure
communication if a CA is configured / log and transparently pass the
arguments to the vcenter command / other. To be discussed.

At the moment the CA is a global level configuration. In other
words, all vcenter servers need to use certificates signed by the same
CA. There might be use cases for different CA per vcenter server; to be
discussed.
2018-06-08 12:00:11 +01:00
Abrar Shivani
99076ce32a Add kubernetes license to credential manager 2018-05-17 12:10:30 -07:00
Abrar Shivani
f58cc6c075 Add unit test for secrets flag in config file 2018-05-17 12:10:29 -07:00
Doug MacEachern
83768d286c vSphere Cloud Provider: add SAML token authentication support
For now the config structs and validation are left as-is and
the LoginByToken method is used if the username value is PEM encoded.
In this case of username field configured with the public key, the password
field is expected to be configured with the private key.

In a follow-up PR we can look at collapsing the auth related fields into
a common struct to avoid duplication of field merging and validation.
And then add separate fields for the public and private keys.

Fixes #63209
2018-05-15 10:06:56 -07:00
Doug MacEachern
e22f9ca4ae vsphere: fallback to vcsim for testing authentication
The TestVSphereLogin method still defaults to testing against a real vCenter,
but if the required environment variables are not set, it can test against vcsim.

More tests can be converted to use configFromEnvOrSim(), but can be in follow up PRs.
2018-05-07 08:50:31 -07:00
Doug MacEachern
64601373f1 vsphere: use vim25.Client directly to support token authentication
This refactor is in support of SAML token authentication: #63209
Avoid use of govmomi.Client as it only supports username+password authentication via SessionManager.Login().
Using vim25.Client directly will allow VCP to add other authentication methods,
such as SessionManager.LoginByToken().
2018-05-07 08:50:31 -07:00
Anup Navare
1335e6e2d4 Cleanup the use of ExternalID as it is deprecated
The patch removes ExternalID usage from node_controller
and node_lifecycle_oontroller. The code instead uses InstanceID
which returns the cloud provider ID as well.
2018-04-02 10:15:32 -07:00
hzxuzhonghu
70e45eccf2 Replace "golang.org/x/net/context" with "context" 2018-03-22 20:57:14 +08:00
Walter Fender
e18e8ec3c0 Add context to all relevant cloud APIs
This adds context to all the relevant cloud provider interface signatures.
Callers of those APIs are currently satisfied using context.TODO().
There will be follow on PRs to push the context through the stack.
For an idea of the full scope of this change please look at PR #58532.
2018-02-06 12:49:17 -08:00
rohitjogvmw
79e1da68d2 Updating vSphere Cloud Provider (VCP) to support k8s cluster spead across multiple ESXi clusters, datacenters or even vSphere vCenters
- vsphere.conf (cloud-config) is now needed only on master node
   - VCP uses OS hostname and not vSphere inventory name
   - VCP is now resilient to VM inventory name change and VM migration
2017-11-17 14:49:32 -08:00
Balu Dontu
f4e39933f6 vSphere Cloud Provider code refactoring 2017-08-02 08:06:09 -07:00
divyenpatel
411a1a89d7 reverting deprecatin of vcenter port 2017-07-27 06:47:45 -07:00
Balu Dontu
eb3cf509e5 SPBM policy ID support in vsphere cloud provider 2017-05-22 19:45:17 -07:00
xiangpengzhao
be3fd5bb90
Add test case for getVMName 2017-04-19 17:16:39 +08:00
Miao Luo
6d1c4a3c49 Remove login info on workers for vsphere cloud provider.
Remove the dependency of login information on worker nodes for vsphere cloud provider:
1. VM Name is required to be set in the cloud provider configuration file.
2. Remove the requirement of login for Instance functions when querying local node information.
2017-03-28 23:20:38 -07:00
Miao Luo
6e96a1b8b0 Remove VCenterPort from vsphere cloud provider.
The url which is used for communicating with govmomi should not include
port number. A port number other than 443 will result in 404 error.
VCenterPort stays in VSphereConfig structure for backward compatibility.
2017-02-23 16:04:22 -08:00
Robert Roland
53a009302a Fixes #40819
Start looking up the virtual machine by it's UUID in vSphere again. Looking up by IP address is problematic and can either not return a VM entirely, or could return the wrong VM.

Retrieves the VM's UUID in one of two methods - either by a `vm-uuid` entry in the cloud config file on the VM, or via sysfs. The sysfs route requires root access, but restores the previous functionality.

Multiple VMs in a vCenter cluster can share an IP address - for example, if you have multiple VM networks, but they're all isolated and use the same address range. Additionally, flannel network address ranges can overlap.

vSphere seems to have a limitation of reporting no more than 16 interfaces from a virtual machine, so it's possible that the IP address list on a VM is completely untrustworthy anyhow - it can either be empty (because the 16 interfaces it found were veth interfaces with no IP address), or it can report the flannel IP.
2017-02-09 22:55:37 -08:00
deads2k
8686d67c80 move pkg/util/rand 2017-01-16 16:04:03 -05:00
deads2k
6a4d5cd7cc start the apimachinery repo 2017-01-11 09:09:48 -05:00
Angus Lees
8a7e103191 providers: Remove long-deprecated Instances.List()
This method has been unused by k8s for some time, and yet is the last
piece of the cloud provider API that encourages provider names to be
human-friendly strings (this method applies a regex to instance names).

Actually removing this deprecated method is part of a long effort to
migrate from instance names to instance IDs in at least the OpenStack
provider plugin.
2016-12-10 22:36:12 +11:00
Ritesh H Shukla
5e376fe5f9 Fix panic in vSphere cloud provider. Fixes #36295 2016-12-09 07:33:10 +00:00
yupeng
fcca86d875 context.Context should be the first parameter of a function in vsphere
Signed-off-by: yupeng <yu.peng36@zte.com.cn>
2016-11-18 10:09:49 +08:00
Davide Agnello
4805e6e6f6 vSphere cloud provider: re-use session for vCenter logins
Resolves #34491
2016-10-19 16:54:30 -07:00
Justin Santa Barbara
54195d590f Use strongly-typed types.NodeName for a node name
We had another bug where we confused the hostname with the NodeName.

To avoid this happening again, and to make the code more
self-documenting, we use types.NodeName (a typedef alias for string)
whenever we are referring to the Node.Name.

A tedious but mechanical commit therefore, to change all uses of the
node name to use types.NodeName

Also clean up some of the (many) places where the NodeName is referred
to as a hostname (not true on AWS), or an instanceID (not true on GCE),
etc.
2016-09-27 10:47:31 -04:00
Davide Agnello
fda70d220b ExternalID/InstanceID not returning appropriate error for missing VM
Addresses #33215.
When vCenter returns error vm not found, this is now being translated to
the appropriate error 'cloudprovider.InstanceNotFound' which indicates
to Kubernetes node controller that the VM is in fact not found.
2016-09-23 08:54:35 -07:00
Abrar Shivani
57180093af Support for storage class for vSphere volume plugin. Custom disk format for dynamic provisioning. 2016-09-16 17:15:38 -07:00
Vipul Sabhaya
808f18439d Make a vSphere cluster the failure_zone
* Currently the vSphere cloud provider treats Datacenter as the failure
  Zone.  This doesn't necessarily work since in the current implemention
  Kubernetes nodes cannot span Datacenters.
* This change introduces Clusters as the failure zone, while treating
  Datacenters as Regions
* Also updated tests for Zones
2016-08-25 15:37:24 -07:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
dkalleg
49436012ba vSphere provider - Adding config for working dir
This allows the user the set "working-dir" in their vsphere.cfg file.
The value should be a path in the vSphere datastore in which the
provider will look for vms.
2016-06-27 11:45:39 -07:00
Abitha Palaniappan
4a5ade213c Adding scsi controller type filter while attaching disks
Hot attach of disk to a scsi controller will work only if the
controller type is lsilogic-sas or paravirtual.This patch filters
the existing controller for these types, if it doesn't find one it
creates a new scsi controller.
2016-06-20 09:54:55 -07:00
Abitha Palaniappan
6a8cec1c5c Fix vSphere Volume plugin bugs
- replaces probeVolume with scsiHostRescan to scan hot attached disks
 - fixes substring match of UUID returned from AttachDisk
 - changes DetachDisk to take volumePath argument instead of diskID
 - fixes delayed failure at mount rather than attach disk
 - removes cloning of virtual disk in AttachDisk
2016-06-13 17:20:55 -07:00
Abitha Palaniappan
95c009dbdb Adding vSphere Volume support for vSphere Cloud Provider 2016-05-21 11:00:14 -07:00
dagnello
f7b3cf39d6 Adding OWNERS file for vSphere cloud-provider package
also updating license file for Govmomi library
2016-05-09 08:55:42 -07:00
dagnello
c999cbaf8d VSphere Instance NodeAddresses ExternalID and InstanceID
This patch includes implementation for the following Instance object
interfaces:
* NodeAddresses
* ExternalID
* InstanceID

Also minor refactoring in overall Instance implementation.
2016-05-09 08:31:18 -07:00
Abitha Palaniappan
0d7d7fba60 Adding vSphere cloud provider support for Instance List 2016-05-09 08:31:18 -07:00
dagnello
88f6a6d66b Adding Zones Support for vSphere Cloud Provider 2016-05-09 08:31:18 -07:00
dagnello
051aa190e9 Adding vSphere Instances Scaffolding 2016-05-09 08:31:18 -07:00
Abitha Palaniappan
c2045e8ee0 Add vSphere cloud provider skeleton 2016-05-09 08:31:18 -07:00