)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1102165283f2ad7b621c715c267446706321c1f5","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    - disk"},{"line_number":14,"context_line":"    - vnic"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For limits the utlization will not exceed the limit."},{"line_number":17,"context_line":"Reservations will be guaranteed for the instance."},{"line_number":18,"context_line":"Shares are used to determine relative allocation between resource consumers."},{"line_number":19,"context_line":"In general, a consumer with more shares gets proportionally more of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"1a4dcd0f_cd3dd5bc","line":16,"updated":"2015-08-04 15:37:23.000000000","message":"s/utlization/utilization","commit_id":"0001c77bbfc0307e8ebc20f33f3c915869b94ee6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b0ef9907e75f8b9bf5d36b24228cbc76d42abdf2","unresolved":false,"context_lines":[{"line_number":13,"context_line":"    - disk"},{"line_number":14,"context_line":"    - vnic"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For limits the utlization will not exceed the limit."},{"line_number":17,"context_line":"Reservations will be guaranteed for the instance."},{"line_number":18,"context_line":"Shares are used to determine relative allocation between resource consumers."},{"line_number":19,"context_line":"In general, a consumer with more shares gets proportionally more of the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da20952f_09a435a4","line":16,"in_reply_to":"1a4dcd0f_cd3dd5bc","updated":"2015-08-27 08:13:49.000000000","message":"Done","commit_id":"0001c77bbfc0307e8ebc20f33f3c915869b94ee6"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"e33822c7ad5b908b9dcbc8a793eb51231a330189","unresolved":false,"context_lines":[{"line_number":19,"context_line":"In general, a consumer with more shares gets proportionally more of the"},{"line_number":20,"context_line":"resource, subject to certain other constraints."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I3a06843a210baed00f13cd0c4dfb22e77b91768f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"1a4dcd0f_5c35f4f4","line":22,"updated":"2015-08-04 15:49:10.000000000","message":"Should probably call out that this is tied to blueprint vmware-limits.","commit_id":"0001c77bbfc0307e8ebc20f33f3c915869b94ee6"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b0ef9907e75f8b9bf5d36b24228cbc76d42abdf2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"In general, a consumer with more shares gets proportionally more of the"},{"line_number":20,"context_line":"resource, subject to certain other constraints."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: I3a06843a210baed00f13cd0c4dfb22e77b91768f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":15,"id":"da20952f_29a1f994","line":22,"in_reply_to":"1a4dcd0f_5c35f4f4","updated":"2015-08-27 08:13:49.000000000","message":"Done","commit_id":"0001c77bbfc0307e8ebc20f33f3c915869b94ee6"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"a0aff8d16521901634d302c86c067b5c69b71354","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Objects: add limits, reservations and shares to ImageMetaProps object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This enables use to set quotas. More specifically limitations,"},{"line_number":10,"context_line":"reservations and shares for the following:"},{"line_number":11,"context_line":"    - cpu"},{"line_number":12,"context_line":"    - memory"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a1a9d01_5bd2935d","line":9,"updated":"2015-09-28 23:05:01.000000000","message":"typo: user","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3e70088dd171b61f0e4655d4ad439e1a68298a02","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Objects: add limits, reservations and shares to ImageMetaProps object"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This enables use to set quotas. More specifically limitations,"},{"line_number":10,"context_line":"reservations and shares for the following:"},{"line_number":11,"context_line":"    - cpu"},{"line_number":12,"context_line":"    - memory"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a8ffd7b_001474e6","line":9,"in_reply_to":"9a1a9d01_5bd2935d","updated":"2015-12-03 10:18:50.000000000","message":"Done","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"a0aff8d16521901634d302c86c067b5c69b71354","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    - cpu"},{"line_number":12,"context_line":"    - memory"},{"line_number":13,"context_line":"    - disk"},{"line_number":14,"context_line":"    - vnic"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For limits the utilization will not exceed the limit."},{"line_number":17,"context_line":"Reservations will be guaranteed for the instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a1a9d01_3bcd5fb7","line":14,"updated":"2015-09-28 23:05:01.000000000","message":"nit: vif","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3e70088dd171b61f0e4655d4ad439e1a68298a02","unresolved":false,"context_lines":[{"line_number":11,"context_line":"    - cpu"},{"line_number":12,"context_line":"    - memory"},{"line_number":13,"context_line":"    - disk"},{"line_number":14,"context_line":"    - vnic"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"For limits the utilization will not exceed the limit."},{"line_number":17,"context_line":"Reservations will be guaranteed for the instance."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a8ffd7b_c0d8ac55","line":14,"in_reply_to":"9a1a9d01_3bcd5fb7","updated":"2015-12-03 10:18:50.000000000","message":"Done","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"a0aff8d16521901634d302c86c067b5c69b71354","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This is part of the blueprint vmware-limits-mitaka"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: I3a06843a210baed00f13cd0c4dfb22e77b91768f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a1a9d01_3b123f0a","line":24,"updated":"2015-09-28 23:05:01.000000000","message":"I guess format should be \n\nImplements: blueprint vmware-limits-mitaka\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3e70088dd171b61f0e4655d4ad439e1a68298a02","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"DocImpact"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"This is part of the blueprint vmware-limits-mitaka"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: I3a06843a210baed00f13cd0c4dfb22e77b91768f"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":18,"id":"9a8ffd7b_20ead8db","line":24,"in_reply_to":"9a1a9d01_3b123f0a","updated":"2015-12-03 10:18:50.000000000","message":"I just think that we need the keyword blueprint","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"}],"nova/objects/fields.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"28bfcef84f8efb14494062ef6c7b06fc4bf15389","unresolved":false,"context_lines":[{"line_number":617,"context_line":"            valid_values\u003dNotificationAction.ALL)"},{"line_number":618,"context_line":""},{"line_number":619,"context_line":""},{"line_number":620,"context_line":"class SharesLevel(Enum):"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"    CUSTOM \u003d \"custom\""},{"line_number":623,"context_line":"    HIGH \u003d \"high\""}],"source_content_type":"text/x-python","patch_set":33,"id":"bacf61ea_82fe39ac","line":620,"updated":"2016-08-03 20:30:52.000000000","message":"This is entirely specific to VMware/ESXi, no? So it should be called VMWareSharesLevel or similar.","commit_id":"49109ef0bd43e86f263dc2cfa00f002f56d19673"}],"nova/objects/image_meta.py":[{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"6d3286ed61b229fddd23690285fd9c197c985847","unresolved":false,"context_lines":[{"line_number":101,"context_line":"class ImageMetaProps(base.NovaObject):"},{"line_number":102,"context_line":"    # Version 1.0: Initial version"},{"line_number":103,"context_line":"    # Version 1.1: added support for hw limits, reservations and shares"},{"line_number":104,"context_line":"    VERSION \u003d \u00271.1\u0027"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":107,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"}],"source_content_type":"text/x-python","patch_set":1,"id":"5afe65bd_afe01597","line":104,"updated":"2015-06-04 10:20:54.000000000","message":"The intent was that the version of the two objects in this file would always be tied together. So you should be changing the version in ImageMeta instead.","commit_id":"a9918fbc313e5628fbf475f20315a43747b222c5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class ImageMetaProps(base.NovaObject):"},{"line_number":104,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":107,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_71cca635","line":104,"updated":"2015-06-05 15:37:23.000000000","message":"This line shouldn\u0027t be changed","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":101,"context_line":""},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"class ImageMetaProps(base.NovaObject):"},{"line_number":104,"context_line":"    VERSION \u003d \u00271.0\u0027"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":107,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_8c0fef2d","line":104,"in_reply_to":"3afb71cf_71cca635","updated":"2015-06-07 06:13:25.000000000","message":"So this too will be bumped to 1.1?","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u0027img_bdm_v2\u0027: fields.FlexibleBooleanField(),"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":219,"context_line":"        # even if there are available resources."},{"line_number":220,"context_line":"        \u0027hw_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # amount of resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_71f38674","line":219,"updated":"2015-06-05 15:37:23.000000000","message":"What units is this measured in ?  milliseconds, percentage timeslice ?","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        \u0027img_bdm_v2\u0027: fields.FlexibleBooleanField(),"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":219,"context_line":"        # even if there are available resources."},{"line_number":220,"context_line":"        \u0027hw_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # amount of resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_46a43556","line":219,"in_reply_to":"3afb71cf_71f38674","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        \u0027hw_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":223,"context_line":"        # machine"},{"line_number":224,"context_line":"        \u0027hw_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        # CPU shares inthe case of contention"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_31ed0e8c","line":223,"updated":"2015-06-05 15:37:23.000000000","message":"Units ?","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        \u0027hw_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":221,"context_line":""},{"line_number":222,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":223,"context_line":"        # machine"},{"line_number":224,"context_line":"        \u0027hw_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":225,"context_line":""},{"line_number":226,"context_line":"        # CPU shares inthe case of contention"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_46bb1573","line":223,"in_reply_to":"3afb71cf_31ed0e8c","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # allocation in case of resource contention. This value is only"},{"line_number":233,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":234,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":235,"context_line":"        # can be compared."},{"line_number":236,"context_line":"        \u0027hw_cpu_shares_share\u0027: fields.IntegerField(),"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_9195e2e5","line":235,"updated":"2015-06-05 15:37:23.000000000","message":"What units are \u0027shared\u0027 set in ?","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":232,"context_line":"        # allocation in case of resource contention. This value is only"},{"line_number":233,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":234,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":235,"context_line":"        # can be compared."},{"line_number":236,"context_line":"        \u0027hw_cpu_shares_share\u0027: fields.IntegerField(),"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_267819c4","line":235,"in_reply_to":"3afb71cf_9195e2e5","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \u0027hw_cpu_shares_share\u0027: fields.IntegerField(),"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":239,"context_line":"        # even if there are available resources."},{"line_number":240,"context_line":"        \u0027hw_memory_limit\u0027: fields.IntegerField(),"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # amount of resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_118a12c0","line":239,"updated":"2015-06-05 15:37:23.000000000","message":"Is this in bytes, kb or mb ?","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":236,"context_line":"        \u0027hw_cpu_shares_share\u0027: fields.IntegerField(),"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":239,"context_line":"        # even if there are available resources."},{"line_number":240,"context_line":"        \u0027hw_memory_limit\u0027: fields.IntegerField(),"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # amount of resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_c67ee5ad","line":239,"in_reply_to":"3afb71cf_118a12c0","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        \u0027hw_memory_limit\u0027: fields.IntegerField(),"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":243,"context_line":"        # machine"},{"line_number":244,"context_line":"        \u0027hw_memory_reservation\u0027: fields.IntegerField(),"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        # Memory shares inthe case of contention"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_3172aee6","line":243,"updated":"2015-06-05 15:37:23.000000000","message":"Same Q","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        \u0027hw_memory_limit\u0027: fields.IntegerField(),"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":243,"context_line":"        # machine"},{"line_number":244,"context_line":"        \u0027hw_memory_reservation\u0027: fields.IntegerField(),"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"        # Memory shares inthe case of contention"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_a64ac981","line":243,"in_reply_to":"3afb71cf_3172aee6","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # allocation in case of resource contention. This value is only"},{"line_number":253,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":254,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":255,"context_line":"        # can be compared."},{"line_number":256,"context_line":"        \u0027hw_memory_shares_share\u0027: fields.IntegerField(),"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        # The utilization of a disk will not exceed this limit,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_914a8282","line":255,"updated":"2015-06-05 15:37:23.000000000","message":"Curious what \u0027shares\u0027 is refering to in terms of memory","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        # allocation in case of resource contention. This value is only"},{"line_number":253,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":254,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":255,"context_line":"        # can be compared."},{"line_number":256,"context_line":"        \u0027hw_memory_shares_share\u0027: fields.IntegerField(),"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        # The utilization of a disk will not exceed this limit,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_864fcd91","line":255,"in_reply_to":"3afb71cf_914a8282","updated":"2015-06-07 06:13:25.000000000","message":"Done","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # The utilization of a disk will not exceed this limit,"},{"line_number":259,"context_line":"        # even if there are available resources. The unit is number of I/O"},{"line_number":260,"context_line":"        # per second."},{"line_number":261,"context_line":"        \u0027hw_disk_limit\u0027: fields.IntegerField(),"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":264,"context_line":"        # machine. Reservation control is used to provide guaranteed"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_7c635db2","line":261,"updated":"2015-06-05 15:37:23.000000000","message":"Ok, so libvirt has a similar concept of disk I/O limits, but we in fact have 6 possible tuning parameters for limits\n\n - read bytes per second\n - read operations per second\n - write bytes per second\n - write operations per second\n - total bytes per second\n - total operations per second\n\nIt seems this property is equivalent to the last one, which is fine, as we could suppor this setting you\u0027re adding. Currently all 6 are settable in flavour extra specs\n\n  quota:disk_read_bytes_sec\n  quota:disk_read_iops_sec\n  quota:disk_write_bytes_sec\n  quota:disk_write_iops_sec\n  quota:disk_total_bytes_sec\n  quota:disk_total_iops_sec\n\nI wonder if this means we should introduce an explicit \u0027quota_\u0027 prefix for these kind of tuning parameters, rather than using \u0027hw_\u0027. I can see the argument both ways.\n\nWe don\u0027t currently have any concept of a min guaranteed I/O level, but if we did, I could imagine seeing a similar set of 6 tunables. So we could get a bit of an insane number of tunables in the image meta props if we try to cover all these possibilities, not that I see much of an attractive alternative !","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # The utilization of a disk will not exceed this limit,"},{"line_number":259,"context_line":"        # even if there are available resources. The unit is number of I/O"},{"line_number":260,"context_line":"        # per second."},{"line_number":261,"context_line":"        \u0027hw_disk_limit\u0027: fields.IntegerField(),"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":264,"context_line":"        # machine. Reservation control is used to provide guaranteed"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_663bb1ec","line":261,"in_reply_to":"3afb71cf_7c635db2","updated":"2015-06-07 06:13:25.000000000","message":"Yes, it is similar to the total option. Honestly I am on the fence regarding the quota.\nI commented on https://review.openstack.org/#/c/76234/32/nova/objects/image_meta.py,cm\n\nMaybe quota is the best way to go here.","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"7b7cbfd1330a7a0625e4b08e7efd1bc5b811b00b","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        # The bandwidth limit for the virtual network adapter. The"},{"line_number":281,"context_line":"        # utilization of the virtual network adapter will not exceed this"},{"line_number":282,"context_line":"        # limit, even if there are available resources. Units in Mbits/sec."},{"line_number":283,"context_line":"        \u0027hw_vnic_limit\u0027: fields.IntegerField(),"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        # Amount of network bandwidth that is guaranteed to the virtual"},{"line_number":286,"context_line":"        # network adapter. If utilization is less than reservation, the"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_fcff4d32","line":283,"updated":"2015-06-05 15:37:23.000000000","message":"How about calling this \u0027vif\u0027 instead of \u0027vnic\u0027, since VIF seems to be more common terminology\n\nDoes this bandwidth limit apply to inbound, or outbound, or both combined ?\n\nIn libvirt we support some flavour extra specs\n\n  quota:vif_inbound_burst\n  quota:vif_inbound_average\n  quota:vif_inbound_peak\n  quota:vif_outbound_burst\n  quota:vif_outbound_average\n  quota:vif_outbound_peak\n\nLibvirt has a concept of a \u0027floor\u0027 which would roughly map to your \u0027reservation\u0027 setting as it provides a min guarantee, but this isn\u0027t used in nova libvirt yet.\n\nYour \u0027limit\u0027 roughly maps to \u0027peak\u0027 in libvirt.\n\nNot sure what we can do to merge concepts here.","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"6da6caf85df994fcc2009414e1d57a1d24db316d","unresolved":false,"context_lines":[{"line_number":280,"context_line":"        # The bandwidth limit for the virtual network adapter. The"},{"line_number":281,"context_line":"        # utilization of the virtual network adapter will not exceed this"},{"line_number":282,"context_line":"        # limit, even if there are available resources. Units in Mbits/sec."},{"line_number":283,"context_line":"        \u0027hw_vnic_limit\u0027: fields.IntegerField(),"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":"        # Amount of network bandwidth that is guaranteed to the virtual"},{"line_number":286,"context_line":"        # network adapter. If utilization is less than reservation, the"}],"source_content_type":"text/x-python","patch_set":2,"id":"3afb71cf_e658c158","line":283,"in_reply_to":"3afb71cf_fcff4d32","updated":"2015-06-07 06:13:25.000000000","message":"Done\n\nSadly I do not think that we can merge things here (similarly to the disks). They are just different contructs and implementations on the backend.","commit_id":"f4286d3e761c8e81f16ce99993738efb4ad18c8e"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"8246d7f5755c80dcbba64fda621d7937c3d635ae","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":304,"context_line":"        # machine. This is specified in MHz."},{"line_number":305,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # CPU shares in the case of contention"},{"line_number":308,"context_line":"        # the allocation level. The level is a simplified view of shares."}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_3a7c631e","line":305,"updated":"2015-06-17 10:04:46.000000000","message":"I\u0027m struggling to understand what it means to specify CPU utilization in MHz ? Normally utilization would be a percentage value, or a CPU timeslice. eg something that you can directly relate to the available compute time of the CPU.  I don\u0027t understand how you would go about measuring/enforcing utilization in terms of MHz ?!?!","commit_id":"494eb53c197774659188533bbaf372220d2c7cb5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"34fec88ddf6fef8d8bf45d241e41f67f795869dc","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":304,"context_line":"        # machine. This is specified in MHz."},{"line_number":305,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # CPU shares in the case of contention"},{"line_number":308,"context_line":"        # the allocation level. The level is a simplified view of shares."}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_1dc4f65c","line":305,"in_reply_to":"fa32b979_0a76ea05","updated":"2015-06-17 11:31:14.000000000","message":"This is something that an admin would provision and assign in the a similar way to how they would for a flavor. Say for example there are specific images that the admin needs to guarantee specific reservations - a use case for that is NFV.\nThe admin can make use of the policy.json file in glance to make sure that a tenant does not change this.","commit_id":"494eb53c197774659188533bbaf372220d2c7cb5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"2d8f287ccb9997308cfe5e54dbb371d1dd7b9cf4","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":304,"context_line":"        # machine. This is specified in MHz."},{"line_number":305,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # CPU shares in the case of contention"},{"line_number":308,"context_line":"        # the allocation level. The level is a simplified view of shares."}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_e71f3f6a","line":305,"in_reply_to":"fa32b979_3a7c631e","updated":"2015-06-17 10:49:28.000000000","message":"This is the API that the VC exposes. Please see http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.wssdk.apiref.doc/vim.ResourceAllocationInfo.html#field_detail\nThe VC knows how to do the enforcement.","commit_id":"494eb53c197774659188533bbaf372220d2c7cb5"},{"author":{"_account_id":1779,"name":"Daniel Berrange","email":"berrange@redhat.com","username":"berrange"},"change_message_id":"d2fc6111747388bf5fd54074d88c290b29977780","unresolved":false,"context_lines":[{"line_number":302,"context_line":""},{"line_number":303,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":304,"context_line":"        # machine. This is specified in MHz."},{"line_number":305,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":306,"context_line":""},{"line_number":307,"context_line":"        # CPU shares in the case of contention"},{"line_number":308,"context_line":"        # the allocation level. The level is a simplified view of shares."}],"source_content_type":"text/x-python","patch_set":5,"id":"fa32b979_0a76ea05","line":305,"in_reply_to":"fa32b979_e71f3f6a","updated":"2015-06-17 11:08:24.000000000","message":"Hmm, the VC docs don\u0027t really give any more useful info on what this actually means :-(   All I can imagine is that it is somehow indirectly specifying a percentage of available CPU time. eg you have a 3000 MHz CPU in your host, and your request 2000 MHz reservation, it might mean the guest will get 2/3rds of the available CPU timeslice. If that is the way its interpreted though, this feels pretty useless from a cloud POV, because tenant users have no idea what MHz the virtualization hosts are capable of, so how do they figure out what is reasonable to request for reservation/limits ?!?!?!\n\nUnrelated to this, I\u0027m actually wondering about use of these tunables in general. In particular does a cloud administrator actually want to allow tenant users to decide what performance settings their guest has. I kind of feel like a cloud admin would want to retain their own control over this with flavour settings.\n\nI\u0027m starting to think we might need to have a blueprint + spec to examine the usage scenarios around delegating performance tuning to tenant users on image properties before we go down this route.","commit_id":"494eb53c197774659188533bbaf372220d2c7cb5"},{"author":{"_account_id":10224,"name":"Feodor Tersin","email":"ftersin@hotmail.com","username":"ftersin"},"change_message_id":"4947cc18e15c2d0c7c1dc3ef235a14bd0aa34cae","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":118,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"},{"line_number":119,"context_line":"    # \u0027os_\u0027 - settings affecting the guest operating system setup"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    fields \u003d {"},{"line_number":122,"context_line":"        # name of guest hardware architecture eg i686, x86_64, ppc64"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba3cc151_aa0f502d","line":119,"updated":"2015-07-04 06:28:39.000000000","message":"did you forget to add quota to the legenda?","commit_id":"425e5c63f207d8ded806b8f17a621bf837d324b8"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"210c9bde98eaab0b335f955ebecce0ea24afe927","unresolved":false,"context_lines":[{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":118,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"},{"line_number":119,"context_line":"    # \u0027os_\u0027 - settings affecting the guest operating system setup"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"    fields \u003d {"},{"line_number":122,"context_line":"        # name of guest hardware architecture eg i686, x86_64, ppc64"}],"source_content_type":"text/x-python","patch_set":6,"id":"3a50d1a3_5b341cfa","line":119,"in_reply_to":"ba3cc151_aa0f502d","updated":"2015-07-25 16:02:35.000000000","message":"Done","commit_id":"425e5c63f207d8ded806b8f17a621bf837d324b8"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"694ef8492d94eade985e38eed3be9a8b5fab4091","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: updated ImageMetaProps"},{"line_number":28,"context_line":"    # Version 1.2: ImageMetaProps version 1.2"},{"line_number":29,"context_line":"    # Version 1.3: support for quotas: limits, reservations and shares"},{"line_number":30,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # These are driven by what the image client API returns"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_10272613","line":29,"range":{"start_line":29,"start_character":47,"end_line":29,"end_character":59},"updated":"2015-07-27 14:41:16.000000000","message":"This version comment should just be ImageMetaProps version 1.3. The actual support for quotas should go in a comment for ImageMetaProps Version 1.3.","commit_id":"7186318798536aa617c0d755e301d5c276cb955e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7433a61238d2e2f689b7837a45477efc430a9c6","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    # Version 1.0: Initial version"},{"line_number":27,"context_line":"    # Version 1.1: updated ImageMetaProps"},{"line_number":28,"context_line":"    # Version 1.2: ImageMetaProps version 1.2"},{"line_number":29,"context_line":"    # Version 1.3: support for quotas: limits, reservations and shares"},{"line_number":30,"context_line":"    VERSION \u003d \u00271.3\u0027"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    # These are driven by what the image client API returns"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_ff260515","line":29,"range":{"start_line":29,"start_character":47,"end_line":29,"end_character":59},"in_reply_to":"3a50d1a3_10272613","updated":"2015-07-30 08:48:04.000000000","message":"Done","commit_id":"7186318798536aa617c0d755e301d5c276cb955e"},{"author":{"_account_id":11803,"name":"Ryan Rossiter","email":"rlrossit@us.ibm.com","username":"rlrossiter"},"change_message_id":"694ef8492d94eade985e38eed3be9a8b5fab4091","unresolved":false,"context_lines":[{"line_number":111,"context_line":"class ImageMetaProps(base.NovaObject):"},{"line_number":112,"context_line":"    # Version 1.0: Initial version"},{"line_number":113,"context_line":"    # Version 1.1: added os_require_quiesce field"},{"line_number":114,"context_line":"    # Version 1.2: added img_hv_type and img_hv_requested_version fields"},{"line_number":115,"context_line":"    VERSION \u003d ImageMeta.VERSION"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    # Maximum number of NUMA nodes permitted for the guest topology"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_d0777e00","line":114,"updated":"2015-07-27 14:41:16.000000000","message":"Add Version 1.3 comment here for supporting quota (see above comment).","commit_id":"7186318798536aa617c0d755e301d5c276cb955e"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b7433a61238d2e2f689b7837a45477efc430a9c6","unresolved":false,"context_lines":[{"line_number":111,"context_line":"class ImageMetaProps(base.NovaObject):"},{"line_number":112,"context_line":"    # Version 1.0: Initial version"},{"line_number":113,"context_line":"    # Version 1.1: added os_require_quiesce field"},{"line_number":114,"context_line":"    # Version 1.2: added img_hv_type and img_hv_requested_version fields"},{"line_number":115,"context_line":"    VERSION \u003d ImageMeta.VERSION"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"    # Maximum number of NUMA nodes permitted for the guest topology"}],"source_content_type":"text/x-python","patch_set":11,"id":"3a50d1a3_d19e0454","line":114,"in_reply_to":"3a50d1a3_d0777e00","updated":"2015-07-30 08:48:04.000000000","message":"Done","commit_id":"7186318798536aa617c0d755e301d5c276cb955e"},{"author":{"_account_id":7730,"name":"Sahid Orentino Ferdjaoui","email":"sahid.ferdjaoui@industrialdiscipline.com","username":"sahid"},"change_message_id":"1102165283f2ad7b621c715c267446706321c1f5","unresolved":false,"context_lines":[{"line_number":124,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":125,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"},{"line_number":126,"context_line":"    # \u0027os_\u0027 - settings affecting the guest operating system setup"},{"line_number":127,"context_line":"    # \u0027quota_\u0027 - settings affecting the guest device quotas"},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"    fields \u003d {"},{"line_number":130,"context_line":"        # name of guest hardware architecture eg i686, x86_64, ppc64"}],"source_content_type":"text/x-python","patch_set":15,"id":"1a4dcd0f_9c729c48","line":127,"updated":"2015-08-04 15:37:23.000000000","message":"Sorry but i really do not understand why and how users will use these quotas ? User do not know much about where the guest is hosted (contention, MHz..) So how you want he tunes these \"quota\" and more important why he want to limit his capacity ?","commit_id":"0001c77bbfc0307e8ebc20f33f3c915869b94ee6"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"a0aff8d16521901634d302c86c067b5c69b71354","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        # even if there are available resources. This is specified in MHz."},{"line_number":356,"context_line":"        \u0027quota_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":359,"context_line":"        # machine. This is specified in MHz."},{"line_number":360,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a1a9d01_9b010bb2","line":358,"updated":"2015-09-28 23:05:01.000000000","message":"may be \"cpu resource\" to be specific?","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"3e70088dd171b61f0e4655d4ad439e1a68298a02","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        # even if there are available resources. This is specified in MHz."},{"line_number":356,"context_line":"        \u0027quota_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":357,"context_line":""},{"line_number":358,"context_line":"        # amount of resource that is guaranteed available to the virtual"},{"line_number":359,"context_line":"        # machine. This is specified in MHz."},{"line_number":360,"context_line":"        \u0027quota_cpu_reservation\u0027: fields.IntegerField(),"},{"line_number":361,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"9a8ffd7b_c0318ca3","line":358,"in_reply_to":"9a1a9d01_9b010bb2","updated":"2015-12-03 10:18:50.000000000","message":"Done","commit_id":"c78897feee44315d4960c2661cffb450b0a911d4"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f09949834449628c177ccda0a34e15aae62d36ed","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":221,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"},{"line_number":222,"context_line":"    # \u0027os_\u0027 - settings affecting the guest operating system setup"},{"line_number":223,"context_line":"    # \u0027quota_\u0027 - settings affecting the guest device quotas"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    fields \u003d {"},{"line_number":226,"context_line":"        # name of guest hardware architecture eg i686, x86_64, ppc64"}],"source_content_type":"text/x-python","patch_set":29,"id":"9abb7d3a_291dcebd","line":223,"updated":"2016-06-03 01:33:00.000000000","message":"I don\u0027t think it makes sense to put quota/limit type things in image metadata at all. These should be flavor attributes right?","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f27256e94b69e71b82a8c21c166e38dbbbc20d45","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    # \u0027hw_\u0027 - settings affecting the guest virtual machine hardware"},{"line_number":221,"context_line":"    # \u0027img_\u0027 - settings affecting the use of images by the compute node"},{"line_number":222,"context_line":"    # \u0027os_\u0027 - settings affecting the guest operating system setup"},{"line_number":223,"context_line":"    # \u0027quota_\u0027 - settings affecting the guest device quotas"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    fields \u003d {"},{"line_number":226,"context_line":"        # name of guest hardware architecture eg i686, x86_64, ppc64"}],"source_content_type":"text/x-python","patch_set":29,"id":"9abb7d3a_fa942245","line":223,"in_reply_to":"9abb7d3a_291dcebd","updated":"2016-06-04 01:56:55.000000000","message":"Image owners (example: VNF vendors in NFV) could set these resource allocation values in order to meet certain performance criteria especially under contention in a virtual infrastructure.\n\nFlavor attributes are already implemented. Since image owners could be different from admins who maintain flavors, we need to expose these properties for images too.","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f09949834449628c177ccda0a34e15aae62d36ed","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        \u0027os_type\u0027: fields.OSTypeField(),"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":450,"context_line":"        # even if there are available resources. This is specified in MHz."},{"line_number":451,"context_line":"        \u0027quota_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        # amount of cpu resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":29,"id":"9abb7d3a_c9e7e2aa","line":450,"range":{"start_line":450,"start_character":49,"end_line":450,"end_character":73},"updated":"2016-06-03 01:33:00.000000000","message":"This is really awkward and not very abstract, IMHO.","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f27256e94b69e71b82a8c21c166e38dbbbc20d45","unresolved":false,"context_lines":[{"line_number":447,"context_line":"        \u0027os_type\u0027: fields.OSTypeField(),"},{"line_number":448,"context_line":""},{"line_number":449,"context_line":"        # The utilization of a virtual machine will not exceed this limit,"},{"line_number":450,"context_line":"        # even if there are available resources. This is specified in MHz."},{"line_number":451,"context_line":"        \u0027quota_cpu_limit\u0027: fields.IntegerField(),"},{"line_number":452,"context_line":""},{"line_number":453,"context_line":"        # amount of cpu resource that is guaranteed available to the virtual"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_0ee48b0b","line":450,"range":{"start_line":450,"start_character":49,"end_line":450,"end_character":73},"in_reply_to":"9abb7d3a_c9e7e2aa","updated":"2016-06-04 01:56:55.000000000","message":"The current implementation takes it only in Mhz. Another option I could think of is \"percentage\". But that would require changing the current behavior.","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f09949834449628c177ccda0a34e15aae62d36ed","unresolved":false,"context_lines":[{"line_number":488,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":489,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":490,"context_line":"        # can be compared."},{"line_number":491,"context_line":"        \u0027quota_memory_shares_share\u0027: fields.IntegerField(),"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # The utilization of a disk will not exceed this limit,"},{"line_number":494,"context_line":"        # even if there are available resources. The unit is number of I/O"}],"source_content_type":"text/x-python","patch_set":29,"id":"9abb7d3a_29e2ee9f","line":491,"updated":"2016-06-03 01:33:00.000000000","message":"I don\u0027t think I understand why we need these items for memory. The guest is given some amount of memory and the host has an overcommit ratio, right? How would these be honored or applied?","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"f27256e94b69e71b82a8c21c166e38dbbbc20d45","unresolved":false,"context_lines":[{"line_number":488,"context_line":"        # set if level is set to custom. If level is not set to custom,"},{"line_number":489,"context_line":"        # this value is ignored. Therefore, only shares with custom values"},{"line_number":490,"context_line":"        # can be compared."},{"line_number":491,"context_line":"        \u0027quota_memory_shares_share\u0027: fields.IntegerField(),"},{"line_number":492,"context_line":""},{"line_number":493,"context_line":"        # The utilization of a disk will not exceed this limit,"},{"line_number":494,"context_line":"        # even if there are available resources. The unit is number of I/O"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_2eca2750","line":491,"in_reply_to":"9abb7d3a_29e2ee9f","updated":"2016-06-04 01:56:55.000000000","message":"These configuration defines guaranteed physical memory for a vm. Otherwise, when there is contention (host is over committed) then the allocated physical memory will be less and vm memory has to come from swap file. This will impact performance of NFV workloads.","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"28bfcef84f8efb14494062ef6c7b06fc4bf15389","unresolved":false,"context_lines":[{"line_number":474,"context_line":"        # the allocation level. The level is a simplified view of shares."},{"line_number":475,"context_line":"        # Levels map to a pre-determined set of numeric values for shares."},{"line_number":476,"context_line":"        # The possible values can be seen at:"},{"line_number":477,"context_line":"        # http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.wssdk.apiref.doc/vim.SharesInfo.Level.html # noqa"},{"line_number":478,"context_line":"        \u0027quota_cpu_shares_level\u0027: fields.SharesLevelField(),"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"        # the number of shares allocated. Used to determine resource"}],"source_content_type":"text/x-python","patch_set":33,"id":"bacf61ea_a2037db7","line":477,"updated":"2016-08-03 20:30:52.000000000","message":"If these image metadata properties are VMWare-specific, then they need to be prefixed with something like \"quota_vmware_\". Otherwise we\u0027re just embedding one hypervisor\u0027s worldview into the top-level property namespace. See, for example, that we call the QEMU guest agent metadata property hw_qemu_guest_agent and not just hw_guest_agent for precisely this reason.","commit_id":"49109ef0bd43e86f263dc2cfa00f002f56d19673"}],"nova/objects/request_spec.py":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"f09949834449628c177ccda0a34e15aae62d36ed","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # Version 1.5: Added get_by_instance_uuid(), create(), save()"},{"line_number":40,"context_line":"    # Version 1.6: Added requested_destination"},{"line_number":41,"context_line":"    # Version 1.7: ImageMeta version 1.9"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.7\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    fields \u003d {"},{"line_number":45,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":29,"id":"9abb7d3a_49777202","line":42,"updated":"2016-06-03 01:33:00.000000000","message":"This is unnecessary","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"},{"author":{"_account_id":16929,"name":"Giridhar Jayavelu","email":"gjayavelu@vmware.com","username":"gjayavelu"},"change_message_id":"b08b6d2c5a28704577cde5eee23f8ddafdcf0450","unresolved":false,"context_lines":[{"line_number":39,"context_line":"    # Version 1.5: Added get_by_instance_uuid(), create(), save()"},{"line_number":40,"context_line":"    # Version 1.6: Added requested_destination"},{"line_number":41,"context_line":"    # Version 1.7: ImageMeta version 1.9"},{"line_number":42,"context_line":"    VERSION \u003d \u00271.7\u0027"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"    fields \u003d {"},{"line_number":45,"context_line":"        \u0027id\u0027: fields.IntegerField(),"}],"source_content_type":"text/x-python","patch_set":29,"id":"7aa08908_14e39534","line":42,"in_reply_to":"9abb7d3a_49777202","updated":"2016-06-10 22:06:09.000000000","message":"missed this comment. will remove.","commit_id":"1582a83bee723f1b29966bac2e5923b085a3fbae"}]}
