implemented get_job_document for AWS IoT
				
					
				
			This commit is contained in:
		
							parent
							
								
									88596518f5
								
							
						
					
					
						commit
						c49a8387bd
					
				
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							@ -610,6 +610,9 @@ class IoTBackend(BaseBackend):
 | 
				
			|||||||
    def describe_job(self, job_id):
 | 
					    def describe_job(self, job_id):
 | 
				
			||||||
        return self.jobs[job_id]
 | 
					        return self.jobs[job_id]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_job_document(self, job_id):
 | 
				
			||||||
 | 
					        return self.jobs[job_id]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
available_regions = boto3.session.Session().get_available_regions("iot")
 | 
					available_regions = boto3.session.Session().get_available_regions("iot")
 | 
				
			||||||
iot_backends = {region: IoTBackend(region) for region in available_regions}
 | 
					iot_backends = {region: IoTBackend(region) for region in available_regions}
 | 
				
			||||||
 | 
				
			|||||||
@ -149,6 +149,16 @@ class IoTResponse(BaseResponse):
 | 
				
			|||||||
                targetSelection=job.target_selection
 | 
					                targetSelection=job.target_selection
 | 
				
			||||||
            )))
 | 
					            )))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def get_job_document(self):
 | 
				
			||||||
 | 
					        job = self.iot_backend.get_job_document(job_id=self._get_param("jobId"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if job.document is not None:
 | 
				
			||||||
 | 
					            json.dumps({'document': job.document})
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            # job.document_source is not None:
 | 
				
			||||||
 | 
					            # TODO: needs to be implemented to get document_source's content from S3
 | 
				
			||||||
 | 
					            return json.dumps({'document': ''})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def create_keys_and_certificate(self):
 | 
					    def create_keys_and_certificate(self):
 | 
				
			||||||
        set_as_active = self._get_bool_param("setAsActive")
 | 
					        set_as_active = self._get_bool_param("setAsActive")
 | 
				
			||||||
        cert, key_pair = self.iot_backend.create_keys_and_certificate(
 | 
					        cert, key_pair = self.iot_backend.create_keys_and_certificate(
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,7 @@
 | 
				
			|||||||
from __future__ import unicode_literals
 | 
					from __future__ import unicode_literals
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import json
 | 
					import json
 | 
				
			||||||
import sure  # noqa
 | 
					
 | 
				
			||||||
import boto3
 | 
					import boto3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from moto import mock_iot
 | 
					from moto import mock_iot
 | 
				
			||||||
@ -681,3 +681,65 @@ def test_describe_job_1():
 | 
				
			|||||||
        "expiresInSec").which.should.equal(123)
 | 
					        "expiresInSec").which.should.equal(123)
 | 
				
			||||||
    job.should.have.key('job').which.should.have.key("jobExecutionsRolloutConfig").which.should.have.key(
 | 
					    job.should.have.key('job').which.should.have.key("jobExecutionsRolloutConfig").which.should.have.key(
 | 
				
			||||||
        "maximumPerMinute").which.should.equal(10)
 | 
					        "maximumPerMinute").which.should.equal(10)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mock_iot
 | 
				
			||||||
 | 
					def test_get_job_document_with_document_source():
 | 
				
			||||||
 | 
					    client = boto3.client('iot', region_name='eu-west-1')
 | 
				
			||||||
 | 
					    name = "my-thing"
 | 
				
			||||||
 | 
					    job_id = "TestJob"
 | 
				
			||||||
 | 
					    # thing
 | 
				
			||||||
 | 
					    thing = client.create_thing(thingName=name)
 | 
				
			||||||
 | 
					    thing.should.have.key('thingName').which.should.equal(name)
 | 
				
			||||||
 | 
					    thing.should.have.key('thingArn')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job = client.create_job(
 | 
				
			||||||
 | 
					        jobId=job_id,
 | 
				
			||||||
 | 
					        targets=[thing["thingArn"]],
 | 
				
			||||||
 | 
					        documentSource="https://s3-eu-west-1.amazonaws.com/bucket-name/job_document.json",
 | 
				
			||||||
 | 
					        presignedUrlConfig={
 | 
				
			||||||
 | 
					            'roleArn': 'arn:aws:iam::1:role/service-role/iot_job_role',
 | 
				
			||||||
 | 
					            'expiresInSec': 123
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        targetSelection="CONTINUOUS",
 | 
				
			||||||
 | 
					        jobExecutionsRolloutConfig={
 | 
				
			||||||
 | 
					            'maximumPerMinute': 10
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job.should.have.key('jobId').which.should.equal(job_id)
 | 
				
			||||||
 | 
					    job.should.have.key('jobArn')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job_document = client.get_job_document(jobId=job_id)
 | 
				
			||||||
 | 
					    job_document.should.have.key('document').which.should.equal('')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@mock_iot
 | 
				
			||||||
 | 
					def test_get_job_document_with_document():
 | 
				
			||||||
 | 
					    client = boto3.client('iot', region_name='eu-west-1')
 | 
				
			||||||
 | 
					    name = "my-thing"
 | 
				
			||||||
 | 
					    job_id = "TestJob1"
 | 
				
			||||||
 | 
					    # thing
 | 
				
			||||||
 | 
					    thing = client.create_thing(thingName=name)
 | 
				
			||||||
 | 
					    thing.should.have.key('thingName').which.should.equal(name)
 | 
				
			||||||
 | 
					    thing.should.have.key('thingArn')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job = client.create_job(
 | 
				
			||||||
 | 
					        jobId=job_id,
 | 
				
			||||||
 | 
					        targets=[thing["thingArn"]],
 | 
				
			||||||
 | 
					        document=json.dumps({'foo': 'bar'}),
 | 
				
			||||||
 | 
					        presignedUrlConfig={
 | 
				
			||||||
 | 
					            'roleArn': 'arn:aws:iam::1:role/service-role/iot_job_role',
 | 
				
			||||||
 | 
					            'expiresInSec': 123
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        targetSelection="CONTINUOUS",
 | 
				
			||||||
 | 
					        jobExecutionsRolloutConfig={
 | 
				
			||||||
 | 
					            'maximumPerMinute': 10
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job.should.have.key('jobId').which.should.equal(job_id)
 | 
				
			||||||
 | 
					    job.should.have.key('jobArn')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    job_document = client.get_job_document(jobId=job_id)
 | 
				
			||||||
 | 
					    job_document.should.have.key('document').which.should.equal('')
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user