)]}'
{"doc/source/rating/pyscripts.rst":[{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"97506fd91927f7555fe6dce0e675606658887597","unresolved":false,"context_lines":[{"line_number":47,"context_line":"            return 0"},{"line_number":48,"context_line":"        else:"},{"line_number":49,"context_line":"            # Converting Bytes to MebiBytes"},{"line_number":50,"context_line":"            return (item[\u0027vol\u0027][\u0027qty\u0027] / 1048576) * image_mb_price"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"    def get_volume_price(item):"}],"source_content_type":"text/x-rst","patch_set":1,"id":"da6895a0_1bf2e4d2","line":50,"range":{"start_line":50,"start_character":12,"end_line":50,"end_character":66},"updated":"2016-10-23 08:28:36.000000000","message":"return item[\u0027vol\u0027][\u0027qty\u0027] * image_mb_price\nThe unit of qty for image is MB now.","commit_id":"fef608367c01ec56f30e9bd07ffc9aa07c9ce8fa"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"Price definitions"},{"line_number":11,"context_line":"-----------------"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"First, we need to define some pricing policies."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. code:: python"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_508d2930","line":13,"updated":"2016-11-08 04:35:09.000000000","message":"I think, this line maybe redundant.","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":33,"context_line":".. code:: python"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    # These functions return the price of a service usage on a collect period."},{"line_number":36,"context_line":"    # The price is always equivalent to (price_per_unit * qty)."},{"line_number":37,"context_line":"    def get_compute_price(item):"},{"line_number":38,"context_line":"        if not item[\u0027desc\u0027][\u0027flavor\u0027] in flavors:"},{"line_number":39,"context_line":"            return 0"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_30b6f5dc","line":36,"updated":"2016-11-08 04:35:09.000000000","message":"The price is always equivalent to price_per_unit multiply by qty.","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":38,"context_line":"        if not item[\u0027desc\u0027][\u0027flavor\u0027] in flavors:"},{"line_number":39,"context_line":"            return 0"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            # The qty of an instance is always 1"},{"line_number":42,"context_line":"            return flavors[item[\u0027desc\u0027][\u0027flavor\u0027]]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_5009a994","line":41,"updated":"2016-11-08 04:35:09.000000000","message":"del this comment line, because sometime is not.\n\nFYI. https://review.openstack.org/#/c/382127/","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":39,"context_line":"            return 0"},{"line_number":40,"context_line":"        else:"},{"line_number":41,"context_line":"            # The qty of an instance is always 1"},{"line_number":42,"context_line":"            return flavors[item[\u0027desc\u0027][\u0027flavor\u0027]]"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":""},{"line_number":45,"context_line":"    def get_image_price(item):"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_d0f5b983","line":42,"updated":"2016-11-08 04:35:09.000000000","message":"return item[\u0027vol\u0027][\u0027qty\u0027] * flavors[item[\u0027desc\u0027][\u0027flavor\u0027]]","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":68,"context_line":".. code:: python"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"    def process(data):"},{"line_number":71,"context_line":"        # data is a list of dictionaries containing a \"usage\" and a"},{"line_number":72,"context_line":"        # \"period\" field"},{"line_number":73,"context_line":"        for d in data:"},{"line_number":74,"context_line":"            usage \u003d d[\u0027usage\u0027]"}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_f020fdf9","line":71,"range":{"start_line":71,"start_character":10,"end_line":71,"end_character":14},"updated":"2016-11-08 04:35:09.000000000","message":"The pararmeter data","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f4aa29b7e8e5a9aa8e3a1567c1a6c46f6ec54b9e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        return data"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    # data will be passed as a global variable to the script"},{"line_number":87,"context_line":"    data \u003d process(data)"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"9a629dbe_b054c554","line":86,"range":{"start_line":86,"start_character":6,"end_line":86,"end_character":10},"updated":"2016-11-08 04:35:09.000000000","message":"ditto","commit_id":"5a8803122a6bddd34f67b8cca8c4e8a0442e2d6d"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"f31fa6d2c794ea69b730a90e027c5bcc94e10708","unresolved":false,"context_lines":[{"line_number":80,"context_line":"        return data"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"    # The \u0027data\u0027 parameter will be passed as a global variable to the script"},{"line_number":84,"context_line":"    data \u003d process(data)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9a629dbe_9019468b","line":83,"range":{"start_line":83,"start_character":17,"end_line":83,"end_character":26},"updated":"2016-11-09 05:39:25.000000000","message":"Is parameter or return value? I\u0027m not sure, could you explain it? thanks.","commit_id":"2fd142425ea14720dcdcb86cf4bb8cd96eaeefdf"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"b1510680e118b77fa50cf74c9fa0876027b67ea2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"-----------------"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. code:: python"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"    # Price for each flavor. These are equivalent to hashmap field mappings."},{"line_number":18,"context_line":"    flavors \u003d {"},{"line_number":19,"context_line":"        \u0027m1.micro\u0027: decimal.Decimal(0.65),"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a74a57a_fd2f09f4","line":16,"updated":"2016-11-23 11:05:03.000000000","message":"Here should add the line \u0027import decimal\u0027, otherwise \u0027NameError: name \u0027decimal\u0027 is not defined\u0027.","commit_id":"d2104ca23a7bf25b57010b893c99b3dd32dbcfb0"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"b1510680e118b77fa50cf74c9fa0876027b67ea2","unresolved":false,"context_lines":[{"line_number":45,"context_line":"        if not item[\u0027vol\u0027][\u0027qty\u0027]:"},{"line_number":46,"context_line":"            return 0"},{"line_number":47,"context_line":"        else:"},{"line_number":48,"context_line":"            return item[\u0027vol\u0027][\u0027qty\u0027] * image_mb_price"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"    def get_volume_price(item):"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a74a57a_fd670923","line":48,"updated":"2016-11-23 11:05:03.000000000","message":"For the value item[\u0027vol\u0027][\u0027qty\u0027] of image and volume is type is float in my devstack environment. The error information is \"TypeError: unsupported operand type(s) for *: \u0027float\u0027 and \u0027Decimal\u0027\" .\nSo, return decimal.Decimal(item[\u0027vol\u0027][\u0027qty\u0027]) * image_mb_price","commit_id":"d2104ca23a7bf25b57010b893c99b3dd32dbcfb0"},{"author":{"_account_id":8358,"name":"zhangguoqing","email":"zhang.guoqing@99cloud.net","username":"zhangguoqing"},"change_message_id":"b1510680e118b77fa50cf74c9fa0876027b67ea2","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        if not item[\u0027vol\u0027][\u0027qty\u0027]:"},{"line_number":53,"context_line":"            return 0"},{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            return item[\u0027vol\u0027][\u0027qty\u0027] * volume_gb_price"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    # Mapping each service to its price calculation function"},{"line_number":58,"context_line":"    services \u003d {"}],"source_content_type":"text/x-rst","patch_set":5,"id":"5a74a57a_7d74d9ce","line":55,"updated":"2016-11-23 11:05:03.000000000","message":"ditto\n\ndecimal.Decimal(item[\u0027vol\u0027][\u0027qty\u0027]) * volume_gb_price","commit_id":"d2104ca23a7bf25b57010b893c99b3dd32dbcfb0"}]}
