You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by bchazalet <gi...@git.apache.org> on 2018/01/18 13:26:05 UTC
[GitHub] libcloud pull request #1165: Allow shared vpc in gce
GitHub user bchazalet opened a pull request:
https://github.com/apache/libcloud/pull/1165
Allow shared vpc in gce
## Allow for use of shared network (vpc) and subnetwork in GCE
### Description
It's currently not possible to create an GCE instance within a [shared VPC](https://cloud.google.com/vpc/docs/shared-vpc) and a shared subnet via ansible although it's possible from the google compute console (see https://github.com/ansible/ansible/issues/30759).
In the code, the problem seems to be that even if a fully qualified resource URL is passed for a network (or subnetwork), it is parsed into parts and then reconstructed assuming the resource is under the configured gcloud project. But since we're using a shared VPC, the resource is under a different project.
For example, say, I have two projects, `my-main-project` which hosts a shared vpc named `sharedvpc` and `my-other-project` which has shared access to `sharedvpc`. What I want to do is to create a GCE instance under `my-other-project` and within the `sharedvpc` project.
So in the gce module, I pass the resource URLs:
```yml
- name: Create instance
gce:
instance_names: "{{ instance_name }}"
machine_type: "{{ machine_type }}"
image: "{{ image_name }}"
network: https://www.googleapis.com/compute/v1/projects/my-main-project/global/networks/sharedvpc
subnetwork: https://www.googleapis.com/compute/v1/projects/my-main-project/regions/europe-west2/subnetworks/default"
zone: "{{ zone }}"
tags: app-servers
state: present
```
But, in the module's code, the resource URLs will be parsed and transform respectively to `/global/networks/sharedvpc` and `/regions/europe-west2/subnetworks/default` which implicitly refer to the project configured by glcoud, i.e. `my-other-project`. As a result, I get a `ResourceNotFound` error.
Instead, if a resource (network or subnetwork) is fully qualified via a resource URL (i.e. it starts with `https://`), we can simply use it in the underlying google request. This is what the new code does.
### Status
Done, ready for review. I'm new to libcloud, so I'll happily take feedback and amend the PR.
### Checklist (tick everything that applies)
- [ ] [Code linting](http://libcloud.readthedocs.org/en/latest/development.html#code-style-guide) (required, can be done after the PR checks)
- [ ] Documentation
- [ ] [Tests](http://libcloud.readthedocs.org/en/latest/testing.html)
- [ ] [ICLA](http://libcloud.readthedocs.org/en/latest/development.html#contributing-bigger-changes) (required for bigger changes)
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/bchazalet/libcloud wip/hack-to-allow-shared-vpc-in-gce
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/libcloud/pull/1165.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #1165
----
commit f71da15c372a0d69a9d705e073a5a4cadfd897c1
Author: Boris Chazalet <bc...@...>
Date: 2018-01-18T09:05:29Z
Allow shared network/subnetwork
If they come as fully qualified resource URLs (https://)
commit 408ac7bbd9def69499434fdd389ef93b3c5f804e
Author: Boris Chazalet <bc...@...>
Date: 2018-01-18T09:18:36Z
Make sure simply qualified subnet works too
----
---
[GitHub] libcloud pull request #1165: Allow shared vpc in gce
Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:
https://github.com/apache/libcloud/pull/1165
---