Every patch / Pull Request requires a corresponding issue. If you're fixing a bug for an existing issue, then there's no need to create a new issue.
However, if no prior issue exists, you must create an issue.
When reporting a bug, please try to provide as much information as you can.
The following issues are good examples for reporting a bug:
If you've noticed that a feature is missing from Gophercloud, you'll also need to create an issue before doing any work. This is to start a discussion about whether or not the feature should be included in Gophercloud. We don't want to see you put in hours of work only to learn that the feature is out of scope of the project.
Feature requests can come in different forms:
The "core" of Gophercloud is the code which supports API requests and responses: pagination, error handling, building request bodies, and parsing response bodies are all examples of core code.
Modifications to core will usually have the most amount of discussion than other requests since a change to core will affect all of Gophercloud.
The following issues are examples of core change discussions:
If you've found a missing field in an existing struct, submit an issue to request having it added. These kinds of issues are pretty easy to report and resolve.
You should also provide a link to the actual service's Python code which defines the missing field.
The following issues are examples of missing fields:
There's one situation which can make adding fields more difficult: if the field is part of an API extension rather than the base API itself. An example of this can be seen in this issue.
Here, a user reported fields missing in the Get function of
networking/v2/networks. The fields reported missing weren't missing at all,
they're just part of various Networking extensions located in
networking/v2/extensions.
If you've found a missing API action, create an issue with details of the action. For example:
You'll want to make sure the API call is part of the upstream OpenStack project and not an extension created by a third-party or vendor. Gophercloud only supports the OpenStack projects proper.
Adding support to a missing suite of API calls can be done in a single Pull Request or broken into multiple PRs. Either way, you can use a single issue to track the work.
Examples of issues which track the addition of a missing API suite are:
Note how the issue breaks down the implementation by request types (Create, Update, Delete, Get, List).
Also note how these issues provide links to the service's Python code. These links are not required for issues, but it's usually a good idea to provide them, anyway. These links are required for PRs and that will be covered in detail in a later step of this tutorial.
These kinds of feature additions are large undertakings. Adding support for an entire OpenStack project is something the Gophercloud team very much appreciates, but you should be prepared for several weeks of work and interaction with the Gophercloud team.
An example of how to create an issue for an entire project can be seen here:
With all of the above in mind, proceed to Step 3 to learn about Code Hunting.