)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"97a2df097a17cf9021dbdec451c64afac00fab7e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xing Yang \u003cxing.yang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 13:05:23 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"7a016987_6306e721","line":7,"updated":"2015-05-27 18:52:39.000000000","message":"This title doesn\u0027t seem related to the bug.","commit_id":"7d9a86912104b27e94f3127f90692abad4083552"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"38eb0a5ca26b946fc56c54d99ba25cacf2a2bae9","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xing Yang \u003cxing.yang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 15:35:18 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_d5630a19","line":7,"updated":"2015-05-27 23:35:04.000000000","message":"How about changing the title to \u0027fix capacity filter to allow overprovision to backends allow thin-provision\u0027.  What you have right now doesn\u0027t reflect the change being made in patch.","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8726b9c4e0cb12a76053efb4168d9ab699856b82","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xing Yang \u003cxing.yang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 15:35:18 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_4f174145","line":7,"in_reply_to":"7a016987_cbc0d452","updated":"2015-05-29 15:23:41.000000000","message":"Done","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":9171,"name":"Vipin Balachandran","email":"vipin.bl@gmail.com","username":"vbala"},"change_message_id":"281e00a8c734d0a9bdbb208fd128fc0b12372cb7","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Xing Yang \u003cxing.yang@emc.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-05-27 15:35:18 -0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_cbc0d452","line":7,"in_reply_to":"7a016987_d5630a19","updated":"2015-05-29 05:27:42.000000000","message":"+1","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"38eb0a5ca26b946fc56c54d99ba25cacf2a2bae9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."},{"line_number":11,"context_line":"This proves to be a problem for many backends using thin provisioning."},{"line_number":12,"context_line":"The decision at the Cinder meeting is not to deduct volume size for thin"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_b5664e27","line":9,"updated":"2015-05-27 23:35:04.000000000","message":"And the description should be updated as well.","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8726b9c4e0cb12a76053efb4168d9ab699856b82","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Not to deduct thin volume size in capacity filter"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Currently the filter scheduler deducts the size of the new thin volume"},{"line_number":10,"context_line":"and assumes the new volume to be created will be fully consumed."},{"line_number":11,"context_line":"This proves to be a problem for many backends using thin provisioning."},{"line_number":12,"context_line":"The decision at the Cinder meeting is not to deduct volume size for thin"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"7a016987_2f2765b7","line":9,"in_reply_to":"7a016987_b5664e27","updated":"2015-05-29 15:23:41.000000000","message":"Done","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"}],"cinder/scheduler/filters/capacity_filter.py":[{"author":{"_account_id":12924,"name":"Patrick East","email":"east.patrick@gmail.com","username":"patrick.east"},"change_message_id":"f6c4f4ed9a4cddc5f9998b7a096063ede4914dee","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if (host_state.thin_provisioning_support and"},{"line_number":84,"context_line":"                host_state.max_over_subscription_ratio \u003e\u003d 1 and"},{"line_number":85,"context_line":"                not host_state.assume_virtual_capacity_consumed and"},{"line_number":86,"context_line":"                free \u003c\u003d 0):"},{"line_number":87,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":88,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":89,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":1,"id":"7a016987_bb3b119c","line":86,"updated":"2015-05-27 00:12:37.000000000","message":"I\u0027m not sure this is going to do the right thing (at least for the use-case I am thinking of) for example, if we had:\n\nfree \u003d 100\n\nvolume_size \u003d 105\n\nhost_state.thin_provisioning_support \u003d True\n\nhost_state.assume_virtual_capacity_consumed \u003d False\n\nit would fail the \u0027if\u0027 check and go to the elif where free is less than volume size, and it ends up returning False down on the new line 95... the goal of what I would like to see is that we *can* create the 105GB volume with thin provisioning even with only 100GB free remaining when assume_virtual_capacity_consumed is False.","commit_id":"fa1f81cd05eb466b5571732e63317282eac9582e"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"97a2df097a17cf9021dbdec451c64afac00fab7e","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                \"on host %(host)s (requested / avail): \""},{"line_number":88,"context_line":"                                \"%(requested)s/%(available)s\"), msg_args)"},{"line_number":89,"context_line":"                return False"},{"line_number":90,"context_line":"        elif free \u003c volume_size:"},{"line_number":91,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":92,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":93,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_26ffdd02","line":90,"updated":"2015-05-27 18:52:39.000000000","message":"How about just:\n    if (((not host_state.thin_provisioning_support) or (host_state.thin_provisioning_support\n         and host_state.max_over_subscription_ratio \u003c 1)) and free \u003c volume_size):","commit_id":"7d9a86912104b27e94f3127f90692abad4083552"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a8abbb9776695ee8db66ffc26c10334a16bc08ce","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                                \"on host %(host)s (requested / avail): \""},{"line_number":88,"context_line":"                                \"%(requested)s/%(available)s\"), msg_args)"},{"line_number":89,"context_line":"                return False"},{"line_number":90,"context_line":"        elif free \u003c volume_size:"},{"line_number":91,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":92,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":93,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_f9bccadc","line":90,"in_reply_to":"7a016987_26ffdd02","updated":"2015-05-27 19:43:50.000000000","message":"Done","commit_id":"7d9a86912104b27e94f3127f90692abad4083552"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"62dd66373df734aa9a290668ce73157aaebb4117","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":84,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":85,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":86,"context_line":"                free \u003c volume_size):"},{"line_number":87,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":88,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":89,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_61737481","line":86,"updated":"2015-05-28 02:16:01.000000000","message":"Shall we add some annotation to explain what we want to do here? Make it more easier to read.","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"8726b9c4e0cb12a76053efb4168d9ab699856b82","unresolved":false,"context_lines":[{"line_number":83,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":84,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":85,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":86,"context_line":"                free \u003c volume_size):"},{"line_number":87,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":88,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":89,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a016987_0f05c90f","line":86,"in_reply_to":"7a016987_61737481","updated":"2015-05-29 15:23:41.000000000","message":"Done","commit_id":"80cb5ad52a0b239f36cf40c7ca7f036be525b114"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"70ab7b950a420a57c2223ff14cd8e9337c5bbc83","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # is greater than or equal to 1, we\u0027ll evaluate later using"},{"line_number":91,"context_line":"        # max_over_subscription_ratio and the free virtual capacity."},{"line_number":92,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":93,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":94,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":95,"context_line":"                free \u003c volume_size):"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_9078b5c5","line":93,"updated":"2015-05-29 16:22:32.000000000","message":"I would reorder and simplify this test to make it more readable and more efficient in the general case (where we have enough space):\n\n if (free \u003c volume_size\n    and (not host_state.thin_provisioning_support\n           or host_state.max_over_subscription_ratio \u003c 1)):","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f2488c076b3a57c2d317adab5d0a52f1a25171ba","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # is greater than or equal to 1, we\u0027ll evaluate later using"},{"line_number":91,"context_line":"        # max_over_subscription_ratio and the free virtual capacity."},{"line_number":92,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":93,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":94,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":95,"context_line":"                free \u003c volume_size):"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_a6f497f0","line":93,"in_reply_to":"7a016987_9078b5c5","updated":"2015-05-29 16:52:36.000000000","message":"I agree that your suggestion makes the formula look simpler, but keeping host_state.thin_provisioning_support there makes it clear that max_over_subscription_ratio is only relevant for thin provisioning.\n\nI\u0027d like to ask Winston to take a look of this as well.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"24aa840f4d027b354aea32fc59612b074967a858","unresolved":false,"context_lines":[{"line_number":90,"context_line":"        # is greater than or equal to 1, we\u0027ll evaluate later using"},{"line_number":91,"context_line":"        # max_over_subscription_ratio and the free virtual capacity."},{"line_number":92,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":93,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":94,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":95,"context_line":"                free \u003c volume_size):"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_6f2bf382","line":93,"in_reply_to":"7a016987_a6f497f0","updated":"2015-06-01 08:09:11.000000000","message":"I understand, I guess they\u0027re just different points of views. I\u0027d go with the shorter and more readable code and implicit thin_porivisioning_support and a good comment (like the one you have) where the conditions are explicitly described.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"d359728f6abc8af9c5d678f0d0a97d7142f3781d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":93,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":94,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":95,"context_line":"                free \u003c volume_size):"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":97,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":98,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_88a4094b","line":95,"updated":"2015-05-29 17:30:39.000000000","message":"This is mostly redundant with the below if.  Would be better to do the below thin/overprovisioned test first.  If it gets past that, then do the logging and return.","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"211b3c2a8cd403e31504614c6734e5dfc731725a","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        if (((not host_state.thin_provisioning_support) or"},{"line_number":93,"context_line":"                (host_state.thin_provisioning_support"},{"line_number":94,"context_line":"                 and host_state.max_over_subscription_ratio \u003c 1)) and"},{"line_number":95,"context_line":"                free \u003c volume_size):"},{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":97,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":98,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_91ec34bc","line":95,"in_reply_to":"7a016987_88a4094b","updated":"2015-05-29 18:54:30.000000000","message":"Done","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"d359728f6abc8af9c5d678f0d0a97d7142f3781d","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":97,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":98,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"},{"line_number":99,"context_line":"            return free \u003e\u003d volume_size"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            LOG.debug(\"Space information for volume creation \""},{"line_number":102,"context_line":"                      \"on host %(host)s (requested / avail): \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_28799582","line":99,"updated":"2015-05-29 17:30:39.000000000","message":"should just return False  (but I see it was already this way before your patch)","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"211b3c2a8cd403e31504614c6734e5dfc731725a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"            LOG.warning(_LW(\"Insufficient free space for volume creation \""},{"line_number":97,"context_line":"                            \"on host %(host)s (requested / avail): \""},{"line_number":98,"context_line":"                            \"%(requested)s/%(available)s\"), msg_args)"},{"line_number":99,"context_line":"            return free \u003e\u003d volume_size"},{"line_number":100,"context_line":"        else:"},{"line_number":101,"context_line":"            LOG.debug(\"Space information for volume creation \""},{"line_number":102,"context_line":"                      \"on host %(host)s (requested / avail): \""}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_51311c59","line":99,"in_reply_to":"7a016987_28799582","updated":"2015-05-29 18:54:30.000000000","message":"Done","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"d359728f6abc8af9c5d678f0d0a97d7142f3781d","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        # thin_provisioning_support is True. Check if the ratio of"},{"line_number":107,"context_line":"        # provisioned capacity over total capacity has exceeded over"},{"line_number":108,"context_line":"        # subscription ratio."},{"line_number":109,"context_line":"        if (host_state.thin_provisioning_support and"},{"line_number":110,"context_line":"                host_state.max_over_subscription_ratio \u003e\u003d 1):"},{"line_number":111,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":112,"context_line":"                                  volume_size) / total)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_8852c933","line":109,"updated":"2015-05-29 17:30:39.000000000","message":"Shouldn\u0027t ratio \u003d\u003d 1 be treated like full provisioning?","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"211b3c2a8cd403e31504614c6734e5dfc731725a","unresolved":false,"context_lines":[{"line_number":106,"context_line":"        # thin_provisioning_support is True. Check if the ratio of"},{"line_number":107,"context_line":"        # provisioned capacity over total capacity has exceeded over"},{"line_number":108,"context_line":"        # subscription ratio."},{"line_number":109,"context_line":"        if (host_state.thin_provisioning_support and"},{"line_number":110,"context_line":"                host_state.max_over_subscription_ratio \u003e\u003d 1):"},{"line_number":111,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":112,"context_line":"                                  volume_size) / total)"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_1137244e","line":109,"in_reply_to":"7a016987_8852c933","updated":"2015-05-29 18:54:30.000000000","message":"Done","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"d359728f6abc8af9c5d678f0d0a97d7142f3781d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        # subscription ratio."},{"line_number":109,"context_line":"        if (host_state.thin_provisioning_support and"},{"line_number":110,"context_line":"                host_state.max_over_subscription_ratio \u003e\u003d 1):"},{"line_number":111,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":112,"context_line":"                                  volume_size) / total)"},{"line_number":113,"context_line":"            if provisioned_ratio \u003e\u003d host_state.max_over_subscription_ratio:"},{"line_number":114,"context_line":"                LOG.warning(_LW("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_0b0b7325","line":111,"updated":"2015-05-29 17:30:39.000000000","message":"From here I can\u0027t see if this is safe from integer div truncation.  I\u0027d suggest using float() to make sure.","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"211b3c2a8cd403e31504614c6734e5dfc731725a","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        # subscription ratio."},{"line_number":109,"context_line":"        if (host_state.thin_provisioning_support and"},{"line_number":110,"context_line":"                host_state.max_over_subscription_ratio \u003e\u003d 1):"},{"line_number":111,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":112,"context_line":"                                  volume_size) / total)"},{"line_number":113,"context_line":"            if provisioned_ratio \u003e\u003d host_state.max_over_subscription_ratio:"},{"line_number":114,"context_line":"                LOG.warning(_LW("}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_ab557f1e","line":111,"in_reply_to":"7a016987_0b0b7325","updated":"2015-05-29 18:54:30.000000000","message":"On line 69, we\u0027ve already made sure total is float and it is not zero. I don\u0027t see why we need another cast here?","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":11047,"name":"Mark Sturdevant","email":"mark.sturdevant@ibm.com","username":"markstur"},"change_message_id":"d359728f6abc8af9c5d678f0d0a97d7142f3781d","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                free_virtual \u003d free * host_state.max_over_subscription_ratio"},{"line_number":126,"context_line":"                return free_virtual \u003e\u003d volume_size"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return free \u003e\u003d volume_size"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_6b9c27c0","line":127,"updated":"2015-05-29 17:30:39.000000000","message":"Always returns True.  If you move the logging down here, it would be good make the conditionals less redundant.  Right?","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"211b3c2a8cd403e31504614c6734e5dfc731725a","unresolved":false,"context_lines":[{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                free_virtual \u003d free * host_state.max_over_subscription_ratio"},{"line_number":126,"context_line":"                return free_virtual \u003e\u003d volume_size"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":"        return free \u003e\u003d volume_size"}],"source_content_type":"text/x-python","patch_set":7,"id":"7a016987_d13d0c2c","line":127,"in_reply_to":"7a016987_6b9c27c0","updated":"2015-05-29 18:54:30.000000000","message":"Done","commit_id":"ed01c3b661d202b850ce0320cbfd82552b6a0f78"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"6d1eb49155360d4b938a254c447204c99e7e3d09","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                host_state.max_over_subscription_ratio \u003e 1):"},{"line_number":90,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":91,"context_line":"                                  volume_size) / total)"},{"line_number":92,"context_line":"            if provisioned_ratio \u003e\u003d host_state.max_over_subscription_ratio:"},{"line_number":93,"context_line":"                LOG.warning(_LW("},{"line_number":94,"context_line":"                    \"Insufficient free space for thin provisioning. \""},{"line_number":95,"context_line":"                    \"The ratio of provisioned capacity over total capacity \""}],"source_content_type":"text/x-python","patch_set":8,"id":"7a016987_0fa6bfad","line":92,"updated":"2015-06-01 08:10:30.000000000","message":"I believe this should be \u003e not \u003e\u003d, otherwise you\u0027ll never be able to use all your oversubscribed space.  Right?","commit_id":"75953752e41819b0d2ca770d4d13ed1ccaec685a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"95d366b7b8a95c705aed24351e059f88615daf4f","unresolved":false,"context_lines":[{"line_number":89,"context_line":"                host_state.max_over_subscription_ratio \u003e 1):"},{"line_number":90,"context_line":"            provisioned_ratio \u003d ((host_state.provisioned_capacity_gb +"},{"line_number":91,"context_line":"                                  volume_size) / total)"},{"line_number":92,"context_line":"            if provisioned_ratio \u003e\u003d host_state.max_over_subscription_ratio:"},{"line_number":93,"context_line":"                LOG.warning(_LW("},{"line_number":94,"context_line":"                    \"Insufficient free space for thin provisioning. \""},{"line_number":95,"context_line":"                    \"The ratio of provisioned capacity over total capacity \""}],"source_content_type":"text/x-python","patch_set":8,"id":"5afe65bd_7448da87","line":92,"in_reply_to":"7a016987_0fa6bfad","updated":"2015-06-03 14:49:11.000000000","message":"Good point. This should be changed to \"\u003e\". Thanks.","commit_id":"75953752e41819b0d2ca770d4d13ed1ccaec685a"}],"cinder/scheduler/host_manager.py":[{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"752c3d5580fc5ab3935af530a16dd901779e2442","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            pass"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":292,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":293,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_27f6ded7","line":292,"updated":"2015-05-27 02:48:59.000000000","message":"if self.thin_provisioning_support is true, then no reduction of free_capacity_gb? that doesn\u0027t seem right to me.","commit_id":"2a0d5585e44c80443275123643c7b3358bff9290"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"b35589a434cf6824f0963fe36f1e12b513f34742","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            pass"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":292,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":293,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_cea95e7d","line":292,"in_reply_to":"7a016987_072082f6","updated":"2015-05-27 08:52:45.000000000","message":"I thought a scenario: If we don\u0027t deduct the volume size for thin provisioning,and create some thin volumes successfully, and then we create a thick volume with big size, is it safe to those thin volumes? I mean the thick volume take the free capacity most, and the thin volume can\u0027t have capacity to save data when they want.","commit_id":"2a0d5585e44c80443275123643c7b3358bff9290"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"6190d5dd6f60d9cf8462a5a8387e1c5031b4786a","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            pass"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":292,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":293,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_072082f6","line":292,"in_reply_to":"7a016987_27f6ded7","updated":"2015-05-27 03:07:00.000000000","message":"That\u0027s why I want you to take a look as I\u0027m not sure:).\n\nThis was actually brought to my attention by my co-worker. They noticed free_capacity_gb gets deducted by the new volume size in thin provisioning.  So they thought this capacity (new volume size) was reserved by the scheduler so that they couldn\u0027t use it for provisioning.\n\nSince free_capacity_gb represents the physical free capacity, not virtual free capacity, maybe we should not deduct the volume size from it for thin provisioning?  For thin provisioning, even though we provision volume_gb, the used size is 0 to start with. That is the reasoning behind this change.  Not sure if Patrick ran into this yet.\n\nIs the free_capacity we see in the capacity_filter an outcome of this deduction?  Thoughts?","commit_id":"2a0d5585e44c80443275123643c7b3358bff9290"},{"author":{"_account_id":8846,"name":"Hao Wang","display_name":"Hao Wang","email":"sxmatch1986@gmail.com","username":"sxmatch"},"change_message_id":"f29a68a06b729fb4c4857d2d12044c71c9fb86d7","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            pass"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":292,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":293,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_81f670f7","line":292,"in_reply_to":"7a016987_96ea4673","updated":"2015-05-28 02:09:50.000000000","message":"Well, I got your point. But as you said, even if we deduct the volume size from free capacity for thin volume, it will be refreshed every 60 seconds. That is not some big problem I think. Maybe you can\u0027t create more thin volume in 60 seconds, but you can create again at next 60 seconds. Is it right?","commit_id":"2a0d5585e44c80443275123643c7b3358bff9290"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"3ca33ee040f27096e07ac397a40e89358c716bca","unresolved":false,"context_lines":[{"line_number":289,"context_line":"            pass"},{"line_number":290,"context_line":"        else:"},{"line_number":291,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":292,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":293,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"    def __repr__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a016987_96ea4673","line":292,"in_reply_to":"7a016987_cea95e7d","updated":"2015-05-27 18:01:33.000000000","message":"Backend reports free_capacity every 60 seconds and the scheduler is not maintaining this capacity for the backend. So I don\u0027t see a problem here.","commit_id":"2a0d5585e44c80443275123643c7b3358bff9290"},{"author":{"_account_id":2759,"name":"Huang Zhiteng","email":"winston.d@gmail.com","username":"zhiteng-huang"},"change_message_id":"97a2df097a17cf9021dbdec451c64afac00fab7e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            # Unable to determine the actual free space on back-end"},{"line_number":288,"context_line":"            pass"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":291,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":292,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_4301ab05","line":290,"updated":"2015-05-27 18:52:39.000000000","message":"If we really want to treat thin and non-thin backend differently, at least consider oversubscrption ratio here.  And please note that some backend can report support thin and thick at the same time, so the real solution (if this even being considered a issue) is to look at the volume it self, see if it\u0027s being created as thin or thick.  Using backend attribute to do math here is wrong.","commit_id":"7d9a86912104b27e94f3127f90692abad4083552"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"a8abbb9776695ee8db66ffc26c10334a16bc08ce","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            # Unable to determine the actual free space on back-end"},{"line_number":288,"context_line":"            pass"},{"line_number":289,"context_line":"        else:"},{"line_number":290,"context_line":"            if not self.thin_provisioning_support:"},{"line_number":291,"context_line":"                self.free_capacity_gb -\u003d volume_gb"},{"line_number":292,"context_line":"        self.updated \u003d timeutils.utcnow()"},{"line_number":293,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"7a016987_997cb621","line":290,"in_reply_to":"7a016987_4301ab05","updated":"2015-05-27 19:43:50.000000000","message":"Removed this. Let\u0027s get the fix in capacity_filter in first, then we\u0027ll see if we still need to fix it here. I think it\u0027s hard for the scheduler to figure out whether the volume is thin or thick if the driver can support both. It maybe specified in volume types, but every driver does it differently.","commit_id":"7d9a86912104b27e94f3127f90692abad4083552"}],"cinder/tests/unit/scheduler/test_host_filters.py":[{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"70ab7b950a420a57c2223ff14cd8e9337c5bbc83","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":163,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":166,"context_line":"    def test_filter_over_subscription_less_than_1(self, _mock_serv_is_up):"},{"line_number":167,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":168,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_cb531e15","line":165,"updated":"2015-05-29 16:22:32.000000000","message":"We could add return_value\u003dTrue here instead of in line 167","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"24aa840f4d027b354aea32fc59612b074967a858","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":163,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":166,"context_line":"    def test_filter_over_subscription_less_than_1(self, _mock_serv_is_up):"},{"line_number":167,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":168,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_8f4f4f6a","line":165,"in_reply_to":"7a016987_86fabbbb","updated":"2015-06-01 08:09:11.000000000","message":"Consistency wins.  :-)","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f2488c076b3a57c2d317adab5d0a52f1a25171ba","unresolved":false,"context_lines":[{"line_number":162,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":163,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":166,"context_line":"    def test_filter_over_subscription_less_than_1(self, _mock_serv_is_up):"},{"line_number":167,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":168,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_86fabbbb","line":165,"in_reply_to":"7a016987_cb531e15","updated":"2015-05-29 16:52:36.000000000","message":"I\u0027m trying to make it consistent with other tests.  We have _mock_serv_is_up.return_value \u003d True in every test.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"70ab7b950a420a57c2223ff14cd8e9337c5bbc83","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":319,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":322,"context_line":"    def test_filter_reserved_thin_true_passes(self, _mock_serv_is_up):"},{"line_number":323,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":324,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_0b9c96be","line":321,"updated":"2015-05-29 16:22:32.000000000","message":"Same as before.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f2488c076b3a57c2d317adab5d0a52f1a25171ba","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":319,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":322,"context_line":"    def test_filter_reserved_thin_true_passes(self, _mock_serv_is_up):"},{"line_number":323,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":324,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_26fd47b1","line":321,"in_reply_to":"7a016987_0b9c96be","updated":"2015-05-29 16:52:36.000000000","message":"Same here.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"24aa840f4d027b354aea32fc59612b074967a858","unresolved":false,"context_lines":[{"line_number":318,"context_line":"                                    \u0027service\u0027: service})"},{"line_number":319,"context_line":"        self.assertTrue(filt_cls.host_passes(host, filter_properties))"},{"line_number":320,"context_line":""},{"line_number":321,"context_line":"    @mock.patch(\u0027cinder.utils.service_is_up\u0027)"},{"line_number":322,"context_line":"    def test_filter_reserved_thin_true_passes(self, _mock_serv_is_up):"},{"line_number":323,"context_line":"        _mock_serv_is_up.return_value \u003d True"},{"line_number":324,"context_line":"        filt_cls \u003d self.class_map[\u0027CapacityFilter\u0027]()"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_af444b46","line":321,"in_reply_to":"7a016987_26fd47b1","updated":"2015-06-01 08:09:11.000000000","message":"And wins again.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"70ab7b950a420a57c2223ff14cd8e9337c5bbc83","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027,"},{"line_number":332,"context_line":"                                   {\u0027total_capacity_gb\u0027: 500,"},{"line_number":333,"context_line":"                                    \u0027free_capacity_gb\u0027: 80,"},{"line_number":334,"context_line":"                                    \u0027provisioned_capacity_gb\u0027: 400,"},{"line_number":335,"context_line":"                                    \u0027max_over_subscription_ratio\u0027: 2.0,"},{"line_number":336,"context_line":"                                    \u0027reserved_percentage\u0027: 5,"},{"line_number":337,"context_line":"                                    \u0027thin_provisioning_support\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_cb3d5e8f","line":334,"updated":"2015-05-29 16:22:32.000000000","message":"This should be 1000 instead of 400, right?","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":9535,"name":"Gorka Eguileor","email":"geguileo@redhat.com","username":"Gorka"},"change_message_id":"24aa840f4d027b354aea32fc59612b074967a858","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027,"},{"line_number":332,"context_line":"                                   {\u0027total_capacity_gb\u0027: 500,"},{"line_number":333,"context_line":"                                    \u0027free_capacity_gb\u0027: 80,"},{"line_number":334,"context_line":"                                    \u0027provisioned_capacity_gb\u0027: 400,"},{"line_number":335,"context_line":"                                    \u0027max_over_subscription_ratio\u0027: 2.0,"},{"line_number":336,"context_line":"                                    \u0027reserved_percentage\u0027: 5,"},{"line_number":337,"context_line":"                                    \u0027thin_provisioning_support\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_cf60a7d1","line":334,"in_reply_to":"7a016987_46ee03ee","updated":"2015-06-01 08:09:11.000000000","message":"You are right, I misread it.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"},{"author":{"_account_id":6491,"name":"xing-yang","email":"xingyang105@gmail.com","username":"xing-yang"},"change_message_id":"f2488c076b3a57c2d317adab5d0a52f1a25171ba","unresolved":false,"context_lines":[{"line_number":331,"context_line":"        host \u003d fakes.FakeHostState(\u0027host1\u0027,"},{"line_number":332,"context_line":"                                   {\u0027total_capacity_gb\u0027: 500,"},{"line_number":333,"context_line":"                                    \u0027free_capacity_gb\u0027: 80,"},{"line_number":334,"context_line":"                                    \u0027provisioned_capacity_gb\u0027: 400,"},{"line_number":335,"context_line":"                                    \u0027max_over_subscription_ratio\u0027: 2.0,"},{"line_number":336,"context_line":"                                    \u0027reserved_percentage\u0027: 5,"},{"line_number":337,"context_line":"                                    \u0027thin_provisioning_support\u0027: True,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7a016987_46ee03ee","line":334,"in_reply_to":"7a016987_cb3d5e8f","updated":"2015-05-29 16:52:36.000000000","message":"If provisioned_capacity_gb is 1000, this test will fail and line 341 will have to be assertFalse.  If it is 1000, that means we\u0027ve already reached the upper limit of oversubscription 500*2\u003d1000. We can no longer provision thin luns any more. This test is a positive test case, so provisioned_capacity has to be \u003c 1000. That said, there\u0027s a problem in this test though.  free_capacity should not be less than 100 here. I fixed it in the next patch set.","commit_id":"b243c8a75c38e2eba84d41d728b7049fb3b2b09a"}]}
