51 Commits

Author SHA1 Message Date
Bert Blommers
037973c8d9
Batch - remove potential race condition (#3965) 2021-05-28 06:55:01 +01:00
Thomas Maschler
d635c78bd1
AWS Batch enhancements (#3956)
* Check exit status of container

* Added support for job dependencies

* batch container overrides

* add AWS_BATCH_JOB_ID to container env variables

* lint with black

* refactor batch dependency test

* refactor batch dependency test

* fix index

Co-authored-by: jterry64 <justin.terry@wri.org>
Co-authored-by: Daniel Mannarino <daniel.mannarino@gmail.com>
2021-05-26 08:52:09 +01:00
rajinder
4b1c7225b6
added feature update_usage_plan and fixed some lint errors (#3727)
Co-authored-by: rajinder saini <rajinder.saini@c02vt5k2htd6.corp.climate.com>
2021-02-25 07:46:11 +00:00
Nuwan Goonasekera
a0d7a943ee
Fix unknown instance type (#3710)
* Use apiname when comparing unknown instance ids

* Use get_instance_types API to populate instance_types.json

* Fix scope of instances array when retrieving instance types
2021-02-22 10:21:59 +00:00
Chih-Hsuan Yen
2000f6654f
Support Podman for mocking Lambda (#3702)
* Support Podman for mocking Lambda

Podman supports all Docker APIs used in moto since version 3.0. Note
that Podman requires pulling the image before creating a container
using a fully-qualified image name (e.g., "docker.io/library/busybox"
instead of "busybox").

Test plan:
$ podman system service -t 0
$ DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock" pytest

Fixes https://github.com/spulec/moto/issues/3276

* Run black

* Python 2 compatibility

* Address review comments and improve parse_image_ref
2021-02-18 08:58:20 +00:00
Brian Pandola
f4b81e69b8
Address pytest warnings (#3629)
* Address `boto` deprecation warnings

This commit eliminates the following warning:

../boto/ec2/connection.py:582:
  PendingDeprecationWarning: The current get_all_instances implementation will be replaced with get_all_reservations.

`boto` isn't likely to ever make good on this warning, but doing the replacement will
declutter the `moto` test output.

* Remove `invoke_lambda` tracebacks from unit test logging

If an exception is encountered, the details are returned in the response payload.
Printing the traceback was just adding noise to the pytest output.

* Use known AMIs in unit tests

This commit eliminates the following warning in the pytest output:

`PendingDeprecationWarning: Could not find AMI with image-id:ami-123456, in the near future this will cause an error.`

Known, pre-loaded AMI image ids are used instead of random ids that don't actually
exist in the moto backend.  The integrity of the tests is unaffected by this change.

A test has been added to provide explicit coverage of the PendingDeprecationWarning
raised when an invalid AMI image id is passed to moto.
2021-01-29 11:31:56 +00:00
Brian Pandola
f7467164e4
Fix Race Condition in batch:SubmitJob (#3480)
* Extract Duplicate Code into Helper Method

DRY up the tests and replace the arbitrary `sleep()` calls with a more
explicit check before progressing.

* Improve Testing of batch:TerminateJob

The test now confirms that the job was terminated by sandwiching a `sleep`
command between two `echo` commands.  In addition to the original checks
of the terminated job status/reason, the test now asserts that only the
first echo command succeeded, confirming that the job was indeed terminated
while in progress.

* Fix Race Condition in batch:SubmitJob

The `test_submit_job` in `test_batch.py` kicks off a job, calls `describe_jobs`
in a loop until the job status returned is SUCCEEDED, and then asserts against
the logged events.

The backend code that runs the submitted job does so in a separate thread. If
the job was successful, the job status was being set to SUCCEEDED *before* the
event logs had been written to the logging backend.

As a result, it was possible for the primary thread running the test to detect
that the job was successful immediately after the secondary thread had updated
the job status but before the secondary thread had written the logs to the
logging backend.  Under the right conditions, this could cause the subsequent
logging assertions in the primary thread to fail.

Additionally, the code that collected the logs from the container was using
a "dodgy hack" of time.sleep() and a modulo-based conditional that was
ultimately non-deterministic and could result in log messages being dropped
or duplicated in certain scenarios.

In order to address these issues, this commit does the following:

* Carefully re-orders any code that sets a job status or timestamp
  to avoid any obvious race conditions.
* Removes the "dodgy hack" in favor of a much more straightforward
  (and less error-prone) method of collecting logs from the container.
* Removes arbitrary and unnecessary calls to time.sleep()

Before applying any changes, the flaky test was failing about 12% of the
time.  Putting a sleep() call between setting the `job_status` to SUCCEEDED
and collecting the logs, resulted in a 100% failure rate.  Simply moving
the code that sets the job status to SUCCEEDED to the end of the code block,
dropped the failure rate to ~2%.  Finally, removing the log collection
hack allowed the test suite to run ~1000 times without a single failure.

Taken in aggregate, these changes make the batch backend more deterministic
and should put the nail in the coffin of this flaky test.

Closes #3475
2020-11-18 10:49:25 +00:00
Steve Pulec
47dbad291e
Merge pull request #3439 from bblommers/techdebt-remove-duplicate-awserrors
Tech Debt - Remove duplicate AWSError classes
2020-11-09 19:59:02 -06:00
Bert Blommers
b5b1c45d68 Rename DockerUtilities to differentiate from docker-dependency 2020-11-09 16:31:18 +00:00
Bert Blommers
8d3cc3ef32 #3359 - Reuse Docker-on-request for AWSLambda and Batch 2020-11-08 15:16:53 +00:00
Bert Blommers
032b9c4008 Tech Debt - Remove duplicate AWSError classes 2020-11-05 11:20:18 +00:00
Adam Richie-Halford
9a9a1d8413
Decentralize cloudformation naming responsibilities (#3201)
* #3127 - Decentralize CF naming responsibilities

* Decentralize CloudFormation naming responsibilities

* Update URLs in cloudformation_resource_type functions

* Fix flake8 errors

* Black formatting

* Add a bunch of imports to populate CloudFormationModel.__subclasses__

* Add noqa to s3 models import statement in cloudformation/parsing.py

* Black formatting

* Remove debugging print statement

Co-authored-by: Bert Blommers <info@bertblommers.nl>
2020-08-01 15:23:36 +01:00
Bert Blommers
bed769a387
Tech debt - increase test timeouts to remove intermittant test failures (#3146) 2020-07-17 12:11:47 +01:00
Adam Richie-Halford
890c3b4954
Make batch.utils.lowercase_first_key() recursive (#3124)
* Make batch.utils.lowercase_first_key() recursive

* Reformat using black

* Add test of recursive lowercase_first_key()

* Fix typo in ttest_batch/test_cloud_formation.py
2020-07-14 11:29:49 +01:00
Bert Blommers
1b031aeeb0 Linting 2020-03-12 14:07:34 +00:00
Bert Blommers
bb5a54ca4b Batch - Fix tests 2020-03-12 13:37:46 +00:00
mzgierski
bfeaf73109 Fix the AWS-Batch describe_jobs problem with not-yet-started jobs. 2020-03-12 12:29:01 +00:00
gruebel
d7ba355a65 Add missing regions to all services 2019-12-26 17:12:22 +01:00
Fabio Dias
fd9ac4b9a5 ACCOUNT_ID moved to moto.core, MOTO_ACCOUNT_ID env var override 2019-12-16 21:05:29 -05:00
Fabio Dias
b83a750630 Added references to moto.iam.models.ACCOUNT_ID instead of hardcoded id 2019-12-16 19:56:11 -05:00
Mike Grima
7b63b2818e
Merge pull request #2631 from kislyuk/patch-2
Batch: computeResources.instanceRole is an instance profile
2019-12-14 13:46:08 -08:00
Mike Grima
d0e555df41
Merge pull request #2636 from kislyuk/akislyuk-pass-container-params
Batch: derive and pass container params to Docker
2019-12-14 13:45:10 -08:00
Mike Grima
fb350bbcef
Merge pull request #2632 from kislyuk/patch-3
Batch: job definitions default to ACTIVE
2019-12-13 13:33:56 -08:00
Andrey Kislyuk
6357302209 Pass container params to docker 2019-12-13 18:53:50 +00:00
Andrey Kislyuk
c904c906f6
Batch: explicitly specify json-file log driver
This is necessary when the Docker daemon on the host is configured to use a different log driver by default.
2019-12-12 13:59:48 -08:00
Andrey Kislyuk
4512872354
Batch: job definitions default to ACTIVE 2019-12-11 15:03:46 -08:00
Andrey Kislyuk
ad234f225f
Batch: computeResources.instanceRole is an instance profile
It's not an IAM role (the API parameter name in Batch is a misnomer).

Validation by matching against known role ARNs will always fail.
Scan the known instance profile ARNs instead.
2019-12-11 14:45:10 -08:00
Steve Pulec
a9fe5d462c More linting. 2019-11-22 09:39:07 -05:00
Steve Pulec
72da9e96c2 Lint. 2019-11-21 17:53:58 -05:00
Asher Foa
3bb31c84fd Fix some typos 2019-11-16 12:31:45 -08:00
Asher Foa
96e5b1993d Run black on moto & test directories. 2019-10-31 10:36:05 -07:00
Berislav Kovacki
a35a55ec26 Add option to call batch submit_job with job definition name only
* Add option to call batch submit_job with job definition name only
* Fix bug which causes register_job_definition not to increment job
revision number after a second revision
2019-08-06 22:13:52 +02:00
adam davis
b66965e6e8 Adding cloudformation-validate. Cfn-lint does the heavy lifting. 2018-11-05 15:16:32 -08:00
Tom Grace
94fa94c2df
1606 Add additional fields to Batch job status endpoint 2018-05-02 13:39:54 +01:00
Terry Cain
ca3a3633e9
Called terminatejob from canceljob 2017-10-22 13:36:23 +01:00
Terry Cain
629503398c
Added JobDefinition to cloudformation 2017-10-20 19:10:31 +01:00
Terry Cain
9805a279c7
Added JobQueue to cloudformation 2017-10-20 01:06:30 +01:00
Terry Cain
453da4c8b3
Added CreateEnvironment to cloudformation 2017-10-20 00:51:04 +01:00
Terry Cain
e3024ae1ba
Implemented Terminate, Cancel and List jobs 2017-10-11 23:46:27 +01:00
Terry Cain
e135344f0c
Added simple SubmitJob and DescribeJobs 2017-10-06 01:21:29 +01:00
Terry Cain
6eb755029c
fix flake8 2017-10-05 00:09:10 +01:00
Terry Cain
0ca3fcc7a2
Added DescribeJobDefinitions 2017-10-05 00:00:40 +01:00
Terry Cain
558f246115
Added RegisterJobDefinition 2017-10-04 20:17:29 +01:00
Terry Cain
4a45acc216
Implemented Update and Delete job queue 2017-10-04 18:52:12 +01:00
Terry Cain
15218df12f
Added CreateJobQueue and DescribeJobQueue 2017-10-03 23:21:06 +01:00
Terry Cain
88a11b21ae
Added DeleteComputeEnvironment and UpdateComputeEnvironment 2017-10-03 22:35:30 +01:00
Terry Cain
9af88bf206
Fixed batch errors 2017-09-29 23:43:03 +01:00
Terry Cain
f95d72c37c
Finialised create compute environment + describe environments 2017-09-29 23:29:36 +01:00
Terry Cain
56e4300ad4
Added preliminary CreateComputeEnvironment 2017-09-26 22:22:59 +01:00
Terry Cain
f9c8836d54
. 2017-09-26 19:55:44 +01:00