)]}'
{"cue/api/controllers/v1/cluster.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    def post(self, data):"},{"line_number":214,"context_line":"        \"\"\"Create a new Cluster."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param request_data: cluster parameters within the request body."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        context \u003d pecan.request.context"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_6d55cfc4","line":216,"updated":"2015-08-26 23:05:11.000000000","message":"The param name is still \u0027data\u0027? Did you mean to change it to request_data? Either way, they should be the same","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":213,"context_line":"    def post(self, data):"},{"line_number":214,"context_line":"        \"\"\"Create a new Cluster."},{"line_number":215,"context_line":""},{"line_number":216,"context_line":"        :param request_data: cluster parameters within the request body."},{"line_number":217,"context_line":"        \"\"\""},{"line_number":218,"context_line":"        context \u003d pecan.request.context"},{"line_number":219,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_56b97c2d","line":216,"in_reply_to":"da20952f_6d55cfc4","updated":"2015-08-27 00:16:47.000000000","message":"supposed to still be data, reverting this comment","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        if (data.authentication and data.authentication.type and"},{"line_number":232,"context_line":"                data.authentication.token):"},{"line_number":233,"context_line":"            auth_validator \u003d auth_validate.AuthTokenValidator.validate_token("},{"line_number":234,"context_line":"                broker_type\u003d\u0027rabbit\u0027, auth_type\u003ddata.authentication.type,"},{"line_number":235,"context_line":"                token\u003ddata.authentication.token)"},{"line_number":236,"context_line":"            if not auth_validator or not auth_validator.validate():"},{"line_number":237,"context_line":"                raise exception.Invalid(_(\"Invalid broker authentication \""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_0d9e9356","line":234,"updated":"2015-08-26 23:05:11.000000000","message":"The broker type should be \u0027rabbitmq\u0027. Rabbit is an cute flurry animal :P\n\nEither way, do we need to know the broker type if we already have an auth type?","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        if (data.authentication and data.authentication.type and"},{"line_number":232,"context_line":"                data.authentication.token):"},{"line_number":233,"context_line":"            auth_validator \u003d auth_validate.AuthTokenValidator.validate_token("},{"line_number":234,"context_line":"                broker_type\u003d\u0027rabbit\u0027, auth_type\u003ddata.authentication.type,"},{"line_number":235,"context_line":"                token\u003ddata.authentication.token)"},{"line_number":236,"context_line":"            if not auth_validator or not auth_validator.validate():"},{"line_number":237,"context_line":"                raise exception.Invalid(_(\"Invalid broker authentication \""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_36a088f4","line":234,"in_reply_to":"da20952f_0d9e9356","updated":"2015-08-27 00:16:47.000000000","message":"whoops yes, rabbitmq :)","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                raise exception.Invalid(_(\"Invalid broker authentication \""},{"line_number":238,"context_line":"                                          \"parameters\"))"},{"line_number":239,"context_line":"        else:"},{"line_number":240,"context_line":"            raise exception.Invalid(_(\"Missing broker authentication \""},{"line_number":241,"context_line":"                                      \"parameter(s)\"))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        default_rabbit_user \u003d data.authentication.token[\u0027username\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_ad952741","line":240,"updated":"2015-08-26 23:05:11.000000000","message":"This should be optional based on the authentication type. So we should only raise an error when authentication is required","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":237,"context_line":"                raise exception.Invalid(_(\"Invalid broker authentication \""},{"line_number":238,"context_line":"                                          \"parameters\"))"},{"line_number":239,"context_line":"        else:"},{"line_number":240,"context_line":"            raise exception.Invalid(_(\"Missing broker authentication \""},{"line_number":241,"context_line":"                                      \"parameter(s)\"))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        default_rabbit_user \u003d data.authentication.token[\u0027username\u0027]"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_56e73c40","line":240,"in_reply_to":"da20952f_ad952741","updated":"2015-08-27 00:16:47.000000000","message":"since we are currently supporting rabbitmq brokers, authentication is mandatory.  As we support additional brokers, authentication requirement will be updated as needed.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.Invalid(_(\"Missing broker authentication \""},{"line_number":241,"context_line":"                                      \"parameter(s)\"))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        default_rabbit_user \u003d data.authentication.token[\u0027username\u0027]"},{"line_number":244,"context_line":"        default_rabbit_pass \u003d data.authentication.token[\u0027password\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        request_data \u003d data.as_dict()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_ed11df5e","line":243,"updated":"2015-08-26 23:05:11.000000000","message":"Getting an username/password is assuming that the type is \u0027PLAIN\u0027. If it is, then we can expect an username and password. Otherwise the token could be something else. This should change based on what kind of token is being passed","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            raise exception.Invalid(_(\"Missing broker authentication \""},{"line_number":241,"context_line":"                                      \"parameter(s)\"))"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"        default_rabbit_user \u003d data.authentication.token[\u0027username\u0027]"},{"line_number":244,"context_line":"        default_rabbit_pass \u003d data.authentication.token[\u0027password\u0027]"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        request_data \u003d data.as_dict()"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_363c0893","line":243,"in_reply_to":"da20952f_ed11df5e","updated":"2015-08-27 00:16:47.000000000","message":"this is for rabbitmq brokers only, as we add support for additional brokers with different auth types, correct tokens will be applied per broker type","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"}],"cue/common/validate_auth_token.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class AuthTokenValidator(object):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    PLAIN_AUTH \u003d \"PLAIN\""},{"line_number":28,"context_line":"    RABBIT_BROKER \u003d \"RABBIT\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @staticmethod"},{"line_number":31,"context_line":"    def validate_token(auth_type, broker_type, token):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_b06820bc","line":28,"updated":"2015-08-26 23:05:11.000000000","message":"What is the purpose of having a broker type? Isnt auth type sufficient?","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":25,"context_line":"class AuthTokenValidator(object):"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    PLAIN_AUTH \u003d \"PLAIN\""},{"line_number":28,"context_line":"    RABBIT_BROKER \u003d \"RABBIT\""},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"    @staticmethod"},{"line_number":31,"context_line":"    def validate_token(auth_type, broker_type, token):"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_f639b042","line":28,"in_reply_to":"da20952f_b06820bc","updated":"2015-08-27 00:16:47.000000000","message":"Will be removing notion of rabbitmq since the rest of our code base does not have support for multiple broker types as of yet.  This will be re-visited when we add support for additional brokers.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        if auth_type and auth_type.upper() \u003d\u003d AuthTokenValidator.PLAIN_AUTH:"},{"line_number":35,"context_line":"            if (broker_type and"},{"line_number":36,"context_line":"                    broker_type.upper() \u003d\u003d AuthTokenValidator.RABBIT_BROKER):"},{"line_number":37,"context_line":"                auth_validator \u003d RabbitPlainAuthTokenValidator(token\u003dtoken)"},{"line_number":38,"context_line":"            else:"},{"line_number":39,"context_line":"                LOG.error(_LE(\u0027Invalid broker type: %s\u0027) % broker_type)"},{"line_number":40,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_70f128cd","line":37,"updated":"2015-08-26 23:05:11.000000000","message":"I rather create an \u0027AuthTokenValidator\u0027 object and pass in the broker type, rather then coupling the broker and the auth. That way we can use a broker_foo with password auth and broker_bar with token etc","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":34,"context_line":"        if auth_type and auth_type.upper() \u003d\u003d AuthTokenValidator.PLAIN_AUTH:"},{"line_number":35,"context_line":"            if (broker_type and"},{"line_number":36,"context_line":"                    broker_type.upper() \u003d\u003d AuthTokenValidator.RABBIT_BROKER):"},{"line_number":37,"context_line":"                auth_validator \u003d RabbitPlainAuthTokenValidator(token\u003dtoken)"},{"line_number":38,"context_line":"            else:"},{"line_number":39,"context_line":"                LOG.error(_LE(\u0027Invalid broker type: %s\u0027) % broker_type)"},{"line_number":40,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_b6233805","line":37,"in_reply_to":"da20952f_70f128cd","updated":"2015-08-27 00:16:47.000000000","message":"same as above.  Also, a broker can support more than one auth type.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return True"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class RabbitPlainAuthTokenValidator(AuthTokenValidator):"},{"line_number":50,"context_line":"    MIN_USERNAME_LENGTH \u003d 1"},{"line_number":51,"context_line":"    MAX_USERNAME_LENGTH \u003d 255"},{"line_number":52,"context_line":"    MIN_PASSWORD_LENGTH \u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_50874461","line":49,"updated":"2015-08-26 23:05:11.000000000","message":"Again, i dont think we should couple brokers with auth type. The class name should be AuthPlainPasswordValidator or something. This class should made generic for all brokers and only focussed on validating user/password auth type.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":46,"context_line":"        return True"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class RabbitPlainAuthTokenValidator(AuthTokenValidator):"},{"line_number":50,"context_line":"    MIN_USERNAME_LENGTH \u003d 1"},{"line_number":51,"context_line":"    MAX_USERNAME_LENGTH \u003d 255"},{"line_number":52,"context_line":"    MIN_PASSWORD_LENGTH \u003d 1"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_56773c02","line":49,"in_reply_to":"da20952f_50874461","updated":"2015-08-27 00:16:47.000000000","message":"same as above.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class RabbitPlainAuthTokenValidator(AuthTokenValidator):"},{"line_number":50,"context_line":"    MIN_USERNAME_LENGTH \u003d 1"},{"line_number":51,"context_line":"    MAX_USERNAME_LENGTH \u003d 255"},{"line_number":52,"context_line":"    MIN_PASSWORD_LENGTH \u003d 1"},{"line_number":53,"context_line":"    MAX_PASSWORD_LENGTH \u003d 255"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_70be0801","line":50,"updated":"2015-08-26 23:05:11.000000000","message":"These lengths should be configurabled based on the broker. Perhaps, have a broker section in the conf. ie:\n\n[rabbitmq]\nmin_username_length \u003d 1\nmax_username_length \u003d 255 \n...","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":47,"context_line":""},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"class RabbitPlainAuthTokenValidator(AuthTokenValidator):"},{"line_number":50,"context_line":"    MIN_USERNAME_LENGTH \u003d 1"},{"line_number":51,"context_line":"    MAX_USERNAME_LENGTH \u003d 255"},{"line_number":52,"context_line":"    MIN_PASSWORD_LENGTH \u003d 1"},{"line_number":53,"context_line":"    MAX_PASSWORD_LENGTH \u003d 255"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_16eea48b","line":50,"in_reply_to":"da20952f_70be0801","updated":"2015-08-27 00:16:47.000000000","message":"Leaving them as is for now, rabbit does not have set limits for these.  When we add support for more brokers, this will be re-evaluated.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            if \u0027username\u0027 in self.token:"},{"line_number":64,"context_line":"                if (self.token[\u0027username\u0027] and"},{"line_number":65,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003e\u003d"},{"line_number":66,"context_line":"                        RabbitPlainAuthTokenValidator.MIN_USERNAME_LENGTH) and"},{"line_number":67,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003c\u003d"},{"line_number":68,"context_line":"                     RabbitPlainAuthTokenValidator.MAX_USERNAME_LENGTH)):"},{"line_number":69,"context_line":"                    valid_username \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_f081b8fc","line":66,"updated":"2015-08-26 23:05:11.000000000","message":"Is it not possible to define this min and max without the class name? ie just MIN_USERNAME_LENGTH","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":63,"context_line":"            if \u0027username\u0027 in self.token:"},{"line_number":64,"context_line":"                if (self.token[\u0027username\u0027] and"},{"line_number":65,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003e\u003d"},{"line_number":66,"context_line":"                        RabbitPlainAuthTokenValidator.MIN_USERNAME_LENGTH) and"},{"line_number":67,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003c\u003d"},{"line_number":68,"context_line":"                     RabbitPlainAuthTokenValidator.MAX_USERNAME_LENGTH)):"},{"line_number":69,"context_line":"                    valid_username \u003d True"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_968954cd","line":66,"in_reply_to":"da20952f_f081b8fc","updated":"2015-08-27 00:16:47.000000000","message":"not if they are part of the class, will move them into the module since we are supporting only one validator for now.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"92dc9ce0c2d258f734f725ff99c44f2417a873a0","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        valid_username \u003d False"},{"line_number":56,"context_line":"        valid_password \u003d False"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        if self.token is not None:"},{"line_number":59,"context_line":"            if \u0027username\u0027 in self.token:"},{"line_number":60,"context_line":"                if (self.token[\u0027username\u0027] and"},{"line_number":61,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003e\u003d MIN_USERNAME_LENGTH) and"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_8cab1775","line":58,"updated":"2015-08-28 17:24:38.000000000","message":"You can just do:\nif self.token:","commit_id":"2edbb05bf319b23de2a40f0394b149776c318dda"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"c4e212b9f236f3777a3a810454af04e93c2ce4b6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"        valid_username \u003d False"},{"line_number":56,"context_line":"        valid_password \u003d False"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        if self.token is not None:"},{"line_number":59,"context_line":"            if \u0027username\u0027 in self.token:"},{"line_number":60,"context_line":"                if (self.token[\u0027username\u0027] and"},{"line_number":61,"context_line":"                    (len(self.token[\u0027username\u0027]) \u003e\u003d MIN_USERNAME_LENGTH) and"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_d07aa623","line":58,"in_reply_to":"da20952f_8cab1775","updated":"2015-09-01 01:00:48.000000000","message":"Done","commit_id":"2edbb05bf319b23de2a40f0394b149776c318dda"},{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"92dc9ce0c2d258f734f725ff99c44f2417a873a0","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    valid_username \u003d True"},{"line_number":64,"context_line":"                else:"},{"line_number":65,"context_line":"                    LOG.error(_LE(\u0027Invalid username: %s\u0027)"},{"line_number":66,"context_line":"                              % self.token[\u0027username\u0027])"},{"line_number":67,"context_line":"            if \u0027password\u0027 in self.token:"},{"line_number":68,"context_line":"                if (self.token[\u0027password\u0027] and"},{"line_number":69,"context_line":"                    (len(self.token[\u0027password\u0027]) \u003e\u003d MIN_PASSWORD_LENGTH) and"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_4cdf3f0d","line":66,"updated":"2015-08-28 17:24:38.000000000","message":"if the user is invalid, there is no need to check the password. So we can return right awau","commit_id":"2edbb05bf319b23de2a40f0394b149776c318dda"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"c4e212b9f236f3777a3a810454af04e93c2ce4b6","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                    valid_username \u003d True"},{"line_number":64,"context_line":"                else:"},{"line_number":65,"context_line":"                    LOG.error(_LE(\u0027Invalid username: %s\u0027)"},{"line_number":66,"context_line":"                              % self.token[\u0027username\u0027])"},{"line_number":67,"context_line":"            if \u0027password\u0027 in self.token:"},{"line_number":68,"context_line":"                if (self.token[\u0027password\u0027] and"},{"line_number":69,"context_line":"                    (len(self.token[\u0027password\u0027]) \u003e\u003d MIN_PASSWORD_LENGTH) and"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_7075da2f","line":66,"in_reply_to":"da20952f_4cdf3f0d","updated":"2015-09-01 01:00:48.000000000","message":"Done","commit_id":"2edbb05bf319b23de2a40f0394b149776c318dda"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"71df1b11ae569e7909b78ac5a208c02f2291792c","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                              % self.token[\u0027password\u0027])"},{"line_number":77,"context_line":"                    return False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return valid_username and valid_password"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_fa2093f9","line":79,"updated":"2015-09-14 20:45:41.000000000","message":"This will always be True since a False on either condition will return False per line 67 and 77.","commit_id":"736071b8f20f9f8c27d210a5054dca17ebb90add"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"b75ae6c20e6fc072467a986d41d3508e53615713","unresolved":false,"context_lines":[{"line_number":76,"context_line":"                              % self.token[\u0027password\u0027])"},{"line_number":77,"context_line":"                    return False"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        return valid_username and valid_password"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_23734382","line":79,"in_reply_to":"ba15a1d1_fa2093f9","updated":"2015-09-14 23:51:28.000000000","message":"if there is no token, it should return false.  will update by adding an else for the top level if and get rid of the valid_* flags.","commit_id":"736071b8f20f9f8c27d210a5054dca17ebb90add"},{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"ef4e5777bf59065500718d7d6f28659297540e5d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                    valid_password \u003d True"},{"line_number":73,"context_line":"                else:"},{"line_number":74,"context_line":"                    LOG.info(_LI(\u0027Invalid password: %s\u0027)"},{"line_number":75,"context_line":"                              % self.token[\u0027password\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        return valid_username and valid_password"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba15a1d1_b2750dfb","line":75,"updated":"2015-09-16 13:43:59.000000000","message":"we shouldn\u0027t be logging the password, regardless of whether it\u0027s invalid","commit_id":"a200076472f55bb4bb7b9fd5590f38f7cf4e355c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"fdd14107b9937d5c13b95b65f80842543513e9a4","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                    valid_password \u003d True"},{"line_number":73,"context_line":"                else:"},{"line_number":74,"context_line":"                    LOG.info(_LI(\u0027Invalid password: %s\u0027)"},{"line_number":75,"context_line":"                              % self.token[\u0027password\u0027])"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"        return valid_username and valid_password"}],"source_content_type":"text/x-python","patch_set":28,"id":"ba15a1d1_e3a89222","line":75,"in_reply_to":"ba15a1d1_b2750dfb","updated":"2015-09-16 16:46:44.000000000","message":"makes sense, will just log \u0027Invalid password\u0027","commit_id":"a200076472f55bb4bb7b9fd5590f38f7cf4e355c"}],"cue/tests/functional/api/v1/test_cluster.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        self.assertEqual(400, data.status_code,"},{"line_number":479,"context_line":"                         \u0027Invalid status code value received.\u0027)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_create_invalid_volume_size(self):"},{"line_number":482,"context_line":"        \"\"\"test with invalid volume_size parameter.\"\"\""},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_d06a741a","line":480,"updated":"2015-08-26 23:05:11.000000000","message":"Can you add more negative tests that tests for :\nusername and password being too long","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":477,"context_line":""},{"line_number":478,"context_line":"        self.assertEqual(400, data.status_code,"},{"line_number":479,"context_line":"                         \u0027Invalid status code value received.\u0027)"},{"line_number":480,"context_line":""},{"line_number":481,"context_line":"    def test_create_invalid_volume_size(self):"},{"line_number":482,"context_line":"        \"\"\"test with invalid volume_size parameter.\"\"\""},{"line_number":483,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_1631c40b","line":480,"in_reply_to":"da20952f_d06a741a","updated":"2015-08-27 00:16:47.000000000","message":"Done","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"}],"cue/tests/unit/common/test_validate_auth_token.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   \u0027password\u0027: \u0027rabbit\u0027})"},{"line_number":47,"context_line":"        self.assertEqual(validator, None)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_auth_token_missing_broker(self):"},{"line_number":50,"context_line":"        validator \u003d auth_validate.AuthTokenValidator.validate_token("},{"line_number":51,"context_line":"            auth_type\u003d\u0027plain\u0027, broker_type\u003dNone,"},{"line_number":52,"context_line":"            token\u003d{\u0027username\u0027: \u0027rabbitmq\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_fb0d1938","line":49,"updated":"2015-08-26 23:05:11.000000000","message":"I think if the type is None, we should get a validator object that always returns True.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":46,"context_line":"                   \u0027password\u0027: \u0027rabbit\u0027})"},{"line_number":47,"context_line":"        self.assertEqual(validator, None)"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"    def test_auth_token_missing_broker(self):"},{"line_number":50,"context_line":"        validator \u003d auth_validate.AuthTokenValidator.validate_token("},{"line_number":51,"context_line":"            auth_type\u003d\u0027plain\u0027, broker_type\u003dNone,"},{"line_number":52,"context_line":"            token\u003d{\u0027username\u0027: \u0027rabbitmq\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_56065c21","line":49,"in_reply_to":"da20952f_fb0d1938","updated":"2015-08-27 00:16:47.000000000","message":"Done","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"}],"tests/integration/api/v1/clusters/test_clusters.py":[{"author":{"_account_id":5390,"name":"Steve Leon","username":"steve-leon","inactive":true},"change_message_id":"dfb5d1de44b74cf0089b8dfca36ad2eec2289a07","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                         cluster_resp[\u0027network_id\u0027],"},{"line_number":92,"context_line":"                         \u0027Get cluster failed\u0027)"},{"line_number":93,"context_line":"        self.assertEqual(cluster[\u0027size\u0027], cluster_resp[\u0027size\u0027],"},{"line_number":94,"context_line":"                         \u0027Get cluster failed\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Delete cluster"},{"line_number":97,"context_line":"        self.client.delete_cluster(cluster[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_3ba071f4","line":94,"updated":"2015-08-26 23:05:11.000000000","message":"Can you add to this test to verify that the username and password are set correctly? You can leverage the /opt/rabbitmq_test.py script? There are example here of how to SSH in and run this script.","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"e390a47ad2c1cfd64c3f3adc5df6c9fbdc8f5b45","unresolved":false,"context_lines":[{"line_number":91,"context_line":"                         cluster_resp[\u0027network_id\u0027],"},{"line_number":92,"context_line":"                         \u0027Get cluster failed\u0027)"},{"line_number":93,"context_line":"        self.assertEqual(cluster[\u0027size\u0027], cluster_resp[\u0027size\u0027],"},{"line_number":94,"context_line":"                         \u0027Get cluster failed\u0027)"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        # Delete cluster"},{"line_number":97,"context_line":"        self.client.delete_cluster(cluster[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_41d8d453","line":94,"in_reply_to":"da20952f_3ba071f4","updated":"2015-08-27 00:16:47.000000000","message":"Done","commit_id":"b17290ab4c0ac2ec9c22d0caac84ed64f4a3987c"}],"tests/integration/common/client.py":[{"author":{"_account_id":10584,"name":"Min Pae","username":"sputnik13","inactive":true},"change_message_id":"71df1b11ae569e7909b78ac5a208c02f2291792c","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def __init__(self):"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        auth_provider \u003d _get_keystone_auth_provider(username\u003d\u0027admin\u0027,"},{"line_number":69,"context_line":"                                                    project_name\u003d\u0027admin\u0027)"},{"line_number":70,"context_line":"        super(ServerClient, self).__init__("},{"line_number":71,"context_line":"            auth_provider\u003dauth_provider,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_d579e094","line":68,"updated":"2015-09-14 20:45:41.000000000","message":"why are we removing password?","commit_id":"736071b8f20f9f8c27d210a5054dca17ebb90add"},{"author":{"_account_id":13771,"name":"Davide Agnello","email":"dagnello@hp.com","username":"dagnello"},"change_message_id":"b75ae6c20e6fc072467a986d41d3508e53615713","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def __init__(self):"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"        auth_provider \u003d _get_keystone_auth_provider(username\u003d\u0027admin\u0027,"},{"line_number":69,"context_line":"                                                    project_name\u003d\u0027admin\u0027)"},{"line_number":70,"context_line":"        super(ServerClient, self).__init__("},{"line_number":71,"context_line":"            auth_provider\u003dauth_provider,"}],"source_content_type":"text/x-python","patch_set":26,"id":"ba15a1d1_630ffbe1","line":68,"in_reply_to":"ba15a1d1_d579e094","updated":"2015-09-14 23:51:28.000000000","message":"we are using what is already provided in the cue-integration.conf file.","commit_id":"736071b8f20f9f8c27d210a5054dca17ebb90add"}]}
