Docs - Add Contributing Guide (#4543)
This commit is contained in:
parent
78709ce22c
commit
f4c4b349c7
107
CONTRIBUTING.md
107
CONTRIBUTING.md
@ -1,20 +1,20 @@
|
|||||||
# Table of Contents
|
# Table of Contents
|
||||||
|
|
||||||
- [Contributing code](#contributing-code)
|
- [Contributing code](#contributing-code)
|
||||||
* [Running the tests locally](#running-the-tests-locally)
|
- [Development Guide](#development-guide)
|
||||||
|
* [TLDR](#tldr)
|
||||||
* [Linting](#linting)
|
* [Linting](#linting)
|
||||||
* [General notes](#general-notes)
|
|
||||||
- [Missing features](#missing-features)
|
|
||||||
- [Missing services](#missing-services)
|
|
||||||
+ [Generating template code of services.](#generating-template-code-of-services)
|
|
||||||
+ [URL Indexing](#url-indexing)
|
|
||||||
- [Maintainers](#maintainers)
|
- [Maintainers](#maintainers)
|
||||||
|
|
||||||
# Contributing code
|
# Contributing code
|
||||||
|
|
||||||
Moto has a [Code of Conduct](https://github.com/spulec/moto/blob/master/CODE_OF_CONDUCT.md), you can expect to be treated with respect at all times when interacting with this project.
|
Moto has a [Code of Conduct](https://github.com/spulec/moto/blob/master/CODE_OF_CONDUCT.md), you can expect to be treated with respect at all times when interacting with this project.
|
||||||
|
|
||||||
## Running the tests locally
|
# Development Guide
|
||||||
|
Please see our documentation for information on how to contribute:
|
||||||
|
https://docs.getmoto.org/en/latest/docs/contributing
|
||||||
|
|
||||||
|
## TLDR
|
||||||
|
|
||||||
Moto has a [Makefile](./Makefile) which has some helpful commands for getting set up.
|
Moto has a [Makefile](./Makefile) which has some helpful commands for getting set up.
|
||||||
You should be able to run `make init` to install the dependencies and then `make test` to run the tests.
|
You should be able to run `make init` to install the dependencies and then `make test` to run the tests.
|
||||||
@ -27,99 +27,6 @@ Ensure that the correct version of black is installed - `black==19.10b0`. (Diffe
|
|||||||
Run `make lint` to verify whether your code confirms to the guidelines.
|
Run `make lint` to verify whether your code confirms to the guidelines.
|
||||||
Use `make format` to automatically format your code, if it does not conform to `black`'s rules.
|
Use `make format` to automatically format your code, if it does not conform to `black`'s rules.
|
||||||
|
|
||||||
## General notes
|
|
||||||
|
|
||||||
Some tips that might help during development:
|
|
||||||
- A dedicated TaggingService exists in `moto.utilities`, to help with storing/retrieving tags for resources. Not all services use it yet, but contributors are encouraged to use the TaggingService for all new features.
|
|
||||||
- Our CI runs all tests twice - one normal run, and one run in ServerMode. In ServerMode, Moto is started as a stand-alone Flask server, and all tests are run against this Flask-instance.
|
|
||||||
To verify whether your tests pass in ServerMode, you can run the following commands:
|
|
||||||
```
|
|
||||||
pip install .[all,server]
|
|
||||||
moto_server
|
|
||||||
TEST_SERVER_MODE=true pytest -sv tests/test_service/..
|
|
||||||
```
|
|
||||||
- When writing tests, one test should only verify a single feature/method. I.e., one test for `create_resource()`, another for `update_resource()`, etc.
|
|
||||||
- When writing negative tests, try to use the following format:
|
|
||||||
```
|
|
||||||
with pytest.raises(botocore.exceptions.ClientError) as exc:
|
|
||||||
client.failing_call(..)
|
|
||||||
err = exc.value.response["Error"]
|
|
||||||
# These assertions use the 'sure' library, but any assertion style is accepted
|
|
||||||
err["Code"].should.equal(..)
|
|
||||||
err["Message"].should.equal(..)
|
|
||||||
```
|
|
||||||
This is the best way to ensure that exceptions are dealt with correctly by Moto.
|
|
||||||
- If a service is only partially implemented, a warning can be used to inform the user. For instance:
|
|
||||||
```
|
|
||||||
import warnings
|
|
||||||
warnings.warn("The Filters-parameter is not yet implemented for client.method()")
|
|
||||||
```
|
|
||||||
- To speed up our CI, the ServerMode tests for the `awslambda`, `batch`, `ec2` and `sqs` services will run in parallel.
|
|
||||||
This means the following:
|
|
||||||
- Make sure you use unique names for functions/queues/etc
|
|
||||||
- Calls to `describe_reservations()`/`list_queues()`/etc might return unexpected results
|
|
||||||
|
|
||||||
|
|
||||||
# Missing features
|
|
||||||
|
|
||||||
Moto is easier to contribute to than you probably think. There's [a list of which endpoints have been implemented](https://github.com/spulec/moto/blob/master/IMPLEMENTATION_COVERAGE.md) and we invite you to add new endpoints to existing services or to add new services.
|
|
||||||
|
|
||||||
How to teach Moto to support a new AWS endpoint:
|
|
||||||
|
|
||||||
* Search for an existing [issue](https://github.com/spulec/moto/issues) that matches what you want to achieve.
|
|
||||||
* If one doesn't already exist, create a new issue describing what's missing. This is where we'll all talk about the new addition and help you get it done.
|
|
||||||
* Create a [pull request](https://help.github.com/articles/using-pull-requests/) and mention the issue # in the PR description.
|
|
||||||
* Try to add a failing test case. For example, if you're trying to implement `boto3.client('acm').import_certificate()` you'll want to add a new method called `def test_import_certificate` to `tests/test_acm/test_acm.py`.
|
|
||||||
* Implementing the feature itself can be done by creating a method called `import_certificate` in `moto/acm/responses.py`. It's considered good practice to deal with input/output formatting and validation in `responses.py`, and create a method `import_certificate` in `moto/acm/models.py` that handles the actual import logic.
|
|
||||||
* If you can also implement the code that gets that test passing then great! If not, just ask the community for a hand and somebody will assist you.
|
|
||||||
|
|
||||||
# Missing services
|
|
||||||
|
|
||||||
Implementing a new service from scratch is more work, but still quite straightforward. All the code that intercepts network requests to `*.amazonaws.com` is already handled for you in `moto/core` - all that's necessary for new services to be recognized is to create a new decorator and determine which URLs should be intercepted.
|
|
||||||
|
|
||||||
See this PR for an example of what's involved in creating a new service: https://github.com/spulec/moto/pull/4076/files
|
|
||||||
|
|
||||||
Note the `urls.py` that redirects all incoming URL requests to a generic `dispatch` method, which in turn will call the appropriate method in `responses.py`.
|
|
||||||
|
|
||||||
If you want more control over incoming requests or their bodies, it is possible to redirect specific requests to a custom method. See this PR for an example: https://github.com/spulec/moto/pull/2957/files
|
|
||||||
|
|
||||||
### Generating template code of services.
|
|
||||||
|
|
||||||
By using `scripts/scaffold.py`, you can automatically generate template code of new services and new method of existing service. The script looks up API specification of given boto3 method and adds necessary codes including request parameters and response parameters. In some cases, it fails to generate codes.
|
|
||||||
Please try out by running `python scripts/scaffold.py`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
$ python scripts/scaffold.py
|
|
||||||
Select service: codedeploy
|
|
||||||
|
|
||||||
==Current Implementation Status==
|
|
||||||
[ ] add_tags_to_on_premises_instances
|
|
||||||
...
|
|
||||||
[ ] create_deployment
|
|
||||||
...[
|
|
||||||
[ ] update_deployment_group
|
|
||||||
=================================
|
|
||||||
Select Operation: create_deployment
|
|
||||||
|
|
||||||
|
|
||||||
Initializing service codedeploy
|
|
||||||
creating moto/codedeploy
|
|
||||||
creating moto/codedeploy/models.py
|
|
||||||
creating moto/codedeploy/exceptions.py
|
|
||||||
creating moto/codedeploy/__init__.py
|
|
||||||
creating moto/codedeploy/responses.py
|
|
||||||
creating moto/codedeploy/urls.py
|
|
||||||
creating tests/test_codedeploy
|
|
||||||
creating tests/test_codedeploy/test_server.py
|
|
||||||
creating tests/test_codedeploy/test_codedeploy.py
|
|
||||||
inserting code moto/codedeploy/responses.py
|
|
||||||
inserting code moto/codedeploy/models.py
|
|
||||||
You will still need to add the mock into "__init__.py"
|
|
||||||
```
|
|
||||||
|
|
||||||
### URL Indexing
|
|
||||||
In order to speed up the performance of MotoServer, all AWS URL's that need intercepting are indexed.
|
|
||||||
When adding/replacing any URLs in `{service}/urls.py`, please run `python scripts/update_backend_index.py` to update this index.
|
|
||||||
|
|
||||||
# Maintainers
|
# Maintainers
|
||||||
|
|
||||||
|
75
docs/docs/contributing/architecture.rst
Normal file
75
docs/docs/contributing/architecture.rst
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
.. _contributing architecture:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Architecture
|
||||||
|
=============================
|
||||||
|
|
||||||
|
If you're interested in the inner workings of Moto, or are trying to hunt down some tricky bug, the below sections will help you learn more about how Moto works.
|
||||||
|
|
||||||
|
**************************
|
||||||
|
Decorator Architecture
|
||||||
|
**************************
|
||||||
|
When using decorators, Moto works by intercepting the HTTP request that is send out by boto3.
|
||||||
|
This has multiple benefits:
|
||||||
|
|
||||||
|
- boto3 keeps the responsibility of any initial parameter validation
|
||||||
|
- boto3 keeps the responsibility of any post-processing of the response
|
||||||
|
- Other SDK's can also be used against Moto, as all SDK's use the HTTP API to talk to AWS in the end.
|
||||||
|
|
||||||
|
Botocore utilizes an event-based architecture. Events such as `creating-client-class` and `before-send` are emitted for all boto3-requests.
|
||||||
|
|
||||||
|
When the decorator starts, Moto registers a hook into the `before-send`-event that allows us to intercept the HTTP-request that was about to be send.
|
||||||
|
For every intercepted request, Moto figures out which service/feature is called based on the HTTP request prepared by `boto3`, and calls our own stub instead.
|
||||||
|
|
||||||
|
|
||||||
|
***********************************************
|
||||||
|
Determining which service/feature is called
|
||||||
|
***********************************************
|
||||||
|
There are multiple ways for Moto to determine which request was called.
|
||||||
|
For each request we need to know two things:
|
||||||
|
|
||||||
|
#. Which service is this request for?
|
||||||
|
#. Which feature is called?
|
||||||
|
|
||||||
|
When using one ore more decorators, Moto will load all urls from `{service}/urls.py::url_bases`.
|
||||||
|
Incoming requests are matched against those to figure out which service the request has to go to.
|
||||||
|
After that, we try to find right feature by looking at:
|
||||||
|
|
||||||
|
#. The `Action`-parameter in the querystring or body, or
|
||||||
|
#. The `x-amz-target`-header, or
|
||||||
|
#. The full URI. Boto3 has a model for each service that maps the HTTP method and URI to a feature.
|
||||||
|
Note that this only works if the `Responses`-class has an attribute `SERVICE_NAME`, as Moto needs to know which boto3-client has this model.
|
||||||
|
|
||||||
|
When using Moto in ServerMode, all incoming requests will be made to `http://localhost`, or wherever the MotoServer is hosted, so we can no longer use the request URI to figure out which service to talk to.
|
||||||
|
In order to still know which service the request was intended for, Moto will check:
|
||||||
|
|
||||||
|
#. The authorization header first (`HTTP_AUTHORIZATION`)
|
||||||
|
#. The target header next (`HTTP_X_AMZ_TARGET`)
|
||||||
|
#. Or the path header (`PATH_INFO`)
|
||||||
|
#. If all else fails, we assume S3 as the default
|
||||||
|
|
||||||
|
Now that we have determined the service, we can rebuild the original host this request was send to.
|
||||||
|
With the combination of the restored host and path we can match against the `url_bases` and `url_paths` in `{service}/urls.py` to determine which Moto-method is responsible for handling the incoming request.
|
||||||
|
|
||||||
|
|
||||||
|
***********************************
|
||||||
|
File Architecture
|
||||||
|
***********************************
|
||||||
|
To keep a logical separation between services, each one is located into a separate folder.
|
||||||
|
Each service follows the same file structure.
|
||||||
|
|
||||||
|
The below table explains the purpose of each file:
|
||||||
|
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
||||||
|
| File | Responsibility |
|
||||||
|
+===============+===============================================================================================================+
|
||||||
|
| __init__.py | Initializes the decorator to be used by developers |
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
||||||
|
| urls.py | List of the URL's that should be intercepted |
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
||||||
|
| responses.py | Requests are redirected here first. Responsible for extracting parameters and determining the response format |
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
||||||
|
| models.py | Responsible for the data storage and logic required. |
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
||||||
|
| exceptions.py | Not required - this would contain any custom exceptions, if your code throws any |
|
||||||
|
+---------------+---------------------------------------------------------------------------------------------------------------+
|
26
docs/docs/contributing/checklist.rst
Normal file
26
docs/docs/contributing/checklist.rst
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.. _contributing checklist:
|
||||||
|
|
||||||
|
.. role:: raw-html(raw)
|
||||||
|
:format: html
|
||||||
|
|
||||||
|
================================
|
||||||
|
PR Checklist
|
||||||
|
================================
|
||||||
|
|
||||||
|
Ready to open a new PR? Great. Please have a quick look at this checklist to make sure that you're ready:
|
||||||
|
|
||||||
|
- [ ] Feature is added
|
||||||
|
- [ ] The linter is happy
|
||||||
|
- [ ] Tests are added
|
||||||
|
- [ ] All tests pass, existing and new
|
||||||
|
|
||||||
|
Can't quite get it working? :raw-html:`<br />`
|
||||||
|
Create the PR anyway! Seeing the code can help others figure out what's wrong.
|
||||||
|
|
||||||
|
Halfway through and too busy to finish? :raw-html:`<br />`
|
||||||
|
Create the PR anyway! Others can use your work and build on it to finish the feature.
|
||||||
|
|
||||||
|
.. note:: You can indicate a PR that's not quite ready with the `needs-help`-label.
|
||||||
|
|
||||||
|
Are you not sure on what you want to implement, or want some advice on how to approach things?
|
||||||
|
Feel free to open a new issue on Github: https://github.com/spulec/moto/issues
|
118
docs/docs/contributing/development_tips.rst
Normal file
118
docs/docs/contributing/development_tips.rst
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
.. _contributing tips:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Development Tips
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Below you can find some tips that might help during development.
|
||||||
|
|
||||||
|
****************************
|
||||||
|
Naming Conventions
|
||||||
|
****************************
|
||||||
|
Let's say you want to implement the `import_certificate` feature for the ACM service.
|
||||||
|
|
||||||
|
Implementing the feature itself can be done by creating a method called `import_certificate` in `moto/acm/responses.py`.
|
||||||
|
| It's considered good practice to deal with input/output formatting and validation in `responses.py`, and create a method `import_certificate` in `moto/acm/models.py` that handles the actual import logic.
|
||||||
|
|
||||||
|
When writing tests, you'll want to add a new method called `def test_import_certificate` to `tests/test_acm/test_acm.py`.
|
||||||
|
| Additional tests should also have names indicate of what's happening, i.e. `def test_import_certificate_fails_without_name`, `def test_import_existing_certificate`, etc.
|
||||||
|
|
||||||
|
|
||||||
|
****************************************
|
||||||
|
Determining which URLs to intercept
|
||||||
|
****************************************
|
||||||
|
In order for Moto to know which requests to intercept, Moto needs to know which URLs to intercept.
|
||||||
|
| But how do we know which URL's should be intercepted? There are a few ways of doing it:
|
||||||
|
|
||||||
|
- For an existing service, copy/paste the url-path for an existing feature and cross your fingers and toes
|
||||||
|
- Use the service model that is used by botocore: https://github.com/boto/botocore/tree/develop/botocore/data
|
||||||
|
Look for the `requestUri`-field in the `services.json` file.
|
||||||
|
- Make a call to AWS itself, and intercept the request using a proxy.
|
||||||
|
This gives you all information you could need, including the URL, parameters, request and response format.
|
||||||
|
|
||||||
|
|
||||||
|
******************************
|
||||||
|
Intercepting AWS requests
|
||||||
|
******************************
|
||||||
|
Download and install a proxy such `MITMProxy <https://mitmproxy.org/>`_.
|
||||||
|
|
||||||
|
With the proxy running, the easiest way of proxying requests to AWS is probably via the CLI.
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
export HTTP_PROXY=http://localhost:8080
|
||||||
|
export HTTPS_PROXY=http://localhost:8080
|
||||||
|
aws ses describe-rule-set --no-verify-ssl
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
from botocore.config import Config
|
||||||
|
proxy_config = Config(proxies={'http': 'localhost:8080', 'https': 'localhost:8080'})
|
||||||
|
boto3.client("ses", config=proxy_config, use_ssl=False, verify=False)
|
||||||
|
|
||||||
|
|
||||||
|
******************************
|
||||||
|
Tagging Service
|
||||||
|
******************************
|
||||||
|
|
||||||
|
A dedicated TaggingService exists in `moto.utilities`, to help with storing/retrieving tags for resources.
|
||||||
|
|
||||||
|
Not all services use it yet, but contributors are encouraged to use the TaggingService for all new features.
|
||||||
|
|
||||||
|
***************************
|
||||||
|
CI
|
||||||
|
***************************
|
||||||
|
|
||||||
|
Our CI runs all tests twice - one normal run, and one run in ServerMode. In ServerMode, Moto is started as a stand-alone Flask server, and all tests are run against this Flask-instance.
|
||||||
|
|
||||||
|
To verify whether your tests pass in ServerMode, you can run the following commands:
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
moto_server
|
||||||
|
TEST_SERVER_MODE=true pytest -sv tests/test_service/..
|
||||||
|
|
||||||
|
|
||||||
|
*****************************
|
||||||
|
Partial Implementations
|
||||||
|
*****************************
|
||||||
|
|
||||||
|
If a service is only partially implemented, a warning can be used to inform the user:
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
import warnings
|
||||||
|
warnings.warn("The Filters-parameter is not yet implemented for client.method()")
|
||||||
|
|
||||||
|
|
||||||
|
****************
|
||||||
|
Writing tests
|
||||||
|
****************
|
||||||
|
|
||||||
|
One test should only verify a single feature/method. I.e., one test for `create_resource()`, another for `update_resource()`, etc.
|
||||||
|
|
||||||
|
Negative tests
|
||||||
|
^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
When writing negative tests, try to use the following format:
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
with pytest.raises(botocore.exceptions.ClientError) as exc:
|
||||||
|
client.failing_call(..)
|
||||||
|
err = exc.value.response["Error"]
|
||||||
|
# These assertions use the 'sure' library, but any assertion style is accepted
|
||||||
|
err["Code"].should.equal(..)
|
||||||
|
err["Message"].should.equal(..)
|
||||||
|
|
||||||
|
This is the best way to ensure that exceptions are dealt with correctly by Moto.
|
||||||
|
|
||||||
|
|
||||||
|
Parallel tests
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
To speed up our CI, the ServerMode tests for the `awslambda`, `batch`, `ec2` and `sqs` services will run in parallel.
|
||||||
|
This means the following:
|
||||||
|
|
||||||
|
- Make sure you use unique names for functions/queues/etc
|
||||||
|
- Calls to `describe_reservations()`/`list_queues()`/etc might return resources from other tests
|
103
docs/docs/contributing/faq.rst
Normal file
103
docs/docs/contributing/faq.rst
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
.. _contributing faq:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
FAQ
|
||||||
|
=============================
|
||||||
|
|
||||||
|
When running the linter...
|
||||||
|
#############################
|
||||||
|
|
||||||
|
Why does black give different results?
|
||||||
|
****************************************
|
||||||
|
Different versions of black produce different results.
|
||||||
|
To ensure that our CI passes, please format the code using `black==19.10b0`.
|
||||||
|
|
||||||
|
When running a test...
|
||||||
|
#########################
|
||||||
|
|
||||||
|
Why does it take ages to run a single test?
|
||||||
|
**********************************************
|
||||||
|
There are a few reasons why this could happen.
|
||||||
|
If the test uses Docker, it could take a while to:
|
||||||
|
|
||||||
|
- Download the appropriate Docker image
|
||||||
|
- Run the image
|
||||||
|
- Wait for the logs to appear
|
||||||
|
|
||||||
|
|
||||||
|
Why am I getting Docker errors?
|
||||||
|
********************************
|
||||||
|
AWSLambda and Batch services use Docker to execute the code provided to the system, which means that Docker needs to be installed on your system in order for these tests to run.
|
||||||
|
|
||||||
|
|
||||||
|
Why are my tests failing in ServerMode?
|
||||||
|
******************************************
|
||||||
|
- Make sure that the correct url paths are present in `urls.py`
|
||||||
|
- Make sure that you've run `scripts/update_backend_index.py` afterwards, to let MotoServer know the urls have changed.
|
||||||
|
|
||||||
|
|
||||||
|
When using the scaffolding scripts..
|
||||||
|
#######################################
|
||||||
|
|
||||||
|
Why am I getting the error that my new module could not be found?
|
||||||
|
*******************************************************************
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
File "scripts/scaffold.py", line 499, in insert_codes
|
||||||
|
insert_code_to_class(responses_path, BaseResponse, func_in_responses)
|
||||||
|
File "scripts/scaffold.py", line 424, in insert_code_to_class
|
||||||
|
mod = importlib.import_module(mod_path)
|
||||||
|
File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
|
||||||
|
return _bootstrap._gcd_import(name[level:], package, level)
|
||||||
|
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
|
||||||
|
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
|
||||||
|
File "<frozen importlib._bootstrap>", line 961, in _find_and_load_unlocked
|
||||||
|
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
|
||||||
|
File "<frozen importlib._bootstrap>", line 1014, in _gcd_import
|
||||||
|
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
|
||||||
|
File "<frozen importlib._bootstrap>", line 973, in _find_and_load_unlocked
|
||||||
|
ModuleNotFoundError: No module named 'moto.kafka'
|
||||||
|
|
||||||
|
This will happen if you've ran `pip install .` prior to running `scripts/scaffold.py`.
|
||||||
|
|
||||||
|
Instead, install Moto as an editable module instead:
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
pip uninstall moto
|
||||||
|
pip install -e .
|
||||||
|
|
||||||
|
|
||||||
|
What ...
|
||||||
|
#################
|
||||||
|
|
||||||
|
Does ServerMode refer to?
|
||||||
|
******************************
|
||||||
|
ServerMode refers to Moto running as a stand-alone server. This can be useful to:
|
||||||
|
- Test non-Python SDK's
|
||||||
|
- Have a semi-permanent, local AWS-like server running that multiple applications can talk to
|
||||||
|
|
||||||
|
Types of tests are there?
|
||||||
|
***********************************
|
||||||
|
There are three types of tests:
|
||||||
|
|
||||||
|
#. decorator tests
|
||||||
|
#. ServerMode tests
|
||||||
|
#. server tests (located in test_server.py)
|
||||||
|
|
||||||
|
The decorator tests refer to the normal unit tests that are run against an in-memory Moto instance.
|
||||||
|
|
||||||
|
The ServerMode tests refer to the same set of tests - but run against an external MotoServer instance.
|
||||||
|
When running tests in ServerMode, each boto3-client and boto3-resource are intercepted, and enriched with the `endpoint_url="http://localhost:5000"` argument. This allows us to run the same test twice, and verify that Moto behaves the same when using decorators, and in ServerMode.
|
||||||
|
|
||||||
|
The last 'server' tests are low-level tests that can be used to verify that Moto behaves exactly like the AWS HTTP API.
|
||||||
|
Each test will spin up the MotoServer in memory, and run HTTP requests directly against that server.
|
||||||
|
This allows the developer to test things like HTTP headers, the exact response/request format, etc.
|
||||||
|
|
||||||
|
Alternatives are there?
|
||||||
|
********************************
|
||||||
|
The best alternative would be `LocalStack <https://localstack.cloud//>`_.
|
||||||
|
|
||||||
|
LocalStack is Moto's bigger brother with more advanced features, such as EC2 VM's that you can SSH into and Dockerized RDS-installations that you can connect to.
|
||||||
|
|
18
docs/docs/contributing/index.rst
Normal file
18
docs/docs/contributing/index.rst
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
.. _contributing main:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Contributing
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Want to contribute to Moto? Yes please! The aim is to mock as many services and features as possible.
|
||||||
|
With AWS releasing new services almost daily, that is for sure a moving target! So any help is welcome.
|
||||||
|
|
||||||
|
Check our :ref:`contributing installation` guide on how to install Moto locally.
|
||||||
|
The :ref:`contributing architecture` page can be useful or interesting if you want to dive deeper in Moto's guts, but feel free to skip this page if you're not interested.
|
||||||
|
|
||||||
|
Want to add some new features, or improving the behaviour of existing ones? :ref:`contributing feature` is for you.
|
||||||
|
|
||||||
|
We also have a collection of :ref:`contributing tips` to give some guidance.
|
||||||
|
|
||||||
|
Finally, the :ref:`contributing faq` page may have some questions to your burning answers that popped up while reading this saga.
|
||||||
|
|
44
docs/docs/contributing/installation.rst
Normal file
44
docs/docs/contributing/installation.rst
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
.. _contributing installation:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
Installation
|
||||||
|
=============================
|
||||||
|
|
||||||
|
This is a guide how to install Moto for contributors.
|
||||||
|
|
||||||
|
The following software is assumed to be present:
|
||||||
|
|
||||||
|
- Python 3.x
|
||||||
|
- Docker
|
||||||
|
|
||||||
|
It is recommended to work from some kind of virtual environment, i.e. `virtualenv`, to prevent cross-contamination with other projects.
|
||||||
|
From within such a virtualenv, run the following command to install all required dependencies:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
make init
|
||||||
|
|
||||||
|
With all dependencies installed, run the following command to run all the tests and verify your environment is ready:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
make test
|
||||||
|
|
||||||
|
Note that this may take awhile - there are many services, and each service will have a boatload of tests.
|
||||||
|
|
||||||
|
To verify all tests pass for a specific service, for example for `s3`, run these commands manually:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
flake8 moto/s3
|
||||||
|
black --check moto/s3 tests/test_s3
|
||||||
|
pylint tests/test_s3
|
||||||
|
pytest -sv tests/test_s3
|
||||||
|
|
||||||
|
If black fails, you can run the following command to automatically format the offending files:
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
make format
|
||||||
|
|
||||||
|
If any of these steps fail, please see our :ref:`contributing faq` or open an issue on Github.
|
60
docs/docs/contributing/new_feature.rst
Normal file
60
docs/docs/contributing/new_feature.rst
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
.. _contributing feature:
|
||||||
|
|
||||||
|
=============================
|
||||||
|
New Features
|
||||||
|
=============================
|
||||||
|
|
||||||
|
Moto has a script that can automatically provide the scaffolding for a new service, and for adding new features to an existing service. This script does all the heavy lifting of generating template code, by looking up the API specification of a given `boto3` method and adding the necessary code to mock it.
|
||||||
|
|
||||||
|
Please try it out by running:
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
python scripts/scaffold.py
|
||||||
|
|
||||||
|
|
||||||
|
The script uses the `click`-module to assists with autocompletion.
|
||||||
|
|
||||||
|
- Use Tab to auto-complete the first suggest service, or
|
||||||
|
- Use the up and down-arrows on the keyboard to select something from the dropdown
|
||||||
|
- Press enter to continue
|
||||||
|
|
||||||
|
An example interaction:
|
||||||
|
|
||||||
|
.. sourcecode:: bash
|
||||||
|
|
||||||
|
$ python scripts/scaffold.py
|
||||||
|
Select service: codedeploy
|
||||||
|
|
||||||
|
==Current Implementation Status==
|
||||||
|
[ ] add_tags_to_on_premises_instances
|
||||||
|
...
|
||||||
|
[ ] create_deployment
|
||||||
|
...
|
||||||
|
[ ] update_deployment_group
|
||||||
|
=================================
|
||||||
|
Select Operation: create_deployment
|
||||||
|
|
||||||
|
|
||||||
|
Initializing service codedeploy
|
||||||
|
creating moto/codedeploy
|
||||||
|
creating moto/codedeploy/models.py
|
||||||
|
creating moto/codedeploy/exceptions.py
|
||||||
|
creating moto/codedeploy/__init__.py
|
||||||
|
creating moto/codedeploy/responses.py
|
||||||
|
creating moto/codedeploy/urls.py
|
||||||
|
creating tests/test_codedeploy
|
||||||
|
creating tests/test_codedeploy/test_server.py
|
||||||
|
creating tests/test_codedeploy/test_codedeploy.py
|
||||||
|
inserting code moto/codedeploy/responses.py
|
||||||
|
inserting code moto/codedeploy/models.py
|
||||||
|
|
||||||
|
Remaining steps after development is complete:
|
||||||
|
- Run scripts/implementation_coverage.py,
|
||||||
|
- Run scripts/update_backend_index.py.
|
||||||
|
|
||||||
|
|
||||||
|
.. note:: The implementation coverage script is used to automatically update the full list of supported services.
|
||||||
|
|
||||||
|
.. warning:: In order to speed up the performance of MotoServer, all AWS URL's that need intercepting are indexed.
|
||||||
|
When adding/replacing any URLs in `{service}/urls.py`, please run `python scripts/update_backend_index.py` to update this index.
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_acm:
|
.. _implementedservice_acm:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
acm
|
acm
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_acm
|
||||||
|
def test_acm_behaviour:
|
||||||
|
boto3.client("acm")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_tags_to_certificate
|
- [X] add_tags_to_certificate
|
||||||
- [X] delete_certificate
|
- [X] delete_certificate
|
||||||
- [ ] describe_certificate
|
- [ ] describe_certificate
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_apigateway:
|
.. _implementedservice_apigateway:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
apigateway
|
apigateway
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_apigateway
|
||||||
|
def test_apigateway_behaviour:
|
||||||
|
boto3.client("apigateway")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_api_key
|
- [X] create_api_key
|
||||||
- [X] create_authorizer
|
- [X] create_authorizer
|
||||||
- [X] create_base_path_mapping
|
- [X] create_base_path_mapping
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_application-autoscaling:
|
.. _implementedservice_application-autoscaling:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=======================
|
=======================
|
||||||
application-autoscaling
|
application-autoscaling
|
||||||
=======================
|
=======================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_applicationautoscaling
|
||||||
|
def test_application-autoscaling_behaviour:
|
||||||
|
boto3.client("application-autoscaling")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] delete_scaling_policy
|
- [X] delete_scaling_policy
|
||||||
- [ ] delete_scheduled_action
|
- [ ] delete_scheduled_action
|
||||||
- [X] deregister_scalable_target
|
- [X] deregister_scalable_target
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_athena:
|
.. _implementedservice_athena:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
======
|
======
|
||||||
athena
|
athena
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_athena
|
||||||
|
def test_athena_behaviour:
|
||||||
|
boto3.client("athena")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] batch_get_named_query
|
- [ ] batch_get_named_query
|
||||||
- [ ] batch_get_query_execution
|
- [ ] batch_get_query_execution
|
||||||
- [ ] create_data_catalog
|
- [ ] create_data_catalog
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_autoscaling:
|
.. _implementedservice_autoscaling:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===========
|
===========
|
||||||
autoscaling
|
autoscaling
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_autoscaling
|
||||||
|
def test_autoscaling_behaviour:
|
||||||
|
boto3.client("autoscaling")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] attach_instances
|
- [X] attach_instances
|
||||||
- [X] attach_load_balancer_target_groups
|
- [X] attach_load_balancer_target_groups
|
||||||
- [X] attach_load_balancers
|
- [X] attach_load_balancers
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_batch:
|
.. _implementedservice_batch:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=====
|
=====
|
||||||
batch
|
batch
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_batch
|
||||||
|
def test_batch_behaviour:
|
||||||
|
boto3.client("batch")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] cancel_job
|
- [X] cancel_job
|
||||||
- [X] create_compute_environment
|
- [X] create_compute_environment
|
||||||
- [X] create_job_queue
|
- [X] create_job_queue
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_cloudformation:
|
.. _implementedservice_cloudformation:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==============
|
==============
|
||||||
cloudformation
|
cloudformation
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_cloudformation
|
||||||
|
def test_cloudformation_behaviour:
|
||||||
|
boto3.client("cloudformation")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] activate_type
|
- [ ] activate_type
|
||||||
- [ ] batch_describe_type_configurations
|
- [ ] batch_describe_type_configurations
|
||||||
- [ ] cancel_update_stack
|
- [ ] cancel_update_stack
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_cloudtrail:
|
.. _implementedservice_cloudtrail:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
cloudtrail
|
cloudtrail
|
||||||
==========
|
==========
|
||||||
|
|
||||||
Implementation of CloudTrail APIs.
|
Implementation of CloudTrail APIs.
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_cloudtrail
|
||||||
|
def test_cloudtrail_behaviour:
|
||||||
|
boto3.client("cloudtrail")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_tags
|
- [ ] add_tags
|
||||||
- [X] create_trail
|
- [X] create_trail
|
||||||
- [X] delete_trail
|
- [X] delete_trail
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_cloudwatch:
|
.. _implementedservice_cloudwatch:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
cloudwatch
|
cloudwatch
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_cloudwatch
|
||||||
|
def test_cloudwatch_behaviour:
|
||||||
|
boto3.client("cloudwatch")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] delete_alarms
|
- [X] delete_alarms
|
||||||
- [ ] delete_anomaly_detector
|
- [ ] delete_anomaly_detector
|
||||||
- [X] delete_dashboards
|
- [X] delete_dashboards
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_codecommit:
|
.. _implementedservice_codecommit:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
codecommit
|
codecommit
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_codecommit
|
||||||
|
def test_codecommit_behaviour:
|
||||||
|
boto3.client("codecommit")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] associate_approval_rule_template_with_repository
|
- [ ] associate_approval_rule_template_with_repository
|
||||||
- [ ] batch_associate_approval_rule_template_with_repositories
|
- [ ] batch_associate_approval_rule_template_with_repositories
|
||||||
- [ ] batch_describe_merge_conflicts
|
- [ ] batch_describe_merge_conflicts
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_codepipeline:
|
.. _implementedservice_codepipeline:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============
|
============
|
||||||
codepipeline
|
codepipeline
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_codepipeline
|
||||||
|
def test_codepipeline_behaviour:
|
||||||
|
boto3.client("codepipeline")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] acknowledge_job
|
- [ ] acknowledge_job
|
||||||
- [ ] acknowledge_third_party_job
|
- [ ] acknowledge_third_party_job
|
||||||
- [ ] create_custom_action_type
|
- [ ] create_custom_action_type
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_cognito-identity:
|
.. _implementedservice_cognito-identity:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
================
|
================
|
||||||
cognito-identity
|
cognito-identity
|
||||||
================
|
================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_cognitoidentity
|
||||||
|
def test_cognito-identity_behaviour:
|
||||||
|
boto3.client("cognito-identity")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_identity_pool
|
- [X] create_identity_pool
|
||||||
- [ ] delete_identities
|
- [ ] delete_identities
|
||||||
- [ ] delete_identity_pool
|
- [ ] delete_identity_pool
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_cognito-idp:
|
.. _implementedservice_cognito-idp:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===========
|
===========
|
||||||
cognito-idp
|
cognito-idp
|
||||||
===========
|
===========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_cognitoidp
|
||||||
|
def test_cognito-idp_behaviour:
|
||||||
|
boto3.client("cognito-idp")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_custom_attributes
|
- [X] add_custom_attributes
|
||||||
- [X] admin_add_user_to_group
|
- [X] admin_add_user_to_group
|
||||||
- [X] admin_confirm_sign_up
|
- [X] admin_confirm_sign_up
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_config:
|
.. _implementedservice_config:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
======
|
======
|
||||||
config
|
config
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_config
|
||||||
|
def test_config_behaviour:
|
||||||
|
boto3.client("config")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] batch_get_aggregate_resource_config
|
- [X] batch_get_aggregate_resource_config
|
||||||
Returns configuration of resource for current regional backend.
|
Returns configuration of resource for current regional backend.
|
||||||
|
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_datapipeline:
|
.. _implementedservice_datapipeline:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============
|
============
|
||||||
datapipeline
|
datapipeline
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_datapipeline
|
||||||
|
def test_datapipeline_behaviour:
|
||||||
|
boto3.client("datapipeline")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] activate_pipeline
|
- [X] activate_pipeline
|
||||||
- [ ] add_tags
|
- [ ] add_tags
|
||||||
- [X] create_pipeline
|
- [X] create_pipeline
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_datasync:
|
.. _implementedservice_datasync:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
datasync
|
datasync
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_datasync
|
||||||
|
def test_datasync_behaviour:
|
||||||
|
boto3.client("datasync")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] cancel_task_execution
|
- [X] cancel_task_execution
|
||||||
- [ ] create_agent
|
- [ ] create_agent
|
||||||
- [ ] create_location_efs
|
- [ ] create_location_efs
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_dms:
|
.. _implementedservice_dms:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
dms
|
dms
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_dms
|
||||||
|
def test_dms_behaviour:
|
||||||
|
boto3.client("dms")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_tags_to_resource
|
- [ ] add_tags_to_resource
|
||||||
- [ ] apply_pending_maintenance_action
|
- [ ] apply_pending_maintenance_action
|
||||||
- [ ] cancel_replication_task_assessment_run
|
- [ ] cancel_replication_task_assessment_run
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ds:
|
.. _implementedservice_ds:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==
|
==
|
||||||
ds
|
ds
|
||||||
==
|
==
|
||||||
|
|
||||||
Implementation of DirectoryService APIs.
|
Implementation of DirectoryService APIs.
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ds
|
||||||
|
def test_ds_behaviour:
|
||||||
|
boto3.client("ds")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_shared_directory
|
- [ ] accept_shared_directory
|
||||||
- [ ] add_ip_routes
|
- [ ] add_ip_routes
|
||||||
- [ ] add_region
|
- [ ] add_region
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_dynamodb:
|
.. _implementedservice_dynamodb:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
dynamodb
|
dynamodb
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_dynamodb2
|
||||||
|
def test_dynamodb_behaviour:
|
||||||
|
boto3.client("dynamodb")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] batch_execute_statement
|
- [ ] batch_execute_statement
|
||||||
- [X] batch_get_item
|
- [X] batch_get_item
|
||||||
- [X] batch_write_item
|
- [X] batch_write_item
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_dynamodbstreams:
|
.. _implementedservice_dynamodbstreams:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===============
|
===============
|
||||||
dynamodbstreams
|
dynamodbstreams
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_dynamodbstreams
|
||||||
|
def test_dynamodbstreams_behaviour:
|
||||||
|
boto3.client("dynamodbstreams")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] describe_stream
|
- [X] describe_stream
|
||||||
- [X] get_records
|
- [X] get_records
|
||||||
- [X] get_shard_iterator
|
- [X] get_shard_iterator
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ec2-instance-connect:
|
.. _implementedservice_ec2-instance-connect:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
====================
|
====================
|
||||||
ec2-instance-connect
|
ec2-instance-connect
|
||||||
====================
|
====================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ec2instanceconnect
|
||||||
|
def test_ec2-instance-connect_behaviour:
|
||||||
|
boto3.client("ec2-instance-connect")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] send_serial_console_ssh_public_key
|
- [ ] send_serial_console_ssh_public_key
|
||||||
- [X] send_ssh_public_key
|
- [X] send_ssh_public_key
|
||||||
|
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ec2:
|
.. _implementedservice_ec2:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ec2
|
ec2
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ec2
|
||||||
|
def test_ec2_behaviour:
|
||||||
|
boto3.client("ec2")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_reserved_instances_exchange_quote
|
- [ ] accept_reserved_instances_exchange_quote
|
||||||
- [ ] accept_transit_gateway_multicast_domain_associations
|
- [ ] accept_transit_gateway_multicast_domain_associations
|
||||||
- [X] accept_transit_gateway_peering_attachment
|
- [X] accept_transit_gateway_peering_attachment
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ecr:
|
.. _implementedservice_ecr:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ecr
|
ecr
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ecr
|
||||||
|
def test_ecr_behaviour:
|
||||||
|
boto3.client("ecr")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] batch_check_layer_availability
|
- [ ] batch_check_layer_availability
|
||||||
- [X] batch_delete_image
|
- [X] batch_delete_image
|
||||||
- [X] batch_get_image
|
- [X] batch_get_image
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ecs:
|
.. _implementedservice_ecs:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ecs
|
ecs
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ecs
|
||||||
|
def test_ecs_behaviour:
|
||||||
|
boto3.client("ecs")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_capacity_provider
|
- [ ] create_capacity_provider
|
||||||
- [X] create_cluster
|
- [X] create_cluster
|
||||||
- [X] create_service
|
- [X] create_service
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
.. _implementedservice_efs:
|
.. _implementedservice_efs:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
efs
|
efs
|
||||||
===
|
===
|
||||||
@ -11,6 +19,19 @@ The backend manager of EFS resources.
|
|||||||
such resources should always go through this class.
|
such resources should always go through this class.
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_efs
|
||||||
|
def test_efs_behaviour:
|
||||||
|
boto3.client("efs")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_access_point
|
- [ ] create_access_point
|
||||||
- [X] create_file_system
|
- [X] create_file_system
|
||||||
Create a new EFS File System Volume.
|
Create a new EFS File System Volume.
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_eks:
|
.. _implementedservice_eks:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
eks
|
eks
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_eks
|
||||||
|
def test_eks_behaviour:
|
||||||
|
boto3.client("eks")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] associate_encryption_config
|
- [ ] associate_encryption_config
|
||||||
- [ ] associate_identity_provider_config
|
- [ ] associate_identity_provider_config
|
||||||
- [ ] create_addon
|
- [ ] create_addon
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_elasticbeanstalk:
|
.. _implementedservice_elasticbeanstalk:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
================
|
================
|
||||||
elasticbeanstalk
|
elasticbeanstalk
|
||||||
================
|
================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_elasticbeanstalk
|
||||||
|
def test_elasticbeanstalk_behaviour:
|
||||||
|
boto3.client("elasticbeanstalk")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] abort_environment_update
|
- [ ] abort_environment_update
|
||||||
- [ ] apply_environment_managed_action
|
- [ ] apply_environment_managed_action
|
||||||
- [ ] associate_environment_operations_role
|
- [ ] associate_environment_operations_role
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_elastictranscoder:
|
.. _implementedservice_elastictranscoder:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=================
|
=================
|
||||||
elastictranscoder
|
elastictranscoder
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_elastictranscoder
|
||||||
|
def test_elastictranscoder_behaviour:
|
||||||
|
boto3.client("elastictranscoder")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] cancel_job
|
- [ ] cancel_job
|
||||||
- [ ] create_job
|
- [ ] create_job
|
||||||
- [X] create_pipeline
|
- [X] create_pipeline
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_elb:
|
.. _implementedservice_elb:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
elb
|
elb
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_elb
|
||||||
|
def test_elb_behaviour:
|
||||||
|
boto3.client("elb")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_tags
|
- [ ] add_tags
|
||||||
- [X] apply_security_groups_to_load_balancer
|
- [X] apply_security_groups_to_load_balancer
|
||||||
- [ ] attach_load_balancer_to_subnets
|
- [ ] attach_load_balancer_to_subnets
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_elbv2:
|
.. _implementedservice_elbv2:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=====
|
=====
|
||||||
elbv2
|
elbv2
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_elbv2
|
||||||
|
def test_elbv2_behaviour:
|
||||||
|
boto3.client("elbv2")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_listener_certificates
|
- [ ] add_listener_certificates
|
||||||
- [ ] add_tags
|
- [ ] add_tags
|
||||||
- [X] create_listener
|
- [X] create_listener
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_emr-containers:
|
.. _implementedservice_emr-containers:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==============
|
==============
|
||||||
emr-containers
|
emr-containers
|
||||||
==============
|
==============
|
||||||
|
|
||||||
Implementation of EMRContainers APIs.
|
Implementation of EMRContainers APIs.
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_emrcontainers
|
||||||
|
def test_emr-containers_behaviour:
|
||||||
|
boto3.client("emr-containers")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] cancel_job_run
|
- [X] cancel_job_run
|
||||||
- [ ] create_managed_endpoint
|
- [ ] create_managed_endpoint
|
||||||
- [X] create_virtual_cluster
|
- [X] create_virtual_cluster
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_emr:
|
.. _implementedservice_emr:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
emr
|
emr
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_emr
|
||||||
|
def test_emr_behaviour:
|
||||||
|
boto3.client("emr")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_instance_fleet
|
- [ ] add_instance_fleet
|
||||||
- [X] add_instance_groups
|
- [X] add_instance_groups
|
||||||
- [X] add_job_flow_steps
|
- [X] add_job_flow_steps
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_events:
|
.. _implementedservice_events:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
======
|
======
|
||||||
events
|
events
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_events
|
||||||
|
def test_events_behaviour:
|
||||||
|
boto3.client("events")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] activate_event_source
|
- [ ] activate_event_source
|
||||||
- [X] cancel_replay
|
- [X] cancel_replay
|
||||||
- [X] create_api_destination
|
- [X] create_api_destination
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_firehose:
|
.. _implementedservice_firehose:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
firehose
|
firehose
|
||||||
========
|
========
|
||||||
|
|
||||||
Implementation of Firehose APIs.
|
Implementation of Firehose APIs.
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_firehose
|
||||||
|
def test_firehose_behaviour:
|
||||||
|
boto3.client("firehose")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_delivery_stream
|
- [X] create_delivery_stream
|
||||||
Create a Kinesis Data Firehose delivery stream.
|
Create a Kinesis Data Firehose delivery stream.
|
||||||
|
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_forecast:
|
.. _implementedservice_forecast:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
forecast
|
forecast
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_forecast
|
||||||
|
def test_forecast_behaviour:
|
||||||
|
boto3.client("forecast")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_dataset
|
- [ ] create_dataset
|
||||||
- [X] create_dataset_group
|
- [X] create_dataset_group
|
||||||
- [ ] create_dataset_import_job
|
- [ ] create_dataset_import_job
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_glacier:
|
.. _implementedservice_glacier:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=======
|
=======
|
||||||
glacier
|
glacier
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_glacier
|
||||||
|
def test_glacier_behaviour:
|
||||||
|
boto3.client("glacier")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] abort_multipart_upload
|
- [ ] abort_multipart_upload
|
||||||
- [ ] abort_vault_lock
|
- [ ] abort_vault_lock
|
||||||
- [ ] add_tags_to_vault
|
- [ ] add_tags_to_vault
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_glue:
|
.. _implementedservice_glue:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
====
|
====
|
||||||
glue
|
glue
|
||||||
====
|
====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_glue
|
||||||
|
def test_glue_behaviour:
|
||||||
|
boto3.client("glue")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] batch_create_partition
|
- [ ] batch_create_partition
|
||||||
- [ ] batch_delete_connection
|
- [ ] batch_delete_connection
|
||||||
- [ ] batch_delete_partition
|
- [ ] batch_delete_partition
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_iam:
|
.. _implementedservice_iam:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
iam
|
iam
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_iam
|
||||||
|
def test_iam_behaviour:
|
||||||
|
boto3.client("iam")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_client_id_to_open_id_connect_provider
|
- [ ] add_client_id_to_open_id_connect_provider
|
||||||
- [X] add_role_to_instance_profile
|
- [X] add_role_to_instance_profile
|
||||||
- [X] add_user_to_group
|
- [X] add_user_to_group
|
||||||
|
@ -5,85 +5,12 @@
|
|||||||
Implemented Services
|
Implemented Services
|
||||||
====================
|
====================
|
||||||
|
|
||||||
|
Please see a list of all currently supported services. Each service will have a list of the endpoints that are implemented.
|
||||||
|
|
||||||
- :doc:`acm`
|
|
||||||
- :doc:`apigateway`
|
|
||||||
- :doc:`application-autoscaling`
|
|
||||||
- :doc:`athena`
|
|
||||||
- :doc:`autoscaling`
|
|
||||||
- :doc:`batch`
|
|
||||||
- :doc:`cloudformation`
|
|
||||||
- :doc:`cloudtrail`
|
|
||||||
- :doc:`cloudwatch`
|
|
||||||
- :doc:`codecommit`
|
|
||||||
- :doc:`codepipeline`
|
|
||||||
- :doc:`cognito-identity`
|
|
||||||
- :doc:`cognito-idp`
|
|
||||||
- :doc:`config`
|
|
||||||
- :doc:`datapipeline`
|
|
||||||
- :doc:`datasync`
|
|
||||||
- :doc:`dms`
|
|
||||||
- :doc:`ds`
|
|
||||||
- :doc:`dynamodb`
|
|
||||||
- :doc:`dynamodbstreams`
|
|
||||||
- :doc:`ec2`
|
|
||||||
- :doc:`ec2-instance-connect`
|
|
||||||
- :doc:`ecr`
|
|
||||||
- :doc:`ecs`
|
|
||||||
- :doc:`efs`
|
|
||||||
- :doc:`eks`
|
|
||||||
- :doc:`elasticbeanstalk`
|
|
||||||
- :doc:`elastictranscoder`
|
|
||||||
- :doc:`elb`
|
|
||||||
- :doc:`elbv2`
|
|
||||||
- :doc:`emr`
|
|
||||||
- :doc:`emr-containers`
|
|
||||||
- :doc:`events`
|
|
||||||
- :doc:`firehose`
|
|
||||||
- :doc:`forecast`
|
|
||||||
- :doc:`glacier`
|
|
||||||
- :doc:`glue`
|
|
||||||
- :doc:`iam`
|
|
||||||
- :doc:`iot`
|
|
||||||
- :doc:`iot-data`
|
|
||||||
- :doc:`kinesis`
|
|
||||||
- :doc:`kinesis-video-archived-media`
|
|
||||||
- :doc:`kinesisvideo`
|
|
||||||
- :doc:`kms`
|
|
||||||
- :doc:`lambda`
|
|
||||||
- :doc:`logs`
|
|
||||||
- :doc:`managedblockchain`
|
|
||||||
- :doc:`mediaconnect`
|
|
||||||
- :doc:`medialive`
|
|
||||||
- :doc:`mediapackage`
|
|
||||||
- :doc:`mediastore`
|
|
||||||
- :doc:`mediastore-data`
|
|
||||||
- :doc:`opsworks`
|
|
||||||
- :doc:`organizations`
|
|
||||||
- :doc:`polly`
|
|
||||||
- :doc:`ram`
|
|
||||||
- :doc:`rds`
|
|
||||||
- :doc:`redshift`
|
|
||||||
- :doc:`resource-groups`
|
|
||||||
- :doc:`resourcegroupstaggingapi`
|
|
||||||
- :doc:`route53`
|
|
||||||
- :doc:`s3`
|
|
||||||
- :doc:`sagemaker`
|
|
||||||
- :doc:`secretsmanager`
|
|
||||||
- :doc:`ses`
|
|
||||||
- :doc:`sns`
|
|
||||||
- :doc:`sqs`
|
|
||||||
- :doc:`ssm`
|
|
||||||
- :doc:`stepfunctions`
|
|
||||||
- :doc:`sts`
|
|
||||||
- :doc:`support`
|
|
||||||
- :doc:`swf`
|
|
||||||
- :doc:`timestream-write`
|
|
||||||
- :doc:`transcribe`
|
|
||||||
- :doc:`wafv2`
|
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:hidden:
|
:titlesonly:
|
||||||
:glob:
|
:maxdepth: 1
|
||||||
|
:glob:
|
||||||
|
|
||||||
*
|
*
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_iot-data:
|
.. _implementedservice_iot-data:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
iot-data
|
iot-data
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_iotdata
|
||||||
|
def test_iot-data_behaviour:
|
||||||
|
boto3.client("iot-data")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] delete_thing_shadow
|
- [X] delete_thing_shadow
|
||||||
after deleting, get_thing_shadow will raise ResourceNotFound.
|
after deleting, get_thing_shadow will raise ResourceNotFound.
|
||||||
But version of the shadow keep increasing...
|
But version of the shadow keep increasing...
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_iot:
|
.. _implementedservice_iot:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
iot
|
iot
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_iot
|
||||||
|
def test_iot_behaviour:
|
||||||
|
boto3.client("iot")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_certificate_transfer
|
- [ ] accept_certificate_transfer
|
||||||
- [ ] add_thing_to_billing_group
|
- [ ] add_thing_to_billing_group
|
||||||
- [X] add_thing_to_thing_group
|
- [X] add_thing_to_thing_group
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_kinesis-video-archived-media:
|
.. _implementedservice_kinesis-video-archived-media:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============================
|
============================
|
||||||
kinesis-video-archived-media
|
kinesis-video-archived-media
|
||||||
============================
|
============================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_kinesisvideoarchivedmedia
|
||||||
|
def test_kinesis-video-archived-media_behaviour:
|
||||||
|
boto3.client("kinesis-video-archived-media")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] get_clip
|
- [X] get_clip
|
||||||
- [X] get_dash_streaming_session_url
|
- [X] get_dash_streaming_session_url
|
||||||
- [X] get_hls_streaming_session_url
|
- [X] get_hls_streaming_session_url
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_kinesis:
|
.. _implementedservice_kinesis:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=======
|
=======
|
||||||
kinesis
|
kinesis
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_kinesis
|
||||||
|
def test_kinesis_behaviour:
|
||||||
|
boto3.client("kinesis")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_tags_to_stream
|
- [X] add_tags_to_stream
|
||||||
- [X] create_stream
|
- [X] create_stream
|
||||||
- [X] decrease_stream_retention_period
|
- [X] decrease_stream_retention_period
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_kinesisvideo:
|
.. _implementedservice_kinesisvideo:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============
|
============
|
||||||
kinesisvideo
|
kinesisvideo
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_kinesisvideo
|
||||||
|
def test_kinesisvideo_behaviour:
|
||||||
|
boto3.client("kinesisvideo")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_signaling_channel
|
- [ ] create_signaling_channel
|
||||||
- [X] create_stream
|
- [X] create_stream
|
||||||
- [ ] delete_signaling_channel
|
- [ ] delete_signaling_channel
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_kms:
|
.. _implementedservice_kms:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
kms
|
kms
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_kms
|
||||||
|
def test_kms_behaviour:
|
||||||
|
boto3.client("kms")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] cancel_key_deletion
|
- [X] cancel_key_deletion
|
||||||
- [ ] connect_custom_key_store
|
- [ ] connect_custom_key_store
|
||||||
- [ ] create_alias
|
- [ ] create_alias
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_lambda:
|
.. _implementedservice_lambda:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
======
|
======
|
||||||
lambda
|
lambda
|
||||||
======
|
======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_lambda
|
||||||
|
def test_lambda_behaviour:
|
||||||
|
boto3.client("lambda")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_layer_version_permission
|
- [ ] add_layer_version_permission
|
||||||
- [X] add_permission
|
- [X] add_permission
|
||||||
- [ ] create_alias
|
- [ ] create_alias
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_logs:
|
.. _implementedservice_logs:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
====
|
====
|
||||||
logs
|
logs
|
||||||
====
|
====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_logs
|
||||||
|
def test_logs_behaviour:
|
||||||
|
boto3.client("logs")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] associate_kms_key
|
- [ ] associate_kms_key
|
||||||
- [ ] cancel_export_task
|
- [ ] cancel_export_task
|
||||||
- [ ] create_export_task
|
- [ ] create_export_task
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_managedblockchain:
|
.. _implementedservice_managedblockchain:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=================
|
=================
|
||||||
managedblockchain
|
managedblockchain
|
||||||
=================
|
=================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_managedblockchain
|
||||||
|
def test_managedblockchain_behaviour:
|
||||||
|
boto3.client("managedblockchain")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_member
|
- [X] create_member
|
||||||
- [X] create_network
|
- [X] create_network
|
||||||
- [X] create_node
|
- [X] create_node
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_mediaconnect:
|
.. _implementedservice_mediaconnect:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============
|
============
|
||||||
mediaconnect
|
mediaconnect
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_mediaconnect
|
||||||
|
def test_mediaconnect_behaviour:
|
||||||
|
boto3.client("mediaconnect")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_flow_media_streams
|
- [ ] add_flow_media_streams
|
||||||
- [X] add_flow_outputs
|
- [X] add_flow_outputs
|
||||||
- [ ] add_flow_sources
|
- [ ] add_flow_sources
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_medialive:
|
.. _implementedservice_medialive:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=========
|
=========
|
||||||
medialive
|
medialive
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_medialive
|
||||||
|
def test_medialive_behaviour:
|
||||||
|
boto3.client("medialive")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_input_device_transfer
|
- [ ] accept_input_device_transfer
|
||||||
- [ ] batch_delete
|
- [ ] batch_delete
|
||||||
- [ ] batch_start
|
- [ ] batch_start
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_mediapackage:
|
.. _implementedservice_mediapackage:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
============
|
============
|
||||||
mediapackage
|
mediapackage
|
||||||
============
|
============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_mediapackage
|
||||||
|
def test_mediapackage_behaviour:
|
||||||
|
boto3.client("mediapackage")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] configure_logs
|
- [ ] configure_logs
|
||||||
- [X] create_channel
|
- [X] create_channel
|
||||||
- [ ] create_harvest_job
|
- [ ] create_harvest_job
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_mediastore-data:
|
.. _implementedservice_mediastore-data:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===============
|
===============
|
||||||
mediastore-data
|
mediastore-data
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_mediastoredata
|
||||||
|
def test_mediastore-data_behaviour:
|
||||||
|
boto3.client("mediastore-data")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] delete_object
|
- [X] delete_object
|
||||||
- [ ] describe_object
|
- [ ] describe_object
|
||||||
- [X] get_object
|
- [X] get_object
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_mediastore:
|
.. _implementedservice_mediastore:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
mediastore
|
mediastore
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_mediastore
|
||||||
|
def test_mediastore_behaviour:
|
||||||
|
boto3.client("mediastore")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_container
|
- [X] create_container
|
||||||
- [X] delete_container
|
- [X] delete_container
|
||||||
- [ ] delete_container_policy
|
- [ ] delete_container_policy
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_opsworks:
|
.. _implementedservice_opsworks:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
opsworks
|
opsworks
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_opsworks
|
||||||
|
def test_opsworks_behaviour:
|
||||||
|
boto3.client("opsworks")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] assign_instance
|
- [ ] assign_instance
|
||||||
- [ ] assign_volume
|
- [ ] assign_volume
|
||||||
- [ ] associate_elastic_ip
|
- [ ] associate_elastic_ip
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_organizations:
|
.. _implementedservice_organizations:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=============
|
=============
|
||||||
organizations
|
organizations
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_organizations
|
||||||
|
def test_organizations_behaviour:
|
||||||
|
boto3.client("organizations")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_handshake
|
- [ ] accept_handshake
|
||||||
- [X] attach_policy
|
- [X] attach_policy
|
||||||
- [ ] cancel_handshake
|
- [ ] cancel_handshake
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_polly:
|
.. _implementedservice_polly:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=====
|
=====
|
||||||
polly
|
polly
|
||||||
=====
|
=====
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_polly
|
||||||
|
def test_polly_behaviour:
|
||||||
|
boto3.client("polly")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] delete_lexicon
|
- [X] delete_lexicon
|
||||||
- [X] describe_voices
|
- [X] describe_voices
|
||||||
- [X] get_lexicon
|
- [X] get_lexicon
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ram:
|
.. _implementedservice_ram:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ram
|
ram
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ram
|
||||||
|
def test_ram_behaviour:
|
||||||
|
boto3.client("ram")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_resource_share_invitation
|
- [ ] accept_resource_share_invitation
|
||||||
- [ ] associate_resource_share
|
- [ ] associate_resource_share
|
||||||
- [ ] associate_resource_share_permission
|
- [ ] associate_resource_share_permission
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_rds:
|
.. _implementedservice_rds:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
rds
|
rds
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_rds2
|
||||||
|
def test_rds_behaviour:
|
||||||
|
boto3.client("rds")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_role_to_db_cluster
|
- [ ] add_role_to_db_cluster
|
||||||
- [ ] add_role_to_db_instance
|
- [ ] add_role_to_db_instance
|
||||||
- [ ] add_source_identifier_to_subscription
|
- [ ] add_source_identifier_to_subscription
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_redshift:
|
.. _implementedservice_redshift:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========
|
========
|
||||||
redshift
|
redshift
|
||||||
========
|
========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_redshift
|
||||||
|
def test_redshift_behaviour:
|
||||||
|
boto3.client("redshift")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] accept_reserved_node_exchange
|
- [ ] accept_reserved_node_exchange
|
||||||
- [ ] add_partner
|
- [ ] add_partner
|
||||||
- [ ] associate_data_share_consumer
|
- [ ] associate_data_share_consumer
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_resource-groups:
|
.. _implementedservice_resource-groups:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===============
|
===============
|
||||||
resource-groups
|
resource-groups
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_resourcegroups
|
||||||
|
def test_resource-groups_behaviour:
|
||||||
|
boto3.client("resource-groups")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_group
|
- [X] create_group
|
||||||
- [X] delete_group
|
- [X] delete_group
|
||||||
- [X] get_group
|
- [X] get_group
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_resourcegroupstaggingapi:
|
.. _implementedservice_resourcegroupstaggingapi:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
========================
|
========================
|
||||||
resourcegroupstaggingapi
|
resourcegroupstaggingapi
|
||||||
========================
|
========================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_resourcegroupstaggingapi
|
||||||
|
def test_resourcegroupstaggingapi_behaviour:
|
||||||
|
boto3.client("resourcegroupstaggingapi")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] describe_report_creation
|
- [ ] describe_report_creation
|
||||||
- [ ] get_compliance_summary
|
- [ ] get_compliance_summary
|
||||||
- [X] get_resources
|
- [X] get_resources
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_route53:
|
.. _implementedservice_route53:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=======
|
=======
|
||||||
route53
|
route53
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_route53
|
||||||
|
def test_route53_behaviour:
|
||||||
|
boto3.client("route53")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] activate_key_signing_key
|
- [ ] activate_key_signing_key
|
||||||
- [ ] associate_vpc_with_hosted_zone
|
- [ ] associate_vpc_with_hosted_zone
|
||||||
- [X] change_resource_record_sets
|
- [X] change_resource_record_sets
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_s3:
|
.. _implementedservice_s3:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==
|
==
|
||||||
s3
|
s3
|
||||||
==
|
==
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_s3
|
||||||
|
def test_s3_behaviour:
|
||||||
|
boto3.client("s3")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] abort_multipart_upload
|
- [X] abort_multipart_upload
|
||||||
- [X] complete_multipart_upload
|
- [X] complete_multipart_upload
|
||||||
- [X] copy_object
|
- [X] copy_object
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_sagemaker:
|
.. _implementedservice_sagemaker:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=========
|
=========
|
||||||
sagemaker
|
sagemaker
|
||||||
=========
|
=========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_sagemaker
|
||||||
|
def test_sagemaker_behaviour:
|
||||||
|
boto3.client("sagemaker")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_association
|
- [ ] add_association
|
||||||
- [ ] add_tags
|
- [ ] add_tags
|
||||||
- [X] associate_trial_component
|
- [X] associate_trial_component
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_secretsmanager:
|
.. _implementedservice_secretsmanager:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==============
|
==============
|
||||||
secretsmanager
|
secretsmanager
|
||||||
==============
|
==============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_secretsmanager
|
||||||
|
def test_secretsmanager_behaviour:
|
||||||
|
boto3.client("secretsmanager")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] cancel_rotate_secret
|
- [ ] cancel_rotate_secret
|
||||||
- [X] create_secret
|
- [X] create_secret
|
||||||
- [ ] delete_resource_policy
|
- [ ] delete_resource_policy
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ses:
|
.. _implementedservice_ses:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ses
|
ses
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ses
|
||||||
|
def test_ses_behaviour:
|
||||||
|
boto3.client("ses")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] clone_receipt_rule_set
|
- [ ] clone_receipt_rule_set
|
||||||
- [X] create_configuration_set
|
- [X] create_configuration_set
|
||||||
- [X] create_configuration_set_event_destination
|
- [X] create_configuration_set_event_destination
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_sns:
|
.. _implementedservice_sns:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
sns
|
sns
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_sns
|
||||||
|
def test_sns_behaviour:
|
||||||
|
boto3.client("sns")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_permission
|
- [X] add_permission
|
||||||
- [ ] check_if_phone_number_is_opted_out
|
- [ ] check_if_phone_number_is_opted_out
|
||||||
- [ ] confirm_subscription
|
- [ ] confirm_subscription
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_sqs:
|
.. _implementedservice_sqs:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
sqs
|
sqs
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_sqs
|
||||||
|
def test_sqs_behaviour:
|
||||||
|
boto3.client("sqs")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_permission
|
- [X] add_permission
|
||||||
- [X] change_message_visibility
|
- [X] change_message_visibility
|
||||||
- [ ] change_message_visibility_batch
|
- [ ] change_message_visibility_batch
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_ssm:
|
.. _implementedservice_ssm:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
ssm
|
ssm
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_ssm
|
||||||
|
def test_ssm_behaviour:
|
||||||
|
boto3.client("ssm")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] add_tags_to_resource
|
- [X] add_tags_to_resource
|
||||||
- [ ] associate_ops_item_related_item
|
- [ ] associate_ops_item_related_item
|
||||||
- [ ] cancel_command
|
- [ ] cancel_command
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_stepfunctions:
|
.. _implementedservice_stepfunctions:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=============
|
=============
|
||||||
stepfunctions
|
stepfunctions
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_stepfunctions
|
||||||
|
def test_stepfunctions_behaviour:
|
||||||
|
boto3.client("stepfunctions")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_activity
|
- [ ] create_activity
|
||||||
- [X] create_state_machine
|
- [X] create_state_machine
|
||||||
- [ ] delete_activity
|
- [ ] delete_activity
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_sts:
|
.. _implementedservice_sts:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
sts
|
sts
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_sts
|
||||||
|
def test_sts_behaviour:
|
||||||
|
boto3.client("sts")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] assume_role
|
- [X] assume_role
|
||||||
- [X] assume_role_with_saml
|
- [X] assume_role_with_saml
|
||||||
- [X] assume_role_with_web_identity
|
- [X] assume_role_with_web_identity
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_support:
|
.. _implementedservice_support:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=======
|
=======
|
||||||
support
|
support
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_support
|
||||||
|
def test_support_behaviour:
|
||||||
|
boto3.client("support")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] add_attachments_to_set
|
- [ ] add_attachments_to_set
|
||||||
- [ ] add_communication_to_case
|
- [ ] add_communication_to_case
|
||||||
- [X] create_case
|
- [X] create_case
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_swf:
|
.. _implementedservice_swf:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
===
|
===
|
||||||
swf
|
swf
|
||||||
===
|
===
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_swf
|
||||||
|
def test_swf_behaviour:
|
||||||
|
boto3.client("swf")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] count_closed_workflow_executions
|
- [ ] count_closed_workflow_executions
|
||||||
- [ ] count_open_workflow_executions
|
- [ ] count_open_workflow_executions
|
||||||
- [X] count_pending_activity_tasks
|
- [X] count_pending_activity_tasks
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_timestream-write:
|
.. _implementedservice_timestream-write:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
================
|
================
|
||||||
timestream-write
|
timestream-write
|
||||||
================
|
================
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_timestreamwrite
|
||||||
|
def test_timestream-write_behaviour:
|
||||||
|
boto3.client("timestream-write")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [X] create_database
|
- [X] create_database
|
||||||
- [X] create_table
|
- [X] create_table
|
||||||
- [X] delete_database
|
- [X] delete_database
|
||||||
|
@ -1,11 +1,32 @@
|
|||||||
.. _implementedservice_transcribe:
|
.. _implementedservice_transcribe:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
==========
|
==========
|
||||||
transcribe
|
transcribe
|
||||||
==========
|
==========
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_transcribe
|
||||||
|
def test_transcribe_behaviour:
|
||||||
|
boto3.client("transcribe")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] create_call_analytics_category
|
- [ ] create_call_analytics_category
|
||||||
- [ ] create_language_model
|
- [ ] create_language_model
|
||||||
- [X] create_medical_vocabulary
|
- [X] create_medical_vocabulary
|
||||||
|
@ -1,5 +1,13 @@
|
|||||||
.. _implementedservice_wafv2:
|
.. _implementedservice_wafv2:
|
||||||
|
|
||||||
|
.. |start-h3| raw:: html
|
||||||
|
|
||||||
|
<h3>
|
||||||
|
|
||||||
|
.. |end-h3| raw:: html
|
||||||
|
|
||||||
|
</h3>
|
||||||
|
|
||||||
=====
|
=====
|
||||||
wafv2
|
wafv2
|
||||||
=====
|
=====
|
||||||
@ -8,6 +16,19 @@ wafv2
|
|||||||
https://docs.aws.amazon.com/waf/latest/APIReference/API_Operations_AWS_WAFV2.html
|
https://docs.aws.amazon.com/waf/latest/APIReference/API_Operations_AWS_WAFV2.html
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Example usage |end-h3|
|
||||||
|
|
||||||
|
.. sourcecode:: python
|
||||||
|
|
||||||
|
@mock_wafv2
|
||||||
|
def test_wafv2_behaviour:
|
||||||
|
boto3.client("wafv2")
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|start-h3| Implemented features for this service |end-h3|
|
||||||
|
|
||||||
- [ ] associate_web_acl
|
- [ ] associate_web_acl
|
||||||
- [ ] check_capacity
|
- [ ] check_capacity
|
||||||
- [ ] create_ip_set
|
- [ ] create_ip_set
|
||||||
|
@ -28,11 +28,31 @@ Additional Resources
|
|||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
:hidden:
|
:hidden:
|
||||||
:glob:
|
:caption: Getting Started
|
||||||
|
|
||||||
docs/getting_started
|
docs/getting_started
|
||||||
docs/server_mode
|
docs/server_mode
|
||||||
docs/boto
|
docs/boto
|
||||||
docs/iam
|
docs/iam
|
||||||
docs/aws_config
|
docs/aws_config
|
||||||
docs/services/index
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:hidden:
|
||||||
|
:caption: Implemented Services
|
||||||
|
|
||||||
|
docs/services/index
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:hidden:
|
||||||
|
:glob:
|
||||||
|
:caption: Contributing to Moto
|
||||||
|
|
||||||
|
docs/contributing/index
|
||||||
|
docs/contributing/installation
|
||||||
|
docs/contributing/architecture
|
||||||
|
docs/contributing/new_feature
|
||||||
|
docs/contributing/development_tips
|
||||||
|
docs/contributing/checklist
|
||||||
|
docs/contributing/faq
|
||||||
|
@ -19,24 +19,26 @@ def get_moto_implementation(service_name):
|
|||||||
if service_name in alternative_service_names
|
if service_name in alternative_service_names
|
||||||
else service_name
|
else service_name
|
||||||
)
|
)
|
||||||
|
mock = None
|
||||||
|
mock_name = None
|
||||||
if hasattr(moto, "mock_{}".format(alt_service_name)):
|
if hasattr(moto, "mock_{}".format(alt_service_name)):
|
||||||
mock = getattr(moto, "mock_{}".format(alt_service_name))
|
mock_name = "mock_{}".format(alt_service_name)
|
||||||
|
mock = getattr(moto, mock_name)
|
||||||
elif hasattr(moto, "mock_{}".format(service_name)):
|
elif hasattr(moto, "mock_{}".format(service_name)):
|
||||||
mock = getattr(moto, "mock_{}".format(service_name))
|
mock_name = "mock_{}".format(service_name)
|
||||||
else:
|
mock = getattr(moto, mock_name)
|
||||||
mock = None
|
|
||||||
if mock is None:
|
if mock is None:
|
||||||
return None
|
return None, None
|
||||||
backends = list(mock().backends.values())
|
backends = list(mock().backends.values())
|
||||||
if backends:
|
if backends:
|
||||||
return backends[0]
|
return backends[0], mock_name
|
||||||
|
|
||||||
|
|
||||||
def calculate_extended_implementation_coverage():
|
def calculate_extended_implementation_coverage():
|
||||||
service_names = Session().get_available_services()
|
service_names = Session().get_available_services()
|
||||||
coverage = {}
|
coverage = {}
|
||||||
for service_name in service_names:
|
for service_name in service_names:
|
||||||
moto_client = get_moto_implementation(service_name)
|
moto_client, mock_name = get_moto_implementation(service_name)
|
||||||
real_client = boto3.client(service_name, region_name="us-east-1")
|
real_client = boto3.client(service_name, region_name="us-east-1")
|
||||||
implemented = dict()
|
implemented = dict()
|
||||||
not_implemented = []
|
not_implemented = []
|
||||||
@ -52,6 +54,7 @@ def calculate_extended_implementation_coverage():
|
|||||||
|
|
||||||
coverage[service_name] = {
|
coverage[service_name] = {
|
||||||
"docs": moto_client.__doc__,
|
"docs": moto_client.__doc__,
|
||||||
|
"name": mock_name,
|
||||||
"implemented": implemented,
|
"implemented": implemented,
|
||||||
"not_implemented": not_implemented,
|
"not_implemented": not_implemented,
|
||||||
}
|
}
|
||||||
@ -62,7 +65,7 @@ def calculate_implementation_coverage():
|
|||||||
service_names = Session().get_available_services()
|
service_names = Session().get_available_services()
|
||||||
coverage = {}
|
coverage = {}
|
||||||
for service_name in service_names:
|
for service_name in service_names:
|
||||||
moto_client = get_moto_implementation(service_name)
|
moto_client, _ = get_moto_implementation(service_name)
|
||||||
real_client = boto3.client(service_name, region_name="us-east-1")
|
real_client = boto3.client(service_name, region_name="us-east-1")
|
||||||
implemented = []
|
implemented = []
|
||||||
not_implemented = []
|
not_implemented = []
|
||||||
@ -184,6 +187,14 @@ def write_implementation_coverage_to_docs(coverage):
|
|||||||
file.write(f".. _implementedservice_{shorthand}:\n")
|
file.write(f".. _implementedservice_{shorthand}:\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
|
|
||||||
|
file.write(".. |start-h3| raw:: html\n\n")
|
||||||
|
file.write(" <h3>")
|
||||||
|
file.write("\n\n")
|
||||||
|
|
||||||
|
file.write(".. |end-h3| raw:: html\n\n")
|
||||||
|
file.write(" </h3>")
|
||||||
|
file.write("\n\n")
|
||||||
|
|
||||||
title = f"{service_name}"
|
title = f"{service_name}"
|
||||||
file.write("=" * len(title) + "\n")
|
file.write("=" * len(title) + "\n")
|
||||||
file.write(title + "\n")
|
file.write(title + "\n")
|
||||||
@ -193,6 +204,19 @@ def write_implementation_coverage_to_docs(coverage):
|
|||||||
file.write(coverage[service_name].get("docs") or "")
|
file.write(coverage[service_name].get("docs") or "")
|
||||||
file.write("\n\n")
|
file.write("\n\n")
|
||||||
|
|
||||||
|
file.write("|start-h3| Example usage |end-h3|\n\n")
|
||||||
|
file.write(f""".. sourcecode:: python
|
||||||
|
|
||||||
|
@{coverage[service_name]['name']}
|
||||||
|
def test_{service_name}_behaviour:
|
||||||
|
boto3.client("{service_name}")
|
||||||
|
...
|
||||||
|
|
||||||
|
""")
|
||||||
|
file.write("\n\n")
|
||||||
|
|
||||||
|
file.write("|start-h3| Implemented features for this service |end-h3|\n\n")
|
||||||
|
|
||||||
for op in operations:
|
for op in operations:
|
||||||
if op in implemented:
|
if op in implemented:
|
||||||
file.write("- [X] {}\n".format(op))
|
file.write("- [X] {}\n".format(op))
|
||||||
@ -203,6 +227,7 @@ def write_implementation_coverage_to_docs(coverage):
|
|||||||
file.write("- [ ] {}\n".format(op))
|
file.write("- [ ] {}\n".format(op))
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
|
|
||||||
|
|
||||||
with open(implementation_coverage_file, "w+") as file:
|
with open(implementation_coverage_file, "w+") as file:
|
||||||
file.write(".. _implemented_services:\n")
|
file.write(".. _implemented_services:\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
@ -212,20 +237,16 @@ def write_implementation_coverage_to_docs(coverage):
|
|||||||
file.write("Implemented Services\n")
|
file.write("Implemented Services\n")
|
||||||
file.write("====================\n")
|
file.write("====================\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
|
file.write("Please see a list of all currently supported services. Each service will have a list of the endpoints that are implemented.\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
|
|
||||||
for service_name in sorted(coverage):
|
|
||||||
implemented = coverage.get(service_name)["implemented"]
|
|
||||||
if len(implemented) == 0:
|
|
||||||
continue
|
|
||||||
file.write(f" - :doc:`{service_name }`\n")
|
|
||||||
|
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
file.write(".. toctree::\n")
|
file.write(".. toctree::\n")
|
||||||
file.write(" :hidden:\n")
|
file.write(" :titlesonly:\n")
|
||||||
file.write(" :glob:\n")
|
file.write(" :maxdepth: 1\n")
|
||||||
|
file.write(" :glob:\n")
|
||||||
file.write("\n")
|
file.write("\n")
|
||||||
file.write(" *\n")
|
file.write(" *\n")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
@ -518,6 +518,13 @@ def insert_codes(service, operation, api_protocol):
|
|||||||
|
|
||||||
@click.command()
|
@click.command()
|
||||||
def main():
|
def main():
|
||||||
|
|
||||||
|
click.echo("This script uses the click-module.\n")
|
||||||
|
click.echo(" - Start typing the name of the service you want to extend\n"
|
||||||
|
" - Use Tab to auto-complete the first suggest service\n"
|
||||||
|
" - Use the up and down-arrows on the keyboard to select something from the dropdown\n"
|
||||||
|
" - Press enter to continue\n")
|
||||||
|
|
||||||
"""Create basic files needed for the user's choice of service and op."""
|
"""Create basic files needed for the user's choice of service and op."""
|
||||||
service, operation = select_service_and_operation()
|
service, operation = select_service_and_operation()
|
||||||
|
|
||||||
@ -535,9 +542,9 @@ def main():
|
|||||||
)
|
)
|
||||||
|
|
||||||
click.echo(
|
click.echo(
|
||||||
"Remaining setup:\n"
|
"\n"
|
||||||
'- Add the mock into "docs/index.rst",\n'
|
"Remaining steps after development is complete:\n"
|
||||||
'- Add the mock into "IMPLEMENTATION_COVERAGE.md",\n'
|
'- Run scripts/implementation_coverage.py,\n'
|
||||||
"- Run scripts/update_backend_index.py."
|
"- Run scripts/update_backend_index.py."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user