)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Endre Karlson \u003cendre.karlson@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-03-08 10:35:59 +0100"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Add support for getting Service Status"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Change-Id: Iaf10d8486ac8015ecf9f394dfbf074bfb863fb78"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"5aef4532_f4d6f925","line":7,"updated":"2016-03-08 11:13:42.000000000","message":"I\u0027m assuming the CR is still in WIP, otherwise please add docs describing the architecture of the service status mechanism.\n\n(e.g. are we ever going to time out and remove a service status entry?)","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"}],"designate/api/service.py":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        self.heartbeat_emitter.start()"},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def _get_status(self):"},{"line_number":46,"context_line":"        status \u003d \"UP\""},{"line_number":47,"context_line":"        stats \u003d {}"},{"line_number":48,"context_line":"        capabilities \u003d {}"},{"line_number":49,"context_line":"        return status, stats, capabilities"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_94e855e4","line":46,"updated":"2016-03-08 11:13:42.000000000","message":"Related to the docs: can you please document the semantic of \"UP\" and other statuses, stats, capabilities?","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"}],"designate/central/service.py":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":285,"context_line":"            self._storage \u003d storage.get_storage(storage_driver)"},{"line_number":286,"context_line":"        return self._storage"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"        self.heartbeat_emitter.rpc_api \u003d self"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @property"},{"line_number":291,"context_line":"    def service_name(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_34b861e5","line":288,"updated":"2016-03-08 11:13:42.000000000","message":"?","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":2871,"context_line":""},{"line_number":2872,"context_line":"    def find_service_statuses(self, context, criterion\u003dNone, marker\u003dNone,"},{"line_number":2873,"context_line":"                              limit\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":2874,"context_line":"        \"\"\"List existing zones including the ones flagged for deletion."},{"line_number":2875,"context_line":"        \"\"\""},{"line_number":2876,"context_line":"        policy.check(\u0027find_service_statuses\u0027, context)"},{"line_number":2877,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_d4c5bd3c","line":2874,"updated":"2016-03-08 11:13:42.000000000","message":"The docstring should be updated :)","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"},{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":2878,"context_line":"        return self.storage.find_service_statuses("},{"line_number":2879,"context_line":"            context, criterion, marker, limit, sort_key, sort_dir)"},{"line_number":2880,"context_line":""},{"line_number":2881,"context_line":"    def find_service_status(self, context, criterion\u003dNone):"},{"line_number":2882,"context_line":"        policy.check(\u0027find_service_status\u0027, context)"},{"line_number":2883,"context_line":""},{"line_number":2884,"context_line":"        return self.storage.find_service_status(context, criterion)"}],"source_content_type":"text/x-python","patch_set":6,"id":"5aef4532_f4e0b9ce","line":2881,"updated":"2016-03-08 11:13:42.000000000","message":"We are assuming a service status is usually present and readily available. If so, the method could be named \"fetch_\" rather than \"find_\"","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e79e3955caf56f6f21d178999e269a00dfeac0ad","unresolved":false,"context_lines":[{"line_number":2899,"context_line":"        try:"},{"line_number":2900,"context_line":"            db_status \u003d self.storage.find_service_status("},{"line_number":2901,"context_line":"                context, criterion)"},{"line_number":2902,"context_line":"            db_status.update(dict(service_status))"},{"line_number":2903,"context_line":""},{"line_number":2904,"context_line":"            return self.storage.update_service_status(context, db_status)"},{"line_number":2905,"context_line":"        except exceptions.ServiceStatusNotFound:"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afc51ec_29b678dc","line":2902,"updated":"2016-03-11 19:44:00.000000000","message":"There is some sort of isuse here when using SQLite - it doesnt like us adding the DateTime as a string. may need to look at this, or we can just drop SQLite support.","commit_id":"352abad4bdd9dd54b923883daceec65e42d79dd9"}],"designate/objects/adapters/api_v2/service_status.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"16eb693eff9f7b97484940666aad53ca39da933a","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        obj \u003d super(ServiceStatusAPIv2Adapter, cls)._render_object("},{"line_number":47,"context_line":"            object, *args, **kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        obj[\u0027links\u0027][\u0027service_status\u0027] \u003d \\"},{"line_number":50,"context_line":"            \u0027%s/v2/%s/%s\u0027 % (cls.BASE_URI, \u0027service_statuses\u0027, obj[\u0027id\u0027])"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_3ccaf26d","line":49,"range":{"start_line":49,"start_character":22,"end_line":49,"end_character":36},"updated":"2016-03-30 11:46:49.000000000","message":"this should be self?","commit_id":"e6ea14e8299a1b6e23b9d40c397f3b6868f789d7"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"61170c36d78ae204643f86db2661df3d97da6269","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        obj \u003d super(ServiceStatusAPIv2Adapter, cls)._render_object("},{"line_number":47,"context_line":"            object, *args, **kwargs)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"        obj[\u0027links\u0027][\u0027service_status\u0027] \u003d \\"},{"line_number":50,"context_line":"            \u0027%s/v2/%s/%s\u0027 % (cls.BASE_URI, \u0027service_statuses\u0027, obj[\u0027id\u0027])"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"        return obj"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a061dce_a5c0977d","line":49,"range":{"start_line":49,"start_character":22,"end_line":49,"end_character":36},"in_reply_to":"ba0121b8_3ccaf26d","updated":"2016-04-06 08:25:06.000000000","message":"Done","commit_id":"e6ea14e8299a1b6e23b9d40c397f3b6868f789d7"}],"designate/objects/service_status.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e79e3955caf56f6f21d178999e269a00dfeac0ad","unresolved":false,"context_lines":[{"line_number":51,"context_line":"            }"},{"line_number":52,"context_line":"        }"},{"line_number":53,"context_line":"    }"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"class ServiceStatusList(base.ListObjectMixin, base.DesignateObject):"},{"line_number":57,"context_line":"    LIST_ITEM_TYPE \u003d ServiceStatus"}],"source_content_type":"text/x-python","patch_set":9,"id":"3afc51ec_09bbbcc5","line":54,"updated":"2016-03-11 19:44:00.000000000","message":"missing the String Keys here: should add :\n  STRING_KEYS \u003d [\n      \u0027service_name\u0027, \u0027hostname\u0027, \u0027status\u0027\n  ]","commit_id":"352abad4bdd9dd54b923883daceec65e42d79dd9"}],"designate/storage/impl_sqlalchemy/__init__.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"a8b8d4a48b75253c6d1f1494ec3fc0bebbdc3eb6","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"        return self._delete(context, tables.zone_tasks, zone_export,"},{"line_number":1404,"context_line":"                    exceptions.ZoneExportNotFound)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    # Zone Export Methods"},{"line_number":1407,"context_line":"    def _find_service_statuses(self, context, criterion, one\u003dFalse,"},{"line_number":1408,"context_line":"                               marker\u003dNone, limit\u003dNone, sort_key\u003dNone,"},{"line_number":1409,"context_line":"                               sort_dir\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_e6eeab20","line":1406,"updated":"2016-03-10 18:35:05.000000000","message":"Zone Export -\u003e Service Statuses","commit_id":"ee2d2a80fdab56f45afd6ce4320d30469e724889"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"0ccfb35b10659b19ed66ef80fe7b8b648d37ea0a","unresolved":false,"context_lines":[{"line_number":1403,"context_line":"        return self._delete(context, tables.zone_tasks, zone_export,"},{"line_number":1404,"context_line":"                    exceptions.ZoneExportNotFound)"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    # Zone Export Methods"},{"line_number":1407,"context_line":"    def _find_service_statuses(self, context, criterion, one\u003dFalse,"},{"line_number":1408,"context_line":"                               marker\u003dNone, limit\u003dNone, sort_key\u003dNone,"},{"line_number":1409,"context_line":"                               sort_dir\u003dNone):"}],"source_content_type":"text/x-python","patch_set":7,"id":"5aef4532_c119d923","line":1406,"in_reply_to":"5aef4532_e6eeab20","updated":"2016-03-10 19:00:14.000000000","message":"Done","commit_id":"ee2d2a80fdab56f45afd6ce4320d30469e724889"}],"designate/storage/impl_sqlalchemy/migrate_repo/versions/085_add_services.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"e79e3955caf56f6f21d178999e269a00dfeac0ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"3afc51ec_69b080de","updated":"2016-03-11 19:44:00.000000000","message":"Needs to go to version 86","commit_id":"352abad4bdd9dd54b923883daceec65e42d79dd9"}],"designate/storage/impl_sqlalchemy/migrate_repo/versions/086_add_zone_attributes.py":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"16eb693eff9f7b97484940666aad53ca39da933a","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"ba0121b8_1c00cea9","line":1,"updated":"2016-03-30 11:46:49.000000000","message":"We can not re-number a migration!!!","commit_id":"e6ea14e8299a1b6e23b9d40c397f3b6868f789d7"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"61170c36d78ae204643f86db2661df3d97da6269","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2015 Hewlett-Packard Development Company, L.P."},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":11,"id":"9a061dce_c54cab44","line":1,"in_reply_to":"ba0121b8_1c00cea9","updated":"2016-04-06 08:25:06.000000000","message":"Ya, dunno how I ended up messing this up :P","commit_id":"e6ea14e8299a1b6e23b9d40c397f3b6868f789d7"}],"etc/designate/policy.json":[{"author":{"_account_id":16962,"name":"Federico Ceratto","email":"federico.ceratto@gmail.com","username":"ceratto"},"change_message_id":"7a54b72006aef948380afe77133057b3fe6a49c7","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    \"find_zone_exports\": \"rule:admin_or_owner\","},{"line_number":122,"context_line":"    \"get_zone_export\": \"rule:admin_or_owner\","},{"line_number":123,"context_line":"    \"update_zone_export\": \"rule:admin_or_owner\","},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"    \"find_service_status\": \"rule:admin\","},{"line_number":126,"context_line":"    \"find_service_statuses\": \"rule:admin\","},{"line_number":127,"context_line":"    \"update_service_service_status\": \"rule:admin\""}],"source_content_type":"application/json","patch_set":6,"id":"5aef4532_d4dc9d14","line":124,"updated":"2016-03-08 11:13:42.000000000","message":"Did you mean to remove delete_zone_export?","commit_id":"7fbbec9ab0bf3c537fd6460bbfb87d4c149d001e"}],"setup.cfg":[{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"a8b8d4a48b75253c6d1f1494ec3fc0bebbdc3eb6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"designate.api.admin.extensions \u003d"},{"line_number":64,"context_line":"    reports \u003d designate.api.admin.controllers.extensions.reports:ReportsController"},{"line_number":65,"context_line":"    quotas \u003d designate.api.admin.controllers.extensions.quotas:QuotasController"},{"line_number":66,"context_line":"    service_status \u003d designate.api.admin.controllers.extensions.service_status:ServiceStatusController"},{"line_number":67,"context_line":"    zones \u003d designate.api.admin.controllers.extensions.zones:ZonesController"},{"line_number":68,"context_line":"    target_sync \u003d designate.api.admin.controllers.extensions.target_sync:TargetSyncController"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"5aef4532_46f2ff06","line":66,"updated":"2016-03-10 18:35:05.000000000","message":"This should be in the v2 API extentions","commit_id":"ee2d2a80fdab56f45afd6ce4320d30469e724889"},{"author":{"_account_id":395,"name":"Endre Karlson","email":"endre.karlson@gmail.com","username":"endre-karlson"},"change_message_id":"0ccfb35b10659b19ed66ef80fe7b8b648d37ea0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"designate.api.admin.extensions \u003d"},{"line_number":64,"context_line":"    reports \u003d designate.api.admin.controllers.extensions.reports:ReportsController"},{"line_number":65,"context_line":"    quotas \u003d designate.api.admin.controllers.extensions.quotas:QuotasController"},{"line_number":66,"context_line":"    service_status \u003d designate.api.admin.controllers.extensions.service_status:ServiceStatusController"},{"line_number":67,"context_line":"    zones \u003d designate.api.admin.controllers.extensions.zones:ZonesController"},{"line_number":68,"context_line":"    target_sync \u003d designate.api.admin.controllers.extensions.target_sync:TargetSyncController"},{"line_number":69,"context_line":""}],"source_content_type":"text/x-ttcn-cfg","patch_set":7,"id":"5aef4532_c1755932","line":66,"in_reply_to":"5aef4532_46f2ff06","updated":"2016-03-10 19:00:14.000000000","message":"Removed this here.","commit_id":"ee2d2a80fdab56f45afd6ce4320d30469e724889"}]}
