Skip to content

Commit

Permalink
Added support for HTTP(S) proxies with BackendServices. Includes supp…
Browse files Browse the repository at this point in the history
…ort GCEBackendService, GCESslCertificate, GCEBackend, and tests.

High level of what was added:

be = gce.ex_create_backend(instance_group=ig)
print gce.ex_create_backendservice(
            bes_name, [hc], backends=[be], port_name='my-ssl', protocol='HTTP',
	                description='bes desc', timeout_sec=60)

... create URLMap that links to backend service ..

print gce.ex_create_sslcertificate(ssl_name, certificate=certificate, private_key=private_key, description=ssl_desc)
print gce.ex_list_sslcertificates()

print gce.ex_create_targethttpsproxy(targethttpproxy_name, urlmap, ssl_list)
print gce.ex_list_targethttpsproxies()

Including modifications to backendservice as needed.  Now, with a forwarding rule, load balancer can be created that resolves to a Managed Instance Group via a Backend Service creation.

Unmanaged Instance Group support has also been added.  InstanceTemplate support (of note is the ability to create InstanceTemplates) has been added as well.

gce_demo now supports creating a backend service w/Global Forwarding by using the --backend-service flag.
  • Loading branch information
supertom committed Oct 4, 2016
1 parent 4865138 commit 3a952fa
Show file tree
Hide file tree
Showing 34 changed files with 2,682 additions and 226 deletions.
237 changes: 202 additions & 35 deletions demos/gce_demo.py

Large diffs are not rendered by default.

1,947 changes: 1,789 additions & 158 deletions libcloud/compute/drivers/gce.py

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
"name": "myinstancegroup",
"description": "my description for myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroups/myinstancegroup",
"baseInstanceName": "base-foo",
"fingerprint": "Q21hYveq9do=",
"currentActions": {
Expand All @@ -98,7 +98,7 @@
"refreshing": 0
},
"targetSize": 4,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroupManagers/myinstancegroup"
}
]
},
Expand Down Expand Up @@ -232,7 +232,7 @@
"zone": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b",
"name": "myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"baseInstanceName": "myinstancegroup",
"fingerprint": "5bKcxzAnGOg=",
"currentActions": {
Expand All @@ -245,7 +245,7 @@
"refreshing": 0
},
"targetSize": 2,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroupManagers/myinstancegroup"
}
]
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
"backends": [
{
"description": "",
"group": "https://www.googleapis.com/resourceviews/v1beta1/projects/project_name/zones/us-central1-b/resourceViews/us-resources",
"group": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"balancingMode": "RATE",
"maxRate": 100,
"capacityScaler": 1.0
},
{
"description": "",
"group": "https://www.googleapis.com/resourceviews/v1beta1/projects/project_name/zones/europe-west1-b/resourceViews/eu-resources",
"group": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"balancingMode": "RATE",
"maxRate": 150,
"capacityScaler": 1.0
Expand Down
10 changes: 5 additions & 5 deletions libcloud/test/compute/fixtures/gce/global_instanceTemplates.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"id": "projects/supertom-graphite/global/instanceTemplates",
"id": "projects/project_name/global/instanceTemplates",
"items": [
{
"creationTimestamp": "2016-07-18T09:53:22.323-07:00",
Expand All @@ -17,7 +17,7 @@
"initializeParams": {
"diskSizeGb": "10",
"diskType": "pd-standard",
"sourceImage": "projects/supertom-graphite/global/images/my-new-image1"
"sourceImage": "projects/project_name/global/images/my-new-image1"
},
"kind": "compute#attachedDisk",
"mode": "READ_WRITE",
Expand All @@ -38,7 +38,7 @@
"type": "ONE_TO_ONE_NAT"
}
],
"network": "https://content.googleapis.com/compute/v1/projects/supertom-graphite/global/networks/default"
"network": "https://content.googleapis.com/compute/v1/projects/project_name/global/networks/default"
}
],
"scheduling": {
Expand All @@ -59,9 +59,9 @@
}
]
},
"selfLink": "https://content.googleapis.com/compute/v1/projects/supertom-graphite/global/instanceTemplates/my-instance-template1"
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1"
}
],
"kind": "compute#instanceTemplateList",
"selfLink": "https://www.googleapis.com/compute/v1/projects/supertom-graphite/global/instanceTemplates"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"status": "PENDING",
"kind": "compute#operation",
"name": "my_instance_template1",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my_instance_template1",
"operationType": "compute.instanceTemplates.insert",
"progress": 50,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/operations/operation-global_instanceTemplates_my_instance_template1_insert",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
16 changes: 16 additions & 0 deletions libcloud/test/compute/fixtures/gce/global_sslcertificates.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"kind": "compute#sslCertificateList",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/sslCertificates",
"id": "projects/project_name/global/sslCertificates",
"items": [
{
"kind": "compute#sslCertificate",
"id": "2064539516762881220",
"creationTimestamp": "2016-08-30T10:28:11.926-07:00",
"name": "example",
"description": "my example ssl cert.",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/sslCertificates/example-cert",
"certificate": "-----BEGIN CERTIFICATE-----\nfoobar==\n-----END CERTIFICATE-----\n"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"kind": "compute#sslCertificate",
"id": "2064539516762881220",
"creationTimestamp": "2016-08-30T10:28:11.926-07:00",
"name": "example",
"description": "my example ssl cert.",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/sslCertificates/example",
"certificate": "-----BEGIN CERTIFICATE-----\nfoobar==\n-----END CERTIFICATE-----\n"

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"kind": "compute#operation",
"id": "5564862567931215044",
"name": "operation-1472578091714-53b4d4e0f85d1-cf587a68-9d7a9200",
"operationType": "insert",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/sslCertificates/example",
"targetId": "2064539516762881220",
"status": "PENDING",
"user": "1294195755358-compute@developer.gserviceaccount.com",
"progress": 0,
"insertTime": "2016-08-30T10:28:11.948-07:00",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/operations/operation_global_sslcertificates_post"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "my_instance_template1",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my_instance_template1",
"operationType": "compute.instanceTemplates.insert",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/operations/operation-global_instanceTemplates_my_instance_template1_insert",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"kind": "compute#operation",
"id": "5564862567931215044",
"name": "operation-1472578091714-53b4d4e0f85d1-cf587a68-9d7a9200",
"operationType": "insert",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/sslCertificates/example",
"targetId": "2064539516762881220",
"status": "DONE",
"user": "1294195755358-compute@developer.gserviceaccount.com",
"progress": 100,
"insertTime": "2016-08-30T10:28:11.948-07:00",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/global/operations/operation_global_sslcertificates_post"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "myname",
"zone": "us-central1-a",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones_us_central1_a/instanceGroups/myname",
"operationType": "compute.instanceGroups.insert",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us_central1_a_instanceGroups_myname_insert",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "myname",
"zone": "us-central1-a",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myname",
"operationType": "compute.instanceGroups.addInstances",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us_central1_a_instanceGroups_myname_addInstances",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "myname",
"zone": "us-central1-a",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myname",
"operationType": "compute.instanceGroups.delete",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us_central1_a_instanceGroups_myname_delete",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "myname",
"zone": "us-central1-a",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myname",
"operationType": "compute.instanceGroups.removeInstances",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us_central1_a_instanceGroups_myname_removeInstances",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"status": "DONE",
"kind": "compute#operation",
"name": "myname",
"zone": "us-central1-a",
"insertTime": "2016-09-02T09:31:52.285-07:00",
"targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myname",
"operationType": "compute.instanceGroups.setNamedPorts",
"progress": 100,
"id": 123456,
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us_central1_a_instanceGroups_myname_setNamedPorts",
"user": "1264195755357-compute@developer.gserviceaccount.com"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"kind": "compute#subnetwork",
"id": "4297043163355844284",
"creationTimestamp": "2016-10-01T05:34:27.209-07:00",
"gatewayAddress": "10.128.0.1",
"name": "cf-972cf02e6ad49113",
"network": "https://www.googleapis.com/compute/v1/projects/project_name/global/networks/cf",
"ipCidrRange": "10.128.0.0/20",
"region": "https://www.googleapis.com/compute/v1/projects/project_name/regions/us-east1",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/regions/us-central1/subnetworks/cf-972cf02e6ad49113"
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"zone": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a",
"name": "myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"baseInstanceName": "myinstancegroup",
"fingerprint": "5bKcxzAnGOg=",
"currentActions": {
Expand All @@ -24,7 +24,7 @@
"refreshing": 0
},
"targetSize": 2,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroupManagers/myinstancegroup"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"name": "myinstancegroup",
"description": "my description for myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"baseInstanceName": "base-foo",
"fingerprint": "Q21hYveq9do=",
"currentActions": {
Expand All @@ -20,5 +20,5 @@
"refreshing": 0
},
"targetSize": 4,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroupManagers/myinstancegroup"
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@
"id": "1968709502073089769",
"creationTimestamp": "2016-08-11T16:53:42.413-07:00",
"zone": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a",
"name": "managed-instance-group-1",
"name": "myinstancegroup",
"description": "This instance group is controlled by Instance Group Manager 'myinstancegroup'. To modify instances in this group, use the Instance Group Manager API: https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers",
"network": "https://content.googleapis.com/compute/v1/projects/project_name/global/networks/default",
"fingerprint": "42WmSpB8rSM=",
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup",
"size": 4,
"subnetwork": "https://content.googleapis.com/compute/v1/projects/project_name/regions/us-central1/subnetworks/cf-972cf02e6ad49112"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{

"kind": "compute#instanceGroup",
"id": "1968709502073089768",
"creationTimestamp": "2016-08-26T16:53:42.413-07:00",
"zone": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a",
"name": "myinstancegroup2",
"description": "myinstancegroup2",
"network": "https://content.googleapis.com/compute/v1/projects/project_name/global/networks/default",
"fingerprint": "42WmSpB8rSN=",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/instanceGroups/myinstancegroup2",
"size": 4,
"subnetwork": "https://content.googleapis.com/compute/v1/projects/project_name/regions/us-central1/subnetworks/cf-972cf02e6ad49112"
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"name": "myinstancegroup",
"description": "my description for myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroups/myinstancegroup",
"baseInstanceName": "base-foo",
"fingerprint": "Q21hYveq9do=",
"currentActions": {
Expand All @@ -20,5 +20,5 @@
"refreshing": 0
},
"targetSize": 4,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroupManagers/myinstancegroup"
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@
"fingerprint": "42WmSpB8rSM=",
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-central1-b/instanceGroups/myinstancegroup",
"size": 4,
"subnetwork": "https://content.googleapis.com/compute/v1/projects/project_name/regions/us-central1/subnetworks/cf-972cf02e6ad49112"
"subnetwork": "https://www.googleapis.com/compute/v1/projects/project_name/regions/us-central1/subnetworks/cf-972cf02e6ad49112"
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"zone": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b",
"name": "myinstancegroup",
"instanceTemplate": "https://content.googleapis.com/compute/v1/projects/project_name/global/instanceTemplates/my-instance-template1",
"instanceGroup": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"instanceGroup": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"baseInstanceName": "myinstancegroup",
"fingerprint": "5bKcxzAnGOg=",
"currentActions": {
Expand All @@ -24,7 +24,7 @@
"refreshing": 0
},
"targetSize": 2,
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroupManagers/myinstancegroup"
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroupManagers/myinstancegroup"
}
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
"description": "This instance group is controlled by Instance Group Manager 'myinstancegroup'. To modify instances in this group, use the Instance Group Manager API: https://cloud.google.com/compute/docs/reference/latest/instanceGroupManagers",
"network": "https://content.googleapis.com/compute/v1/projects/project_name/global/networks/default",
"fingerprint": "42WmSpB8rSM=",
"selfLink": "https://content.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-east1-b/instanceGroups/myinstancegroup",
"size": 4,
"subnetwork": "https://content.googleapis.com/compute/v1/projects/project_name/regions/us-east1/subnetworks/cf-972cf02e6ad49112"
"subnetwork": "https://content.googleapis.com/compute/v1/projects/project_name/regions/us-east1/subnetworks/cf-972cf02e6ad49113"
}
Loading

0 comments on commit 3a952fa

Please sign in to comment.