)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"143a7676e20dd19ba7d9685839b5ff781695a6c8","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Steve McLellan \u003csteven.j.mclellan@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-05-03 14:57:17 -0500"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Improve plugin author information"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Adds to developer documentation some extra info on adding plugins and"},{"line_number":10,"context_line":"how to generate test data. Comments/additions welcome."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"1a122d0e_5a819e4c","line":7,"range":{"start_line":7,"start_character":15,"end_line":7,"end_character":21},"updated":"2016-05-04 16:33:06.000000000","message":"I\u0027ll correct this bizarre typo with any other suggested changes","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"}],"doc/source/authoring-plugins.rst":[{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    nc.list_networks()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    {\u0027networks\u0027: [ \u003clots of networks\u003e ]}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Since that\u0027s the output from neutron client, that\u0027s what should go in"},{"line_number":64,"context_line":"``searchlight/tests/functional/data/load/networks.json``, though you might"},{"line_number":65,"context_line":"also want more examples to test different things."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ea4bc2ae","line":62,"updated":"2016-05-06 18:20:29.000000000","message":"The code snippet above doesn\u0027t work.  Specifically line 58 is referencing session and session has not been assigned. It results in an error in keystone about missing get_endpoints.\n\nThe above works fine in the python interpreter, but it prints out a very difficult to read structure.  I would suggest adding pretty printing. It gives a much easier to read structure. Eg.\n\nimport json\nimport os\n\nfrom keystoneclient.auth.identity import v2\nfrom keystoneclient import session\nfrom neutronclient.v2_0 import client as nc_20\n\ndef get_session():\n    username \u003d os.environ[\u0027OS_USERNAME\u0027]\n    password \u003d os.environ[\u0027OS_PASSWORD\u0027]\n    auth_url \u003d os.environ[\u0027OS_AUTH_URL\u0027]\n    tenant_name \u003d os.environ[\u0027OS_TENANT_NAME\u0027]\n    auth \u003d v2.Password(**locals())\n    return session.Session(auth\u003dauth)\n\ndef pretty(input):\n    print(json.dumps(networks, indent\u003d4, sort_keys\u003dTrue))\n\nsession \u003d get_session()\nnc \u003d nc_20.Client(session\u003dsession)\nnetworks \u003d nc.list_networks()\npretty(networks)\n\nGives:\n {\n    \"networks\": [\n        {\n            \"admin_state_up\": true, \n            \"availability_zone_hints\": [], \n            \"availability_zones\": [\n                \"nova\"\n            ], \n            \"created_at\": \"2016-04-08T16:44:17\", \n            \"description\": \"\", \n            \"id\": \"4d73d257-35d5-4f4e-bc71-f7f629f21904\", \n            \"ipv4_address_scope\": null, \n            \"ipv6_address_scope\": null, \n            \"is_default\": true, \n            \"mtu\": 1450, \n            \"name\": \"public\", \n            \"port_security_enabled\": true, \n            \"provider:network_type\": \"vxlan\", \n            \"provider:physical_network\": null, \n            \"provider:segmentation_id\": 1053, \n            \"router:external\": true, \n            \"shared\": false, \n            \"status\": \"ACTIVE\", \n            \"subnets\": [\n                \"abcc5896-4844-4870-a5d8-6ae4b8edd42e\", \n                \"ea47304e-bd54-4337-901a-1eb5196ea18e\"\n            ], \n            \"tags\": [], \n            \"tenant_id\": \"fa1537e9bda9405891d004ef9c08d0d1\", \n            \"updated_at\": \"2016-04-08T16:44:17\"\n        }, \n        {\n            \"admin_state_up\": true, \n            \"availability_zone_hints\": [], \n            \"availability_zones\": [\n                \"nova\"\n            ], \n            \"created_at\": \"2016-04-08T16:43:59\", \n            \"description\": \"\", \n            \"id\": \"e8a62a6f-a76e-4380-be47-43243ba83c94\", \n            \"ipv4_address_scope\": null, \n            \"ipv6_address_scope\": null, \n            \"mtu\": 1450, \n            \"name\": \"private\", \n            \"port_security_enabled\": true, \n            \"provider:network_type\": \"vxlan\", \n            \"provider:physical_network\": null, \n            \"provider:segmentation_id\": 1014, \n            \"router:external\": false, \n            \"shared\": false, \n            \"status\": \"ACTIVE\", \n            \"subnets\": [\n                \"72f6de5a-00c0-4af9-bc68-0e5dc01054fe\", \n                \"8f37d5d1-01ce-40bf-a577-9f7959231bed\"\n            ], \n            \"tags\": [], \n            \"tenant_id\": \"9ca27bd3616347eab483bc7f1dc8bf17\", \n            \"updated_at\": \"2016-04-08T16:43:59\"\n        }\n    ]\n }","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":59,"context_line":"    nc.list_networks()"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"    {\u0027networks\u0027: [ \u003clots of networks\u003e ]}"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"Since that\u0027s the output from neutron client, that\u0027s what should go in"},{"line_number":64,"context_line":"``searchlight/tests/functional/data/load/networks.json``, though you might"},{"line_number":65,"context_line":"also want more examples to test different things."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_0da1b7a3","line":62,"in_reply_to":"dab17558_ea4bc2ae","updated":"2016-05-09 22:59:39.000000000","message":"added called to get_session, gussied up the output some","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dec5903a944cf135ab07afcfdb9c49c9d2b4855d","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    If you are running ``searchlight-listener`` you should first stop it, or"},{"line_number":80,"context_line":"    add a separate topic (comma-separated), otherwise ``searchlight-listener``"},{"line_number":81,"context_line":"    will receive and process some or all of the notifications you\u0027re trying to"},{"line_number":82,"context_line":"    look at."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"After restarting the ``q-svc`` service notifications will be output to the"},{"line_number":85,"context_line":"message bus (rabbitmq by default). They can be viewed in any RMQ management"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_39824e53","line":82,"updated":"2016-05-06 16:47:07.000000000","message":"How about something like this:\n\nThe ``searchlight-listener`` also listens on the ``searchlight_indexer`` topic, so if you have the ``searchlight-listener`` running, it will receive and try to process some or all of the notifications you\u0027re trying to look at.  Thus, you should either stop the ``searchlight-listener`` or add another topic (comma-separated) for the specific notifications you want to see.  For example,\n\n    notification_topics \u003d searchlight_indexer,my_test_topic","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    If you are running ``searchlight-listener`` you should first stop it, or"},{"line_number":80,"context_line":"    add a separate topic (comma-separated), otherwise ``searchlight-listener``"},{"line_number":81,"context_line":"    will receive and process some or all of the notifications you\u0027re trying to"},{"line_number":82,"context_line":"    look at."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"After restarting the ``q-svc`` service notifications will be output to the"},{"line_number":85,"context_line":"message bus (rabbitmq by default). They can be viewed in any RMQ management"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_8ae8367e","line":82,"in_reply_to":"dab17558_39824e53","updated":"2016-05-06 18:20:29.000000000","message":"+1 this comment.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":79,"context_line":"    If you are running ``searchlight-listener`` you should first stop it, or"},{"line_number":80,"context_line":"    add a separate topic (comma-separated), otherwise ``searchlight-listener``"},{"line_number":81,"context_line":"    will receive and process some or all of the notifications you\u0027re trying to"},{"line_number":82,"context_line":"    look at."},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"After restarting the ``q-svc`` service notifications will be output to the"},{"line_number":85,"context_line":"message bus (rabbitmq by default). They can be viewed in any RMQ management"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ed4553b3","line":82,"in_reply_to":"dab17558_8ae8367e","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dec5903a944cf135ab07afcfdb9c49c9d2b4855d","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"After restarting the ``q-svc`` service notifications will be output to the"},{"line_number":85,"context_line":"message bus (rabbitmq by default). They can be viewed in any RMQ management"},{"line_number":86,"context_line":"tool; there is also a patch in ``test-scripts/listener.py`` that will listen"},{"line_number":87,"context_line":"for notifications::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_b6b00d8d","line":86,"range":{"start_line":86,"start_character":22,"end_line":86,"end_character":30},"updated":"2016-05-06 16:47:07.000000000","message":"maybe s/patch in/utility script/","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":83,"context_line":""},{"line_number":84,"context_line":"After restarting the ``q-svc`` service notifications will be output to the"},{"line_number":85,"context_line":"message bus (rabbitmq by default). They can be viewed in any RMQ management"},{"line_number":86,"context_line":"tool; there is also a patch in ``test-scripts/listener.py`` that will listen"},{"line_number":87,"context_line":"for notifications::"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_8d0da792","line":86,"range":{"start_line":86,"start_character":22,"end_line":86,"end_character":30},"in_reply_to":"dab17558_b6b00d8d","updated":"2016-05-09 22:59:39.000000000","message":"Not sure what i was thinking there, changed.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dec5903a944cf135ab07afcfdb9c49c9d2b4855d","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"},{"line_number":90,"context_line":"    ./test-scripts/listener.py"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Issuing various commands (``neutron net-create``, ``neutron net-update``,"},{"line_number":93,"context_line":"``neutron net-delete``) will cause ``listener.py`` to receive notifications."},{"line_number":94,"context_line":"Usually the notifications with ``event_type`` ending ``.end`` are the ones of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_b9f91ecb","line":91,"updated":"2016-05-06 16:47:07.000000000","message":"Maybe add:\n\n.. note::\n    If you added a custom topic as suggested above, for example,\n    ``my_test_topic``, you\u0027ll need to edit the ``listener.py``\n    script so that it will listen on your custom topic.  Find this\n    line:\n\n    topic \u003d \u0027searchlight_indexer\u0027\n\n    and replace it with:\n\n    topic \u003d \u0027my_test_topic\u0027","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"},{"line_number":90,"context_line":"    ./test-scripts/listener.py"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Issuing various commands (``neutron net-create``, ``neutron net-update``,"},{"line_number":93,"context_line":"``neutron net-delete``) will cause ``listener.py`` to receive notifications."},{"line_number":94,"context_line":"Usually the notifications with ``event_type`` ending ``.end`` are the ones of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ca77ded2","line":91,"in_reply_to":"dab17558_b9f91ecb","updated":"2016-05-06 18:20:29.000000000","message":"Can the test script be modified to take topic arg (searchlight_indexer default)?","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"},{"line_number":90,"context_line":"    ./test-scripts/listener.py"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Issuing various commands (``neutron net-create``, ``neutron net-update``,"},{"line_number":93,"context_line":"``neutron net-delete``) will cause ``listener.py`` to receive notifications."},{"line_number":94,"context_line":"Usually the notifications with ``event_type`` ending ``.end`` are the ones of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ad506b5f","line":91,"in_reply_to":"dab17558_b9f91ecb","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"    . ~/devstack/openrc admin admin"},{"line_number":90,"context_line":"    ./test-scripts/listener.py"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Issuing various commands (``neutron net-create``, ``neutron net-update``,"},{"line_number":93,"context_line":"``neutron net-delete``) will cause ``listener.py`` to receive notifications."},{"line_number":94,"context_line":"Usually the notifications with ``event_type`` ending ``.end`` are the ones of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ed4a73ab","line":91,"in_reply_to":"dab17558_ca77ded2","updated":"2016-05-09 22:59:39.000000000","message":"Yeah, but right now it accepts a pool argument that would arguably be more useful once we\u0027ve tested pools properly, and i haven\u0027t added argparse support","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. _Stevedore: http://docs.openstack.org/developer/stevedore/"},{"line_number":160,"context_line":".. _Heat: http://docs.openstack.org/developer/heat/template_guide/openstack.html"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ea03c20d","line":161,"updated":"2016-05-06 18:20:29.000000000","message":"Does python setup.py develop need to be rerun when you modify the entrypoints?","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":158,"context_line":""},{"line_number":159,"context_line":".. _Stevedore: http://docs.openstack.org/developer/stevedore/"},{"line_number":160,"context_line":".. _Heat: http://docs.openstack.org/developer/heat/template_guide/openstack.html"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_8dd2c7d0","line":161,"in_reply_to":"dab17558_ea03c20d","updated":"2016-05-09 22:59:39.000000000","message":"Yeah, will add a note","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_c53a31cd","line":164,"updated":"2016-05-06 18:20:29.000000000","message":"Maybe take out \"My usual approach\" and say A typical approach","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"b30f7dcc1b01c0eed97911e138d4e7295452971c","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_e5d81520","line":164,"in_reply_to":"dab17558_c53a31cd","updated":"2016-05-06 18:29:52.000000000","message":"I don\u0027t mind the first-person here -- I\u0027m not sure what the technical term is, but it gives a comforting \"I\u0027m in this with you\" tone to the discussion in this section.\n\nThat being said, it\u0027s a matter of taste, so you should probably go with whatever the PTL suggests :).","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"3032f684a4389d7884757f944d65f99b6527afba","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_fb4b9657","line":164,"in_reply_to":"dab17558_e5d81520","updated":"2016-05-06 19:02:34.000000000","message":"If this is comforting, then it doesn\u0027t matter enough to me to leave it.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"Writing some code"},{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_8d6e47ff","line":164,"in_reply_to":"dab17558_fb4b9657","updated":"2016-05-09 22:59:39.000000000","message":"Yeah, it was sort of intentional, to suggest there\u0027s not one way to go about it, but that it\u0027s an opinion.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    tox -epy34 searchlight.tests.unit.\u003cyour test module\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_c541913b","line":166,"updated":"2016-05-06 18:20:29.000000000","message":"New paragraph would look better at the start of \"You can run...\"","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":163,"context_line":"-----------------"},{"line_number":164,"context_line":"At this point you\u0027re probably about ready to start filling in the code. My"},{"line_number":165,"context_line":"usual approach is to create the unit test file first, and copy some of the"},{"line_number":166,"context_line":"more boilerplate functionality from one of the other plugins. You can run an"},{"line_number":167,"context_line":"individual test file with::"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"    tox -epy34 searchlight.tests.unit.\u003cyour test module\u003e"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_6d7163e0","line":166,"in_reply_to":"dab17558_c541913b","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    tox -epy34 searchlight.tests.unit.\u003cyour test module\u003e"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"This has the advantage of running just your tests and executing them very"},{"line_number":172,"context_line":"quickly; I\u0027ve found it easier to start from a full set of failing unit tests"},{"line_number":173,"context_line":"and build up the actual code from there. Functional tests I\u0027ve tended to add"},{"line_number":174,"context_line":"later."},{"line_number":175,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_856e69c7","line":172,"updated":"2016-05-06 18:20:29.000000000","message":"take out \"I\u0027ve\" and say \"It typically is easier...\"","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"This has the advantage of running just your tests and executing them very"},{"line_number":172,"context_line":"quickly; I\u0027ve found it easier to start from a full set of failing unit tests"},{"line_number":173,"context_line":"and build up the actual code from there. Functional tests I\u0027ve tended to add"},{"line_number":174,"context_line":"later."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Required plugin functions"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_85a5c905","line":173,"updated":"2016-05-06 18:20:29.000000000","message":"Functional tests are usually added later.\n\nIt would be good to give an example of running the functional tests as well (like you showed above with searchlight.tests.unit....)","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":170,"context_line":""},{"line_number":171,"context_line":"This has the advantage of running just your tests and executing them very"},{"line_number":172,"context_line":"quickly; I\u0027ve found it easier to start from a full set of failing unit tests"},{"line_number":173,"context_line":"and build up the actual code from there. Functional tests I\u0027ve tended to add"},{"line_number":174,"context_line":"later."},{"line_number":175,"context_line":""},{"line_number":176,"context_line":"Required plugin functions"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_2d359bf6","line":173,"in_reply_to":"dab17558_85a5c905","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def get_document_type(self):"},{"line_number":188,"context_line":"        return \"OS::Neutron::Net\""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Retrieving object for initial indexing"},{"line_number":191,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_45d00154","line":188,"updated":"2016-05-06 18:20:29.000000000","message":"Let\u0027s give a reference to Heat resource types.\n\nhttp://docs.openstack.org/developer/heat/template_guide/openstack.html","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    @classmethod"},{"line_number":187,"context_line":"    def get_document_type(self):"},{"line_number":188,"context_line":"        return \"OS::Neutron::Net\""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"Retrieving object for initial indexing"},{"line_number":191,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_ed2b9392","line":188,"in_reply_to":"dab17558_45d00154","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"dec5903a944cf135ab07afcfdb9c49c9d2b4855d","unresolved":false,"context_lines":[{"line_number":191,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Plugins must implement ``get_objects`` which in many cases will go to the"},{"line_number":194,"context_line":"API of the service it\"s indexing. It should return an iterable that will be"},{"line_number":195,"context_line":"passed to a function (also required) named ``serialize``, which in turn must"},{"line_number":196,"context_line":"return a dictionary suitable for Elasticsearch to index. In the example for"},{"line_number":197,"context_line":"Neutron networks, this would be a call to ``list_networks`` on an instance of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_b9d11efe","line":194,"range":{"start_line":194,"start_character":21,"end_line":194,"end_character":22},"updated":"2016-05-06 16:47:07.000000000","message":"This isn\u0027t your fault, but you might as well s/\"/\u0027/ .","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":191,"context_line":"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Plugins must implement ``get_objects`` which in many cases will go to the"},{"line_number":194,"context_line":"API of the service it\"s indexing. It should return an iterable that will be"},{"line_number":195,"context_line":"passed to a function (also required) named ``serialize``, which in turn must"},{"line_number":196,"context_line":"return a dictionary suitable for Elasticsearch to index. In the example for"},{"line_number":197,"context_line":"Neutron networks, this would be a call to ``list_networks`` on an instance of"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_2d1c7b76","line":194,"range":{"start_line":194,"start_character":21,"end_line":194,"end_character":22},"in_reply_to":"dab17558_b9d11efe","updated":"2016-05-09 22:59:39.000000000","message":"Done","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"70760b9dffed9c0f39a9db1f483b6243d397a9f2","unresolved":false,"context_lines":[{"line_number":215,"context_line":"because consumers will generally rely on those being present; a ``name`` field"},{"line_number":216,"context_line":"is highly advisable. If the resource doesn\"t contain these values your"},{"line_number":217,"context_line":"``serialize`` function can map to them. In particular, if your resource does"},{"line_number":218,"context_line":"not have a native ``id`` value, you must override ``get_document_id_field`` to"},{"line_number":219,"context_line":"so that the indexing code can retrieve the correct value when indexing."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"It is worth understanding how Elasticsearch indexes various field types,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_e382a351","line":218,"range":{"start_line":218,"start_character":76,"end_line":218,"end_character":78},"updated":"2016-05-09 10:27:37.000000000","message":"better to remove \u0027to\u0027, from my poor English : )","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":215,"context_line":"because consumers will generally rely on those being present; a ``name`` field"},{"line_number":216,"context_line":"is highly advisable. If the resource doesn\"t contain these values your"},{"line_number":217,"context_line":"``serialize`` function can map to them. In particular, if your resource does"},{"line_number":218,"context_line":"not have a native ``id`` value, you must override ``get_document_id_field`` to"},{"line_number":219,"context_line":"so that the indexing code can retrieve the correct value when indexing."},{"line_number":220,"context_line":""},{"line_number":221,"context_line":"It is worth understanding how Elasticsearch indexes various field types,"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_a8ab39d5","line":218,"range":{"start_line":218,"start_character":76,"end_line":218,"end_character":78},"in_reply_to":"dab17558_e382a351","updated":"2016-05-09 22:59:39.000000000","message":"My poor English apparently","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"70760b9dffed9c0f39a9db1f483b6243d397a9f2","unresolved":false,"context_lines":[{"line_number":270,"context_line":"regardless of Elasticsearch version. For more information see the Elasticsearch"},{"line_number":271,"context_line":"documentation_."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. _documentation: https://www.elastic.co/guide/en/elasticsearch/guide/current/doc-values.html"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Generally this default will be fine. However, there are several ways in which"},{"line_number":276,"context_line":"the default can be overriden:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_63deb36e","line":273,"updated":"2016-05-09 10:27:37.000000000","message":"The link shows a 404 : (","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":270,"context_line":"regardless of Elasticsearch version. For more information see the Elasticsearch"},{"line_number":271,"context_line":"documentation_."},{"line_number":272,"context_line":""},{"line_number":273,"context_line":".. _documentation: https://www.elastic.co/guide/en/elasticsearch/guide/current/doc-values.html"},{"line_number":274,"context_line":""},{"line_number":275,"context_line":"Generally this default will be fine. However, there are several ways in which"},{"line_number":276,"context_line":"the default can be overriden:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_68803147","line":273,"in_reply_to":"dab17558_63deb36e","updated":"2016-05-09 22:59:39.000000000","message":"Weird - looks like it got removed after 2.1","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"70760b9dffed9c0f39a9db1f483b6243d397a9f2","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    [resource_plugin:os_neutron_net]"},{"line_number":286,"context_line":"    mapping_use_doc_values \u003d false"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* For a plugin\u0027s entire mapping; in code, override the ``disable_doc_values``"},{"line_number":289,"context_line":"  property::"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @property"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_20e821b4","line":288,"updated":"2016-05-09 10:27:37.000000000","message":"Tried this method, but it didn\u0027t work. Not sure If I missed something.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5f96b8e7469d51505fd5bac799a076fc2a11531e","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    [resource_plugin:os_neutron_net]"},{"line_number":286,"context_line":"    mapping_use_doc_values \u003d false"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* For a plugin\u0027s entire mapping; in code, override the ``disable_doc_values``"},{"line_number":289,"context_line":"  property::"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @property"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_e88c2181","line":288,"in_reply_to":"dab17558_20e821b4","updated":"2016-05-09 22:59:39.000000000","message":"That might be a separate bug","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"7f30abadd86480b13504d6f35eedbf273327f1db","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    [resource_plugin:os_neutron_net]"},{"line_number":286,"context_line":"    mapping_use_doc_values \u003d false"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* For a plugin\u0027s entire mapping; in code, override the ``disable_doc_values``"},{"line_number":289,"context_line":"  property::"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @property"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_10beebd3","line":288,"in_reply_to":"dab17558_7ccbd6a5","updated":"2016-05-10 02:35:51.000000000","message":"Done, https://bugs.launchpad.net/searchlight/+bug/1579986","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"7ae5f1e0a2377d9222a50603adb6f6360eef2e37","unresolved":false,"context_lines":[{"line_number":285,"context_line":"    [resource_plugin:os_neutron_net]"},{"line_number":286,"context_line":"    mapping_use_doc_values \u003d false"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":"* For a plugin\u0027s entire mapping; in code, override the ``disable_doc_values``"},{"line_number":289,"context_line":"  property::"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":"    @property"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dab17558_7ccbd6a5","line":288,"in_reply_to":"dab17558_e88c2181","updated":"2016-05-09 23:38:54.000000000","message":"Lei - please file a bug if needed!","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1ec9eb0668a47120a64b1a8c2ef495111668a83c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    from keystoneclient.auth.identity import v2"},{"line_number":44,"context_line":"    from keystoneclient import session"},{"line_number":45,"context_line":"    from neutronclient.v2_0 import client as nc_20"},{"line_number":46,"context_line":"    import os"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_session():"},{"line_number":49,"context_line":"        username \u003d os.environ[\u0027OS_USERNAME\u0027]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_3c75ce97","line":46,"updated":"2016-05-09 23:38:24.000000000","message":"Need to import json","commit_id":"f6454c045adc8f1583ceb35475319b6830140544"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"630365bcac8e7b96f235b0061ac90c7625f912fc","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    from keystoneclient.auth.identity import v2"},{"line_number":44,"context_line":"    from keystoneclient import session"},{"line_number":45,"context_line":"    from neutronclient.v2_0 import client as nc_20"},{"line_number":46,"context_line":"    import os"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    def get_session():"},{"line_number":49,"context_line":"        username \u003d os.environ[\u0027OS_USERNAME\u0027]"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_f11344b6","line":46,"in_reply_to":"dab17558_3c75ce97","updated":"2016-05-10 15:39:47.000000000","message":"Done","commit_id":"f6454c045adc8f1583ceb35475319b6830140544"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1ec9eb0668a47120a64b1a8c2ef495111668a83c","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    After modifying entrypoints, you\u0027ll need to reinstall the searchlight"},{"line_number":213,"context_line":"    package to register them::"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        python setup.py develop"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. _Stevedore: http://docs.openstack.org/developer/stevedore/"},{"line_number":218,"context_line":".. _Heat: http://docs.openstack.org/developer/heat/template_guide/openstack.html"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_bc97fe8e","line":215,"updated":"2016-05-09 23:38:24.000000000","message":"Probably should also note that they may need to activate the virtual env (unless on devstack), with a direction on doing that.\n\nRemove:  This was previously removed on master.\n\nCan point them here if needed: http://docs.openstack.org/developer/searchlight/dev-environment.html#installing-searchlight\n\nWouldn\u0027t hurt to link from ^^^ to here as well.","commit_id":"f6454c045adc8f1583ceb35475319b6830140544"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"630365bcac8e7b96f235b0061ac90c7625f912fc","unresolved":false,"context_lines":[{"line_number":212,"context_line":"    After modifying entrypoints, you\u0027ll need to reinstall the searchlight"},{"line_number":213,"context_line":"    package to register them::"},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"        python setup.py develop"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":".. _Stevedore: http://docs.openstack.org/developer/stevedore/"},{"line_number":218,"context_line":".. _Heat: http://docs.openstack.org/developer/heat/template_guide/openstack.html"}],"source_content_type":"text/x-rst","patch_set":4,"id":"dab17558_ac1b1f72","line":215,"in_reply_to":"dab17558_bc97fe8e","updated":"2016-05-10 15:39:47.000000000","message":"Done; not sure what the \u0027remove:\u0027 line is referring to","commit_id":"f6454c045adc8f1583ceb35475319b6830140544"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1fc5e6f4ede72246a852bd588586f34068acf7b1","unresolved":false,"context_lines":[{"line_number":43,"context_line":"    import json"},{"line_number":44,"context_line":"    from keystoneclient.auth.identity import v2"},{"line_number":45,"context_line":"    from keystoneclient import session"},{"line_number":46,"context_line":"    from neutronclient.v2_0 import client as nc_20"},{"line_number":47,"context_line":"    import os"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def get_session():"}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_f261823a","line":46,"updated":"2016-05-10 16:16:33.000000000","message":"just because i\u0027m difficult, let\u0027s group the imports.","commit_id":"fe0b96d9947d0d61fa93084936428cf4734a6735"},{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"1fc5e6f4ede72246a852bd588586f34068acf7b1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        password \u003d os.environ[\u0027OS_PASSWORD\u0027]"},{"line_number":52,"context_line":"        auth_url \u003d os.environ[\u0027OS_AUTH_URL\u0027]"},{"line_number":53,"context_line":"        tenant_name \u003d os.environ[\u0027OS_TENANT_NAME\u0027]"},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"        auth \u003d v2.Password(**locals())"},{"line_number":56,"context_line":"        return session.Session(auth\u003dauth)"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"dab17558_5225ee06","line":54,"updated":"2016-05-10 16:16:33.000000000","message":"This works fine in a script, but this line break means I can\u0027t just copy paste into interactive python shell without error out:\n\n\u003e\u003e\u003e def get_session():\n...     username \u003d os.environ[\u0027OS_USERNAME\u0027]\n...     password \u003d os.environ[\u0027OS_PASSWORD\u0027]\n...     auth_url \u003d os.environ[\u0027OS_AUTH_URL\u0027]\n...     tenant_name \u003d os.environ[\u0027OS_TENANT_NAME\u0027]\n... \n\u003e\u003e\u003e     auth \u003d v2.Password(**locals())\n  File \"\u003cstdin\u003e\", line 1\n    auth \u003d v2.Password(**locals())\n    ^\nIndentationError: unexpected indent\n\u003e\u003e\u003e     return session.Session(auth\u003dauth)\n  File \"\u003cstdin\u003e\", line 1\n    return session.Session(auth\u003dauth)\n    ^\nIndentationError: unexpected indent","commit_id":"fe0b96d9947d0d61fa93084936428cf4734a6735"}],"test-scripts/listener.py":[{"author":{"_account_id":7665,"name":"Travis Tripp","email":"os.travis.tripp@gmail.com","username":"travis.tripp"},"change_message_id":"42db33f24426e01f48620dca1fbbf1d44bb149a9","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    import urllib.parse as urlparse"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"topic \u003d \u0027searchlight_indexer\u0027"},{"line_number":34,"context_line":"password \u003d os.environ.get(\u0027OS_PASSWORD\u0027)"},{"line_number":35,"context_line":"host \u003d urlparse.urlparse(os.environ.get(\u0027OS_AUTH_URL\u0027)).hostname"},{"line_number":36,"context_line":"username \u003d \u0027stackrabbit\u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"dab17558_c572317c","line":33,"updated":"2016-05-06 18:20:29.000000000","message":"maybe take -topic as input arg.","commit_id":"eb52c0fc81cc6f82f278f1027cd09c9853bc7813"}]}
