)]}'
{"keystone/cmd/doctor/security_compliance.py":[{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"90b64ed3267209be771d723f39691988bd84a9d6","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_8a066fcc","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"updated":"2016-08-28 04:03:59.000000000","message":"What does this mean? the min for minimum_password_age is 0 and the min for password_expires_days is 1, can ever these value be a negative value. If by anyway they are set to a negative value, report warning or not?","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"90320959d0c81cacdeecd6979c1d0e1dff02fc6d","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_e628e8e4","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_00f934c7","updated":"2016-08-29 14:36:23.000000000","message":"@Ron, maybe I read it wrong but the code tell me it\u0027s acceptable if min_age \u003c\u003d0  or expires \u003c\u003d0 (Both of them couldn\u0027t happen since there is min value for both of them and doesn\u0027t looks like a right configuration too.)\n\nBut as you said, you don\u0027t wanna check it if they are disabled. The question is can we judge this by whether it is negative value or not? If both of them can never be a negative value what\u0027s the check here benefit us? If either of them could be negative value can we let it pass and just say it is a right configuration without any warning message?\n\nJust noticed the message before I shutdown my laptop, pls let me know if there is anything I missed.\n\nThanks!","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"4b8f33746061933e851c0d92216538a8a0eef477","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_a17978ca","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_67907944","updated":"2016-08-29 11:44:22.000000000","message":"is it supposed to be \"\u003e\u003d\"? Thought it would need to be \"\u003e\", otherwise the user won\u0027t be able to change the password anyway.","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"eaa0f511649042434699268eb821876367d4e54c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_67907944","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_6c5f80e5","updated":"2016-08-29 01:25:29.000000000","message":"Yep, the minimum check has already defined. I just cannot understand why it is checked here and suppose min_age or expires is \u003c\u003d0 there should not any warning. Is that intentional or it is redundant (unnecessary)?","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"11c0cd72470f675ab67ce59b0b652c30de84c788","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_6c5f80e5","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_8a066fcc","updated":"2016-08-28 22:28:45.000000000","message":"Both of these values cannot be negative; there is a minimum check already defined:\nhttps://github.com/openstack/keystone/blob/master/keystone/conf/security_compliance.py#L61\n\nThis warning simply checks that the minimum password age is less than password expires days if both are enabled.","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"2c4ec8448b26a3585494c67b75bd239059216528","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_52bdd9b5","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_a17978ca","updated":"2016-08-29 13:03:55.000000000","message":"@Dave this condition, (min_age \u003e 0 and expires \u003e 0), determines if both settings are enabled. And if enabled, then return the check. The default for minimum password age is zero, meaning disabled; thus, I don\u0027t want to perform the check if the setting is not enabled.","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"3d730a98c40f27ed2811dd5d84d044dca12df49e","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_f2e34da2","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_a17978ca","updated":"2016-08-29 13:06:17.000000000","message":"@Roddrigo Yes, it supposed to be \u003e\u003d because the minimum password age should be less than the password expires. The condition in the middle is simply checking if both settings are enabled.","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"8d77a8ccab0444baafaf90485b2c198ca4b066de","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_556058a5","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_e628e8e4","updated":"2016-08-29 15:34:38.000000000","message":"@Dave, no, the code is saying, first check if min_age and expires are enabled.  If so, return the check; otherwise, return False (not a symptom). \n\nThus, if min_age \u003c\u003d0  or expires \u003c\u003d0, then no check is performed. The purpose for the condition in the middle, (min_age \u003e 0 and expires \u003e 0), is to first check that both settings are enabled. It has nothing to do with checking for negative numbers. \n\nTry to reach me on IRC if you still have questions.","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"031d71c2ff3421d09a34eb88f754545121816141","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_29ac638b","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_e628e8e4","updated":"2016-08-29 14:46:37.000000000","message":"@Ron, so I was caught by the return type here, returning True actually fails the test!","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"e26890b7d9413b7f88c17e8a6867b8338c1ef7f9","unresolved":false,"context_lines":[{"line_number":28,"context_line":"    \"\"\""},{"line_number":29,"context_line":"    min_age \u003d CONF.security_compliance.minimum_password_age"},{"line_number":30,"context_line":"    expires \u003d CONF.security_compliance.password_expires_days"},{"line_number":31,"context_line":"    return (min_age \u003e\u003d expires) if (min_age \u003e 0 and expires \u003e 0) else False"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_00f934c7","line":31,"range":{"start_line":31,"start_character":36,"end_line":31,"end_character":63},"in_reply_to":"fa7ab95a_f2e34da2","updated":"2016-08-29 14:08:38.000000000","message":"And hope you guys aren\u0027t getting confused by the one line condition.  Essentially, this is doing the following:\n\nif min_age and expires are enabled\n   return check if min_age is less than expires\nelse\n   return False # not a sympton/warning","commit_id":"64fabd71f2814ea0e01874a16dfb304304089cc5"}]}
