)]}'
{"quantum/agent/dhcp_agent.py":[{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"5a792288f2f12c8cce8948144d526b0e2f8b9885","unresolved":false,"context_lines":[{"line_number":443,"context_line":"            if not os.path.isdir(os.path.dirname("},{"line_number":444,"context_line":"                    cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":445,"context_line":""},{"line_number":446,"context_line":"                os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                                            0755)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _validate_field(self, value, regex):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAALH%2F%2Firs%3D","line":446,"updated":"2012-09-01 13:55:05.000000000","message":"I think that we only need to create the directory - dhcp_confs and not the directory cfg.CONF.dhcp_lease_relay_socket. This is a file descriptor for the socket (if I understand correctly)","commit_id":"6cca8f049baf32aff482bd00ce92157a328ee4da"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":441,"context_line":"            if os.path.exists(cfg.CONF.dhcp_lease_relay_socket):"},{"line_number":442,"context_line":"                raise"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh24%3D","line":444,"updated":"2012-09-04 05:33:43.000000000","message":"Consider:\n\ndirname \u003d os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)\nif os.path.isdir(dirname):\n    try:\n        os.unlink(cfg.CONF.dhcp_lease_relay_socket)\n    except OSError:\n        if os.path.exists(cfg.CONF.dhcp_lease_relay_socket):\n             raise\nelse:\n    os.makedirs(dirname, 0755)","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":441,"context_line":"            if os.path.exists(cfg.CONF.dhcp_lease_relay_socket):"},{"line_number":442,"context_line":"                raise"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh3g%3D","line":444,"updated":"2012-09-04 05:26:38.000000000","message":"os.path.dirname(cfg.CONF.dhcp_lease_relay_socket) is too long. How about substituting it to a variable? It becomes easier to read.","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"82465e3ba9a8ca962a4736122a683c663070906c","unresolved":false,"context_lines":[{"line_number":441,"context_line":"            if os.path.exists(cfg.CONF.dhcp_lease_relay_socket):"},{"line_number":442,"context_line":"                raise"},{"line_number":443,"context_line":""},{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2FhgQ%3D","line":444,"in_reply_to":"AAAALH%2F%2Fh24%3D","updated":"2012-09-04 15:41:49.000000000","message":"Thanks mark that\u0027s definitely cleaner than what I had :)","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _validate_field(self, value, regex):"},{"line_number":450,"context_line":"        \"\"\"Validate value against a regular expression and return if valid.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh3I%3D","line":447,"updated":"2012-09-04 05:26:38.000000000","message":"Are there any possibility that os.makedirs fails? The directory created may be created by dnsmasq. I am not sure the race condition may happen. It is just a clarification.","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _validate_field(self, value, regex):"},{"line_number":450,"context_line":"        \"\"\"Validate value against a regular expression and return if valid.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh2Y%3D","line":447,"in_reply_to":"AAAALH%2F%2Fh2w%3D","updated":"2012-09-04 05:44:04.000000000","message":"Thanks for the clarification. I also confirmed there is no race condition. This section is called in the constructor and dhcp instances are invoked in run() method.","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":2592,"name":"Mark McClain","email":"mark@mcclain.xyz","username":"markmcclain"},"unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _validate_field(self, value, regex):"},{"line_number":450,"context_line":"        \"\"\"Validate value against a regular expression and return if valid.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh2w%3D","line":447,"in_reply_to":"AAAALH%2F%2Fh3I%3D","updated":"2012-09-04 05:33:43.000000000","message":"There should not be a race condition because this section of code runs prior to the agent spawning any dnsmasq instances.","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"82465e3ba9a8ca962a4736122a683c663070906c","unresolved":false,"context_lines":[{"line_number":444,"context_line":"        if not os.path.isdir("},{"line_number":445,"context_line":"            os.path.dirname(cfg.CONF.dhcp_lease_relay_socket)):"},{"line_number":446,"context_line":"            os.makedirs(os.path.dirname(cfg.CONF.dhcp_lease_relay_socket),"},{"line_number":447,"context_line":"                        0755)"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"    def _validate_field(self, value, regex):"},{"line_number":450,"context_line":"        \"\"\"Validate value against a regular expression and return if valid.\"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAALH%2F%2Fh28%3D","line":447,"in_reply_to":"AAAALH%2F%2Fh3I%3D","updated":"2012-09-04 05:30:48.000000000","message":"good point, I\u0027ll fix this.","commit_id":"96de7339d43718d72be701ead6386d377f4b1721"}]}
