Fix queue urls for other regions. Closes #411.
This commit is contained in:
parent
bee2b5a891
commit
f72613cc47
@ -106,9 +106,10 @@ class Queue(object):
|
|||||||
'VisibilityTimeout',
|
'VisibilityTimeout',
|
||||||
'WaitTimeSeconds']
|
'WaitTimeSeconds']
|
||||||
|
|
||||||
def __init__(self, name, visibility_timeout, wait_time_seconds):
|
def __init__(self, name, visibility_timeout, wait_time_seconds, region):
|
||||||
self.name = name
|
self.name = name
|
||||||
self.visibility_timeout = visibility_timeout or 30
|
self.visibility_timeout = visibility_timeout or 30
|
||||||
|
self.region = region
|
||||||
|
|
||||||
# wait_time_seconds will be set to immediate return messages
|
# wait_time_seconds will be set to immediate return messages
|
||||||
self.wait_time_seconds = wait_time_seconds or 0
|
self.wait_time_seconds = wait_time_seconds or 0
|
||||||
@ -179,6 +180,10 @@ class Queue(object):
|
|||||||
result[attribute] = getattr(self, camelcase_to_underscores(attribute))
|
result[attribute] = getattr(self, camelcase_to_underscores(attribute))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
@property
|
||||||
|
def url(self):
|
||||||
|
return "http://sqs.{0}.amazonaws.com/123456789012/{1}".format(self.region, self.name)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def messages(self):
|
def messages(self):
|
||||||
return [message for message in self._messages if message.visible and not message.delayed]
|
return [message for message in self._messages if message.visible and not message.delayed]
|
||||||
@ -196,14 +201,20 @@ class Queue(object):
|
|||||||
|
|
||||||
|
|
||||||
class SQSBackend(BaseBackend):
|
class SQSBackend(BaseBackend):
|
||||||
def __init__(self):
|
def __init__(self, region_name):
|
||||||
|
self.region_name = region_name
|
||||||
self.queues = {}
|
self.queues = {}
|
||||||
super(SQSBackend, self).__init__()
|
super(SQSBackend, self).__init__()
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
region_name = self.region_name
|
||||||
|
self.__dict__ = {}
|
||||||
|
self.__init__(region_name)
|
||||||
|
|
||||||
def create_queue(self, name, visibility_timeout, wait_time_seconds):
|
def create_queue(self, name, visibility_timeout, wait_time_seconds):
|
||||||
queue = self.queues.get(name)
|
queue = self.queues.get(name)
|
||||||
if queue is None:
|
if queue is None:
|
||||||
queue = Queue(name, visibility_timeout, wait_time_seconds)
|
queue = Queue(name, visibility_timeout, wait_time_seconds, self.region_name)
|
||||||
self.queues[name] = queue
|
self.queues[name] = queue
|
||||||
return queue
|
return queue
|
||||||
|
|
||||||
@ -314,4 +325,4 @@ class SQSBackend(BaseBackend):
|
|||||||
|
|
||||||
sqs_backends = {}
|
sqs_backends = {}
|
||||||
for region in boto.sqs.regions():
|
for region in boto.sqs.regions():
|
||||||
sqs_backends[region.name] = SQSBackend()
|
sqs_backends[region.name] = SQSBackend(region.name)
|
||||||
|
@ -232,7 +232,7 @@ class SQSResponse(BaseResponse):
|
|||||||
|
|
||||||
CREATE_QUEUE_RESPONSE = """<CreateQueueResponse>
|
CREATE_QUEUE_RESPONSE = """<CreateQueueResponse>
|
||||||
<CreateQueueResult>
|
<CreateQueueResult>
|
||||||
<QueueUrl>http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }}</QueueUrl>
|
<QueueUrl>{{ queue.url }}</QueueUrl>
|
||||||
<VisibilityTimeout>{{ queue.visibility_timeout }}</VisibilityTimeout>
|
<VisibilityTimeout>{{ queue.visibility_timeout }}</VisibilityTimeout>
|
||||||
</CreateQueueResult>
|
</CreateQueueResult>
|
||||||
<ResponseMetadata>
|
<ResponseMetadata>
|
||||||
@ -244,7 +244,7 @@ CREATE_QUEUE_RESPONSE = """<CreateQueueResponse>
|
|||||||
|
|
||||||
GET_QUEUE_URL_RESPONSE = """<GetQueueUrlResponse>
|
GET_QUEUE_URL_RESPONSE = """<GetQueueUrlResponse>
|
||||||
<GetQueueUrlResult>
|
<GetQueueUrlResult>
|
||||||
<QueueUrl>http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }}</QueueUrl>
|
<QueueUrl>{{ queue.url }}</QueueUrl>
|
||||||
</GetQueueUrlResult>
|
</GetQueueUrlResult>
|
||||||
<ResponseMetadata>
|
<ResponseMetadata>
|
||||||
<RequestId>470a6f13-2ed9-4181-ad8a-2fdea142988e</RequestId>
|
<RequestId>470a6f13-2ed9-4181-ad8a-2fdea142988e</RequestId>
|
||||||
@ -254,7 +254,7 @@ GET_QUEUE_URL_RESPONSE = """<GetQueueUrlResponse>
|
|||||||
LIST_QUEUES_RESPONSE = """<ListQueuesResponse>
|
LIST_QUEUES_RESPONSE = """<ListQueuesResponse>
|
||||||
<ListQueuesResult>
|
<ListQueuesResult>
|
||||||
{% for queue in queues %}
|
{% for queue in queues %}
|
||||||
<QueueUrl>http://sqs.us-east-1.amazonaws.com/123456789012/{{ queue.name }}</QueueUrl>
|
<QueueUrl>{{ queue.url }}</QueueUrl>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ListQueuesResult>
|
</ListQueuesResult>
|
||||||
<ResponseMetadata>
|
<ResponseMetadata>
|
||||||
|
@ -34,6 +34,8 @@ def test_create_queues_in_multiple_region():
|
|||||||
list(west1_conn.get_all_queues()).should.have.length_of(1)
|
list(west1_conn.get_all_queues()).should.have.length_of(1)
|
||||||
list(west2_conn.get_all_queues()).should.have.length_of(1)
|
list(west2_conn.get_all_queues()).should.have.length_of(1)
|
||||||
|
|
||||||
|
west1_conn.get_all_queues()[0].url.should.equal('http://sqs.us-west-1.amazonaws.com/123456789012/test-queue')
|
||||||
|
|
||||||
|
|
||||||
@mock_sqs
|
@mock_sqs
|
||||||
def test_get_queue():
|
def test_get_queue():
|
||||||
|
Loading…
Reference in New Issue
Block a user