Glue: get_jobs() (#5974)
This commit is contained in:
parent
dae4f4947e
commit
354c81b7e1
@ -2391,7 +2391,7 @@
|
||||
|
||||
## ecs
|
||||
<details>
|
||||
<summary>80% implemented</summary>
|
||||
<summary>78% implemented</summary>
|
||||
|
||||
- [X] create_capacity_provider
|
||||
- [X] create_cluster
|
||||
@ -2402,6 +2402,7 @@
|
||||
- [X] delete_capacity_provider
|
||||
- [X] delete_cluster
|
||||
- [X] delete_service
|
||||
- [ ] delete_task_definitions
|
||||
- [X] delete_task_set
|
||||
- [X] deregister_container_instance
|
||||
- [X] deregister_task_definition
|
||||
@ -3197,7 +3198,7 @@
|
||||
- [ ] get_job_bookmark
|
||||
- [X] get_job_run
|
||||
- [ ] get_job_runs
|
||||
- [ ] get_jobs
|
||||
- [X] get_jobs
|
||||
- [ ] get_mapping
|
||||
- [ ] get_ml_task_run
|
||||
- [ ] get_ml_task_runs
|
||||
@ -6880,6 +6881,7 @@
|
||||
- support-app
|
||||
- synthetics
|
||||
- timestream-query
|
||||
- tnb
|
||||
- transfer
|
||||
- translate
|
||||
- voice-id
|
||||
|
@ -36,6 +36,7 @@ ecs
|
||||
- [X] delete_capacity_provider
|
||||
- [X] delete_cluster
|
||||
- [X] delete_service
|
||||
- [ ] delete_task_definitions
|
||||
- [X] delete_task_set
|
||||
|
||||
The Force-parameter is not yet implemented
|
||||
|
@ -124,7 +124,7 @@ glue
|
||||
- [ ] get_job_bookmark
|
||||
- [X] get_job_run
|
||||
- [ ] get_job_runs
|
||||
- [ ] get_jobs
|
||||
- [X] get_jobs
|
||||
- [ ] get_mapping
|
||||
- [ ] get_ml_task_run
|
||||
- [ ] get_ml_task_runs
|
||||
|
@ -88,7 +88,7 @@ mock_firehose = lazy_load(".firehose", "mock_firehose")
|
||||
mock_forecast = lazy_load(".forecast", "mock_forecast")
|
||||
mock_greengrass = lazy_load(".greengrass", "mock_greengrass")
|
||||
mock_glacier = lazy_load(".glacier", "mock_glacier")
|
||||
mock_glue = lazy_load(".glue", "mock_glue")
|
||||
mock_glue = lazy_load(".glue", "mock_glue", boto3_name="glue")
|
||||
mock_guardduty = lazy_load(".guardduty", "mock_guardduty")
|
||||
mock_iam = lazy_load(".iam", "mock_iam")
|
||||
mock_iot = lazy_load(".iot", "mock_iot")
|
||||
|
@ -1,4 +1,4 @@
|
||||
# autogenerated by /Users/danaronson/GitHub/forks/moto/scripts/update_backend_index.py
|
||||
# autogenerated by /Users/dan/Sites/moto/scripts/update_backend_index.py
|
||||
import re
|
||||
|
||||
backend_url_patterns = [
|
||||
|
@ -69,6 +69,12 @@ class GlueBackend(BaseBackend):
|
||||
"limit_default": 100,
|
||||
"unique_attribute": "name",
|
||||
},
|
||||
"get_jobs": {
|
||||
"input_token": "next_token",
|
||||
"limit_key": "max_results",
|
||||
"limit_default": 100,
|
||||
"unique_attribute": "name",
|
||||
},
|
||||
}
|
||||
|
||||
def __init__(self, region_name, account_id):
|
||||
@ -329,6 +335,10 @@ class GlueBackend(BaseBackend):
|
||||
except KeyError:
|
||||
raise JobNotFoundException(name)
|
||||
|
||||
@paginate(pagination_model=PAGINATION_MODEL)
|
||||
def get_jobs(self):
|
||||
return [job for _, job in self.jobs.items()]
|
||||
|
||||
def start_job_run(self, name):
|
||||
job = self.get_job(name)
|
||||
return job.start_job_run()
|
||||
|
@ -343,6 +343,19 @@ class GlueResponse(BaseResponse):
|
||||
job = self.glue_backend.get_job(name)
|
||||
return json.dumps({"Job": job.as_dict()})
|
||||
|
||||
def get_jobs(self):
|
||||
next_token = self._get_param("NextToken")
|
||||
max_results = self._get_int_param("MaxResults")
|
||||
jobs, next_token = self.glue_backend.get_jobs(
|
||||
next_token=next_token, max_results=max_results
|
||||
)
|
||||
return json.dumps(
|
||||
dict(
|
||||
Jobs=[job.as_dict() for job in jobs],
|
||||
NextToken=next_token,
|
||||
)
|
||||
)
|
||||
|
||||
def start_job_run(self):
|
||||
name = self.parameters.get("JobName")
|
||||
job_run_id = self.glue_backend.start_job_run(name)
|
||||
|
@ -109,6 +109,53 @@ def test_get_job_exists():
|
||||
job.should.have.key("GlueVersion")
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_get_jobs_job_name_exists():
|
||||
client = create_glue_client()
|
||||
test_job_name = create_test_job(client)
|
||||
response = client.get_jobs()
|
||||
response["Jobs"].should.have.length_of(1)
|
||||
response["Jobs"][0].should.have.key("Name").equals(test_job_name)
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_get_jobs_with_max_results():
|
||||
client = create_glue_client()
|
||||
create_test_jobs(client, 4)
|
||||
response = client.get_jobs(MaxResults=2)
|
||||
response["Jobs"].should.have.length_of(2)
|
||||
response.should.have.key("NextToken")
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_get_jobs_from_next_token():
|
||||
client = create_glue_client()
|
||||
create_test_jobs(client, 10)
|
||||
first_response = client.get_jobs(MaxResults=3)
|
||||
response = client.get_jobs(NextToken=first_response["NextToken"])
|
||||
response["Jobs"].should.have.length_of(7)
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_get_jobs_with_max_results_greater_than_actual_results():
|
||||
client = create_glue_client()
|
||||
create_test_jobs(client, 4)
|
||||
response = client.get_jobs(MaxResults=10)
|
||||
response["Jobs"].should.have.length_of(4)
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_get_jobs_next_token_logic_does_not_create_infinite_loop():
|
||||
client = create_glue_client()
|
||||
create_test_jobs(client, 4)
|
||||
first_response = client.get_jobs(MaxResults=1)
|
||||
next_token = first_response["NextToken"]
|
||||
while next_token:
|
||||
response = client.get_jobs(NextToken=next_token)
|
||||
next_token = response.get("NextToken")
|
||||
assert not next_token
|
||||
|
||||
|
||||
@mock_glue
|
||||
def test_list_jobs_with_max_results():
|
||||
client = create_glue_client()
|
||||
|
Loading…
Reference in New Issue
Block a user