)]}'
{"etc/policy.json":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"0c5f8fbc51aa9add5452dec14f96f0e806574390","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"resource:OS::Neutron::Subnet\": \"rule:admin_or_owner\","},{"line_number":24,"context_line":"    \"resource:OS::Neutron::Router\": \"rule:admin_or_owner\","},{"line_number":25,"context_line":"    \"resource:OS::Neutron::SecurityGroup\": \"rule:admin_or_owner\","},{"line_number":26,"context_line":"    \"resource:OS::Ironic::Chassis\": \"rule:admin_or_owner\","},{"line_number":27,"context_line":"    \"resource:OS::Ironic::Node\": \"rule:admin_or_owner\","},{"line_number":28,"context_line":"    \"resource:OS::Ironic::Port\": \"rule:admin_or_owner\""},{"line_number":29,"context_line":"}"}],"source_content_type":"application/json","patch_set":17,"id":"ba5201f7_01ac239f","line":26,"range":{"start_line":26,"start_character":42,"end_line":26,"end_character":56},"updated":"2017-01-03 22:11:26.000000000","message":"Should these be admin only? nova hypervisor uses \"rule:context_is_admin\" to restrict access to admins only","commit_id":"fd5c247c5895bfff8817d8823f0fb87edbb8a8e8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"9ec3b7c5d3734e33a41eda8ce9a24d09d90bf238","unresolved":false,"context_lines":[{"line_number":23,"context_line":"    \"resource:OS::Neutron::Subnet\": \"rule:admin_or_owner\","},{"line_number":24,"context_line":"    \"resource:OS::Neutron::Router\": \"rule:admin_or_owner\","},{"line_number":25,"context_line":"    \"resource:OS::Neutron::SecurityGroup\": \"rule:admin_or_owner\","},{"line_number":26,"context_line":"    \"resource:OS::Ironic::Chassis\": \"rule:admin_or_owner\","},{"line_number":27,"context_line":"    \"resource:OS::Ironic::Node\": \"rule:admin_or_owner\","},{"line_number":28,"context_line":"    \"resource:OS::Ironic::Port\": \"rule:admin_or_owner\""},{"line_number":29,"context_line":"}"}],"source_content_type":"application/json","patch_set":17,"id":"ba5201f7_d6f566cb","line":26,"range":{"start_line":26,"start_character":42,"end_line":26,"end_character":56},"in_reply_to":"ba5201f7_01ac239f","updated":"2017-01-04 12:08:19.000000000","message":"You are right, Ironic does not support per-resource RBAC.","commit_id":"fd5c247c5895bfff8817d8823f0fb87edbb8a8e8"}],"searchlight/elasticsearch/plugins/ironic/__init__.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_2b28bee1","line":1,"updated":"2016-10-01 05:49:49.000000000","message":"Do we need a Copyright 2016 Mirantis here and the other new files?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"7892a53086e8f7cce6beedcef41b54a9896dfcf1","unresolved":false,"context_lines":[{"line_number":16,"context_line":"def serialize_resource(resource, fields):"},{"line_number":17,"context_line":"    # NOTE: not all field present in some notifications, we should not reset"},{"line_number":18,"context_line":"    # them"},{"line_number":19,"context_line":"    serialized \u003d {field: resource[field] for field in fields"},{"line_number":20,"context_line":"                  if field in resource}"},{"line_number":21,"context_line":"    # Clone uuid"},{"line_number":22,"context_line":"    serialized[\u0027id\u0027] \u003d resource[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_bb58e433","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":14},"updated":"2016-12-03 00:17:11.000000000","message":"I don\u0027t think this is going ot work as you expect. The index_helper.save_documents call doesn\u0027t merge data with what\u0027s there already; the document is treated as a single entity and overwrites what was there before.","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b21fb25f8fce2cb5e858e6ea5fb2ff7bfbfece96","unresolved":false,"context_lines":[{"line_number":16,"context_line":"def serialize_resource(resource, fields):"},{"line_number":17,"context_line":"    # NOTE: not all field present in some notifications, we should not reset"},{"line_number":18,"context_line":"    # them"},{"line_number":19,"context_line":"    serialized \u003d {field: resource[field] for field in fields"},{"line_number":20,"context_line":"                  if field in resource}"},{"line_number":21,"context_line":"    # Clone uuid"},{"line_number":22,"context_line":"    serialized[\u0027id\u0027] \u003d resource[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_e8389ff0","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":14},"in_reply_to":"3a71b18c_bb58e433","updated":"2016-12-05 16:33:00.000000000","message":"Ironic notification have different set of field. For example I tested with change provision state that does not contains \"driver_info\" and \"chassis_uuid\" fields, but we do not lost info in this fields: http://paste.openstack.org/show/591449/","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"5d410721f75cb3787d6c3f114be9392c407a5d1e","unresolved":false,"context_lines":[{"line_number":16,"context_line":"def serialize_resource(resource, fields):"},{"line_number":17,"context_line":"    # NOTE: not all field present in some notifications, we should not reset"},{"line_number":18,"context_line":"    # them"},{"line_number":19,"context_line":"    serialized \u003d {field: resource[field] for field in fields"},{"line_number":20,"context_line":"                  if field in resource}"},{"line_number":21,"context_line":"    # Clone uuid"},{"line_number":22,"context_line":"    serialized[\u0027id\u0027] \u003d resource[\u0027uuid\u0027]"}],"source_content_type":"text/x-python","patch_set":10,"id":"1a6eadb0_791dcd0e","line":19,"range":{"start_line":19,"start_character":4,"end_line":19,"end_character":14},"in_reply_to":"3a71b18c_e8389ff0","updated":"2016-12-12 23:05:25.000000000","message":"Ah, you\u0027re using update_document, not index_document. In that case Searchlight does the merge.","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"}],"searchlight/elasticsearch/plugins/ironic/chassis.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return {"},{"line_number":39,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":44,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_cbde6210","line":41,"range":{"start_line":41,"start_character":21,"end_line":41,"end_character":23},"updated":"2016-09-07 20:14:34.000000000","message":"We should map \u0027id\u0027 here and make it the same as uuid","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":44,"context_line":"            }"},{"line_number":45,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_c8d21800","line":42,"range":{"start_line":42,"start_character":0,"end_line":42,"end_character":79},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":44,"context_line":"            }"},{"line_number":45,"context_line":"        }"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_0bfcca70","line":43,"range":{"start_line":43,"start_character":31,"end_line":43,"end_character":33},"updated":"2016-09-07 20:14:34.000000000","message":"We also try to include updated_at and \u0027name\u0027 as fields in all mappings because it makes it easier for the UI to standardize and for searching","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5de695259d8920f5a0a4fe706ecae2e02c7d2090","unresolved":false,"context_lines":[{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027}"},{"line_number":44,"context_line":"            }"},{"line_number":45,"context_line":"        }"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_df20324c","line":43,"range":{"start_line":43,"start_character":31,"end_line":43,"end_character":33},"in_reply_to":"9a89bdaa_0bfcca70","updated":"2016-09-12 09:15:10.000000000","message":"I forgot here about created_at, updated_at but ironic chassis does not have name at all.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        serialized[\u0027updated_at\u0027] \u003d serialized[\u0027created_at\u0027]"},{"line_number":24,"context_line":"    serialized.pop(\u0027links\u0027)"},{"line_number":25,"context_line":"    serialized.pop(\u0027nodes\u0027)"},{"line_number":26,"context_line":"    return serialized"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"# chassis is not mandatory for node, and is not parent plugin"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_eaddfee0","line":26,"updated":"2016-10-01 05:49:49.000000000","message":"All of the other plugins have their serialize_* methods in their __init__.py file. We should move this to ironic/__init__.py for consistency.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":31,"context_line":"    NotificationHandlerCls \u003d notification_handlers.ChassisHandler"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    @classmethod"},{"line_number":34,"context_line":"    def get_document_type(self):"},{"line_number":35,"context_line":"        return resource_types.IRONIC_CHASSIS"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"    def get_mapping(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_cb959a33","line":34,"updated":"2016-10-01 05:49:49.000000000","message":"@classmethod usually takes \"cls\" instead of \"self\". Not that we were consistent in other plugins :)","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return {"},{"line_number":39,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":44,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_b0bb64e4","line":41,"updated":"2016-10-01 05:49:49.000000000","message":"All of the plugins have an \"id\" field. I believe we use this to normalize our searches (e.g. the end user can search on the \"id\" field and it will easily span all resources. Travis, is this correct.\n\nIf so, we should add an \"id\" field. The serialize_* method can copy the value of \"uuid\" to \"id\" before the document gets indexed. This also means we do not have to override the get_document_id_field method.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"a33d4d4317fed0baae9241647b3985aa66b1f4cb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        return {"},{"line_number":39,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":40,"context_line":"            \u0027properties\u0027: {"},{"line_number":41,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":42,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":43,"context_line":"                \u0027description\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":44,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_369fb804","line":41,"in_reply_to":"3a98d1f4_b0bb64e4","updated":"2016-10-18 22:12:16.000000000","message":"Agreed - we mandate that plugins have an id field to make it easier to consume results. It can get its value from uuid. We also mandate \u0027name\u0027, which in this case maybe should be the description or perhaps just the UUID","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @property"},{"line_number":50,"context_line":"    def admin_only_fields(self):"},{"line_number":51,"context_line":"        return []"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_document_id_field(self):"},{"line_number":54,"context_line":"        return \u0027uuid\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_8a51da38","line":51,"updated":"2016-10-01 05:49:49.000000000","message":"A couple of items. If we do not have an admin only fields, we shouldn\u0027t override the base class. If we do override the base class, we want to append our admin only fields to the ones defined by the base class. Something like this:\n\n    def admin_only_fields(self):\n        conf \u003d super(ChassisIndex, self).admin_only_fields\n        return conf + \u003cOur local admin only fields\u003e","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"a33d4d4317fed0baae9241647b3985aa66b1f4cb","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    @property"},{"line_number":50,"context_line":"    def admin_only_fields(self):"},{"line_number":51,"context_line":"        return []"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_document_id_field(self):"},{"line_number":54,"context_line":"        return \u0027uuid\u0027"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_16bf1461","line":51,"in_reply_to":"3a98d1f4_8a51da38","updated":"2016-10-18 22:12:16.000000000","message":"Agreed - if this is admin only, then it can be marked as such in policy but this function should be removed","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"}],"searchlight/elasticsearch/plugins/ironic/nodes.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return {"},{"line_number":45,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":46,"context_line":"            \u0027properties\u0027: {"},{"line_number":47,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":48,"context_line":"                \u0027name\u0027: {"},{"line_number":49,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"},{"line_number":50,"context_line":"                    \u0027fields\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_6bf7168b","line":47,"range":{"start_line":47,"start_character":17,"end_line":47,"end_character":21},"updated":"2016-09-07 20:14:34.000000000","message":"Be good to add \u0027id\u0027 as an alias for uuid (copy it during serialization)","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \u0027chassis_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":55,"context_line":"                \u0027instance_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":56,"context_line":"                \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":57,"context_line":"                \u0027driver_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":58,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":59,"context_line":"                \u0027driver_internal_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":60,"context_line":"                                         \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_6832eca8","line":57,"range":{"start_line":57,"start_character":41,"end_line":57,"end_character":47},"updated":"2016-09-07 20:14:34.000000000","message":"Nested is probably wrong here. If there\u0027s only one \u0027driver_info\u0027 it should be \u0027type\u0027: \u0027object\u0027. \u0027nested\u0027 types are much more difficult to query and are only necessary where you expect a list rather than a single entity.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5de695259d8920f5a0a4fe706ecae2e02c7d2090","unresolved":false,"context_lines":[{"line_number":54,"context_line":"                \u0027chassis_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":55,"context_line":"                \u0027instance_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":56,"context_line":"                \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":57,"context_line":"                \u0027driver_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":58,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":59,"context_line":"                \u0027driver_internal_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":60,"context_line":"                                         \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_7f92c64c","line":57,"range":{"start_line":57,"start_character":41,"end_line":57,"end_character":47},"in_reply_to":"fa7ab95a_6832eca8","updated":"2016-09-12 09:15:10.000000000","message":"Thanks, done.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":56,"context_line":"                \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":57,"context_line":"                \u0027driver_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":58,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":59,"context_line":"                \u0027driver_internal_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":60,"context_line":"                                         \u0027properties\u0027: {}},"},{"line_number":61,"context_line":"                \u0027clean_step\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":62,"context_line":"                               \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_8823b057","line":59,"range":{"start_line":59,"start_character":50,"end_line":59,"end_character":56},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":58,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":59,"context_line":"                \u0027driver_internal_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":60,"context_line":"                                         \u0027properties\u0027: {}},"},{"line_number":61,"context_line":"                \u0027clean_step\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":62,"context_line":"                               \u0027properties\u0027: {}},"},{"line_number":63,"context_line":"                \u0027raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":64,"context_line":"                                \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_68d90c57","line":61,"range":{"start_line":61,"start_character":40,"end_line":61,"end_character":46},"updated":"2016-09-07 20:14:34.000000000","message":"object (no need to \u0027Done\u0027 all these)","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":60,"context_line":"                                         \u0027properties\u0027: {}},"},{"line_number":61,"context_line":"                \u0027clean_step\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":62,"context_line":"                               \u0027properties\u0027: {}},"},{"line_number":63,"context_line":"                \u0027raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":64,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":65,"context_line":"                \u0027target_raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":66,"context_line":"                                       \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_c8e858e5","line":63,"range":{"start_line":63,"start_character":41,"end_line":63,"end_character":47},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":62,"context_line":"                               \u0027properties\u0027: {}},"},{"line_number":63,"context_line":"                \u0027raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":64,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":65,"context_line":"                \u0027target_raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":66,"context_line":"                                       \u0027properties\u0027: {}},"},{"line_number":67,"context_line":"                \u0027instance_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":68,"context_line":"                                  \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_e8e51c09","line":65,"range":{"start_line":65,"start_character":48,"end_line":65,"end_character":54},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                                \u0027properties\u0027: {}},"},{"line_number":65,"context_line":"                \u0027target_raid_config\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":66,"context_line":"                                       \u0027properties\u0027: {}},"},{"line_number":67,"context_line":"                \u0027instance_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":68,"context_line":"                                  \u0027properties\u0027: {}},"},{"line_number":69,"context_line":"                \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":70,"context_line":"                               \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_88b1f003","line":67,"range":{"start_line":67,"start_character":43,"end_line":67,"end_character":49},"updated":"2016-09-07 20:14:34.000000000","message":"This one might be a list? Otherwise object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":66,"context_line":"                                       \u0027properties\u0027: {}},"},{"line_number":67,"context_line":"                \u0027instance_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":68,"context_line":"                                  \u0027properties\u0027: {}},"},{"line_number":69,"context_line":"                \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":70,"context_line":"                               \u0027properties\u0027: {}},"},{"line_number":71,"context_line":"                \u0027reservation\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":72,"context_line":"                \u0027power_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_68a74cbd","line":69,"range":{"start_line":69,"start_character":40,"end_line":69,"end_character":46},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":83,"context_line":"                \u0027resource_class\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":84,"context_line":"                \u0027inspection_started_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":85,"context_line":"                \u0027inspection_finished_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":86,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":87,"context_line":"                \u0027network_interface\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":88,"context_line":"                                      \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":89,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_688e6c2f","line":86,"range":{"start_line":86,"start_character":35,"end_line":86,"end_character":41},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        serialized[\u0027updated_at\u0027] \u003d serialized[\u0027created_at\u0027]"},{"line_number":24,"context_line":"    serialized.pop(\u0027links\u0027)"},{"line_number":25,"context_line":"    serialized.pop(\u0027ports\u0027)"},{"line_number":26,"context_line":"    serialized.pop(\u0027states\u0027)"},{"line_number":27,"context_line":"    return serialized"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_ebda564a","line":26,"updated":"2016-10-01 05:49:49.000000000","message":"If a field is optional (i.e. name, maintenance_reason, driver_internal_info, raid_config, clean_step) but not supplied in the payload, should we add them to the document with a \"None\" value? Would that be helpful for the end-user searching Ironic resources?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"a33d4d4317fed0baae9241647b3985aa66b1f4cb","unresolved":false,"context_lines":[{"line_number":23,"context_line":"        serialized[\u0027updated_at\u0027] \u003d serialized[\u0027created_at\u0027]"},{"line_number":24,"context_line":"    serialized.pop(\u0027links\u0027)"},{"line_number":25,"context_line":"    serialized.pop(\u0027ports\u0027)"},{"line_number":26,"context_line":"    serialized.pop(\u0027states\u0027)"},{"line_number":27,"context_line":"    return serialized"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_cb5df516","line":26,"in_reply_to":"3a98d1f4_ebda564a","updated":"2016-10-18 22:12:16.000000000","message":"Null values are implied if they\u0027re part of the mapping; i don\u0027t think adding explicit nulls adds anything","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":37,"context_line":"            port_helper\u003dself.child_plugins[0].index_helper)"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    @classmethod"},{"line_number":40,"context_line":"    def get_document_type(self):"},{"line_number":41,"context_line":"        return resource_types.IRONIC_NODE"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"    def get_mapping(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_eb96d63c","line":40,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        return {"},{"line_number":45,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":46,"context_line":"            \u0027properties\u0027: {"},{"line_number":47,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":48,"context_line":"                \u0027name\u0027: {"},{"line_number":49,"context_line":"                    \u0027type\u0027: \u0027string\u0027,"},{"line_number":50,"context_line":"                    \u0027fields\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_7353a6e2","line":47,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":50,"context_line":"                    \u0027fields\u0027: {"},{"line_number":51,"context_line":"                        \u0027raw\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027}"},{"line_number":52,"context_line":"                    }"},{"line_number":53,"context_line":"                },"},{"line_number":54,"context_line":"                \u0027chassis_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":55,"context_line":"                \u0027instance_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":56,"context_line":"                \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_0be062f9","line":53,"updated":"2016-10-01 05:49:49.000000000","message":"For the dynamic mapping of JSON objects, we may need to be aware of the Elasticsearch 2.0 limitation. Fields may not contain a \u0027.\u0027 in them. See this patch for a fix. We may need to do the same fix here (once the patch merges).\n\nhttps://review.openstack.org/#/c/37204","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                \u0027provision_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":78,"context_line":"                \u0027target_provision_state\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":79,"context_line":"                                           \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":80,"context_line":"                \u0027provision_updated_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":81,"context_line":"                \u0027maintenance\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":82,"context_line":"                \u0027maintenance_reason\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":83,"context_line":"                \u0027console_enabled\u0027: {\u0027type\u0027: \u0027boolean\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_cb32faa6","line":80,"updated":"2016-10-01 05:49:49.000000000","message":"Where does this field get set? I don\u0027t see it being returned by the API.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                \u0027last_error\u0027: {\u0027type\u0027: \u0027string\u0027},"},{"line_number":85,"context_line":"                \u0027resource_class\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":86,"context_line":"                \u0027inspection_started_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":87,"context_line":"                \u0027inspection_finished_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":88,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":89,"context_line":"                \u0027network_interface\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":90,"context_line":"                                      \u0027index\u0027: \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_8b1552e6","line":87,"updated":"2016-10-01 05:49:49.000000000","message":"It\u0027s strange, these two inspection_*_at fields are not listed in the API doc, but they do appear in API doc example. SO I\u0027m assuming they are returned by the API/notifications.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                \u0027resource_class\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":86,"context_line":"                \u0027inspection_started_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":87,"context_line":"                \u0027inspection_finished_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":88,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":89,"context_line":"                \u0027network_interface\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":90,"context_line":"                                      \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":91,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_4b1fca07","line":88,"updated":"2016-10-01 05:49:49.000000000","message":"Is this field returned as a JSON object? The API spec just mentions an dictionary object. If not will we need to convert it before indexing it into Elasticsearch?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"a33d4d4317fed0baae9241647b3985aa66b1f4cb","unresolved":false,"context_lines":[{"line_number":85,"context_line":"                \u0027resource_class\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":86,"context_line":"                \u0027inspection_started_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":87,"context_line":"                \u0027inspection_finished_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":88,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":89,"context_line":"                \u0027network_interface\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":90,"context_line":"                                      \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":91,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"}],"source_content_type":"text/x-python","patch_set":8,"id":"fa6399be_cb8b3567","line":88,"in_reply_to":"3a98d1f4_4b1fca07","updated":"2016-10-18 22:12:16.000000000","message":"This should be fine unless waht the API returns has any fields with unserializable values","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                \u0027inspection_finished_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":88,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":89,"context_line":"                \u0027network_interface\u0027: {\u0027type\u0027: \u0027string\u0027,"},{"line_number":90,"context_line":"                                      \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":91,"context_line":"                \u0027created_at\u0027: {\u0027type\u0027: \u0027date\u0027},"},{"line_number":92,"context_line":"                \u0027updated_at\u0027: {\u0027type\u0027: \u0027date\u0027}"},{"line_number":93,"context_line":"            }"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_2b743e66","line":90,"updated":"2016-10-01 05:49:49.000000000","message":"Are these fields the output from \"GET /v1/nodes/\u003cnode_ident\u003e\"? Is what happens when we specify \"detail\u003dtrue\" in the call in ironic_client.node (line 121), because it appears these fields aren\u0027t returned by the regular \"GET /v1/nodes\" call.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        }"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"    @property"},{"line_number":97,"context_line":"    def admin_only_fields(self):"},{"line_number":98,"context_line":"        return []"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    def get_document_id_field(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_6bc64669","line":97,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"}],"searchlight/elasticsearch/plugins/ironic/notification_handlers.py":[{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"            \u0027baremetal.node.provision_set.start\u0027: self.state_update,"},{"line_number":54,"context_line":"            \u0027baremetal.node.provision_set.end\u0027: self.state_update,"},{"line_number":55,"context_line":"            \u0027baremetal.node.provision_set.error\u0027: self.state_update,"},{"line_number":56,"context_line":"            \u0027baremetal.node.provision_set.success\u0027: self.state_update,"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"            \u0027baremetal.node.maintenance_set.success\u0027: self.maintenance,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_a9e4743b","line":55,"updated":"2016-10-04 18:11:25.000000000","message":"What payload is associated with the error? Is there updates we need to do? Are the errors different than the ones from the API \"/v1/nodes/\u003cid\u003e/states/provision?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":53,"context_line":"            \u0027baremetal.node.provision_set.start\u0027: self.state_update,"},{"line_number":54,"context_line":"            \u0027baremetal.node.provision_set.end\u0027: self.state_update,"},{"line_number":55,"context_line":"            \u0027baremetal.node.provision_set.error\u0027: self.state_update,"},{"line_number":56,"context_line":"            \u0027baremetal.node.provision_set.success\u0027: self.state_update,"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"            \u0027baremetal.node.maintenance_set.success\u0027: self.maintenance,"},{"line_number":59,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_c92b8032","line":56,"updated":"2016-10-04 18:11:25.000000000","message":"Provisioning has an entire state machine associated with it. Do we need to track this? Is that why we are listening for error notifications?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":55,"context_line":"            \u0027baremetal.node.provision_set.error\u0027: self.state_update,"},{"line_number":56,"context_line":"            \u0027baremetal.node.provision_set.success\u0027: self.state_update,"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"            \u0027baremetal.node.maintenance_set.success\u0027: self.maintenance,"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"            \u0027baremetal.node.create.success\u0027: self.create_update,"},{"line_number":61,"context_line":"            \u0027baremetal.node.update.success\u0027: self.create_update,"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_89f25899","line":58,"updated":"2016-10-04 18:11:25.000000000","message":"Does DELETE \"/v1/nodes/\u003cid\u003e/maintenance\" send a delete notification?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"            \u0027baremetal.node.create.success\u0027: self.create_update,"},{"line_number":61,"context_line":"            \u0027baremetal.node.update.success\u0027: self.create_update,"},{"line_number":62,"context_line":"            \u0027baremetal.node.delete.success\u0027: self.delete,"},{"line_number":63,"context_line":"        }"},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"    def get_log_fields(self, event_type, payload):"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_69926c59","line":62,"updated":"2016-10-04 18:11:25.000000000","message":"Are there notifications for the other API calls:\n\n    \"/v1/nodes/\u003cid\u003e/management/boot_device\"\n    \"/v1/nodes/\u003cid\u003e/states/raid\"\n    \"/v1/nodes/\u003cid\u003e/states/console\"\n\nOr do they come through the generic \"baremetal.node.update.success\" notification?","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":138,"context_line":"        )"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    @versioned_payload"},{"line_number":141,"context_line":"    def create_update(self, payload, timestamp):"},{"line_number":142,"context_line":"        LOG.debug(\"Updating port information for %s\", payload[\u0027uuid\u0027])"},{"line_number":143,"context_line":"        if not payload[\u0027updated_at\u0027]:"},{"line_number":144,"context_line":"            payload[\u0027updated_at\u0027] \u003d payload[\u0027created_at\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_c978e0fb","line":141,"updated":"2016-10-04 18:11:25.000000000","message":"Does the payload match the API? In other words, is the \"links\" field present in the payload? If so we will need to run the payload through serialize_api_chassis() before we index the document.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"8759aad2f2675c87284589176a78b4c885a49794","unresolved":false,"context_lines":[{"line_number":177,"context_line":"        )"},{"line_number":178,"context_line":""},{"line_number":179,"context_line":"    @versioned_payload"},{"line_number":180,"context_line":"    def create_update(self, payload, timestamp):"},{"line_number":181,"context_line":"        LOG.debug(\"Updating chassis information for %s\", payload[\u0027uuid\u0027])"},{"line_number":182,"context_line":"        if not payload[\u0027updated_at\u0027]:"},{"line_number":183,"context_line":"            payload[\u0027updated_at\u0027] \u003d payload[\u0027created_at\u0027]"}],"source_content_type":"text/x-python","patch_set":8,"id":"1a95cdbc_e9e11cd2","line":180,"updated":"2016-10-04 18:11:25.000000000","message":"Does the payload match the API? In other words, are the \"links\" and \"nodes\" fields present in the payload? If so we will need to run the payload through serialize_api_chassis() before we index the document.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":16150,"name":"Lei Zhang","email":"lei.a.zhang@intel.com","username":"leizhang"},"change_message_id":"419e7cb4d44cb4a814d8f6516c36ea0efaf5350f","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        LOG.debug(\"Deleting node %s\", node_id)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            self.port_helper.delete_documents_with_parent(node_id)"},{"line_number":92,"context_line":"            self.index_helper.delete_document({\u0027_id\u0027: node_id})"},{"line_number":93,"context_line":"            return pipeline.DeleteItem(self.index_helper.plugin, event_type,"},{"line_number":94,"context_line":"                                       payload, node_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"5a3905b3_6b9fb9b4","line":91,"updated":"2017-01-25 10:27:14.000000000","message":"These ports associated with the node should be also returned as pipeline items. The \u0027delete_documents_with_parent\u0027 call will return ports info used to build pipeline items.","commit_id":"738f580ed7db05a4483756a69c962f7f72e527d0"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"6e8ed09081fdca864ddb615b624fc4c27ac17692","unresolved":false,"context_lines":[{"line_number":88,"context_line":"        LOG.debug(\"Deleting node %s\", node_id)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        try:"},{"line_number":91,"context_line":"            self.port_helper.delete_documents_with_parent(node_id)"},{"line_number":92,"context_line":"            self.index_helper.delete_document({\u0027_id\u0027: node_id})"},{"line_number":93,"context_line":"            return pipeline.DeleteItem(self.index_helper.plugin, event_type,"},{"line_number":94,"context_line":"                                       payload, node_id)"}],"source_content_type":"text/x-python","patch_set":19,"id":"3a461143_0592619e","line":91,"in_reply_to":"5a3905b3_6b9fb9b4","updated":"2017-01-27 12:33:05.000000000","message":"Done","commit_id":"738f580ed7db05a4483756a69c962f7f72e527d0"}],"searchlight/elasticsearch/plugins/ironic/ports.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":42,"context_line":"            \u0027properties\u0027: {"},{"line_number":43,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":44,"context_line":"                \u0027node_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_2b38ae3c","line":43,"range":{"start_line":43,"start_character":24,"end_line":43,"end_character":26},"updated":"2016-09-07 20:14:34.000000000","message":"We also try to include updated_at, \u0027id\u0027 and \u0027name\u0027 as fields in all mappings because it makes it easier for the UI to standardize and for searching","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5de695259d8920f5a0a4fe706ecae2e02c7d2090","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":42,"context_line":"            \u0027properties\u0027: {"},{"line_number":43,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":44,"context_line":"                \u0027node_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_df7cb222","line":43,"range":{"start_line":43,"start_character":24,"end_line":43,"end_character":26},"in_reply_to":"9a89bdaa_2b38ae3c","updated":"2016-09-12 09:15:10.000000000","message":"Forgoy about updated_at here, but ironic does not have \"id\" for external resources.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":44,"context_line":"                \u0027node_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":47,"context_line":"                \u0027local_link_connection\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027nested\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_e8a19c95","line":46,"range":{"start_line":46,"start_character":35,"end_line":46,"end_character":41},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":47,"context_line":"                \u0027local_link_connection\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027nested\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"},{"line_number":50,"context_line":"                        \u0027switch_id\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027:"},{"line_number":51,"context_line":"                                      \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_68bcacbb","line":48,"range":{"start_line":48,"start_character":29,"end_line":48,"end_character":35},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"40ac39d45aa50f7a8fcbe928abdb312b69031980","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                    }"},{"line_number":56,"context_line":"                },"},{"line_number":57,"context_line":"                \u0027pxe_enabled\u0027: {\u0027type\u0027: \u0027boolean\u0027},"},{"line_number":58,"context_line":"                \u0027internal_info\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True,"},{"line_number":59,"context_line":"                                  \u0027properties\u0027: {}},"},{"line_number":60,"context_line":"            },"},{"line_number":61,"context_line":"            \u0027_parent\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"fa7ab95a_e8c8bc57","line":58,"range":{"start_line":58,"start_character":43,"end_line":58,"end_character":49},"updated":"2016-09-07 20:14:34.000000000","message":"object","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"    if not serialized[\u0027updated_at\u0027]:"},{"line_number":23,"context_line":"        serialized[\u0027updated_at\u0027] \u003d serialized[\u0027created_at\u0027]"},{"line_number":24,"context_line":"    serialized.pop(\u0027links\u0027)"},{"line_number":25,"context_line":"    return serialized"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class PortIndex(base.IndexBase):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_2ba51ea1","line":25,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        return {"},{"line_number":41,"context_line":"            \u0027dynamic\u0027: False,"},{"line_number":42,"context_line":"            \u0027properties\u0027: {"},{"line_number":43,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":44,"context_line":"                \u0027node_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_cb0afa89","line":43,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                \u0027uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":44,"context_line":"                \u0027node_uuid\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":45,"context_line":"                \u0027address\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":46,"context_line":"                \u0027extra\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":47,"context_line":"                \u0027local_link_connection\u0027: {"},{"line_number":48,"context_line":"                    \u0027type\u0027: \u0027object\u0027,"},{"line_number":49,"context_line":"                    \u0027properties\u0027: {"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_6bc2c635","line":46,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":14680,"name":"Rick Aulino","email":"rick.aulino@hpe.com","username":"ricka"},"change_message_id":"51450a3b78b99ef96bde23543f6589a463e476b8","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        }"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    @property"},{"line_number":69,"context_line":"    def admin_only_fields(self):"},{"line_number":70,"context_line":"        return []"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def get_document_id_field(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"3a98d1f4_8bd632ef","line":69,"updated":"2016-10-01 05:49:49.000000000","message":"Same comment as in chassis.py.","commit_id":"b4dc8b8ae3d021cc2e65e0cf22c3331e4376c69f"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"7892a53086e8f7cce6beedcef41b54a9896dfcf1","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_mapping(self):"},{"line_number":36,"context_line":"        mapping \u003d copy.deepcopy(resources.PORT_MAPPING)"},{"line_number":37,"context_line":"        mapping[\u0027_parent\u0027] \u003d {\u0027type\u0027: self.parent_plugin_type()}"},{"line_number":38,"context_line":"        return mapping"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_3678692a","line":37,"range":{"start_line":37,"start_character":38,"end_line":37,"end_character":42},"updated":"2016-12-03 00:17:11.000000000","message":"This gets done automatically in searchlight/elasticsearch/plugins/base.py L563. There\u0027s no harm doing it here but it shouldn\u0027t be required","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b21fb25f8fce2cb5e858e6ea5fb2ff7bfbfece96","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def get_mapping(self):"},{"line_number":36,"context_line":"        mapping \u003d copy.deepcopy(resources.PORT_MAPPING)"},{"line_number":37,"context_line":"        mapping[\u0027_parent\u0027] \u003d {\u0027type\u0027: self.parent_plugin_type()}"},{"line_number":38,"context_line":"        return mapping"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_a81307b7","line":37,"range":{"start_line":37,"start_character":38,"end_line":37,"end_character":42},"in_reply_to":"3a71b18c_3678692a","updated":"2016-12-05 16:33:00.000000000","message":"Done, it works.","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"}],"searchlight/elasticsearch/plugins/ironic/resources.py":[{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"7892a53086e8f7cce6beedcef41b54a9896dfcf1","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":30,"context_line":"        \u0027driver_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":31,"context_line":"        \u0027clean_step\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":32,"context_line":"        \u0027instance_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":33,"context_line":"        # Fields with identical names but different types cause"},{"line_number":34,"context_line":"        # problems, even for different plugins"},{"line_number":35,"context_line":"        \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_569c0569","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":22},"updated":"2016-12-03 00:17:11.000000000","message":"We normally try to add a \u0027name\u0027 field because otherwise the UI and CLI have to make something up. We\u0027ll need to check they can cope with not having one, or serialize uuid to name. That applies to the other resource tpyes also.","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b21fb25f8fce2cb5e858e6ea5fb2ff7bfbfece96","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        \u0027driver\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":30,"context_line":"        \u0027driver_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":31,"context_line":"        \u0027clean_step\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":32,"context_line":"        \u0027instance_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":33,"context_line":"        # Fields with identical names but different types cause"},{"line_number":34,"context_line":"        # problems, even for different plugins"},{"line_number":35,"context_line":"        \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_a85f87e3","line":32,"range":{"start_line":32,"start_character":9,"end_line":32,"end_character":22},"in_reply_to":"3a71b18c_569c0569","updated":"2016-12-05 16:33:00.000000000","message":"Done","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":10063,"name":"Steve McLellan","email":"steven.j.mclellan@gmail.com","username":"sjmc7"},"change_message_id":"7892a53086e8f7cce6beedcef41b54a9896dfcf1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027clean_step\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":32,"context_line":"        \u0027instance_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":33,"context_line":"        # Fields with identical names but different types cause"},{"line_number":34,"context_line":"        # problems, even for different plugins"},{"line_number":35,"context_line":"        \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":36,"context_line":"        \u0027power_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":37,"context_line":"        \u0027target_power_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_16f60dd7","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":18},"updated":"2016-12-03 00:17:11.000000000","message":"This is a bit unfortunate but it\u0027s because of a limitation in elasticsearch. One option is to remap the names in the serialize_ function","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"b21fb25f8fce2cb5e858e6ea5fb2ff7bfbfece96","unresolved":false,"context_lines":[{"line_number":31,"context_line":"        \u0027clean_step\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":32,"context_line":"        \u0027instance_info\u0027: {\u0027type\u0027: \u0027object\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":33,"context_line":"        # Fields with identical names but different types cause"},{"line_number":34,"context_line":"        # problems, even for different plugins"},{"line_number":35,"context_line":"        \u0027properties\u0027: {\u0027type\u0027: \u0027nested\u0027, \u0027dynamic\u0027: True, \u0027properties\u0027: {}},"},{"line_number":36,"context_line":"        \u0027power_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"},{"line_number":37,"context_line":"        \u0027target_power_state\u0027: {\u0027type\u0027: \u0027string\u0027, \u0027index\u0027: \u0027not_analyzed\u0027},"}],"source_content_type":"text/x-python","patch_set":10,"id":"3a71b18c_e855ffc1","line":34,"range":{"start_line":34,"start_character":10,"end_line":34,"end_character":18},"in_reply_to":"3a71b18c_16f60dd7","updated":"2016-12-05 16:33:00.000000000","message":"Done","commit_id":"a0651648a4006d6d59db8c3dcb7b989ba724c0fd"}],"searchlight/elasticsearch/plugins/openstack_clients.py":[{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"05444d215e4a4b97de08ee1f86063fb3221bc6a5","unresolved":false,"context_lines":[{"line_number":64,"context_line":"_session \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"NOVA_MIN_API_VERSION \u003d \u00272.1\u0027"},{"line_number":67,"context_line":"IRONIC_API_VERSION \u003d \u00271.22\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _get_session():"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_685aa5f3","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":27},"updated":"2016-09-08 08:26:01.000000000","message":"I think it will be better to make it configureable with a minimum version, hard coded version is not very friendly, we have to update it every time new version comes up.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"5de695259d8920f5a0a4fe706ecae2e02c7d2090","unresolved":false,"context_lines":[{"line_number":64,"context_line":"_session \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"NOVA_MIN_API_VERSION \u003d \u00272.1\u0027"},{"line_number":67,"context_line":"IRONIC_API_VERSION \u003d \u00271.22\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _get_session():"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a89bdaa_bf5b6ef5","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":27},"in_reply_to":"9a89bdaa_685aa5f3","updated":"2016-09-12 09:15:10.000000000","message":"Agree, will do, this patch in workinprogress until ironic changes approves.","commit_id":"715965996771bb01303c575005a19ed1fbe15de8"},{"author":{"_account_id":15888,"name":"Zhenyu Zheng","email":"zheng.zhenyu@outlook.com","username":"Kevin_Zheng"},"change_message_id":"c23862bc801c789690831aee3625088cd550bb80","unresolved":false,"context_lines":[{"line_number":64,"context_line":"_session \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"NOVA_MIN_API_VERSION \u003d \u00272.1\u0027"},{"line_number":67,"context_line":"IRONIC_API_VERSION \u003d \u00271.22\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _get_session():"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a3c09a3_ee29c938","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":27},"updated":"2017-01-16 03:28:59.000000000","message":"why set default to 1.22?","commit_id":"39729e29076042a42fc7ecf39a81f64c6cda74af"},{"author":{"_account_id":7711,"name":"Yuriy Zveryanskyy","email":"yzveryanskyy@mirantis.com","username":"yuriyz"},"change_message_id":"a0668e6738377cb4de71ab49b45d85111fc8b119","unresolved":false,"context_lines":[{"line_number":64,"context_line":"_session \u003d None"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"NOVA_MIN_API_VERSION \u003d \u00272.1\u0027"},{"line_number":67,"context_line":"IRONIC_API_VERSION \u003d \u00271.22\u0027"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"def _get_session():"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a3905b3_27827dc8","line":67,"range":{"start_line":67,"start_character":0,"end_line":67,"end_character":27},"in_reply_to":"7a3c09a3_ee29c938","updated":"2017-01-24 13:13:14.000000000","message":"This is minimum version that supports all current searchlight plugin ironic resources and fields.","commit_id":"39729e29076042a42fc7ecf39a81f64c6cda74af"}]}
