MIT LA to Rackspace Header, Configurable Routing Key for Verified Notifiactions
This commit is contained in:
parent
0632c13fd6
commit
4db9e256cf
@ -11,6 +11,7 @@
|
|||||||
"userid": "rabbit",
|
"userid": "rabbit",
|
||||||
"password": "rabbit",
|
"password": "rabbit",
|
||||||
"virtual_host": "/",
|
"virtual_host": "/",
|
||||||
"exchange_name": "stacktach"
|
"exchange_name": "stacktach",
|
||||||
|
"routing_keys": ["notifications.info"]
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
@ -34,7 +52,7 @@ def add_past_usage(raws):
|
|||||||
print "%s events to be processed" % count
|
print "%s events to be processed" % count
|
||||||
last_update = datetime.datetime.utcnow()
|
last_update = datetime.datetime.utcnow()
|
||||||
for raw in raws:
|
for raw in raws:
|
||||||
json_dict = json.dumps(raw.json)
|
json_dict = json.loads(raw.json)
|
||||||
views.aggregate_usage(raw, json_dict[1])
|
views.aggregate_usage(raw, json_dict[1])
|
||||||
processed += 1
|
processed += 1
|
||||||
if processed % 50 == 0:
|
if processed % 50 == 0:
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
@ -92,7 +110,7 @@ for event in events:
|
|||||||
new_loc = loc + 500
|
new_loc = loc + 500
|
||||||
for raw in raws[loc:new_loc]:
|
for raw in raws[loc:new_loc]:
|
||||||
try:
|
try:
|
||||||
json_dict = json.dumps(raw.json)
|
json_dict = json.loads(raw.json)
|
||||||
populate_usage(raw, json_dict[1])
|
populate_usage(raw, json_dict[1])
|
||||||
completed += 1
|
completed += 1
|
||||||
except Exception:
|
except Exception:
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import decimal
|
import decimal
|
||||||
import functools
|
import functools
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import views
|
import views
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
|
@ -1 +1,19 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import unittest
|
import unittest
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import unittest
|
import unittest
|
||||||
|
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import json
|
import json
|
||||||
|
@ -1,9 +1,28 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import decimal
|
import decimal
|
||||||
import json
|
import json
|
||||||
import unittest
|
import unittest
|
||||||
|
import uuid
|
||||||
|
|
||||||
import kombu.common
|
import kombu.common
|
||||||
import kombu.entity
|
import kombu.entity
|
||||||
@ -459,12 +478,18 @@ class VerifierTestCase(unittest.TestCase):
|
|||||||
self.assertEqual(exist2.status, 'verifying')
|
self.assertEqual(exist2.status, 'verifying')
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
def test_send_verified_notification(self):
|
def test_send_verified_notification_default_routing_key(self):
|
||||||
connection = self.mox.CreateMockAnything()
|
connection = self.mox.CreateMockAnything()
|
||||||
exchange = self.mox.CreateMockAnything()
|
exchange = self.mox.CreateMockAnything()
|
||||||
exist = self.mox.CreateMockAnything()
|
exist = self.mox.CreateMockAnything()
|
||||||
exist.raw = self.mox.CreateMockAnything()
|
exist.raw = self.mox.CreateMockAnything()
|
||||||
exist_dict = ['monitor.info', {'event_type': 'test', 'key': 'value'}]
|
exist_dict = [
|
||||||
|
'monitor.info',
|
||||||
|
{
|
||||||
|
'event_type': 'test',
|
||||||
|
'message_id': 'some_uuid'
|
||||||
|
}
|
||||||
|
]
|
||||||
exist_str = json.dumps(exist_dict)
|
exist_str = json.dumps(exist_dict)
|
||||||
exist.raw.json = exist_str
|
exist.raw.json = exist_str
|
||||||
self.mox.StubOutWithMock(kombu.pools, 'producers')
|
self.mox.StubOutWithMock(kombu.pools, 'producers')
|
||||||
@ -475,8 +500,11 @@ class VerifierTestCase(unittest.TestCase):
|
|||||||
producer.acquire(block=True).AndReturn(producer)
|
producer.acquire(block=True).AndReturn(producer)
|
||||||
producer.__enter__().AndReturn(producer)
|
producer.__enter__().AndReturn(producer)
|
||||||
kombu.common.maybe_declare(exchange, producer.channel)
|
kombu.common.maybe_declare(exchange, producer.channel)
|
||||||
|
self.mox.StubOutWithMock(uuid, 'uuid4')
|
||||||
|
uuid.uuid4().AndReturn('some_other_uuid')
|
||||||
message = {'event_type': 'compute.instance.exists.verified.old',
|
message = {'event_type': 'compute.instance.exists.verified.old',
|
||||||
'key': 'value'}
|
'message_id': 'some_other_uuid',
|
||||||
|
'original_message_id': 'some_uuid'}
|
||||||
producer.publish(message, exist_dict[0])
|
producer.publish(message, exist_dict[0])
|
||||||
producer.__exit__(None, None, None)
|
producer.__exit__(None, None, None)
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
@ -484,6 +512,43 @@ class VerifierTestCase(unittest.TestCase):
|
|||||||
dbverifier.send_verified_notification(exist, exchange, connection)
|
dbverifier.send_verified_notification(exist, exchange, connection)
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
def test_send_verified_notification_routing_keys(self):
|
||||||
|
connection = self.mox.CreateMockAnything()
|
||||||
|
exchange = self.mox.CreateMockAnything()
|
||||||
|
exist = self.mox.CreateMockAnything()
|
||||||
|
exist.raw = self.mox.CreateMockAnything()
|
||||||
|
exist_dict = [
|
||||||
|
'monitor.info',
|
||||||
|
{
|
||||||
|
'event_type': 'test',
|
||||||
|
'message_id': 'some_uuid'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
exist_str = json.dumps(exist_dict)
|
||||||
|
exist.raw.json = exist_str
|
||||||
|
self.mox.StubOutWithMock(uuid, 'uuid4')
|
||||||
|
uuid.uuid4().AndReturn('some_other_uuid')
|
||||||
|
self.mox.StubOutWithMock(kombu.pools, 'producers')
|
||||||
|
self.mox.StubOutWithMock(kombu.common, 'maybe_declare')
|
||||||
|
routing_keys = ['notifications.info', 'monitor.info']
|
||||||
|
for key in routing_keys:
|
||||||
|
producer = self.mox.CreateMockAnything()
|
||||||
|
producer.channel = self.mox.CreateMockAnything()
|
||||||
|
kombu.pools.producers[connection].AndReturn(producer)
|
||||||
|
producer.acquire(block=True).AndReturn(producer)
|
||||||
|
producer.__enter__().AndReturn(producer)
|
||||||
|
kombu.common.maybe_declare(exchange, producer.channel)
|
||||||
|
message = {'event_type': 'compute.instance.exists.verified.old',
|
||||||
|
'message_id': 'some_other_uuid',
|
||||||
|
'original_message_id': 'some_uuid'}
|
||||||
|
producer.publish(message, key)
|
||||||
|
producer.__exit__(None, None, None)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
|
||||||
|
dbverifier.send_verified_notification(exist, exchange, connection,
|
||||||
|
routing_keys=routing_keys)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
def test_run_notifications(self):
|
def test_run_notifications(self):
|
||||||
config = {
|
config = {
|
||||||
"tick_time": 30,
|
"tick_time": 30,
|
||||||
@ -519,6 +584,41 @@ class VerifierTestCase(unittest.TestCase):
|
|||||||
dbverifier.run(config)
|
dbverifier.run(config)
|
||||||
self.mox.VerifyAll()
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
|
def test_run_notifications_with_routing_keys(self):
|
||||||
|
config = {
|
||||||
|
"tick_time": 30,
|
||||||
|
"settle_time": 5,
|
||||||
|
"settle_units": "minutes",
|
||||||
|
"pool_size": 2,
|
||||||
|
"enable_notifications": True,
|
||||||
|
"rabbit": {
|
||||||
|
"durable_queue": False,
|
||||||
|
"host": "10.0.0.1",
|
||||||
|
"port": 5672,
|
||||||
|
"userid": "rabbit",
|
||||||
|
"password": "rabbit",
|
||||||
|
"virtual_host": "/",
|
||||||
|
"exchange_name": "stacktach",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
self.mox.StubOutWithMock(multiprocessing, 'Pool')
|
||||||
|
pool = self.mox.CreateMockAnything()
|
||||||
|
multiprocessing.Pool(2).AndReturn(pool)
|
||||||
|
self.mox.StubOutWithMock(dbverifier, '_create_exchange')
|
||||||
|
exchange = self.mox.CreateMockAnything()
|
||||||
|
dbverifier._create_exchange('stacktach', 'topic', durable=False) \
|
||||||
|
.AndReturn(exchange)
|
||||||
|
self.mox.StubOutWithMock(dbverifier, '_create_connection')
|
||||||
|
conn = self.mox.CreateMockAnything()
|
||||||
|
dbverifier._create_connection(config).AndReturn(conn)
|
||||||
|
conn.__enter__().AndReturn(conn)
|
||||||
|
self.mox.StubOutWithMock(dbverifier, '_run')
|
||||||
|
dbverifier._run(config, pool, callback=mox.IgnoreArg())
|
||||||
|
conn.__exit__(None, None, None)
|
||||||
|
self.mox.ReplayAll()
|
||||||
|
dbverifier.run(config)
|
||||||
|
self.mox.VerifyAll()
|
||||||
|
|
||||||
def test_run_no_notifications(self):
|
def test_run_no_notifications(self):
|
||||||
config = {
|
config = {
|
||||||
"tick_time": 30,
|
"tick_time": 30,
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import unittest
|
import unittest
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
class VerificationException(Exception):
|
class VerificationException(Exception):
|
||||||
def __init__(self, reason):
|
def __init__(self, reason):
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import datetime
|
import datetime
|
||||||
@ -7,6 +25,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
from time import sleep
|
from time import sleep
|
||||||
|
import uuid
|
||||||
|
|
||||||
from django.db import transaction
|
from django.db import transaction
|
||||||
import kombu.common
|
import kombu.common
|
||||||
@ -256,11 +275,17 @@ def _send_notification(message, routing_key, connection, exchange):
|
|||||||
producer.publish(message, routing_key)
|
producer.publish(message, routing_key)
|
||||||
|
|
||||||
|
|
||||||
def send_verified_notification(exist, connection, exchange):
|
def send_verified_notification(exist, connection, exchange, routing_keys=None):
|
||||||
body = exist.raw.json
|
body = exist.raw.json
|
||||||
json_body = json.loads(body)
|
json_body = json.loads(body)
|
||||||
json_body[1]['event_type'] = 'compute.instance.exists.verified.old'
|
json_body[1]['event_type'] = 'compute.instance.exists.verified.old'
|
||||||
_send_notification(json_body[1], json_body[0], connection, exchange)
|
json_body[1]['original_message_id'] = json_body[1]['message_id']
|
||||||
|
json_body[1]['message_id'] = str(uuid.uuid4())
|
||||||
|
if routing_keys is None:
|
||||||
|
_send_notification(json_body[1], json_body[0], connection, exchange)
|
||||||
|
else:
|
||||||
|
for key in routing_keys:
|
||||||
|
_send_notification(json_body[1], key, connection, exchange)
|
||||||
|
|
||||||
|
|
||||||
def _create_exchange(name, type, exclusive=False, auto_delete=False,
|
def _create_exchange(name, type, exclusive=False, auto_delete=False,
|
||||||
@ -303,12 +328,16 @@ def run(config):
|
|||||||
exchange = _create_exchange(config['rabbit']['exchange_name'],
|
exchange = _create_exchange(config['rabbit']['exchange_name'],
|
||||||
'topic',
|
'topic',
|
||||||
durable=config['rabbit']['durable_queue'])
|
durable=config['rabbit']['durable_queue'])
|
||||||
|
routing_keys = None
|
||||||
|
if config['rabbit'].get('routing_keys') is not None:
|
||||||
|
routing_keys = config['rabbit']['routing_keys']
|
||||||
|
|
||||||
with _create_connection(config) as conn:
|
with _create_connection(config) as conn:
|
||||||
def callback(result):
|
def callback(result):
|
||||||
(verified, exist) = result
|
(verified, exist) = result
|
||||||
if verified:
|
if verified:
|
||||||
send_verified_notification(exist, conn, exchange)
|
send_verified_notification(exist, conn, exchange,
|
||||||
|
routing_keys=routing_keys)
|
||||||
|
|
||||||
_run(config, pool, callback=callback)
|
_run(config, pool, callback=callback)
|
||||||
else:
|
else:
|
||||||
@ -337,12 +366,16 @@ def run_once(config):
|
|||||||
exchange = _create_exchange(config['rabbit']['exchange_name'],
|
exchange = _create_exchange(config['rabbit']['exchange_name'],
|
||||||
'topic',
|
'topic',
|
||||||
durable=config['rabbit']['durable_queue'])
|
durable=config['rabbit']['durable_queue'])
|
||||||
|
routing_keys = None
|
||||||
|
if config['rabbit'].get('routing_keys') is not None:
|
||||||
|
routing_keys = config['rabbit']['routing_keys']
|
||||||
|
|
||||||
with _create_connection(config) as conn:
|
with _create_connection(config) as conn:
|
||||||
def callback(result):
|
def callback(result):
|
||||||
(verified, exist) = result
|
(verified, exist) = result
|
||||||
if verified:
|
if verified:
|
||||||
send_verified_notification(exist, conn, exchange)
|
send_verified_notification(exist, conn, exchange,
|
||||||
|
routing_keys=routing_keys)
|
||||||
|
|
||||||
_run_once(config, pool, callback=callback)
|
_run_once(config, pool, callback=callback)
|
||||||
else:
|
else:
|
||||||
|
@ -1,4 +1,22 @@
|
|||||||
# Copyright 2012 - Rackspace Inc.
|
# Copyright (c) 2012 - Rackspace Inc.
|
||||||
|
#
|
||||||
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
# of this software and associated documentation files (the "Software"), to
|
||||||
|
# deal in the Software without restriction, including without limitation the
|
||||||
|
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
||||||
|
# sell copies of the Software, and to permit persons to whom the Software is
|
||||||
|
# furnished to do so, subject to the following conditions:
|
||||||
|
#
|
||||||
|
# The above copyright notice and this permission notice shall be included in
|
||||||
|
# all copies or substantial portions of the Software.
|
||||||
|
#
|
||||||
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
|
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||||
|
# IN THE SOFTWARE.
|
||||||
|
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
|
Loading…
x
Reference in New Issue
Block a user