)]}'
{"monasca/common/repositories/mysql/streams_repository.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"186749fc35f301a7078d672b46db5f780b3c2f3a","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                raise exceptions.AlreadyExistsException("},{"line_number":150,"context_line":"                    \u0027Stream Definition already \u0027"},{"line_number":151,"context_line":"                    \u0027exists for tenant_id: {0} name: {1}\u0027.format("},{"line_number":152,"context_line":"                        tenant_id, name.encode(\u0027utf8\u0027)))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            now \u003d datetime.datetime.utcnow()"},{"line_number":155,"context_line":"            stream_definition_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_b2f688f7","line":152,"updated":"2015-04-21 14:32:22.000000000","message":"On thing that occurred to me here is that there is still a possiblity for getting a duplicate as the check and the insert are separate.\n\nIs is possible to combine the two sql statements into a single one so it it an atomic op?","commit_id":"001540f90c1362ff0c6baed16748db4f40e5912d"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"649da61cd62a7b5a9e138e07982028690abe7101","unresolved":false,"context_lines":[{"line_number":149,"context_line":"                raise exceptions.AlreadyExistsException("},{"line_number":150,"context_line":"                    \u0027Stream Definition already \u0027"},{"line_number":151,"context_line":"                    \u0027exists for tenant_id: {0} name: {1}\u0027.format("},{"line_number":152,"context_line":"                        tenant_id, name.encode(\u0027utf8\u0027)))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            now \u003d datetime.datetime.utcnow()"},{"line_number":155,"context_line":"            stream_definition_id \u003d uuidutils.generate_uuid()"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_98c6fe47","line":152,"in_reply_to":"dac4157f_b2f688f7","updated":"2015-04-21 16:32:12.000000000","message":"i will make tenant_id and name a unique key, and catch the exception.","commit_id":"001540f90c1362ff0c6baed16748db4f40e5912d"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"186749fc35f301a7078d672b46db5f780b3c2f3a","unresolved":false,"context_lines":[{"line_number":151,"context_line":"                    \u0027exists for tenant_id: {0} name: {1}\u0027.format("},{"line_number":152,"context_line":"                        tenant_id, name.encode(\u0027utf8\u0027)))"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"            now \u003d datetime.datetime.utcnow()"},{"line_number":155,"context_line":"            stream_definition_id \u003d uuidutils.generate_uuid()"},{"line_number":156,"context_line":"            cursor.execute(\"\"\"insert into stream_definition("},{"line_number":157,"context_line":"                                   id,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_d258dcfc","line":154,"updated":"2015-04-21 14:32:22.000000000","message":"Not that we haven\u0027t done this in other parts of the code, but is this a place where we should be using the oslo time utils?","commit_id":"001540f90c1362ff0c6baed16748db4f40e5912d"}],"monasca/openstack/common/uuidutils.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"186749fc35f301a7078d672b46db5f780b3c2f3a","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def generate_uuid():"},{"line_number":24,"context_line":"    return str(uuid.uuid1())"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def is_uuid_like(val):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_32eef8b4","line":24,"updated":"2015-04-21 14:32:22.000000000","message":"Why did this change? This is copied from the OpenStack Oslo project?","commit_id":"001540f90c1362ff0c6baed16748db4f40e5912d"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"649da61cd62a7b5a9e138e07982028690abe7101","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def generate_uuid():"},{"line_number":24,"context_line":"    return str(uuid.uuid1())"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"def is_uuid_like(val):"}],"source_content_type":"text/x-python","patch_set":4,"id":"dac4157f_58baa60b","line":24,"in_reply_to":"dac4157f_32eef8b4","updated":"2015-04-21 16:32:12.000000000","message":"I will change this back to uuid4.  The pagination logic in the python code seems to need an incrementing uuid to work.  We can open a separate Jira that pagination is not working.","commit_id":"001540f90c1362ff0c6baed16748db4f40e5912d"}],"monasca/v2/common/schemas/stream_definition_request_body_schema.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1e5eb8a9fa07dbd5a427113cf13b04cc4a88755a","unresolved":false,"context_lines":[{"line_number":26,"context_line":"stream_definition_schema \u003d {"},{"line_number":27,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All(voluptuous.Any(str, unicode),"},{"line_number":28,"context_line":"                                                voluptuous.Length(max\u003d140)),"},{"line_number":29,"context_line":"    voluptuous.Required(\u0027select_by\u0027): voluptuous.All("},{"line_number":30,"context_line":"        voluptuous.Any(list)),"},{"line_number":31,"context_line":"    voluptuous.Required(\u0027group_by\u0027): voluptuous.All("},{"line_number":32,"context_line":"        voluptuous.Any(list)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_f52096f9","line":29,"updated":"2015-04-17 17:50:56.000000000","message":"Should this be \"select_by\" or just \"select\"","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"10f6e63abbacded1fb0c43ea2a2c0d40e3497d17","unresolved":false,"context_lines":[{"line_number":26,"context_line":"stream_definition_schema \u003d {"},{"line_number":27,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All(voluptuous.Any(str, unicode),"},{"line_number":28,"context_line":"                                                voluptuous.Length(max\u003d140)),"},{"line_number":29,"context_line":"    voluptuous.Required(\u0027select_by\u0027): voluptuous.All("},{"line_number":30,"context_line":"        voluptuous.Any(list)),"},{"line_number":31,"context_line":"    voluptuous.Required(\u0027group_by\u0027): voluptuous.All("},{"line_number":32,"context_line":"        voluptuous.Any(list)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_71eed323","line":29,"in_reply_to":"3ab451fb_9605d5c3","updated":"2015-04-17 20:05:07.000000000","message":"I guess you were going for a more SQL similar term, so I can see changing that to select and keeping group_by.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"2fba31f62d489d90cd97748115238462877ddcba","unresolved":false,"context_lines":[{"line_number":26,"context_line":"stream_definition_schema \u003d {"},{"line_number":27,"context_line":"    voluptuous.Required(\u0027name\u0027): voluptuous.All(voluptuous.Any(str, unicode),"},{"line_number":28,"context_line":"                                                voluptuous.Length(max\u003d140)),"},{"line_number":29,"context_line":"    voluptuous.Required(\u0027select_by\u0027): voluptuous.All("},{"line_number":30,"context_line":"        voluptuous.Any(list)),"},{"line_number":31,"context_line":"    voluptuous.Required(\u0027group_by\u0027): voluptuous.All("},{"line_number":32,"context_line":"        voluptuous.Any(list)),"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_9605d5c3","line":29,"in_reply_to":"3ab451fb_f52096f9","updated":"2015-04-17 20:00:29.000000000","message":"I like \u0027select_by\u0027 since we also are using \u0027group_by\u0027.   Would you prefer \u0027select\u0027 and \u0027group\u0027?  I like the names as they are, but will change them if you would like.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1e5eb8a9fa07dbd5a427113cf13b04cc4a88755a","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    voluptuous.Optional(\u0027fire_pipeline\u0027): voluptuous.All("},{"line_number":43,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":44,"context_line":"    voluptuous.Optional(\u0027expire_pipeline\u0027): voluptuous.All("},{"line_number":45,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":46,"context_line":"    voluptuous.Optional(\u0027actions_enabled\u0027): bool}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"request_body_schema \u003d voluptuous.Schema(stream_definition_schema,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_55118aab","line":45,"updated":"2015-04-17 17:50:56.000000000","message":"Not sure we need a fire_pipeline and expire_pipeline. The only pipelines we are enabling are for invoking notification methods.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"2fba31f62d489d90cd97748115238462877ddcba","unresolved":false,"context_lines":[{"line_number":42,"context_line":"    voluptuous.Optional(\u0027fire_pipeline\u0027): voluptuous.All("},{"line_number":43,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":44,"context_line":"    voluptuous.Optional(\u0027expire_pipeline\u0027): voluptuous.All("},{"line_number":45,"context_line":"        voluptuous.Any(str, unicode), voluptuous.Length(max\u003d255)),"},{"line_number":46,"context_line":"    voluptuous.Optional(\u0027actions_enabled\u0027): bool}"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"request_body_schema \u003d voluptuous.Schema(stream_definition_schema,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_56e74de4","line":45,"in_reply_to":"3ab451fb_55118aab","updated":"2015-04-17 20:00:29.000000000","message":"I added the fire_pipeline and expire_pipeline fields because of our recent discussion with Matt.  He said we probably want a default handler for the provisioning duration case, so that we will generate a metric.  I wasn\u0027t sure how we should specify the default handler.  We had also talked about a future catalog of default handlers, and wasn\u0027t sure how one would be selected.    The DB will still need to have some relation to stream def for the selected default handler.  Should these fields be removed from the API and just a config file parameter for the event processing engine?","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"}],"monasca/v2/reference/stream_definitions.py":[{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1e5eb8a9fa07dbd5a427113cf13b04cc4a88755a","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                cfg.CONF.security.delegate_authorized_roles)"},{"line_number":50,"context_line":"            self._post_metrics_authorized_roles \u003d ("},{"line_number":51,"context_line":"                cfg.CONF.security.default_authorized_roles +"},{"line_number":52,"context_line":"                cfg.CONF.security.agent_authorized_roles)"},{"line_number":53,"context_line":"            self._stream_definitions_repo \u003d resource_api.init_driver("},{"line_number":54,"context_line":"                \u0027monasca.repositories\u0027, cfg.CONF.repositories.streams_driver)"},{"line_number":55,"context_line":"            self.stream_definition_event_message_queue \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_e7790d31","line":52,"updated":"2015-04-17 17:50:56.000000000","message":"Should we call this something like \"agent_authorized\" roles now that we support more than just metrics?","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"2fba31f62d489d90cd97748115238462877ddcba","unresolved":false,"context_lines":[{"line_number":49,"context_line":"                cfg.CONF.security.delegate_authorized_roles)"},{"line_number":50,"context_line":"            self._post_metrics_authorized_roles \u003d ("},{"line_number":51,"context_line":"                cfg.CONF.security.default_authorized_roles +"},{"line_number":52,"context_line":"                cfg.CONF.security.agent_authorized_roles)"},{"line_number":53,"context_line":"            self._stream_definitions_repo \u003d resource_api.init_driver("},{"line_number":54,"context_line":"                \u0027monasca.repositories\u0027, cfg.CONF.repositories.streams_driver)"},{"line_number":55,"context_line":"            self.stream_definition_event_message_queue \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_d6491dd2","line":52,"in_reply_to":"3ab451fb_e7790d31","updated":"2015-04-17 20:00:29.000000000","message":"Good idea, I will change it to the generic name.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1e5eb8a9fa07dbd5a427113cf13b04cc4a88755a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"        fire_pipeline \u003d get_query_stream_definition_fire_pipeline("},{"line_number":79,"context_line":"            stream_definition)"},{"line_number":80,"context_line":"        expire_pipeline \u003d get_query_stream_definition_expire_pipeline("},{"line_number":81,"context_line":"            stream_definition)"},{"line_number":82,"context_line":"        expiration \u003d stream_definition[\u0027expiration\u0027]"},{"line_number":83,"context_line":"        fire_actions \u003d get_query_stream_definition_fire_actions("},{"line_number":84,"context_line":"            stream_definition)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_e7f58d83","line":81,"updated":"2015-04-17 17:50:56.000000000","message":"Seem my comments in the API about fire_pipeline and expire_pipeline.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":2419,"name":"Roland Hochmuth","email":"roland.hochmuth@hpe.com","username":"roland-hochmuth-s"},"change_message_id":"1e5eb8a9fa07dbd5a427113cf13b04cc4a88755a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        try:"},{"line_number":149,"context_line":"            schema_streams.validate(stream_definition)"},{"line_number":150,"context_line":"        except schemas_exceptions.ValidationException as ex:"},{"line_number":151,"context_line":"            LOG.debug(ex)"},{"line_number":152,"context_line":"            raise falcon.HTTPBadRequest(\u0027Bad request\u0027, ex.message)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @resource.resource_try_catch_block"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_872c894b","line":151,"updated":"2015-04-17 17:50:56.000000000","message":"Should this be LOG.exception(ex) or LOG.debug(ex)? \n\nSeems like LOG.exception(ex) is more appropriate.\n\nNote, this occurs in several spots.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"},{"author":{"_account_id":12133,"name":"Cindy O\u0027Neill","email":"cindy.o-neill@hpe.com","username":"oneilcin"},"change_message_id":"2fba31f62d489d90cd97748115238462877ddcba","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        try:"},{"line_number":149,"context_line":"            schema_streams.validate(stream_definition)"},{"line_number":150,"context_line":"        except schemas_exceptions.ValidationException as ex:"},{"line_number":151,"context_line":"            LOG.debug(ex)"},{"line_number":152,"context_line":"            raise falcon.HTTPBadRequest(\u0027Bad request\u0027, ex.message)"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"    @resource.resource_try_catch_block"}],"source_content_type":"text/x-python","patch_set":2,"id":"3ab451fb_b62c51ac","line":151,"in_reply_to":"3ab451fb_872c894b","updated":"2015-04-17 20:00:29.000000000","message":"yes exception would format it better according to the documentation.  I\u0027ll try that out.","commit_id":"25c7b8827a10340de324ab1cf457655d35eced2f"}]}
