* Add ILBs, broadly following the AWS model. The following new capabilities are added for clusters in GCP: * Cluster's spec.api.loadBalancer can be set to 'type: internal' on GCP. * Therefore, GCP can now create: * regional backend services * regional (non-legacy) healthchecks * firewall rules with "internal" load-balancing scheme * firewall rules with dot-notation-specified IP addresses * Cluster's spec.api.loadBalancer's 'subnets' field functions as in the AWS model. A few incidental changes are included, either because this change touched the relevant code or because my use case happened to trigger the issues that are fixed here. * Cluster's spec.networkID field can be prefixed by project to use GCP's common cross-project networking model. * The presumption is that all specified subnets belong to this network and therefore this project. * Add missing operation wait on forwarding rule creation. * Some Terraform output improvements: * Permit no-ACL files in GCS buckets in Terraform output. * Enable marginally better cross-resource reference in Terraform outputs * Add project to network + subnetwork literals in Terraform output. * Add terraform output to backend services and health checks. Testing: * Add mocks for backend services and health checks. * Add minimal integration test - copied from gce_private and ilb added. * Add update cluster goldens. Co-authored-by: Travis Reid <travis_reid@apple.com> |
||
---|---|---|
.. | ||
aws | ||
gce | ||
openstack | ||
README.md |
README.md
cloudmock is a mock implementation of the CloudProvider APIs.
The goal is to let us test code that interacts with the CloudProvider APIs, without creating actual resources.
While no resources are created, we maintain state so that (for example) after you call CreateVpc
, a subsequent
call to DescribeVpcs
will return that VPC. The end-goal is that we simulate the CloudProvider APIs accurately,
so that we can quickly run test-cases that might otherwise require a lot of time or money to run with real
resources.
In future, we can also do fault injection etc.
Note: The APIs are very large, and most of them are not implemented. Functions that are implemented may not be implemented correctly, particularly around edge-cases (such as error handling).
Typical AWS use: c := &mockec2.MockEC2{}
. MockEC2
implements the EC2 API interface ec2iface.EC2API
,
so can be used where otherwise you would use a real EC2 client.