)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"e37743ab1fe81fa3025badd009747f97b639f5af","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove references to Nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove remaining references to \"Nova\" where possible, code cleanup."},{"line_number":10,"context_line":"Also removed IP fields"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Michal Jastrzebski (inc0) \u003cmichal.jastrzebski@intel.com\u003e"},{"line_number":13,"context_line":"Change-Id: Ibad8f9fc6453321055029ad69b0374261509b9d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_93cb5152","line":10,"updated":"2015-02-11 11:16:04.000000000","message":"What is the plan for IP fields? It is possible to implement them in Nova? What not keeping them?","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"a64928d2521e994e3caad1af8bfd3af6406d47d6","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove references to Nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove remaining references to \"Nova\" where possible, code cleanup."},{"line_number":10,"context_line":"Also removed IP fields"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Michal Jastrzebski (inc0) \u003cmichal.jastrzebski@intel.com\u003e"},{"line_number":13,"context_line":"Change-Id: Ibad8f9fc6453321055029ad69b0374261509b9d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_3e05017a","line":10,"in_reply_to":"da86d52c_26a8a18c","updated":"2015-02-11 15:10:40.000000000","message":"By the way, there are many IP address libraries: IPy and ipaddress at least. ipaddress is now part of Python 3.3+ stdlib. I don\u0027t know if it matters or not. nova uses netaddress. I didn\u0027t know netaddress before working on OpenStack.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d7c9b0d7708893d4d1cac8660e88f3a51ffb962b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove references to Nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove remaining references to \"Nova\" where possible, code cleanup."},{"line_number":10,"context_line":"Also removed IP fields"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Michal Jastrzebski (inc0) \u003cmichal.jastrzebski@intel.com\u003e"},{"line_number":13,"context_line":"Change-Id: Ibad8f9fc6453321055029ad69b0374261509b9d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_db6a3719","line":10,"in_reply_to":"da86d52c_26a8a18c","updated":"2015-02-11 14:53:26.000000000","message":"I\u0027m not in favor of removing the IPAddress fields. Inevitably, each project will just redefine them, or (worse) just use a string field.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"e07c540abd8006c9df9cf7201a6755dc216ca95b","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove references to Nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove remaining references to \"Nova\" where possible, code cleanup."},{"line_number":10,"context_line":"Also removed IP fields"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Michal Jastrzebski (inc0) \u003cmichal.jastrzebski@intel.com\u003e"},{"line_number":13,"context_line":"Change-Id: Ibad8f9fc6453321055029ad69b0374261509b9d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_26a8a18c","line":10,"in_reply_to":"da86d52c_93cb5152","updated":"2015-02-11 11:42:13.000000000","message":"I think this isn\u0027t generic enough field type to land in oslo. At some point every project will have its own fields to implement, and whole network problem space is wide enough to have its own fields file...","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"8c8e2bb0503ceb5272302b48fb16d5ab89e77be1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Remove references to Nova"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Remove remaining references to \"Nova\" where possible, code cleanup."},{"line_number":10,"context_line":"Also removed IP fields"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Co-Authored-By: Michal Jastrzebski (inc0) \u003cmichal.jastrzebski@intel.com\u003e"},{"line_number":13,"context_line":"Change-Id: Ibad8f9fc6453321055029ad69b0374261509b9d5"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"da86d52c_3e2c2102","line":10,"in_reply_to":"da86d52c_db6a3719","updated":"2015-02-11 15:12:50.000000000","message":"hmm, I\u0027m afraid that if we open doors for ipv4, ipv6, then mac addresses, then subnets and so on and so on...\nhow about making separate file and store network-related stuff there?","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"}],"oslo_versionedobjects/__init__.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"    # NOTE(danms): You must make sure your object gets imported in this"},{"line_number":25,"context_line":"    # function in order for it to be registered by services that may"},{"line_number":26,"context_line":"    # need to receive it via RPC."},{"line_number":27,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_844969b9","line":27,"updated":"2015-02-10 17:28:35.000000000","message":"I want this to go away anyway, so, yeah :)","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"e37743ab1fe81fa3025badd009747f97b639f5af","unresolved":false,"context_lines":[{"line_number":20,"context_line":"# the object."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"def register_all():"},{"line_number":24,"context_line":"    # NOTE(danms): You must make sure your object gets imported in this"},{"line_number":25,"context_line":"    # function in order for it to be registered by services that may"},{"line_number":26,"context_line":"    # need to receive it via RPC."}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_93c51190","line":23,"updated":"2015-02-11 11:16:04.000000000","message":"What is the purpose of this empty function? :-)\n\nIMO this function should be moved back to Nova, so removed completly here.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da86d52c_07a43706","updated":"2015-02-12 16:14:36.000000000","message":"Should remove the copyright too, since there is no code here.","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"}],"oslo_versionedobjects/base.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        self \u003d cls()"},{"line_number":332,"context_line":"        self._context \u003d context"},{"line_number":333,"context_line":"        self.VERSION \u003d objver"},{"line_number":334,"context_line":"        objdata \u003d primitive[\u0027versioned_object.data\u0027]"},{"line_number":335,"context_line":"        changes \u003d primitive.get(\u0027versioned_object.changes\u0027, [])"},{"line_number":336,"context_line":"        for name, field in self.fields.items():"},{"line_number":337,"context_line":"            if name in objdata:"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_04ec998e","line":334,"range":{"start_line":334,"start_character":29,"end_line":334,"end_character":45},"updated":"2015-02-10 17:28:35.000000000","message":"We actually need to provide a way to set this, as this would (for example) break all of nova.","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":343,"context_line":"    @classmethod"},{"line_number":344,"context_line":"    def obj_from_primitive(cls, primitive, context\u003dNone):"},{"line_number":345,"context_line":"        \"\"\"Object field-by-field hydration.\"\"\""},{"line_number":346,"context_line":"        if primitive[\u0027versioned_object.namespace\u0027] !\u003d \u0027versionedobjects\u0027:"},{"line_number":347,"context_line":"            # NOTE(danms): We don\u0027t do anything with this now, but it\u0027s"},{"line_number":348,"context_line":"            # there for \"the future\""},{"line_number":349,"context_line":"            raise exception.UnsupportedObjectError("}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_e49f8501","line":346,"updated":"2015-02-10 17:28:35.000000000","message":"This too.","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":350,"context_line":"                objtype\u003d\u0027%s.%s\u0027 % (primitive[\u0027versioned_object.namespace\u0027],"},{"line_number":351,"context_line":"                                   primitive[\u0027versioned_object.name\u0027]))"},{"line_number":352,"context_line":"        objname \u003d primitive[\u0027versioned_object.name\u0027]"},{"line_number":353,"context_line":"        objver \u003d primitive[\u0027versioned_object.version\u0027]"},{"line_number":354,"context_line":"        objclass \u003d cls.obj_class_from_name(objname, objver)"},{"line_number":355,"context_line":"        return objclass._obj_from_primitive(context, objver, primitive)"},{"line_number":356,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_24899dca","line":353,"updated":"2015-02-10 17:28:35.000000000","message":"And these.","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            setattr(self, key, value)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"class VersionedPersistentObject(object):"},{"line_number":640,"context_line":"    \"\"\"Mixin class for Persistent objects."},{"line_number":641,"context_line":"    This adds the fields that we use in common for all persistent objects."},{"line_number":642,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_24b0bd8a","line":639,"updated":"2015-02-10 17:28:35.000000000","message":"This was very nova-specific, so I think we should nuke this whole class.","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"2e8b62e65f77bfc51ab61998c65d8ef4951dab5d","unresolved":false,"context_lines":[{"line_number":818,"context_line":"        return entity"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"def obj_to_primitive(obj):"},{"line_number":822,"context_line":"    \"\"\"Recursively turn an object into a python primitive."},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    A VersionedObject becomes a dict, and anything that implements"}],"source_content_type":"text/x-python","patch_set":1,"id":"da86d52c_6458f556","line":821,"updated":"2015-02-10 17:28:35.000000000","message":"This too was very nova-specific and it\u0027s confusing, so we should just remove it as well.","commit_id":"e6fcb23439422bb34c8d28c0958cc9a6f88ad5f7"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"e37743ab1fe81fa3025badd009747f97b639f5af","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        if target_version:"},{"line_number":484,"context_line":"            self.obj_make_compatible(primitive, target_version)"},{"line_number":485,"context_line":"        obj \u003d {\u0027versioned_object.name\u0027: self.obj_name(),"},{"line_number":486,"context_line":"               \u0027versioned_object.namespace\u0027: \u0027versionedobjects\u0027,"},{"line_number":487,"context_line":"               \u0027versioned_object.version\u0027: target_version or self.VERSION,"},{"line_number":488,"context_line":"               \u0027versioned_object.data\u0027: primitive}"},{"line_number":489,"context_line":"        if self.obj_what_changed():"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_73e09dfa","line":486,"updated":"2015-02-11 11:16:04.000000000","message":"Sorry, I don\u0027t know versionedobject, so my question may be dummy. What is this namespace field? Why does it have an hardcoded value?\n\nChanging the namespace doesn\u0027t look ok for a smooth transition on the production.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":10787,"name":"Michal Jastrzebski (inc0)","email":"michal.jastrzebski@intel.com","username":"inc0"},"change_message_id":"e07c540abd8006c9df9cf7201a6755dc216ca95b","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        if target_version:"},{"line_number":484,"context_line":"            self.obj_make_compatible(primitive, target_version)"},{"line_number":485,"context_line":"        obj \u003d {\u0027versioned_object.name\u0027: self.obj_name(),"},{"line_number":486,"context_line":"               \u0027versioned_object.namespace\u0027: \u0027versionedobjects\u0027,"},{"line_number":487,"context_line":"               \u0027versioned_object.version\u0027: target_version or self.VERSION,"},{"line_number":488,"context_line":"               \u0027versioned_object.data\u0027: primitive}"},{"line_number":489,"context_line":"        if self.obj_what_changed():"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_86cb0d52","line":486,"in_reply_to":"da86d52c_73e09dfa","updated":"2015-02-11 11:42:13.000000000","message":"Thing is - this is freshly taken out of nova. Nothing implements it yet. Hence we want to clear out every post-nova references before someone actually start using them;)","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d7c9b0d7708893d4d1cac8660e88f3a51ffb962b","unresolved":false,"context_lines":[{"line_number":483,"context_line":"        if target_version:"},{"line_number":484,"context_line":"            self.obj_make_compatible(primitive, target_version)"},{"line_number":485,"context_line":"        obj \u003d {\u0027versioned_object.name\u0027: self.obj_name(),"},{"line_number":486,"context_line":"               \u0027versioned_object.namespace\u0027: \u0027versionedobjects\u0027,"},{"line_number":487,"context_line":"               \u0027versioned_object.version\u0027: target_version or self.VERSION,"},{"line_number":488,"context_line":"               \u0027versioned_object.data\u0027: primitive}"},{"line_number":489,"context_line":"        if self.obj_what_changed():"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_fb9b7b70","line":486,"in_reply_to":"da86d52c_86cb0d52","updated":"2015-02-11 14:53:26.000000000","message":"Remember, we were defining a wire protocol that we were going to depend on for a long time. Since there was interest in using the objects stuff from the beginning, initial reviews suggested a per-project namespace on the object so that we could demultiplex things coming over the wire, if needed. It was hardcoded because there was no need to provide a way to set that initially.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d7c9b0d7708893d4d1cac8660e88f3a51ffb962b","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            setattr(self, key, value)"},{"line_number":637,"context_line":""},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"class VersionedPersistentObject(object):"},{"line_number":640,"context_line":"    \"\"\"Mixin class for Persistent objects."},{"line_number":641,"context_line":"    This adds the fields that we use in common for all persistent objects."},{"line_number":642,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_5b956731","line":639,"updated":"2015-02-11 14:53:26.000000000","message":"Reminder: I think this needs to come out.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"d7c9b0d7708893d4d1cac8660e88f3a51ffb962b","unresolved":false,"context_lines":[{"line_number":818,"context_line":"        return entity"},{"line_number":819,"context_line":""},{"line_number":820,"context_line":""},{"line_number":821,"context_line":"def obj_to_primitive(obj):"},{"line_number":822,"context_line":"    \"\"\"Recursively turn an object into a python primitive."},{"line_number":823,"context_line":""},{"line_number":824,"context_line":"    A VersionedObject becomes a dict, and anything that implements"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_3bb7d3d9","line":821,"updated":"2015-02-11 14:53:26.000000000","message":"Reminder: I think this needs to come out.","commit_id":"057a8671abcbae91236320ce12c4445d5806b0a7"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da86d52c_870107b1","updated":"2015-02-12 16:14:36.000000000","message":"Update to 2015","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[{"line_number":503,"context_line":""},{"line_number":504,"context_line":"    def obj_load_attr(self, attrname):"},{"line_number":505,"context_line":"        \"\"\"Load an additional attribute from the real object."},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        This should use self._conductor, and cache any data that might"},{"line_number":508,"context_line":"        be useful for future load operations."},{"line_number":509,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_c72dbfff","line":506,"updated":"2015-02-12 16:14:36.000000000","message":"There may not be a conductor in other projects.  Could you update or remove this statement?","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[{"line_number":719,"context_line":"    \"\"\""},{"line_number":720,"context_line":""},{"line_number":721,"context_line":"    @property"},{"line_number":722,"context_line":"    def conductor(self):"},{"line_number":723,"context_line":"        if not hasattr(self, \u0027_conductor\u0027):"},{"line_number":724,"context_line":"            from nova import conductor"},{"line_number":725,"context_line":"            self._conductor \u003d conductor.API()"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_c71a1f7c","line":722,"updated":"2015-02-12 16:14:36.000000000","message":"conductor may not exist in other projects.  Do we need to keep it?","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[{"line_number":737,"context_line":"                objprim[\u0027versioned_object.version\u0027] \u003d \\"},{"line_number":738,"context_line":"                    \u0027.\u0027.join(objver.split(\u0027.\u0027)[:2])"},{"line_number":739,"context_line":"                return self._process_object(context, objprim)"},{"line_number":740,"context_line":"            objinst \u003d self.conductor.object_backport(context, objprim,"},{"line_number":741,"context_line":"                                                     e.kwargs[\u0027supported\u0027])"},{"line_number":742,"context_line":"        return objinst"},{"line_number":743,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_879107f3","line":740,"updated":"2015-02-12 16:14:36.000000000","message":"conductor may not exist in other projects.  I suggest removing L740.","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"}],"oslo_versionedobjects/fields.py":[{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"da86d52c_6210814e","updated":"2015-02-12 16:14:36.000000000","message":"Update to 2015","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"},{"author":{"_account_id":8247,"name":"Thang Pham","email":"thang.g.pham@gmail.com","username":"thang.pham"},"change_message_id":"c10d4cbc7919f9c8c4fcf6f13034b3144e5387f3","unresolved":false,"context_lines":[{"line_number":567,"context_line":"class DateTimeField(AutoTypedField):"},{"line_number":568,"context_line":"    AUTO_TYPE \u003d DateTime()"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"class IPAddressField(AutoTypedField):"},{"line_number":572,"context_line":"    AUTO_TYPE \u003d IPAddress()"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_a22d1991","line":570,"updated":"2015-02-12 16:14:36.000000000","message":"Are the IP address field classes required for the base oslo_versionedobjects?","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"147a4b3ee0ec02cec0cd71cdbd617e3ebe9cbfaf","unresolved":false,"context_lines":[{"line_number":567,"context_line":"class DateTimeField(AutoTypedField):"},{"line_number":568,"context_line":"    AUTO_TYPE \u003d DateTime()"},{"line_number":569,"context_line":""},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"class IPAddressField(AutoTypedField):"},{"line_number":572,"context_line":"    AUTO_TYPE \u003d IPAddress()"},{"line_number":573,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_5756d82a","line":570,"in_reply_to":"da86d52c_a22d1991","updated":"2015-02-12 18:44:48.000000000","message":"Personally I think they should be there, but it\u0027s not critical that we keep them.","commit_id":"af8dd835db549f1c60b2479979188a11004368c6"}]}
