)]}'
{"doc/source/developing.rst":[{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":95,"context_line":"As noted in the section above, keystone\u0027s management CLI provides various tools"},{"line_number":96,"context_line":"for administrating OpenStack Identity. One of those tools is called"},{"line_number":97,"context_line":"``keystone-manage doctor`` and it is responsible for performing health checks"},{"line_number":98,"context_line":"about the deployment. If a ``keystone-manage doctor`` detects a symptom, it"},{"line_number":99,"context_line":"will provide the operator with suggestions to improve the overall health of the"},{"line_number":100,"context_line":"deployment. This section is dedicating to documenting how to write symptoms for"},{"line_number":101,"context_line":"``doctor``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_eaf5e8ec","line":98,"range":{"start_line":98,"start_character":25,"end_line":98,"end_character":27},"updated":"2016-11-17 18:22:27.000000000","message":"Could get rid of the \u0027a\u0027","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":95,"context_line":"As noted in the section above, keystone\u0027s management CLI provides various tools"},{"line_number":96,"context_line":"for administrating OpenStack Identity. One of those tools is called"},{"line_number":97,"context_line":"``keystone-manage doctor`` and it is responsible for performing health checks"},{"line_number":98,"context_line":"about the deployment. If a ``keystone-manage doctor`` detects a symptom, it"},{"line_number":99,"context_line":"will provide the operator with suggestions to improve the overall health of the"},{"line_number":100,"context_line":"deployment. This section is dedicating to documenting how to write symptoms for"},{"line_number":101,"context_line":"``doctor``."}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_767c61b5","line":98,"in_reply_to":"7a77a97e_eaf5e8ec","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":97,"context_line":"``keystone-manage doctor`` and it is responsible for performing health checks"},{"line_number":98,"context_line":"about the deployment. If a ``keystone-manage doctor`` detects a symptom, it"},{"line_number":99,"context_line":"will provide the operator with suggestions to improve the overall health of the"},{"line_number":100,"context_line":"deployment. This section is dedicating to documenting how to write symptoms for"},{"line_number":101,"context_line":"``doctor``."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_8ad1d459","line":100,"range":{"start_line":100,"start_character":28,"end_line":100,"end_character":38},"updated":"2016-11-17 18:22:27.000000000","message":"s/dedicating/dedicated","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":97,"context_line":"``keystone-manage doctor`` and it is responsible for performing health checks"},{"line_number":98,"context_line":"about the deployment. If a ``keystone-manage doctor`` detects a symptom, it"},{"line_number":99,"context_line":"will provide the operator with suggestions to improve the overall health of the"},{"line_number":100,"context_line":"deployment. This section is dedicating to documenting how to write symptoms for"},{"line_number":101,"context_line":"``doctor``."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_d638d5f0","line":100,"in_reply_to":"7a77a97e_8ad1d459","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` options is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_4a6a5c82","line":109,"range":{"start_line":109,"start_character":60,"end_line":109,"end_character":61},"updated":"2016-11-17 18:22:27.000000000","message":"s/options/option","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` options is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_762aa191","line":109,"in_reply_to":"7a77a97e_4a6a5c82","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` options is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_0afb04c2","line":110,"range":{"start_line":110,"start_character":15,"end_line":110,"end_character":23},"updated":"2016-11-17 18:22:27.000000000","message":"s/whatever/which","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` options is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_f614f14d","line":110,"in_reply_to":"7a77a97e_0afb04c2","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"will ensure ``doctor`` discovers properly named symptoms when executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom. ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with ``def"},{"line_number":122,"context_line":"symptom_`` it is considered a symptom that ``doctor`` should check for, and it"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_0ae944e6","line":119,"range":{"start_line":119,"start_character":58,"end_line":119,"end_character":59},"updated":"2016-11-17 18:22:27.000000000","message":"s/./?","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":116,"context_line":"will ensure ``doctor`` discovers properly named symptoms when executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom. ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with ``def"},{"line_number":122,"context_line":"symptom_`` it is considered a symptom that ``doctor`` should check for, and it"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_7601c105","line":119,"in_reply_to":"7a77a97e_0ae944e6","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom. ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with ``def"},{"line_number":122,"context_line":"symptom_`` it is considered a symptom that ``doctor`` should check for, and it"},{"line_number":123,"context_line":"should be run. The naming of the symptom, or method name, is extremely"},{"line_number":124,"context_line":"important since ``doctor`` will use it to describe what it\u0027s doing to whoever"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_2a944041","line":121,"range":{"start_line":121,"start_character":70,"end_line":121,"end_character":75},"updated":"2016-11-17 18:22:27.000000000","message":"might just need to move this down so it renders properly","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom. ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with ``def"},{"line_number":122,"context_line":"symptom_`` it is considered a symptom that ``doctor`` should check for, and it"},{"line_number":123,"context_line":"should be run. The naming of the symptom, or method name, is extremely"},{"line_number":124,"context_line":"important since ``doctor`` will use it to describe what it\u0027s doing to whoever"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_78152f3e","line":121,"in_reply_to":"7a77a97e_2a944041","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":135,"context_line":"it needs to know whether or not the symptom is actually present. We accomplish"},{"line_number":136,"context_line":"this by making all symptoms return ``True`` when a symptom is present. When a"},{"line_number":137,"context_line":"symptom evaluates to ``False``, ``doctor`` will move along to the next symptom"},{"line_number":138,"context_line":"in the list since. If the deployment isn\u0027t suffering for a specific symptom,"},{"line_number":139,"context_line":"``doctor`` should not suggest any actions related to that symptom (i.e. if"},{"line_number":140,"context_line":"you have your cholesterol under control, why would a physician recommend"},{"line_number":141,"context_line":"cholesterol medication if you don\u0027t need it)."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"To summarize:"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_4ac25c35","line":141,"range":{"start_line":138,"start_character":19,"end_line":141,"end_character":45},"updated":"2016-11-17 18:22:27.000000000","message":"I like the analogy","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"in the list since. If the deployment isn\u0027t suffering for a specific symptom,"},{"line_number":139,"context_line":"``doctor`` should not suggest any actions related to that symptom (i.e. if"},{"line_number":140,"context_line":"you have your cholesterol under control, why would a physician recommend"},{"line_number":141,"context_line":"cholesterol medication if you don\u0027t need it)."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"To summarize:"},{"line_number":144,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_f8277fb3","line":141,"in_reply_to":"7a77a97e_4ac25c35","updated":"2016-11-17 20:07:49.000000000","message":"Me, too :)","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"9bf9f5dfcc3a390f20f88fe39f6c87960420006c","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"To summarize:"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"- Symptoms should live in modules named according the most relevant"},{"line_number":146,"context_line":"  configuration section they apply to. This ensure we keep our symptoms"},{"line_number":147,"context_line":"  organized, grouped, and easy to find."},{"line_number":148,"context_line":"- When writing symptoms for a new section, remember to add the module name to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_0afa2475","line":145,"updated":"2016-11-17 18:22:27.000000000","message":"might need to add \u0027to\u0027 here? \"according to the most\"","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0ecbc06508e20ba191a26233d66e38023300b4f6","unresolved":false,"context_lines":[{"line_number":142,"context_line":""},{"line_number":143,"context_line":"To summarize:"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"- Symptoms should live in modules named according the most relevant"},{"line_number":146,"context_line":"  configuration section they apply to. This ensure we keep our symptoms"},{"line_number":147,"context_line":"  organized, grouped, and easy to find."},{"line_number":148,"context_line":"- When writing symptoms for a new section, remember to add the module name to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a77a97e_182d1b95","line":145,"in_reply_to":"7a77a97e_0afa2475","updated":"2016-11-17 20:07:49.000000000","message":"Done","commit_id":"8ccd6da16f42906560d5fa3fd06134ecbea7cb32"},{"author":{"_account_id":21420,"name":"Gage Hugo","email":"gagehugo@gmail.com","username":"ghugo"},"change_message_id":"a63e078fa06f24489d7fa6d73ad0d7550a3d8df3","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for which ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_f8b77fd5","line":110,"range":{"start_line":110,"start_character":15,"end_line":110,"end_character":62},"updated":"2016-11-17 20:24:09.000000000","message":"I was wrong about this.  It works better as either how it was before \"whatever\", or changed to \"configured for the set ``keystone.conf [token] provider``, ...\"","commit_id":"ade510052bbdb626a040d33c248c994f06d6e3c3"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"0a4a4c130d4a62d41f3b45ac29066d1a1e513216","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for which ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":2,"id":"7a77a97e_cc53e137","line":110,"in_reply_to":"7a77a97e_f8b77fd5","updated":"2016-11-17 22:16:26.000000000","message":"Done","commit_id":"ade510052bbdb626a040d33c248c994f06d6e3c3"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    $ find . -name \"*.pyc\" -delete"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Developing Configuration Checks"},{"line_number":93,"context_line":"-------------------------------"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"As noted in the section above, keystone\u0027s management CLI provides various tools"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_07d7724b","line":92,"range":{"start_line":92,"start_character":11,"end_line":92,"end_character":24},"updated":"2016-11-18 01:16:33.000000000","message":"i wouldnt be against calling this ``Doctor``","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":89,"context_line":"    $ find . -name \"*.pyc\" -delete"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Developing Configuration Checks"},{"line_number":93,"context_line":"-------------------------------"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"As noted in the section above, keystone\u0027s management CLI provides various tools"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_4ea5fe9f","line":92,"in_reply_to":"7a77a97e_07d7724b","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":101,"context_line":"``doctor``."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"},{"line_number":104,"context_line":"that we can check against, and provide a warning for if we detect"},{"line_number":105,"context_line":"misconfiguration. The ``doctor`` module is located in ``keystone/cmd/doctor/``."},{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_47124a0a","line":104,"range":{"start_line":104,"start_character":59,"end_line":104,"end_character":65},"updated":"2016-11-18 01:16:33.000000000","message":"detect a*","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":101,"context_line":"``doctor``."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"},{"line_number":104,"context_line":"that we can check against, and provide a warning for if we detect"},{"line_number":105,"context_line":"misconfiguration. The ``doctor`` module is located in ``keystone/cmd/doctor/``."},{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_ceb74ed6","line":104,"in_reply_to":"7a77a97e_47124a0a","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"},{"line_number":104,"context_line":"that we can check against, and provide a warning for if we detect"},{"line_number":105,"context_line":"misconfiguration. The ``doctor`` module is located in ``keystone/cmd/doctor/``."},{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_95e56939","line":105,"range":{"start_line":105,"start_character":54,"end_line":105,"end_character":78},"updated":"2016-11-18 01:16:33.000000000","message":":py:mod:`keystone/cmd/doctor`","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":102,"context_line":""},{"line_number":103,"context_line":"The ``doctor`` tool consists of a list of symptoms. Each symptom is something"},{"line_number":104,"context_line":"that we can check against, and provide a warning for if we detect"},{"line_number":105,"context_line":"misconfiguration. The ``doctor`` module is located in ``keystone/cmd/doctor/``."},{"line_number":106,"context_line":"The current checks are based heavily on inspecting configuration values. As a"},{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_eee32ad7","line":105,"in_reply_to":"7a77a97e_95e56939","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d5836154","line":110,"range":{"start_line":110,"start_character":59,"end_line":110,"end_character":65},"updated":"2016-11-18 01:16:33.000000000","message":"is set to*","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":107,"context_line":"result, many of the submodules within the ``doctor`` module are named after the"},{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_4ed33e04","line":110,"in_reply_to":"7a77a97e_d5836154","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"},{"line_number":114,"context_line":"symptoms, it\u0027s important to remember to add new modules to the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_35f655f9","line":111,"range":{"start_line":111,"start_character":32,"end_line":111,"end_character":65},"updated":"2016-11-18 01:16:33.000000000","message":":py:mod:`keystone/cmd/doctor/tokens.py","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":108,"context_line":"configuration section for the symptoms they check. For example, if we want to"},{"line_number":109,"context_line":"ensure the ``keystone.conf [DEFAULT] max_token_size`` option is properly"},{"line_number":110,"context_line":"configured for whatever ``keystone.conf [token] provider`` is set, we can place"},{"line_number":111,"context_line":"that symptom in a module called ``keystone/cmd/doctor/tokens.py``. The symptom"},{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"},{"line_number":114,"context_line":"symptoms, it\u0027s important to remember to add new modules to the"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_ce610e3b","line":111,"in_reply_to":"7a77a97e_35f655f9","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"},{"line_number":114,"context_line":"symptoms, it\u0027s important to remember to add new modules to the"},{"line_number":115,"context_line":"``SYMPTOM_MODULES`` list in ``keystone/cmd/doctor/__init__.py``. Doing that"},{"line_number":116,"context_line":"will ensure ``doctor`` discovers properly named symptoms when executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d5d1a158","line":115,"range":{"start_line":115,"start_character":28,"end_line":115,"end_character":63},"updated":"2016-11-18 01:16:33.000000000","message":"hmm, i\u0027m not sure you can do it, but try: \n\n  :py:mod:`keystone/cmd/doctor/__init__.py`\n\nand see if it renders a link","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":112,"context_line":"will be loaded by importing the ``doctor`` module, which is done when"},{"line_number":113,"context_line":"``keystone-manage doctor`` is invoked from the command line. When adding new"},{"line_number":114,"context_line":"symptoms, it\u0027s important to remember to add new modules to the"},{"line_number":115,"context_line":"``SYMPTOM_MODULES`` list in ``keystone/cmd/doctor/__init__.py``. Doing that"},{"line_number":116,"context_line":"will ensure ``doctor`` discovers properly named symptoms when executed."},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_0ee6a6af","line":115,"in_reply_to":"7a77a97e_d5d1a158","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom? ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with"},{"line_number":122,"context_line":"``def symptom_`` it is considered a symptom that ``doctor`` should check for,"},{"line_number":123,"context_line":"and it should be run. The naming of the symptom, or method name, is extremely"},{"line_number":124,"context_line":"important since ``doctor`` will use it to describe what it\u0027s doing to whoever"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_75c36d89","line":121,"range":{"start_line":121,"start_character":15,"end_line":121,"end_character":29},"updated":"2016-11-18 01:16:33.000000000","message":"SYMPTOM_MODULES*","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":118,"context_line":"Now that we know symptoms are organized according to configuration sections,"},{"line_number":119,"context_line":"and how to add them, how exactly do we write a new symptom? ``doctor`` will"},{"line_number":120,"context_line":"automatically discover new symptoms by inspecting the methods of each symptom"},{"line_number":121,"context_line":"module (i.e. ``SYMPTOM_MODULE``). If a method declaration starts with"},{"line_number":122,"context_line":"``def symptom_`` it is considered a symptom that ``doctor`` should check for,"},{"line_number":123,"context_line":"and it should be run. The naming of the symptom, or method name, is extremely"},{"line_number":124,"context_line":"important since ``doctor`` will use it to describe what it\u0027s doing to whoever"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_aef77257","line":121,"in_reply_to":"7a77a97e_75c36d89","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  configuration section they apply to. This ensure we keep our symptoms"},{"line_number":147,"context_line":"  organized, grouped, and easy to find."},{"line_number":148,"context_line":"- When writing symptoms for a new section, remember to add the module name to"},{"line_number":149,"context_line":"  the ``SYMPTOM_MODULE`` list in ``keystone/cmd/doctor/__init__.py``."},{"line_number":150,"context_line":"- Remember to use a good name for the symptom method signature and to prepend"},{"line_number":151,"context_line":"  it with ``symptom_`` in order for it to be discovered automatically by"},{"line_number":152,"context_line":"  ``doctor``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_35449519","line":149,"range":{"start_line":149,"start_character":8,"end_line":149,"end_character":22},"updated":"2016-11-18 01:16:33.000000000","message":"SYMPTOM_MODULES*","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  configuration section they apply to. This ensure we keep our symptoms"},{"line_number":147,"context_line":"  organized, grouped, and easy to find."},{"line_number":148,"context_line":"- When writing symptoms for a new section, remember to add the module name to"},{"line_number":149,"context_line":"  the ``SYMPTOM_MODULE`` list in ``keystone/cmd/doctor/__init__.py``."},{"line_number":150,"context_line":"- Remember to use a good name for the symptom method signature and to prepend"},{"line_number":151,"context_line":"  it with ``symptom_`` in order for it to be discovered automatically by"},{"line_number":152,"context_line":"  ``doctor``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_554d913c","line":149,"range":{"start_line":149,"start_character":35,"end_line":149,"end_character":66},"updated":"2016-11-18 01:16:33.000000000","message":"same comment as above","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":146,"context_line":"  configuration section they apply to. This ensure we keep our symptoms"},{"line_number":147,"context_line":"  organized, grouped, and easy to find."},{"line_number":148,"context_line":"- When writing symptoms for a new section, remember to add the module name to"},{"line_number":149,"context_line":"  the ``SYMPTOM_MODULE`` list in ``keystone/cmd/doctor/__init__.py``."},{"line_number":150,"context_line":"- Remember to use a good name for the symptom method signature and to prepend"},{"line_number":151,"context_line":"  it with ``symptom_`` in order for it to be discovered automatically by"},{"line_number":152,"context_line":"  ``doctor``."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_2ea2824b","line":149,"in_reply_to":"7a77a97e_554d913c","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":150,"context_line":"- Remember to use a good name for the symptom method signature and to prepend"},{"line_number":151,"context_line":"  it with ``symptom_`` in order for it to be discovered automatically by"},{"line_number":152,"context_line":"  ``doctor``."},{"line_number":153,"context_line":"- Symptoms have to evaluate to ``True`` in order to provide feed back to"},{"line_number":154,"context_line":"  operators."},{"line_number":155,"context_line":"- Symptoms should have very thorough documentation strings that describe the"},{"line_number":156,"context_line":"  symptom, side-effects of the symptom, and ways to remediate it."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_d55fe1e2","line":153,"range":{"start_line":153,"start_character":60,"end_line":153,"end_character":69},"updated":"2016-11-18 01:16:33.000000000","message":"one word","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":150,"context_line":"- Remember to use a good name for the symptom method signature and to prepend"},{"line_number":151,"context_line":"  it with ``symptom_`` in order for it to be discovered automatically by"},{"line_number":152,"context_line":"  ``doctor``."},{"line_number":153,"context_line":"- Symptoms have to evaluate to ``True`` in order to provide feed back to"},{"line_number":154,"context_line":"  operators."},{"line_number":155,"context_line":"- Symptoms should have very thorough documentation strings that describe the"},{"line_number":156,"context_line":"  symptom, side-effects of the symptom, and ways to remediate it."}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_8e91d6f3","line":153,"in_reply_to":"7a77a97e_d55fe1e2","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"57b3ea52a68de6340e74e4a8ac80968a19abd342","unresolved":false,"context_lines":[{"line_number":156,"context_line":"  symptom, side-effects of the symptom, and ways to remediate it."},{"line_number":157,"context_line":""},{"line_number":158,"context_line":"For examples, feel free to run ``doctor`` locally using ``keystone-manage`` and"},{"line_number":159,"context_line":"inspect the existing symptoms. For help on developing specific symptoms for"},{"line_number":160,"context_line":"``doctor``, swing by #openstack-keystone on Freenode."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Database Migrations"},{"line_number":163,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_956ac97f","line":160,"range":{"start_line":159,"start_character":31,"end_line":160,"end_character":53},"updated":"2016-11-18 01:16:33.000000000","message":"meh","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a0cf1c9453530148144d8af635195b62b33529ed","unresolved":false,"context_lines":[{"line_number":157,"context_line":""},{"line_number":158,"context_line":"For examples, feel free to run ``doctor`` locally using ``keystone-manage`` and"},{"line_number":159,"context_line":"inspect the existing symptoms. For help on developing specific symptoms for"},{"line_number":160,"context_line":"``doctor``, swing by #openstack-keystone on Freenode."},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Database Migrations"},{"line_number":163,"context_line":"-------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"7a77a97e_6eaf1a2a","line":160,"in_reply_to":"7a77a97e_956ac97f","updated":"2016-11-18 03:30:21.000000000","message":"Done","commit_id":"4180eb72bc30376417cc8daa30737b3a7a487f2c"}]}
