)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This allows for options to be stored on a per tenant basis."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"This can be used by sink handelers / plugins to allow users to"},{"line_number":12,"context_line":"customise thier usage"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: Ia8f0ab48417236c8a3ad30cd587c1dc243f85c1d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"AAAAXH%2F%2FP4I%3D","line":12,"updated":"2014-04-23 04:51:08.000000000","message":"Minor nitpick - not necessary to fix.\nTypos in \u0027handlers\u0027 and \u0027their\u0027","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"designate/api/v2/controllers/options.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Betsy Luzader \u003cbetsy.luzader@rackspace.com\u003e"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FP4U%3D","line":3,"updated":"2014-04-23 04:51:08.000000000","message":"Do you want Betsy and Rackspace to take credit for your work :-)","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    _view \u003d options_view.OptionsView()"},{"line_number":29,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027option\u0027)"},{"line_number":30,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027options\u0027)"},{"line_number":31,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027pattern\u0027]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":34,"context_line":"    @utils.validate_uuid(\u0027option_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPxs%3D","line":31,"updated":"2014-04-23 04:51:08.000000000","message":"SORT_KEYS should probably be [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027key\u0027, \u0027value\u0027]","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    _view \u003d options_view.OptionsView()"},{"line_number":29,"context_line":"    _resource_schema \u003d schema.Schema(\u0027v2\u0027, \u0027option\u0027)"},{"line_number":30,"context_line":"    _collection_schema \u003d schema.Schema(\u0027v2\u0027, \u0027options\u0027)"},{"line_number":31,"context_line":"    SORT_KEYS \u003d [\u0027created_at\u0027, \u0027id\u0027, \u0027updated_at\u0027, \u0027pattern\u0027]"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @pecan.expose(template\u003d\u0027json:\u0027, content_type\u003d\u0027application/json\u0027)"},{"line_number":34,"context_line":"    @utils.validate_uuid(\u0027option_id\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNK4%3D","line":31,"in_reply_to":"AAAAXH%2F%2FPxs%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        marker, limit, sort_key, sort_dir \u003d self._get_paging_params(params)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Extract any filter params"},{"line_number":55,"context_line":"        accepted_filters \u003d (\u0027pattern\u0027)"},{"line_number":56,"context_line":"        criterion \u003d dict((k, params[k]) for k in accepted_filters"},{"line_number":57,"context_line":"                         if k in params)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPv4%3D","line":55,"updated":"2014-04-23 04:51:08.000000000","message":"accepted_filters needs to be updated","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        marker, limit, sort_key, sort_dir \u003d self._get_paging_params(params)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # Extract any filter params"},{"line_number":55,"context_line":"        accepted_filters \u003d (\u0027pattern\u0027)"},{"line_number":56,"context_line":"        criterion \u003d dict((k, params[k]) for k in accepted_filters"},{"line_number":57,"context_line":"                         if k in params)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNK0%3D","line":55,"in_reply_to":"AAAAXH%2F%2FPv4%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"designate/api/v2/views/options.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Betsy Luzader \u003cbetsy.luzader@rackspace.com\u003e"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPts%3D","line":3,"updated":"2014-04-23 04:51:08.000000000","message":"Do you want Betsy and Rackspace to take credit for your work :-)","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2014 Rackspace"},{"line_number":2,"context_line":"#"},{"line_number":3,"context_line":"# Author: Betsy Luzader \u003cbetsy.luzader@rackspace.com\u003e"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":6,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNLs%3D","line":3,"in_reply_to":"AAAAXH%2F%2FPts%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class OptionsView(base_view.BaseView):"},{"line_number":25,"context_line":"    \"\"\" Model a Blacklist API response as a python dictionary \"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    _resource_name \u003d \u0027option\u0027"},{"line_number":28,"context_line":"    _collection_name \u003d \u0027options\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPtk%3D","line":25,"updated":"2014-04-23 04:51:08.000000000","message":"The above comment needs to be updated.","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"class OptionsView(base_view.BaseView):"},{"line_number":25,"context_line":"    \"\"\" Model a Blacklist API response as a python dictionary \"\"\""},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    _resource_name \u003d \u0027option\u0027"},{"line_number":28,"context_line":"    _collection_name \u003d \u0027options\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNLo%3D","line":25,"in_reply_to":"AAAAXH%2F%2FPtk%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    _collection_name \u003d \u0027options\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def show_basic(self, context, request, option):"},{"line_number":31,"context_line":"        \"\"\" Detailed view of an option \"\"\""},{"line_number":32,"context_line":"        return {"},{"line_number":33,"context_line":"            \"id\": option[\u0027id\u0027],"},{"line_number":34,"context_line":"            \"key\": option[\u0027key\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPsw%3D","line":31,"updated":"2014-04-23 04:51:08.000000000","message":"Some files list this as a basic view and some list this as a detailed view.  Wonder which is correct.","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    _collection_name \u003d \u0027options\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    def show_basic(self, context, request, option):"},{"line_number":31,"context_line":"        \"\"\" Detailed view of an option \"\"\""},{"line_number":32,"context_line":"        return {"},{"line_number":33,"context_line":"            \"id\": option[\u0027id\u0027],"},{"line_number":34,"context_line":"            \"key\": option[\u0027key\u0027],"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNLA%3D","line":31,"in_reply_to":"AAAAXH%2F%2FPsw%3D","updated":"2014-04-23 10:55:16.000000000","message":"Went with overview - not 100% sure myself","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"755426958c40a8d88245616818e0f1360586e5d6","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\" Overview of an option \"\"\""},{"line_number":32,"context_line":"        return {"},{"line_number":33,"context_line":"            \"id\": option[\u0027id\u0027],"},{"line_number":34,"context_line":"            \"key\": option[\u0027key\u0027],"},{"line_number":35,"context_line":"            \"value\": option[\u0027value\u0027],"},{"line_number":36,"context_line":"            \"created_at\": option[\u0027created_at\u0027],"},{"line_number":37,"context_line":"            \"updated_at\": option[\u0027updated_at\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FMEk%3D","line":34,"updated":"2014-04-23 16:32:59.000000000","message":"Should tenant_id be returned too?","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"feec606631568c71af3f60a3b5d1f95ad593eaae","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \"\"\" Overview of an option \"\"\""},{"line_number":32,"context_line":"        return {"},{"line_number":33,"context_line":"            \"id\": option[\u0027id\u0027],"},{"line_number":34,"context_line":"            \"key\": option[\u0027key\u0027],"},{"line_number":35,"context_line":"            \"value\": option[\u0027value\u0027],"},{"line_number":36,"context_line":"            \"created_at\": option[\u0027created_at\u0027],"},{"line_number":37,"context_line":"            \"updated_at\": option[\u0027updated_at\u0027],"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FJ%2BM%3D","line":34,"in_reply_to":"AAAAXH%2F%2FMEk%3D","updated":"2014-04-23 16:49:32.000000000","message":"Done","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"3db4a3d20742859c1902b33ae813a5482abc3e40","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def load(self, context, request, body):"},{"line_number":43,"context_line":"        \"\"\" Extract a \"central\" compatible dict from an API call \"\"\""},{"line_number":44,"context_line":"        valid_keys \u003d (\u0027key\u0027, \u0027value\u0027, \u0027tenant_id\u0027)"},{"line_number":45,"context_line":"        return self._load(context, request, body, valid_keys)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAXH%2F%2FAmc%3D","line":44,"updated":"2014-04-24 17:31:12.000000000","message":"The json schema specifies project_id.  Should there be a mapping setup here (or in the controller) between project_id and tenant_id?","commit_id":"cc77466613435aff7d47cfdc804722b4d8f57a87"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c1c572fdce313b5639c0f6cf66cba3f17978e087","unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def load(self, context, request, body):"},{"line_number":43,"context_line":"        \"\"\" Extract a \"central\" compatible dict from an API call \"\"\""},{"line_number":44,"context_line":"        valid_keys \u003d (\u0027key\u0027, \u0027value\u0027, \u0027tenant_id\u0027)"},{"line_number":45,"context_line":"        return self._load(context, request, body, valid_keys)"}],"source_content_type":"text/x-python","patch_set":3,"id":"bad4c104_dd9f3c4f","line":44,"in_reply_to":"AAAAXH%2F%2FAmc%3D","updated":"2014-04-29 11:03:43.000000000","message":"I realised that it shouldn\u0027t have been there at all... we don\u0027t want to allow people to set other peoples options","commit_id":"cc77466613435aff7d47cfdc804722b4d8f57a87"}],"designate/central/rpcapi.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    def create_option(self, context, values):"},{"line_number":404,"context_line":"        LOG.info(\"create_option: Calling central\u0027s create_option\")"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00273.3\u0027)"},{"line_number":407,"context_line":"        return cctxt.call(context, \u0027create_option\u0027, values\u003dvalues)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def get_option(self, context, option_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPrs%3D","line":406,"updated":"2014-04-23 04:51:08.000000000","message":"The version number should be higher.","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":403,"context_line":"    def create_option(self, context, values):"},{"line_number":404,"context_line":"        LOG.info(\"create_option: Calling central\u0027s create_option\")"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        cctxt \u003d self.client.prepare(version\u003d\u00273.3\u0027)"},{"line_number":407,"context_line":"        return cctxt.call(context, \u0027create_option\u0027, values\u003dvalues)"},{"line_number":408,"context_line":""},{"line_number":409,"context_line":"    def get_option(self, context, option_id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNL0%3D","line":406,"in_reply_to":"AAAAXH%2F%2FPrs%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"designate/central/service.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        raise exceptions.Backend(\u0027Unknown backend failure: %r\u0027 % exc)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class Service(service.Service):"},{"line_number":50,"context_line":"    RPC_API_VERSION \u003d \u00273.3\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPrk%3D","line":49,"updated":"2014-04-23 04:51:08.000000000","message":"The version number should be higher.","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        raise exceptions.Backend(\u0027Unknown backend failure: %r\u0027 % exc)"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class Service(service.Service):"},{"line_number":50,"context_line":"    RPC_API_VERSION \u003d \u00273.3\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNMI%3D","line":49,"in_reply_to":"AAAAXH%2F%2FPrk%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"    def create_option(self, context, values):"},{"line_number":1432,"context_line":""},{"line_number":1433,"context_line":"        # Default to creating in the current users tenant"},{"line_number":1434,"context_line":"        if \u0027tenant_id\u0027 not in values:"},{"line_number":1435,"context_line":"            values[\u0027tenant_id\u0027] \u003d context.tenant"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"        target \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPnc%3D","line":1434,"updated":"2014-04-23 04:51:08.000000000","message":"Is it possible to have \u0027tenant_id\u0027 in values?  The current valid_keys in load shows only \u0027key\u0027, \u0027value\u0027","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":1431,"context_line":"    def create_option(self, context, values):"},{"line_number":1432,"context_line":""},{"line_number":1433,"context_line":"        # Default to creating in the current users tenant"},{"line_number":1434,"context_line":"        if \u0027tenant_id\u0027 not in values:"},{"line_number":1435,"context_line":"            values[\u0027tenant_id\u0027] \u003d context.tenant"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"        target \u003d {"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNMM%3D","line":1434,"in_reply_to":"AAAAXH%2F%2FPnc%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        return option"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"    def delete_option(self, context, option_id):"},{"line_number":1494,"context_line":"        policy.check(\u0027delete_option\u0027, context)"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"        with self.storage_api.delete_option(context,"},{"line_number":1497,"context_line":"                                            option_id) as option:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPZo%3D","line":1494,"updated":"2014-04-23 04:51:08.000000000","message":"Should the policy check for delete include a target similar to get_option?","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":1491,"context_line":"        return option"},{"line_number":1492,"context_line":""},{"line_number":1493,"context_line":"    def delete_option(self, context, option_id):"},{"line_number":1494,"context_line":"        policy.check(\u0027delete_option\u0027, context)"},{"line_number":1495,"context_line":""},{"line_number":1496,"context_line":"        with self.storage_api.delete_option(context,"},{"line_number":1497,"context_line":"                                            option_id) as option:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNME%3D","line":1494,"in_reply_to":"AAAAXH%2F%2FPZo%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"755426958c40a8d88245616818e0f1360586e5d6","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class Service(service.Service):"},{"line_number":50,"context_line":"    RPC_API_VERSION \u003d \u00273.3\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FM%2Bk%3D","line":50,"updated":"2014-04-23 16:32:59.000000000","message":"The version is not yet updated here.","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"feec606631568c71af3f60a3b5d1f95ad593eaae","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class Service(service.Service):"},{"line_number":50,"context_line":"    RPC_API_VERSION \u003d \u00273.3\u0027"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    target \u003d messaging.Target(version\u003dRPC_API_VERSION)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FJ9w%3D","line":50,"in_reply_to":"AAAAXH%2F%2FM%2Bk%3D","updated":"2014-04-23 16:49:32.000000000","message":"Done","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"755426958c40a8d88245616818e0f1360586e5d6","unresolved":false,"context_lines":[{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"        return options"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    def find_option(self, context, criterion):"},{"line_number":1475,"context_line":"        policy.check(\u0027find_option\u0027, context)"},{"line_number":1476,"context_line":""},{"line_number":1477,"context_line":"        option \u003d self.storage_api.find_option(context, criterion)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FKHI%3D","line":1474,"updated":"2014-04-23 16:32:59.000000000","message":"Currently find_option is not invoked from api.  Do we need this for later?","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"feec606631568c71af3f60a3b5d1f95ad593eaae","unresolved":false,"context_lines":[{"line_number":1471,"context_line":""},{"line_number":1472,"context_line":"        return options"},{"line_number":1473,"context_line":""},{"line_number":1474,"context_line":"    def find_option(self, context, criterion):"},{"line_number":1475,"context_line":"        policy.check(\u0027find_option\u0027, context)"},{"line_number":1476,"context_line":""},{"line_number":1477,"context_line":"        option \u003d self.storage_api.find_option(context, criterion)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FJ9Y%3D","line":1474,"in_reply_to":"AAAAXH%2F%2FKHI%3D","updated":"2014-04-23 16:49:32.000000000","message":"yes, this may be needed by a sync handler - so I figured it would be better to include it.","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"755426958c40a8d88245616818e0f1360586e5d6","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"            \u0027option_id\u0027: option_id"},{"line_number":1497,"context_line":"        }"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"        policy.check(\u0027get_option\u0027, context, target)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"        with self.storage_api.delete_option(context,"},{"line_number":1502,"context_line":"                                            option_id) as option:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FM%2B8%3D","line":1499,"updated":"2014-04-23 16:32:59.000000000","message":"This should be delete_option","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"feec606631568c71af3f60a3b5d1f95ad593eaae","unresolved":false,"context_lines":[{"line_number":1496,"context_line":"            \u0027option_id\u0027: option_id"},{"line_number":1497,"context_line":"        }"},{"line_number":1498,"context_line":""},{"line_number":1499,"context_line":"        policy.check(\u0027get_option\u0027, context, target)"},{"line_number":1500,"context_line":""},{"line_number":1501,"context_line":"        with self.storage_api.delete_option(context,"},{"line_number":1502,"context_line":"                                            option_id) as option:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAXH%2F%2FJ9Q%3D","line":1499,"in_reply_to":"AAAAXH%2F%2FM%2B8%3D","updated":"2014-04-23 16:49:32.000000000","message":"Done","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"2a4124e6ffe1e6be56d8bf23e2e34e9286d377d0","unresolved":false,"context_lines":[{"line_number":1432,"context_line":""},{"line_number":1433,"context_line":"        # Default to creating in the current users tenant"},{"line_number":1434,"context_line":"        if \u0027tenant_id\u0027 not in values:"},{"line_number":1435,"context_line":"            values[\u0027tenant_id\u0027] \u003d context.tenant"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"        target \u003d {"},{"line_number":1438,"context_line":"            \u0027tenant_id\u0027: values[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_20c8f673","line":1435,"updated":"2014-04-30 14:50:22.000000000","message":"Not necessary to fix for this to be merged.\nThe if statement above would always be true.  Having an if statement here would imply that we would somehow have \u0027tenant_id\u0027 in values, whereas this is not true.\nSo target\u0027s \u0027tenant_id\u0027 should always be set to context.tenant, similar to how get_option and delete_option specify.","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c1cd5b39e19ec3ade38383e142f6bae807cf93f8","unresolved":false,"context_lines":[{"line_number":1432,"context_line":""},{"line_number":1433,"context_line":"        # Default to creating in the current users tenant"},{"line_number":1434,"context_line":"        if \u0027tenant_id\u0027 not in values:"},{"line_number":1435,"context_line":"            values[\u0027tenant_id\u0027] \u003d context.tenant"},{"line_number":1436,"context_line":""},{"line_number":1437,"context_line":"        target \u003d {"},{"line_number":1438,"context_line":"            \u0027tenant_id\u0027: values[\u0027tenant_id\u0027],"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_3a9df1bc","line":1435,"updated":"2014-05-06 17:20:24.000000000","message":"We might have, depending on where the call is coming from (eg sink handler)","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"2a4124e6ffe1e6be56d8bf23e2e34e9286d377d0","unresolved":false,"context_lines":[{"line_number":1462,"context_line":"        return option"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    def find_options(self, context, criterion\u003dNone, marker\u003dNone,"},{"line_number":1465,"context_line":"                     limit\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":1466,"context_line":"        policy.check(\u0027find_options\u0027, context)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        options \u003d self.storage_api.find_options(context, criterion,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_c0874a0e","line":1465,"updated":"2014-04-30 14:50:22.000000000","message":"Should find_options and find_option have one of the criteria as \u0027tenant_id\u0027 \u003d \u0027context.tenant\u0027.\nOtherwise would we end up searching/returning options for other tenant_ids?","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c1cd5b39e19ec3ade38383e142f6bae807cf93f8","unresolved":false,"context_lines":[{"line_number":1462,"context_line":"        return option"},{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    def find_options(self, context, criterion\u003dNone, marker\u003dNone,"},{"line_number":1465,"context_line":"                     limit\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":1466,"context_line":"        policy.check(\u0027find_options\u0027, context)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        options \u003d self.storage_api.find_options(context, criterion,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_da3fa5b2","line":1465,"in_reply_to":"9ad9bd40_c0874a0e","updated":"2014-05-06 17:20:24.000000000","message":"That is already done at the storage layer - unless someone has all-tenants in their context, they can only get results for their own tenant from the DB","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"2a4124e6ffe1e6be56d8bf23e2e34e9286d377d0","unresolved":false,"context_lines":[{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    def find_options(self, context, criterion\u003dNone, marker\u003dNone,"},{"line_number":1465,"context_line":"                     limit\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":1466,"context_line":"        policy.check(\u0027find_options\u0027, context)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        options \u003d self.storage_api.find_options(context, criterion,"},{"line_number":1469,"context_line":"                                                marker, limit,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_4baa7b71","line":1466,"updated":"2014-04-30 14:50:22.000000000","message":"Shouldn\u0027t the policy check also include the tenant_id and/or option_id for find_options, find_option and update_option","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"c1cd5b39e19ec3ade38383e142f6bae807cf93f8","unresolved":false,"context_lines":[{"line_number":1463,"context_line":""},{"line_number":1464,"context_line":"    def find_options(self, context, criterion\u003dNone, marker\u003dNone,"},{"line_number":1465,"context_line":"                     limit\u003dNone, sort_key\u003dNone, sort_dir\u003dNone):"},{"line_number":1466,"context_line":"        policy.check(\u0027find_options\u0027, context)"},{"line_number":1467,"context_line":""},{"line_number":1468,"context_line":"        options \u003d self.storage_api.find_options(context, criterion,"},{"line_number":1469,"context_line":"                                                marker, limit,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9ad9bd40_5a7b958b","line":1466,"in_reply_to":"9ad9bd40_4baa7b71","updated":"2014-05-06 17:20:24.000000000","message":"Reply \"Done\"","commit_id":"2c9269495292308a0200ed48a3ac67c00d975cb5"}],"designate/objects/option.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPiE%3D","line":1,"updated":"2014-04-23 04:51:08.000000000","message":"Do you want to change the copyright notice?","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"designate/resources/schemas/v2/option.json":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"755426958c40a8d88245616818e0f1360586e5d6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \"description\": \"Name of option\","},{"line_number":34,"context_line":"                    \"maxLength\": 255,"},{"line_number":35,"context_line":"                    \"required\": true"},{"line_number":36,"context_line":"                },"},{"line_number":37,"context_line":"                \"created_at\": {"},{"line_number":38,"context_line":"                    \"type\": \"string\","},{"line_number":39,"context_line":"                    \"description\": \"Date and time of option creation\","}],"source_content_type":"application/json","patch_set":2,"id":"AAAAXH%2F%2FMPM%3D","line":36,"updated":"2014-04-23 16:32:59.000000000","message":"Should the schema have tenant_id?","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"feec606631568c71af3f60a3b5d1f95ad593eaae","unresolved":false,"context_lines":[{"line_number":33,"context_line":"                    \"description\": \"Name of option\","},{"line_number":34,"context_line":"                    \"maxLength\": 255,"},{"line_number":35,"context_line":"                    \"required\": true"},{"line_number":36,"context_line":"                },"},{"line_number":37,"context_line":"                \"created_at\": {"},{"line_number":38,"context_line":"                    \"type\": \"string\","},{"line_number":39,"context_line":"                    \"description\": \"Date and time of option creation\","}],"source_content_type":"application/json","patch_set":2,"id":"AAAAXH%2F%2FJ88%3D","line":36,"in_reply_to":"AAAAXH%2F%2FMPM%3D","updated":"2014-04-23 16:49:32.000000000","message":"Done","commit_id":"f6a7a1d16aeb014f65d424d0e444c54ec17fd6e0"}],"designate/storage/impl_sqlalchemy/migrate_repo/versions/039_add_options_table.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Author: Betsy Luzader \u003cbetsy.luzader@rackspace.com\u003e"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPhg%3D","line":4,"updated":"2014-04-23 04:51:08.000000000","message":"Do you want Betsy and Rackspace to take credit for your work :-)","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright (c) 2014 Rackspace Hosting"},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"# Author: Betsy Luzader \u003cbetsy.luzader@rackspace.com\u003e"},{"line_number":5,"context_line":"#"},{"line_number":6,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":7,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNKk%3D","line":4,"in_reply_to":"AAAAXH%2F%2FPhg%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"designate/tests/__init__.py":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        \u0027key\u0027: \u0027default_zone.\u0027,"},{"line_number":241,"context_line":"        \u0027value\u0027: \u0027e0f04790c65511e39c1a0800200c9add\u0027,"},{"line_number":242,"context_line":"    }, {"},{"line_number":243,"context_line":"        \u0027key\u0027: \u0027default_zone.\u0027,"},{"line_number":244,"context_line":"        \u0027value\u0027: \u0027e0f04790c65511e39c1a0800200c9aff\u0027,"},{"line_number":245,"context_line":"    }]"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPgQ%3D","line":243,"updated":"2014-04-23 04:51:08.000000000","message":"Is there a reason to have 2 different values with the same key - \u0027default_zone.\u0027","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        \u0027key\u0027: \u0027default_zone.\u0027,"},{"line_number":241,"context_line":"        \u0027value\u0027: \u0027e0f04790c65511e39c1a0800200c9add\u0027,"},{"line_number":242,"context_line":"    }, {"},{"line_number":243,"context_line":"        \u0027key\u0027: \u0027default_zone.\u0027,"},{"line_number":244,"context_line":"        \u0027value\u0027: \u0027e0f04790c65511e39c1a0800200c9aff\u0027,"},{"line_number":245,"context_line":"    }]"},{"line_number":246,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNM4%3D","line":243,"in_reply_to":"AAAAXH%2F%2FPgQ%3D","updated":"2014-04-23 10:55:16.000000000","message":"Yeap, to test duplicate key entry - the 3rd one on the other hand is not needed","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            DatabaseFixture.get_fixture(REPOSITORY))"},{"line_number":285,"context_line":"        self.config("},{"line_number":286,"context_line":"            database_connection\u003dself.db_fixture.url,"},{"line_number":287,"context_line":"            connection_debug\u003d100,"},{"line_number":288,"context_line":"            group\u003d\u0027storage:sqlalchemy\u0027"},{"line_number":289,"context_line":"        )"},{"line_number":290,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FPfw%3D","line":287,"updated":"2014-04-23 04:51:08.000000000","message":"Should this be removed?","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":284,"context_line":"            DatabaseFixture.get_fixture(REPOSITORY))"},{"line_number":285,"context_line":"        self.config("},{"line_number":286,"context_line":"            database_connection\u003dself.db_fixture.url,"},{"line_number":287,"context_line":"            connection_debug\u003d100,"},{"line_number":288,"context_line":"            group\u003d\u0027storage:sqlalchemy\u0027"},{"line_number":289,"context_line":"        )"},{"line_number":290,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAXH%2F%2FNMQ%3D","line":287,"in_reply_to":"AAAAXH%2F%2FPfw%3D","updated":"2014-04-23 10:55:16.000000000","message":"No - I found it actually helps debuging failed tests - it does not show anything unless the tests fail","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}],"etc/designate/policy.json":[{"author":{"_account_id":8094,"name":"Vinod Mangalpally","email":"mrvinod@outlook.com","username":"vinodmr"},"change_message_id":"d71238964c8210ff3c8d826d11f9b5c9f94a381f","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    \"create_option\": \"rule:admin_or_owner\","},{"line_number":68,"context_line":"    \"find_option\": \"rule:admin_or_owner\","},{"line_number":69,"context_line":"    \"find_option\": \"rule:admin_or_owner\","},{"line_number":70,"context_line":"    \"get_option\": \"rule:admin_or_owner\","},{"line_number":71,"context_line":"    \"update_option\": \"rule:admin_or_owner\","},{"line_number":72,"context_line":"    \"delete_option\": \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":1,"id":"AAAAXH%2F%2FPZs%3D","line":69,"updated":"2014-04-23 04:51:08.000000000","message":"This should be find_options","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"},{"author":{"_account_id":8099,"name":"Graham Hayes","email":"gr@ham.ie","username":"graham"},"change_message_id":"857b150bbff99766a62776188dc316973b93b848","unresolved":false,"context_lines":[{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    \"create_option\": \"rule:admin_or_owner\","},{"line_number":68,"context_line":"    \"find_option\": \"rule:admin_or_owner\","},{"line_number":69,"context_line":"    \"find_option\": \"rule:admin_or_owner\","},{"line_number":70,"context_line":"    \"get_option\": \"rule:admin_or_owner\","},{"line_number":71,"context_line":"    \"update_option\": \"rule:admin_or_owner\","},{"line_number":72,"context_line":"    \"delete_option\": \"rule:admin_or_owner\","}],"source_content_type":"application/json","patch_set":1,"id":"AAAAXH%2F%2FNMc%3D","line":69,"in_reply_to":"AAAAXH%2F%2FPZs%3D","updated":"2014-04-23 10:55:16.000000000","message":"Done","commit_id":"0f762af7df50323546cd3176364b0380a562a0ea"}]}
