)]}'
{"doc/source/configuration.rst":[{"author":{"_account_id":22873,"name":"Martin Kopec","email":"mkopec@redhat.com","username":"mkopec"},"change_message_id":"c4f34d0cf4ab1af23fad31fd4144d4d9251d5621","unresolved":false,"context_lines":[{"line_number":103,"context_line":"\"\"\"\"\"\""},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"By default, tempest will use the default set of quotas for all of the users it"},{"line_number":106,"context_line":"creates. It is possible to overide this by setting the ``compute_quotas`` option in"},{"line_number":107,"context_line":"the ``auth`` section of the config file, e.g::"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"  [auth]"}],"source_content_type":"text/x-rst","patch_set":7,"id":"3fa7e38b_9794f637","line":106,"range":{"start_line":106,"start_character":27,"end_line":106,"end_character":34},"updated":"2020-12-03 08:33:45.000000000","message":"nit: override","commit_id":"2a45dedcc42f0f8adce17947d5644ef5e52e7dfc"}],"releasenotes/notes/feature-compute-quotas-3ea2bc467f166950.yaml":[{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"74763e9316b672ad84d733582c7b6b11a88bc648","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a ``compute_quotas`` config option to the ``auth`` section of to the"},{"line_number":5,"context_line":"    config file. This allows you to set the compute quotas of the projects that"},{"line_number":6,"context_line":"    are created when using the dynamic users feature. See `#1827065"},{"line_number":7,"context_line":"    \u003chttps://bugs.launchpad.net/tempest/+bug/1827065\u003e`_ for more details."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_c3e402e3","line":4,"updated":"2019-08-29 06:41:01.000000000","message":"\u0027to\u0027 isn\u0027t needed?","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ebddca5e857a336bbb39758d7f57eb114bb488d7","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a ``compute_quotas`` config option to the ``auth`` section of to the"},{"line_number":5,"context_line":"    config file. This allows you to set the compute quotas of the projects that"},{"line_number":6,"context_line":"    are created when using the dynamic users feature. See `#1827065"},{"line_number":7,"context_line":"    \u003chttps://bugs.launchpad.net/tempest/+bug/1827065\u003e`_ for more details."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"3fa7e38b_ef3b38ce","line":4,"in_reply_to":"7faddb67_723eda29","updated":"2019-09-20 16:56:16.000000000","message":"Done","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"19c8474709094180c9d3c73597f500c60225abbc","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added a ``compute_quotas`` config option to the ``auth`` section of to the"},{"line_number":5,"context_line":"    config file. This allows you to set the compute quotas of the projects that"},{"line_number":6,"context_line":"    are created when using the dynamic users feature. See `#1827065"},{"line_number":7,"context_line":"    \u003chttps://bugs.launchpad.net/tempest/+bug/1827065\u003e`_ for more details."}],"source_content_type":"text/x-yaml","patch_set":6,"id":"7faddb67_723eda29","line":4,"in_reply_to":"7faddb67_c3e402e3","updated":"2019-09-04 19:37:24.000000000","message":"++\n\ns/of to/of","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"}],"tempest/api/compute/test_quotas.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3032d848abfb38ee31f841fd07eea728cbcc4a10","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class QuotasTestJSON(base.BaseV2ComputeTest):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # Tests in this class explicitly check for default quotas"},{"line_number":25,"context_line":"    force_default_quotas \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_31207948","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":61},"updated":"2019-05-15 01:36:38.000000000","message":"Can it be more detailed? something like:\n# Tests in this class do not use CONF.auth.compute_quotas, ...","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"a2a9029808cae413b7edbf7b1810860d63451bbc","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"class QuotasTestJSON(base.BaseV2ComputeTest):"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"    # Tests in this class explicitly check for default quotas"},{"line_number":25,"context_line":"    force_default_quotas \u003d True"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_186632bd","line":24,"range":{"start_line":24,"start_character":4,"end_line":24,"end_character":61},"in_reply_to":"dfbec78f_31207948","updated":"2019-08-27 10:59:48.000000000","message":"Done","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e415b262d2975492704aecf40b18939483540d9","unresolved":true,"context_lines":[{"line_number":25,"context_line":"    # Tests in this class do not use CONF.auth.compute_quotas, as they rely on"},{"line_number":26,"context_line":"    # default quotas being used."},{"line_number":27,"context_line":"    force_default_quotas \u003d True"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    @classmethod"},{"line_number":30,"context_line":"    def skip_checks(cls):"},{"line_number":31,"context_line":"        super(QuotasTestJSON, cls).skip_checks()"}],"source_content_type":"text/x-python","patch_set":9,"id":"11e6ec7e_1ff14ca6","line":28,"range":{"start_line":28,"start_character":0,"end_line":28,"end_character":0},"updated":"2021-01-14 22:36:44.000000000","message":"we need to set it for compute/admin/test_quotas_negative.py and compute/admin/test_quotas_negative.py also","commit_id":"2f3fd829ea5657333c5ab229023338fd41f6c2d1"}],"tempest/common/credentials_factory.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"c4a31a71efea5f9316fb585e16a873839109f350","unresolved":false,"context_lines":[{"line_number":121,"context_line":"    This helper returns the right implementation of CredentialProvider based on"},{"line_number":122,"context_line":"    config and on the value of force_tenant_isolation."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    :param force_default_quotas: if True, any quotas from the config will be"},{"line_number":125,"context_line":"                                 ignored"},{"line_number":126,"context_line":"    :param name: When provided, it makes it possible to associate credential"},{"line_number":127,"context_line":"                 artifacts back to the owner (test class)."},{"line_number":128,"context_line":"    :param network_resources: Dictionary of network resources to be allocated"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_e20e1ae4","line":125,"range":{"start_line":124,"start_character":0,"end_line":125,"end_character":40},"updated":"2019-05-06 19:01:36.000000000","message":"Please add this param on the last order for matching the arguments.","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"}],"tempest/config.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"121bfc2b86371cab6f9c94c8e409666f0eb2fce1","unresolved":false,"context_lines":[{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"compute_quotas_group \u003d cfg.OptGroup(name\u003d\u0027compute_quotas\u0027,"},{"line_number":1128,"context_line":"                                    title\u003d\"Dynamic User Compute Quotas\")"},{"line_number":1129,"context_line":"ComputeQuotaGroup \u003d ["},{"line_number":1130,"context_line":"    cfg.IntOpt(\u0027cores\u0027,"},{"line_number":1131,"context_line":"               help\u003d\"Number of instance cores (VCPUs) allowed per project.\"),"},{"line_number":1132,"context_line":"    cfg.IntOpt(\u0027fixed-ips\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_f274a79b","line":1129,"range":{"start_line":1129,"start_character":0,"end_line":1129,"end_character":17},"updated":"2019-05-07 03:44:33.000000000","message":"I wonder whether we should populate all quota items in the config file.\nAs below comments show, some quota items are not available in the new microverion, and maybe there are some quota items\nwill be added in the new microversion, so, it\u0027s troublesome to put all the quota items in the config file.\n\nCan we just set quota to -1 for all quota items for the dynamic user? So we only need one boolean config item.","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"608d011917199cfa08e3e026bb497987feb1488c","unresolved":false,"context_lines":[{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"compute_quotas_group \u003d cfg.OptGroup(name\u003d\u0027compute_quotas\u0027,"},{"line_number":1128,"context_line":"                                    title\u003d\"Dynamic User Compute Quotas\")"},{"line_number":1129,"context_line":"ComputeQuotaGroup \u003d ["},{"line_number":1130,"context_line":"    cfg.IntOpt(\u0027cores\u0027,"},{"line_number":1131,"context_line":"               help\u003d\"Number of instance cores (VCPUs) allowed per project.\"),"},{"line_number":1132,"context_line":"    cfg.IntOpt(\u0027fixed-ips\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_9f2bde2e","line":1129,"range":{"start_line":1129,"start_character":0,"end_line":1129,"end_character":17},"in_reply_to":"dfbec78f_eb134e0c","updated":"2019-05-08 06:07:38.000000000","message":"Yes, I think we can set set all quota items to -1 with one update_quota_set calling.\n\"Is a value of -1 always supported?\" -- I am not sure, maybe someone from nova side can answer this.","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"9c243cc5cdd9afcf6ad6dbe938ba859a697d0f3c","unresolved":false,"context_lines":[{"line_number":1126,"context_line":""},{"line_number":1127,"context_line":"compute_quotas_group \u003d cfg.OptGroup(name\u003d\u0027compute_quotas\u0027,"},{"line_number":1128,"context_line":"                                    title\u003d\"Dynamic User Compute Quotas\")"},{"line_number":1129,"context_line":"ComputeQuotaGroup \u003d ["},{"line_number":1130,"context_line":"    cfg.IntOpt(\u0027cores\u0027,"},{"line_number":1131,"context_line":"               help\u003d\"Number of instance cores (VCPUs) allowed per project.\"),"},{"line_number":1132,"context_line":"    cfg.IntOpt(\u0027fixed-ips\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_eb134e0c","line":1129,"range":{"start_line":1129,"start_character":0,"end_line":1129,"end_character":17},"in_reply_to":"dfbec78f_f274a79b","updated":"2019-05-07 09:56:09.000000000","message":"\u003e Can we just set quota to -1 for all quota items for the dynamic\n \u003e user? So we only need one boolean config item.\n\nThis could work. So, do you think we should query all available quotas via QuotasClient.show_quota_set, loop over them, and set them all to -1? Is a value of -1 always supported?","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"121bfc2b86371cab6f9c94c8e409666f0eb2fce1","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"ComputeQuotaGroup \u003d ["},{"line_number":1130,"context_line":"    cfg.IntOpt(\u0027cores\u0027,"},{"line_number":1131,"context_line":"               help\u003d\"Number of instance cores (VCPUs) allowed per project.\"),"},{"line_number":1132,"context_line":"    cfg.IntOpt(\u0027fixed-ips\u0027,"},{"line_number":1133,"context_line":"               help\u003d\"Number of fixed IP addresses allowed per project. This\""},{"line_number":1134,"context_line":"                    \"number must be equal to or greater than the number of\""},{"line_number":1135,"context_line":"                    \"allowed instances.\"),"},{"line_number":1136,"context_line":"    cfg.IntOpt(\u0027floating-ips\u0027,"},{"line_number":1137,"context_line":"               help\u003d\"Number of floating IP addresses allowed per project.\"),"},{"line_number":1138,"context_line":"    cfg.IntOpt(\u0027injected-file-content-bytes\u0027,"},{"line_number":1139,"context_line":"               help\u003d\"Number of content bytes allowed per injected file.\"),"},{"line_number":1140,"context_line":"    cfg.IntOpt(\u0027injected-file-path-bytes\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_7232f7f3","line":1137,"range":{"start_line":1132,"start_character":0,"end_line":1137,"end_character":76},"updated":"2019-05-07 03:44:33.000000000","message":"available until version 2.35","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"121bfc2b86371cab6f9c94c8e409666f0eb2fce1","unresolved":false,"context_lines":[{"line_number":1135,"context_line":"                    \"allowed instances.\"),"},{"line_number":1136,"context_line":"    cfg.IntOpt(\u0027floating-ips\u0027,"},{"line_number":1137,"context_line":"               help\u003d\"Number of floating IP addresses allowed per project.\"),"},{"line_number":1138,"context_line":"    cfg.IntOpt(\u0027injected-file-content-bytes\u0027,"},{"line_number":1139,"context_line":"               help\u003d\"Number of content bytes allowed per injected file.\"),"},{"line_number":1140,"context_line":"    cfg.IntOpt(\u0027injected-file-path-bytes\u0027,"},{"line_number":1141,"context_line":"               help\u003d\"Length of injected file path.\"),"},{"line_number":1142,"context_line":"    cfg.IntOpt(\u0027injected-files\u0027,"},{"line_number":1143,"context_line":"               help\u003d\"Number of injected files allowed per project.\"),"},{"line_number":1144,"context_line":"    cfg.IntOpt(\u0027instances\u0027,"},{"line_number":1145,"context_line":"               help\u003d\"Number of instances allowed per project.\"),"},{"line_number":1146,"context_line":"    cfg.IntOpt(\u0027key-pairs\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"dfbec78f_124dbb71","line":1143,"range":{"start_line":1138,"start_character":0,"end_line":1143,"end_character":69},"updated":"2019-05-07 03:44:33.000000000","message":"available until 2.56","commit_id":"d9a2b05305d05b3d55e950f70a622a7e7d0d877f"},{"author":{"_account_id":5689,"name":"Masayuki Igawa","email":"masayuki@igawa.io","username":"igawa"},"change_message_id":"74763e9316b672ad84d733582c7b6b11a88bc648","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":98,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":99,"context_line":"                help\u003d\"Compute quotas to assign to all users created by \""},{"line_number":100,"context_line":"                     \"tempest\", default\u003d{}),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_e3e7bee2","line":100,"updated":"2019-08-29 06:41:01.000000000","message":"+1","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2f698ea0a326599060117a0aac04148059709990","unresolved":false,"context_lines":[{"line_number":96,"context_line":"               help\u003d\"Admin domain name for authentication (Keystone V3). \""},{"line_number":97,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":98,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":99,"context_line":"                help\u003d\"Compute quotas to assign to all users created by \""},{"line_number":100,"context_line":"                     \"tempest\", default\u003d{}),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_72816f4d","line":100,"range":{"start_line":99,"start_character":0,"end_line":100,"end_character":44},"updated":"2019-08-28 06:16:39.000000000","message":"Will it be better to give an example here to tell users how to config this item?","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ebddca5e857a336bbb39758d7f57eb114bb488d7","unresolved":false,"context_lines":[{"line_number":97,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":98,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":99,"context_line":"                help\u003d\"Compute quotas to assign to all users created by \""},{"line_number":100,"context_line":"                     \"tempest\", default\u003d{}),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_4f5a8c2a","line":100,"in_reply_to":"7faddb67_e3e7bee2","updated":"2019-09-20 16:56:16.000000000","message":"Done","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"9b50bbce58fea949eeca462ebd32987b00ea0769","unresolved":false,"context_lines":[{"line_number":96,"context_line":"               help\u003d\"Admin domain name for authentication (Keystone V3). \""},{"line_number":97,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":98,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":99,"context_line":"                help\u003d\"Compute quotas to assign to all users created by \""},{"line_number":100,"context_line":"                     \"tempest e.g: cores:100,ram:61035\", default\u003d{}),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_98229051","line":100,"range":{"start_line":99,"start_character":22,"end_line":100,"end_character":54},"updated":"2019-11-01 09:36:47.000000000","message":"How about:\n\"Compute quotas to be assigned to dynamically created projects in Tempest, e.g. cores:100,ram:61035\"\nOr can someone with English as mother tongue give some suggestion?:)","commit_id":"2a45dedcc42f0f8adce17947d5644ef5e52e7dfc"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"b78f6afc1c193cd2ea31e98444e50d4e165a94a8","unresolved":false,"context_lines":[{"line_number":96,"context_line":"               help\u003d\"Admin domain name for authentication (Keystone V3). \""},{"line_number":97,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":98,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":99,"context_line":"                help\u003d\"Compute quotas to assign to all users created by \""},{"line_number":100,"context_line":"                     \"tempest e.g: cores:100,ram:61035\", default\u003d{}),"},{"line_number":101,"context_line":"]"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"identity_group \u003d cfg.OptGroup(name\u003d\u0027identity\u0027,"}],"source_content_type":"text/x-python","patch_set":7,"id":"3fa7e38b_7840f4a2","line":100,"range":{"start_line":99,"start_character":22,"end_line":100,"end_character":54},"in_reply_to":"3fa7e38b_98229051","updated":"2019-11-01 16:14:38.000000000","message":"Your suggestion looks good to me. Thanks.","commit_id":"2a45dedcc42f0f8adce17947d5644ef5e52e7dfc"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e415b262d2975492704aecf40b18939483540d9","unresolved":true,"context_lines":[{"line_number":93,"context_line":"               default\u003d\u0027Default\u0027,"},{"line_number":94,"context_line":"               help\u003d\"Admin domain name for authentication (Keystone V3). \""},{"line_number":95,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":96,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":97,"context_line":"                help\u003d\"Compute quotas to be assigned to dynamically created \""},{"line_number":98,"context_line":"                     \"projects in Tempest, e.g. cores:100,ram:61035\","},{"line_number":99,"context_line":"                default\u003d{}),"}],"source_content_type":"text/x-python","patch_set":9,"id":"8f68cfe5_80267d8c","line":96,"range":{"start_line":96,"start_character":0,"end_line":96,"end_character":33},"updated":"2021-01-14 22:36:44.000000000","message":"also this is compute related quota so let\u0027s add it under \u0027compute\u0027 section","commit_id":"2f3fd829ea5657333c5ab229023338fd41f6c2d1"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e415b262d2975492704aecf40b18939483540d9","unresolved":true,"context_lines":[{"line_number":95,"context_line":"                    \"The same domain applies to user and project\"),"},{"line_number":96,"context_line":"    cfg.DictOpt(\u0027compute_quotas\u0027,"},{"line_number":97,"context_line":"                help\u003d\"Compute quotas to be assigned to dynamically created \""},{"line_number":98,"context_line":"                     \"projects in Tempest, e.g. cores:100,ram:61035\","},{"line_number":99,"context_line":"                default\u003d{}),"},{"line_number":100,"context_line":"]"},{"line_number":101,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"70c3769c_77d52c2f","line":98,"range":{"start_line":98,"start_character":68,"end_line":98,"end_character":69},"updated":"2021-01-14 22:36:44.000000000","message":"please add some explanation here to describe the use case. something like:\n\n                help\u003d\"Compute quotas to be assigned to dynamically created \"\n                     \"projects in Tempest, e.g. cores:100,ram:61035 \",\n                     \"If your cloud quota is set to lower limits and Tempest \"\n                     \"need more resources to create than set quota then this \"\n                     \"config option can be used to override the quota for Tempest \"\n                     \"created test users. It will not change quota on actual cloud \"\n                     \"This works only for dynamic cred cases, support for pre-provisioned \"\n                     \"account is not yet supported\".","commit_id":"2f3fd829ea5657333c5ab229023338fd41f6c2d1"}],"tempest/lib/common/dynamic_creds.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3032d848abfb38ee31f841fd07eea728cbcc4a10","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        quotas \u003d {k: v for k, v in self.compute_quotas.items() if v}"},{"line_number":204,"context_line":"        if quotas:"},{"line_number":205,"context_line":"            # FIXME: setting user_id does not seem to work"},{"line_number":206,"context_line":"            self.compute_quotas_client.update_quota_set("},{"line_number":207,"context_line":"                tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"},{"line_number":208,"context_line":"            )"},{"line_number":209,"context_line":"        # Add roles specified in config file"},{"line_number":210,"context_line":"        for conf_role in self.extra_roles:"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_d16a3d7f","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":63},"updated":"2019-05-15 01:36:38.000000000","message":"What if there are some unsupported quota items configured in tempet.conf?","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"a2a9029808cae413b7edbf7b1810860d63451bbc","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        quotas \u003d {k: v for k, v in self.compute_quotas.items() if v}"},{"line_number":204,"context_line":"        if quotas:"},{"line_number":205,"context_line":"            # FIXME: setting user_id does not seem to work"},{"line_number":206,"context_line":"            self.compute_quotas_client.update_quota_set("},{"line_number":207,"context_line":"                tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"},{"line_number":208,"context_line":"            )"},{"line_number":209,"context_line":"        # Add roles specified in config file"},{"line_number":210,"context_line":"        for conf_role in self.extra_roles:"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_98dd4243","line":207,"range":{"start_line":206,"start_character":0,"end_line":207,"end_character":63},"in_reply_to":"dfbec78f_d16a3d7f","updated":"2019-08-27 10:59:48.000000000","message":"Wasn\u0027t sure what to do in this case, so I\u0027ve added a log message as we don\u0027t want to maintain a list of supported options ourselves. Is there a better way?","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"19c8474709094180c9d3c73597f500c60225abbc","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        # Set compute quotas if requested"},{"line_number":203,"context_line":"        quotas \u003d {k: v for k, v in self.compute_quotas.items() if v}"},{"line_number":204,"context_line":"        if quotas:"},{"line_number":205,"context_line":"            # NOTE(wszumski): compute_quotas_client doesn\u0027t support user_id"},{"line_number":206,"context_line":"            # at this moment in time."},{"line_number":207,"context_line":"            try:"},{"line_number":208,"context_line":"                self.compute_quotas_client.update_quota_set("},{"line_number":209,"context_line":"                    tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_72da5ae9","line":206,"range":{"start_line":205,"start_character":12,"end_line":206,"end_character":37},"updated":"2019-09-04 19:37:24.000000000","message":"Is this really the case? I see user_id as a supported request parameter here: https://docs.openstack.org/api-ref/compute/?expanded\u003dupdate-quotas-detail#update-quotas","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ebddca5e857a336bbb39758d7f57eb114bb488d7","unresolved":false,"context_lines":[{"line_number":202,"context_line":"        # Set compute quotas if requested"},{"line_number":203,"context_line":"        quotas \u003d {k: v for k, v in self.compute_quotas.items() if v}"},{"line_number":204,"context_line":"        if quotas:"},{"line_number":205,"context_line":"            # NOTE(wszumski): compute_quotas_client doesn\u0027t support user_id"},{"line_number":206,"context_line":"            # at this moment in time."},{"line_number":207,"context_line":"            try:"},{"line_number":208,"context_line":"                self.compute_quotas_client.update_quota_set("},{"line_number":209,"context_line":"                    tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_6fff4801","line":206,"range":{"start_line":205,"start_character":12,"end_line":206,"end_character":37},"in_reply_to":"7faddb67_72da5ae9","updated":"2019-09-20 16:56:16.000000000","message":"Doh! My fault I wasn\u0027t setting the project quota first and this constrains the users quotas. I can\u0027t think of a reason why you would set quotas for individual users rather than per project, so I propose we only quotas for the project only.","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"2f698ea0a326599060117a0aac04148059709990","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                self.compute_quotas_client.update_quota_set("},{"line_number":209,"context_line":"                    tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"},{"line_number":210,"context_line":"                )"},{"line_number":211,"context_line":"            except lib_exc.InvalidHttpSuccessCode as e:"},{"line_number":212,"context_line":"                LOG.error(\"Error setting compute quotas. Please check that \""},{"line_number":213,"context_line":"                          \"CONF.auth.compute_quotas does not contain any \""},{"line_number":214,"context_line":"                          \"unsupported options.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_325457fe","line":211,"range":{"start_line":211,"start_character":27,"end_line":211,"end_character":49},"updated":"2019-08-28 06:16:39.000000000","message":"Will unsupported quota item raise InvalidHttpSuccessCode?","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"19c8474709094180c9d3c73597f500c60225abbc","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                self.compute_quotas_client.update_quota_set("},{"line_number":209,"context_line":"                    tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"},{"line_number":210,"context_line":"                )"},{"line_number":211,"context_line":"            except lib_exc.InvalidHttpSuccessCode as e:"},{"line_number":212,"context_line":"                LOG.error(\"Error setting compute quotas. Please check that \""},{"line_number":213,"context_line":"                          \"CONF.auth.compute_quotas does not contain any \""},{"line_number":214,"context_line":"                          \"unsupported options.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"7faddb67_d2e8ee7b","line":211,"range":{"start_line":211,"start_character":27,"end_line":211,"end_character":49},"in_reply_to":"7faddb67_325457fe","updated":"2019-09-04 19:37:24.000000000","message":"I would expect a https://github.com/openstack/tempest-lib/blob/023426894a4f72d906ed6f79c55ed7152a732b44/tempest_lib/exceptions.py#L90 myself.\n\nBut perhaps catching a generic Exception here and re-raising it is fine as we should probably always log this error.","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"ebddca5e857a336bbb39758d7f57eb114bb488d7","unresolved":false,"context_lines":[{"line_number":208,"context_line":"                self.compute_quotas_client.update_quota_set("},{"line_number":209,"context_line":"                    tenant_id\u003dproject[\"id\"], user_id\u003dNone, **quotas"},{"line_number":210,"context_line":"                )"},{"line_number":211,"context_line":"            except lib_exc.InvalidHttpSuccessCode as e:"},{"line_number":212,"context_line":"                LOG.error(\"Error setting compute quotas. Please check that \""},{"line_number":213,"context_line":"                          \"CONF.auth.compute_quotas does not contain any \""},{"line_number":214,"context_line":"                          \"unsupported options.\")"}],"source_content_type":"text/x-python","patch_set":6,"id":"3fa7e38b_af1c606a","line":211,"range":{"start_line":211,"start_character":27,"end_line":211,"end_character":49},"in_reply_to":"7faddb67_d2e8ee7b","updated":"2019-09-20 16:56:16.000000000","message":"Thanks - you guys are correct again:\n\n                      \"details\": \"Traceback (most recent call last):\\n  File \\\"tempest/test.py\\\", line 171, in setUpClass\\n    cls.tearDownClass()\\n  File \\\"tempest/test.py\\\", line 158, in setUpClass\\n    cls.setup_credentials()\\n  File \\\"tempest/api/compute/base.py\\\", line 62, in setup_credentials\\n    super(BaseV2ComputeTest, cls).setup_credentials()\\n  File \\\"tempest/test.py\\\", line 377, in setup_credentials\\n    credential_type\u003dcredentials_type)\\n  File \\\"tempest/test.py\\\", line 683, in get_client_manager\\n    creds \u003d getattr(cred_provider, credentials_method)()\\n  File \\\"tempest/lib/common/dynamic_creds.py\\\", line 374, in get_primary_creds\\n    return self.get_credentials(\u0027primary\u0027)\\n  File \\\"tempest/lib/common/dynamic_creds.py\\\", line 357, in get_credentials\\n    credentials \u003d self._create_creds(admin\u003dis_admin)\\n  File \\\"tempest/lib/common/dynamic_creds.py\\\", line 210, in _create_creds\\n    tenant_id\u003dproject[\\\"id\\\"], user_id\u003dNone, **quotas\\n  File \\\"tempest/lib/services/compute/quotas_client.py\\\", line 87, in update_quota_set\\n    post_body)\\n  File \\\"tempest/lib/common/rest_client.py\\\", line 347, in put\\n    return self.request(\u0027PUT\u0027, url, extra_headers, headers, body, chunked)\\n  File \\\"tempest/lib/services/compute/base_compute_client.py\\\", line 48, in request\\n    method, url, extra_headers, headers, body, chunked)\\n  File \\\"tempest/lib/common/rest_client.py\\\", line 679, in request\\n    self._error_checker(resp, resp_body)\\n  File \\\"tempest/lib/common/rest_client.py\\\", line 790, in _error_checker\\n    raise exceptions.BadRequest(resp_body, resp\u003dresp)\\ntempest.lib.exceptions.BadRequest: Bad request\\nDetails: {u\u0027message\u0027: u\\\"Invalid input for field/attribute quota_set. Value: {u\u0027cores\u0027: u\u0027100\u0027, u\u0027ram\u0027: u\u002761035\u0027, u\u0027made_up\u0027: u\u0027123\u0027}. Additional properties are not allowed (u\u0027made_up\u0027 was unexpected)\\\", u\u0027code\u0027: 400}\"","commit_id":"36aeb316d86f9addcbdb8878f5570592d6ac5fba"}],"tempest/test.py":[{"author":{"_account_id":20190,"name":"zhufl","email":"zhu.fanglei@zte.com.cn","username":"zhufl"},"change_message_id":"3032d848abfb38ee31f841fd07eea728cbcc4a10","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                not cls._creds_provider.name \u003d\u003d cls.__name__):"},{"line_number":639,"context_line":"            force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027,"},{"line_number":640,"context_line":"                                             False)"},{"line_number":641,"context_line":"            force_default_quotas \u003d getattr(cls, \u0027force_default_quotas\u0027,"},{"line_number":642,"context_line":"                                           False)"},{"line_number":643,"context_line":"            cls._creds_provider \u003d credentials.get_credentials_provider("},{"line_number":644,"context_line":"                name\u003dcls.__name__, network_resources\u003dcls._network_resources,"},{"line_number":645,"context_line":"                force_tenant_isolation\u003dforce_tenant_isolation,"}],"source_content_type":"text/x-python","patch_set":5,"id":"dfbec78f_71435114","line":642,"range":{"start_line":641,"start_character":0,"end_line":642,"end_character":49},"updated":"2019-05-15 01:36:38.000000000","message":"Can be put in one line","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":28048,"name":"Will Szumski","email":"will@stackhpc.com","username":"jovial"},"change_message_id":"a2a9029808cae413b7edbf7b1810860d63451bbc","unresolved":false,"context_lines":[{"line_number":638,"context_line":"                not cls._creds_provider.name \u003d\u003d cls.__name__):"},{"line_number":639,"context_line":"            force_tenant_isolation \u003d getattr(cls, \u0027force_tenant_isolation\u0027,"},{"line_number":640,"context_line":"                                             False)"},{"line_number":641,"context_line":"            force_default_quotas \u003d getattr(cls, \u0027force_default_quotas\u0027,"},{"line_number":642,"context_line":"                                           False)"},{"line_number":643,"context_line":"            cls._creds_provider \u003d credentials.get_credentials_provider("},{"line_number":644,"context_line":"                name\u003dcls.__name__, network_resources\u003dcls._network_resources,"},{"line_number":645,"context_line":"                force_tenant_isolation\u003dforce_tenant_isolation,"}],"source_content_type":"text/x-python","patch_set":5,"id":"7faddb67_d805fac2","line":642,"range":{"start_line":641,"start_character":0,"end_line":642,"end_character":49},"in_reply_to":"dfbec78f_71435114","updated":"2019-08-27 10:59:48.000000000","message":"Done","commit_id":"8d7da35947a350104bb546bc518d3d9ae1a76a7d"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"7e415b262d2975492704aecf40b18939483540d9","unresolved":true,"context_lines":[{"line_number":659,"context_line":"            cls._creds_provider \u003d credentials.get_credentials_provider("},{"line_number":660,"context_line":"                name\u003dcls.__name__, network_resources\u003dcls._network_resources,"},{"line_number":661,"context_line":"                force_tenant_isolation\u003dforce_tenant_isolation,"},{"line_number":662,"context_line":"                force_default_quotas\u003dforce_default_quotas)"},{"line_number":663,"context_line":"        return cls._creds_provider"},{"line_number":664,"context_line":""},{"line_number":665,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":9,"id":"7a26d5ff_0b105bb7","line":662,"range":{"start_line":662,"start_character":57,"end_line":662,"end_character":58},"updated":"2021-01-14 22:36:44.000000000","message":"we need to add test for this to show what is behavior for \n\n1. test set force_default_quotas\u003dTrue\n2. test set force_default_quotas\u003dFalse\n3. test does not set this force_default_quotas","commit_id":"2f3fd829ea5657333c5ab229023338fd41f6c2d1"}]}
