)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"182c62a355021113f986c452f97a50f28f468339","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change is needed by the over subscription patch:"},{"line_number":10,"context_line":"https://review.openstack.org/#/c/142171/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch makes the following change:"},{"line_number":13,"context_line":"The LVM driver will report provisioned_capacity in addition to"},{"line_number":14,"context_line":"other capacities."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a930d6b_35a566b5","line":12,"updated":"2015-01-22 17:44:50.000000000","message":"Should this change be more about adding \u0027provisioned_capacity\u0027 to cinder base driver AND cinder reference driver (LVM), *AND* scheduler host_manager?","commit_id":"ece23b09207661693a8f0c8a894fbcd0ec497133"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f4fa26d5bb079a22d701d0b8c93fb66a883574ea","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This change is needed by the over subscription patch:"},{"line_number":10,"context_line":"https://review.openstack.org/#/c/142171/"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"This patch makes the following change:"},{"line_number":13,"context_line":"The LVM driver will report provisioned_capacity in addition to"},{"line_number":14,"context_line":"other capacities."},{"line_number":15,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1a930d6b_7e10a601","line":12,"in_reply_to":"1a930d6b_35a566b5","updated":"2015-01-22 21:14:32.000000000","message":"I\u0027ll update this in the next patch.","commit_id":"ece23b09207661693a8f0c8a894fbcd0ec497133"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"f290aafb2a250cf8cad8dc7bbe38afd131117f4a","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Example: User A created 2x10G volumes in Cinder from backend A, and"},{"line_number":20,"context_line":"user B created 3x10G volumes from backend A directly, without using"},{"line_number":21,"context_line":"Cinder.\tAssume those are all the volumes provisioned on backend A."},{"line_number":22,"context_line":"The total provisioned_capacity will be 50G and that is what the driver"},{"line_number":23,"context_line":"should be reporting."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a930d6b_d6a9767c","line":21,"updated":"2015-01-23 07:41:29.000000000","message":"Remove \u0027?\u0027 before \u0027Assume\u0027","commit_id":"7835240b0a9bcffe3542ea3235f4fd33f76b761a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8b9fe511993476aaef1005aed12428a734599702","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Example: User A created 2x10G volumes in Cinder from backend A, and"},{"line_number":20,"context_line":"user B created 3x10G volumes from backend A directly, without using"},{"line_number":21,"context_line":"Cinder.\tAssume those are all the volumes provisioned on backend A."},{"line_number":22,"context_line":"The total provisioned_capacity will be 50G and that is what the driver"},{"line_number":23,"context_line":"should be reporting."},{"line_number":24,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1a930d6b_b1be9dd2","line":21,"in_reply_to":"1a930d6b_d6a9767c","updated":"2015-01-23 17:35:03.000000000","message":"Done","commit_id":"7835240b0a9bcffe3542ea3235f4fd33f76b761a"}],"cinder/brick/local_dev/lvm.py":[{"author":{"_account_id":7219,"name":"git-harry","email":"git-harry@live.co.uk","username":"git-harry"},"change_message_id":"e718c90429683b17d4fb9962d970904e4c61c67f","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                    self.vg_thin_pool_free_space \u003d tpfs"},{"line_number":416,"context_line":"                else:"},{"line_number":417,"context_line":"                    lvsize \u003d lv[\u0027size\u0027]"},{"line_number":418,"context_line":"                    if not lv[\u0027size\u0027][-1].isdigit():"},{"line_number":419,"context_line":"                        lvsize \u003d lvsize[:-1]"},{"line_number":420,"context_line":"                    total_vols_size \u003d total_vols_size + float(lvsize)"},{"line_number":421,"context_line":"            total_vols_size \u003d round(total_vols_size, 2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_53ded311","line":418,"updated":"2015-01-19 14:23:47.000000000","message":"Is this if block necessary? It looks like it\u0027s checking for units but the size returned by get_lv_info does not have any.","commit_id":"7904204c5551df4af24607cb290ec307d3e39adb"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"4cc4085450258259de819f3a86529fdb33898ad1","unresolved":false,"context_lines":[{"line_number":415,"context_line":"                    self.vg_thin_pool_free_space \u003d tpfs"},{"line_number":416,"context_line":"                else:"},{"line_number":417,"context_line":"                    lvsize \u003d lv[\u0027size\u0027]"},{"line_number":418,"context_line":"                    if not lv[\u0027size\u0027][-1].isdigit():"},{"line_number":419,"context_line":"                        lvsize \u003d lvsize[:-1]"},{"line_number":420,"context_line":"                    total_vols_size \u003d total_vols_size + float(lvsize)"},{"line_number":421,"context_line":"            total_vols_size \u003d round(total_vols_size, 2)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a961159_12727a4a","line":418,"in_reply_to":"3a961159_53ded311","updated":"2015-01-19 20:57:04.000000000","message":"get_lv_info specifies \"--nosuffix\" which removes \"g\" from \"1.00g\". If you run \"lvs\" command without \"--nosuffix\", it will display \"1.00g\".  Some of the unit tests produced output with \"g\", so it will fail if I don\u0027t remove \"g\".  It\u0027s good to be able to handle both situations since lvs supports both and with suffix is the default.","commit_id":"7904204c5551df4af24607cb290ec307d3e39adb"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"1ca131fc049251f815bb6da8792ad1e1d175e680","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        self.vg_uuid \u003d vg_list[0][\u0027uuid\u0027]"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        total_vols_size \u003d 0.0"},{"line_number":407,"context_line":"        if self.vg_thin_pool is not None:"},{"line_number":408,"context_line":"            # NOTE(xyang): If providing only self.vg_name,"},{"line_number":409,"context_line":"            # get_lv_info will output info on the thin pool and all"},{"line_number":410,"context_line":"            # individual volumes."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_3b71a776","line":407,"updated":"2015-01-23 18:48:21.000000000","message":"I was thinking we should just implement this with vgdisplay and use the\n\"Alloc PE / Size\" field that\u0027s already calculated this for us.  I realize that some might argue against this as \"somebody used that VG for something other than Cinder\" but personally I think that\u0027s an invalid use case.","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f377b354102be0e532ce510d748a679b99d21115","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        self.vg_uuid \u003d vg_list[0][\u0027uuid\u0027]"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        total_vols_size \u003d 0.0"},{"line_number":407,"context_line":"        if self.vg_thin_pool is not None:"},{"line_number":408,"context_line":"            # NOTE(xyang): If providing only self.vg_name,"},{"line_number":409,"context_line":"            # get_lv_info will output info on the thin pool and all"},{"line_number":410,"context_line":"            # individual volumes."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_3ed0b5f5","line":407,"in_reply_to":"1a930d6b_3b71a776","updated":"2015-01-23 19:23:27.000000000","message":"Here is what I see:\n\n sudo vgdisplay\n  --- Volume group ---\n  VG Name               stack-volumes-lvmdriver-1\n  System ID\n  Format                lvm2\n  Metadata Areas        1\n  Metadata Sequence No  55\n  VG Access             read/write\n  VG Status             resizable\n  MAX LV                0\n  Cur LV                5\n  Open LV               4\n  Max PV                0\n  Cur PV                1\n  Act PV                1\n  VG Size               10.01 GiB\n  PE Size               4.00 MiB\n  Total PE              2562\n  Alloc PE / Size       2438 / 9.52 GiB\n  Free  PE / Size       124 / 496.00 MiB\n  VG UUID               UXS3Uz-TovP-GbGI-tYI3-mW28-G6FW-KJYVKn\n\nsudo lvs --noheadings --unit\u003dg -o vg_name,name,size --nosuffix stack-volumes-lvmdriver-1\n  stack-volumes-lvmdriver-1 stack-volumes-lvmdriver-1-pool               9.51\n  stack-volumes-lvmdriver-1 volume-13380d16-54c3-4979-9d22-172082dbc1a1  1.00\n  stack-volumes-lvmdriver-1 volume-629e13ab-7759-46a5-b155-ee1eb20ca892  1.00\n  stack-volumes-lvmdriver-1 volume-e3e6281c-51ee-464c-b1a7-db6c0854622c  1.00\n  stack-volumes-lvmdriver-1 volume-f2bedaf9-a820-4ca8-9804-e0972124f9ab  1.00\n\n\nSo Alloc PE / Size is 2438 / 9.52GB.  That is the size of the entire thin pool.  However I\u0027m trying to figure out how many volumes are created on that pool and what is the total size of those volumes.  The lvs command tells me 4.0GB is the allocated/provisioned capacity (if I add the 4 x 1.00GB volumes).","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"},{"author":{"_account_id":2243,"name":"John Griffith","email":"john.griffith8@gmail.com","username":"john-griffith"},"change_message_id":"b291d8f2649b32ffdd9b61f14ae93f87c9905e1e","unresolved":false,"context_lines":[{"line_number":404,"context_line":"        self.vg_uuid \u003d vg_list[0][\u0027uuid\u0027]"},{"line_number":405,"context_line":""},{"line_number":406,"context_line":"        total_vols_size \u003d 0.0"},{"line_number":407,"context_line":"        if self.vg_thin_pool is not None:"},{"line_number":408,"context_line":"            # NOTE(xyang): If providing only self.vg_name,"},{"line_number":409,"context_line":"            # get_lv_info will output info on the thin pool and all"},{"line_number":410,"context_line":"            # individual volumes."}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_3d6a72b3","line":407,"in_reply_to":"1a930d6b_3ed0b5f5","updated":"2015-01-24 01:26:17.000000000","message":"bahh... yeah, sorry it\u0027s not straight forward.  Your implementation may be the best option, def good enough for now.  Thanks for looking at it","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"}],"cinder/scheduler/host_manager.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"898999b79c106a28d3b4b0b71eb2630900e38a9b","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # capacity has been allocated in cinder POV, which should be"},{"line_number":108,"context_line":"        # sum(vol[\u0027size\u0027] for vol in vols_on_hosts)"},{"line_number":109,"context_line":"        self.allocated_capacity_gb \u003d 0"},{"line_number":110,"context_line":"        self.free_capacity_gb \u003d None"},{"line_number":111,"context_line":"        self.reserved_percentage \u003d 0"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # PoolState for all pools"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_0f980e1b","line":110,"updated":"2015-01-26 03:55:41.000000000","message":"Please add provisioned_capacity_gb here.","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a5d7e519b3ef2589e64d338b062f4d0abd670252","unresolved":false,"context_lines":[{"line_number":107,"context_line":"        # capacity has been allocated in cinder POV, which should be"},{"line_number":108,"context_line":"        # sum(vol[\u0027size\u0027] for vol in vols_on_hosts)"},{"line_number":109,"context_line":"        self.allocated_capacity_gb \u003d 0"},{"line_number":110,"context_line":"        self.free_capacity_gb \u003d None"},{"line_number":111,"context_line":"        self.reserved_percentage \u003d 0"},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"        # PoolState for all pools"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_aaf8c8c3","line":110,"in_reply_to":"1a930d6b_0f980e1b","updated":"2015-01-26 05:09:10.000000000","message":"Good catch. I forgot to move this from the other patch.","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"898999b79c106a28d3b4b0b71eb2630900e38a9b","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    def consume_from_volume(self, volume):"},{"line_number":266,"context_line":"        \"\"\"Incrementally update host state from an volume.\"\"\""},{"line_number":267,"context_line":"        volume_gb \u003d volume[\u0027size\u0027]"},{"line_number":268,"context_line":"        self.allocated_capacity_gb +\u003d volume_gb"},{"line_number":269,"context_line":"        if self.free_capacity_gb \u003d\u003d \u0027infinite\u0027:"},{"line_number":270,"context_line":"            # There\u0027s virtually infinite space on back-end"},{"line_number":271,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_2f9dca0b","line":268,"updated":"2015-01-26 03:55:41.000000000","message":"And here.","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a5d7e519b3ef2589e64d338b062f4d0abd670252","unresolved":false,"context_lines":[{"line_number":265,"context_line":"    def consume_from_volume(self, volume):"},{"line_number":266,"context_line":"        \"\"\"Incrementally update host state from an volume.\"\"\""},{"line_number":267,"context_line":"        volume_gb \u003d volume[\u0027size\u0027]"},{"line_number":268,"context_line":"        self.allocated_capacity_gb +\u003d volume_gb"},{"line_number":269,"context_line":"        if self.free_capacity_gb \u003d\u003d \u0027infinite\u0027:"},{"line_number":270,"context_line":"            # There\u0027s virtually infinite space on back-end"},{"line_number":271,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":6,"id":"1a930d6b_8a222c50","line":268,"in_reply_to":"1a930d6b_2f9dca0b","updated":"2015-01-26 05:09:10.000000000","message":"Done. Since I added volume_gb to provisioned_capacity_gb here, I don\u0027t need to add it again in capacity_filter. Thanks for point it out.","commit_id":"536e6bb64120a2ab0f909c0f4b21ea8407595cb9"}]}
