)]}'
{"senlin/common/config.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":150,"context_line":"               help\u003d_(\u0027Address for invoking webhooks. It is useful for cases \u0027"},{"line_number":151,"context_line":"                      \u0027where proxies are used for triggering webhooks. \u0027"},{"line_number":152,"context_line":"                      \u0027Default to the hostname of the API node.\u0027)),"},{"line_number":153,"context_line":"    cfg.PortOpt(\u0027port\u0027,"},{"line_number":154,"context_line":"                help\u003d_(\u0027The port on which a webhook will be invoked. Useful \u0027"},{"line_number":155,"context_line":"                       \u0027when service is running behind a proxy.\u0027))"},{"line_number":156,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_30dd2a43","line":153,"updated":"2016-08-26 03:47:26.000000000","message":"I don\u0027t agree to this change. The default value assigned here is better than in the webhook initialization code. This default value will be documented clearly if set here.","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":150,"context_line":"               help\u003d_(\u0027Address for invoking webhooks. It is useful for cases \u0027"},{"line_number":151,"context_line":"                      \u0027where proxies are used for triggering webhooks. \u0027"},{"line_number":152,"context_line":"                      \u0027Default to the hostname of the API node.\u0027)),"},{"line_number":153,"context_line":"    cfg.PortOpt(\u0027port\u0027,"},{"line_number":154,"context_line":"                help\u003d_(\u0027The port on which a webhook will be invoked. Useful \u0027"},{"line_number":155,"context_line":"                       \u0027when service is running behind a proxy.\u0027))"},{"line_number":156,"context_line":"]"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_f35d8ced","line":153,"in_reply_to":"fa7ab95a_30dd2a43","updated":"2016-08-26 04:05:33.000000000","message":"My fault. Default port value should be set here rather than in webhook initialization progress. Will change.","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"}],"senlin/drivers/openstack/keystone_v3.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"1c004dba244649bdf1121aa7d4ddaf81563dc1b4","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"},{"line_number":197,"context_line":"                                              interface\u003d\u0027public\u0027,"},{"line_number":198,"context_line":"                                              region\u003dregion)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_e2de376c","line":195,"updated":"2016-08-29 02:04:23.000000000","message":"so the following logic won\u0027t work until we get a new version of sdk?","commit_id":"a55465f3edb41e13924058358f3f72cbcfb4153a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"9480beb643e81edea55acbe7028a02b328bcbc52","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"},{"line_number":197,"context_line":"                                              interface\u003d\u0027public\u0027,"},{"line_number":198,"context_line":"                                              region\u003dregion)"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_8209ebdf","line":195,"in_reply_to":"fa7ab95a_e2de376c","updated":"2016-08-29 02:10:54.000000000","message":"Only the \"region\u003dregion\" kwarg doesn\u0027t take effects. service_type and interface parameters will work correctly.","commit_id":"a55465f3edb41e13924058358f3f72cbcfb4153a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"ead927194e4ca7c0abf000645d996a8c8edf77d7","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    @sdk.translate_exception"},{"line_number":191,"context_line":"    def get_senlin_endpoint(self):"},{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_e2cb9751","line":193,"range":{"start_line":193,"start_character":26,"end_line":193,"end_character":45},"updated":"2016-08-29 02:23:51.000000000","message":"since we are using the default region name from the config file, the get endpoint solutions is still not a comprehensive solution...\n\nwe can let this patch in, but I\u0027m really concerned with this kind of partial solution .","commit_id":"802bb55621736c4236f7ad64a77493de0e19cc96"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"ec891f7723c0b5f9cfcc82cf3eacc13faa4c3c0d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    @sdk.translate_exception"},{"line_number":191,"context_line":"    def get_senlin_endpoint(self):"},{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_d89f634e","line":193,"range":{"start_line":193,"start_character":26,"end_line":193,"end_character":45},"in_reply_to":"fa7ab95a_821c8b78","updated":"2016-08-29 06:13:17.000000000","message":"forcing users/deployers to specify webhook.host is suboptimal. I agree we should use api endpoint as the default value, just that the code in this patch... adding a region parameter which is not supported by sdk will break the implementation.\n\nWe can leave that a todo when openstacksdk side has this fix. Before that is landed, we can just assume the region is always the same.","commit_id":"802bb55621736c4236f7ad64a77493de0e19cc96"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"a098e44107c519c385d5d7e6213a759cd35cf84e","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    @sdk.translate_exception"},{"line_number":191,"context_line":"    def get_senlin_endpoint(self):"},{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_539fb4b3","line":193,"range":{"start_line":193,"start_character":26,"end_line":193,"end_character":45},"in_reply_to":"fa7ab95a_d89f634e","updated":"2016-08-29 06:28:09.000000000","message":"I see. Will keep staring at this issue.","commit_id":"802bb55621736c4236f7ad64a77493de0e19cc96"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"c8741c6b6a22edcd7193222f5234575335f7bc6d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    @sdk.translate_exception"},{"line_number":191,"context_line":"    def get_senlin_endpoint(self):"},{"line_number":192,"context_line":"        \u0027\u0027\u0027Get Senlin service endpoint.\u0027\u0027\u0027"},{"line_number":193,"context_line":"        region \u003d cfg.CONF.default_region_name"},{"line_number":194,"context_line":"        # TODO(Yanyan Hu): Currently, region filtering is unsupported in"},{"line_number":195,"context_line":"        # session.get_endpoint(). Need to propose fix to openstacksdk."},{"line_number":196,"context_line":"        base \u003d self.conn.session.get_endpoint(service_type\u003d\u0027clustering\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa7ab95a_821c8b78","line":193,"range":{"start_line":193,"start_character":26,"end_line":193,"end_character":45},"in_reply_to":"fa7ab95a_e2cb9751","updated":"2016-08-29 02:51:49.000000000","message":"Hi, Qiming, just using local hostname for webhook url directly is incorrect in some cases, e.g. senlin-api and senlin-engine services are run in different hosts. So I tried to use senlin service endpoint as a default base_url in that case. Actually as you said, letting user to define the host and port will be the best solution. If you are still concerned about this change, how about removing the default base_url value and enforcing user/operator to define the webhook host and port in senlin.conf if they want webhook support? We just raise exception in initialize_channel if webhook host or port is not defined?","commit_id":"802bb55621736c4236f7ad64a77493de0e19cc96"}],"senlin/engine/receivers/webhook.py":[{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def initialize_channel(self):"},{"line_number":34,"context_line":"        host \u003d CONF.webhook.host"},{"line_number":35,"context_line":"        port \u003d CONF.webhook.port or 8778"},{"line_number":36,"context_line":"        base \u003d None"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        if not host:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_7095f23e","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":40},"updated":"2016-08-26 03:47:26.000000000","message":"see comment to the config option...","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def initialize_channel(self):"},{"line_number":34,"context_line":"        host \u003d CONF.webhook.host"},{"line_number":35,"context_line":"        port \u003d CONF.webhook.port or 8778"},{"line_number":36,"context_line":"        base \u003d None"},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"        if not host:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_3358d4fa","line":35,"range":{"start_line":35,"start_character":8,"end_line":35,"end_character":40},"in_reply_to":"fa7ab95a_7095f23e","updated":"2016-08-26 04:05:33.000000000","message":"Done","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            base \u003d self._get_base_url()"},{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b0c4da40","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":48},"updated":"2016-08-26 03:47:26.000000000","message":"Webhook host is not","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            base \u003d self._get_base_url()"},{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_50b54ecb","line":44,"range":{"start_line":44,"start_character":62,"end_line":44,"end_character":71},"updated":"2016-08-26 03:47:26.000000000","message":"configuration","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":41,"context_line":"            base \u003d self._get_base_url()"},{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_73725c7e","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":48},"in_reply_to":"fa7ab95a_b0c4da40","updated":"2016-08-26 04:05:33.000000000","message":"Done","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":48,"context_line":"                LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_d0c15e30","line":45,"range":{"start_line":45,"start_character":30,"end_line":45,"end_character":33},"updated":"2016-08-26 03:47:26.000000000","message":"and","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":48,"context_line":"                LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_10e2e6d5","line":45,"range":{"start_line":45,"start_character":58,"end_line":45,"end_character":61},"updated":"2016-08-26 03:47:26.000000000","message":"cannot","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            if not base:"},{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":48,"context_line":"                LOG.warning(msg)"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_936fe091","line":45,"range":{"start_line":45,"start_character":30,"end_line":45,"end_character":33},"in_reply_to":"fa7ab95a_d0c15e30","updated":"2016-08-26 04:05:33.000000000","message":"Done","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":48,"context_line":"                LOG.warning(msg)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_70d172fb","line":46,"range":{"start_line":46,"start_character":25,"end_line":46,"end_character":28},"updated":"2016-08-26 03:47:26.000000000","message":"using","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":43,"context_line":"                host \u003d socket.gethostname()"},{"line_number":44,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":45,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":46,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":47,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":48,"context_line":"                LOG.warning(msg)"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b36ce49d","line":46,"range":{"start_line":46,"start_character":25,"end_line":46,"end_character":28},"in_reply_to":"fa7ab95a_70d172fb","updated":"2016-08-26 04:05:33.000000000","message":"Done","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"7d599491d030725b83c922da1d264e2ed7667344","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            \u0027alarm_url\u0027: url"},{"line_number":63,"context_line":"        }"},{"line_number":64,"context_line":"        return self.channel"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _get_base_url(self):"},{"line_number":67,"context_line":"        \"\"\"Get senlin service endpoint.\"\"\""},{"line_number":68,"context_line":"        base \u003d None"},{"line_number":69,"context_line":"        senlin_creds \u003d context.get_service_context()"},{"line_number":70,"context_line":"        kc \u003d driver_base.SenlinDriver().identity(senlin_creds)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            res \u003d [s for s in kc.service_get(\u0027clustering\u0027)]"},{"line_number":73,"context_line":"            if res:"},{"line_number":74,"context_line":"                senlin_service_id \u003d res[0][\u0027id\u0027]"},{"line_number":75,"context_line":"                region \u003d cfg.CONF.default_region_name"},{"line_number":76,"context_line":"                endpoint \u003d kc.endpoint_get(senlin_service_id, region, \u0027public\u0027)"},{"line_number":77,"context_line":"                if endpoint:"},{"line_number":78,"context_line":"                    base \u003d \u0027\u0027.join([endpoint[\u0027url\u0027], \u0027/v1\u0027])"},{"line_number":79,"context_line":"        except exc.InternalError as ex:"},{"line_number":80,"context_line":"            msg \u003d _(\"Senlin endpoint can not be found: %s.\") % ex.message"},{"line_number":81,"context_line":"            LOG.warning(msg)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        return base"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b0e5baa9","line":83,"range":{"start_line":65,"start_character":0,"end_line":83,"end_character":19},"updated":"2016-08-26 03:47:26.000000000","message":"better move this to sdk driver layer.\n\nalso this logic is incorrect, it is hard-coding \u0027v1\u0027 into the url. SDK has a better solution on this introduced in version 0.9.2. See: http://git.openstack.org/cgit/openstack/python-openstacksdk/tree/openstack/session.py#n206","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"366988af33d02abae46e3c05a7a08d17c5b66389","unresolved":false,"context_lines":[{"line_number":62,"context_line":"            \u0027alarm_url\u0027: url"},{"line_number":63,"context_line":"        }"},{"line_number":64,"context_line":"        return self.channel"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"    def _get_base_url(self):"},{"line_number":67,"context_line":"        \"\"\"Get senlin service endpoint.\"\"\""},{"line_number":68,"context_line":"        base \u003d None"},{"line_number":69,"context_line":"        senlin_creds \u003d context.get_service_context()"},{"line_number":70,"context_line":"        kc \u003d driver_base.SenlinDriver().identity(senlin_creds)"},{"line_number":71,"context_line":"        try:"},{"line_number":72,"context_line":"            res \u003d [s for s in kc.service_get(\u0027clustering\u0027)]"},{"line_number":73,"context_line":"            if res:"},{"line_number":74,"context_line":"                senlin_service_id \u003d res[0][\u0027id\u0027]"},{"line_number":75,"context_line":"                region \u003d cfg.CONF.default_region_name"},{"line_number":76,"context_line":"                endpoint \u003d kc.endpoint_get(senlin_service_id, region, \u0027public\u0027)"},{"line_number":77,"context_line":"                if endpoint:"},{"line_number":78,"context_line":"                    base \u003d \u0027\u0027.join([endpoint[\u0027url\u0027], \u0027/v1\u0027])"},{"line_number":79,"context_line":"        except exc.InternalError as ex:"},{"line_number":80,"context_line":"            msg \u003d _(\"Senlin endpoint can not be found: %s.\") % ex.message"},{"line_number":81,"context_line":"            LOG.warning(msg)"},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"        return base"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_b30304b8","line":83,"range":{"start_line":65,"start_character":0,"end_line":83,"end_character":19},"in_reply_to":"fa7ab95a_b0e5baa9","updated":"2016-08-26 04:05:33.000000000","message":"I see. Will check it and make a change. Thanks.","commit_id":"e07cfc7fb341cf71f90ff6663594bfcf07fcae0a"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"1c004dba244649bdf1121aa7d4ddaf81563dc1b4","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            base \u003d self._get_base_url()"},{"line_number":39,"context_line":"            if not base:"},{"line_number":40,"context_line":"                host \u003d socket.gethostname()"},{"line_number":41,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":42,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":43,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":44,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":45,"context_line":"                LOG.warning(msg)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_82864b63","line":43,"range":{"start_line":41,"start_character":25,"end_line":43,"end_character":72},"updated":"2016-08-29 02:04:23.000000000","message":"please avoid using \u0027neither...nor...\u0027 here, it reads very strange.","commit_id":"a55465f3edb41e13924058358f3f72cbcfb4153a"},{"author":{"_account_id":11034,"name":"Yanyan Hu","email":"huyanyan84@gmail.com","username":"yanyanhu"},"change_message_id":"9480beb643e81edea55acbe7028a02b328bcbc52","unresolved":false,"context_lines":[{"line_number":38,"context_line":"            base \u003d self._get_base_url()"},{"line_number":39,"context_line":"            if not base:"},{"line_number":40,"context_line":"                host \u003d socket.gethostname()"},{"line_number":41,"context_line":"                msg \u003d _(\u0027Neither webhook host is specified in configure \u0027"},{"line_number":42,"context_line":"                        \u0027file nor Senlin service endpoint can be found,\u0027"},{"line_number":43,"context_line":"                        \u0027use local hostname (%(host)s) for webhook url.\u0027"},{"line_number":44,"context_line":"                        ) % {\u0027host\u0027: host}"},{"line_number":45,"context_line":"                LOG.warning(msg)"},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_e24c7744","line":43,"range":{"start_line":41,"start_character":25,"end_line":43,"end_character":72},"in_reply_to":"fa7ab95a_82864b63","updated":"2016-08-29 02:10:54.000000000","message":"Sorry forgot to revise it. Will change.","commit_id":"a55465f3edb41e13924058358f3f72cbcfb4153a"}]}
