)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"8f430ee4a043e1c8c02e35d717b13d3ba3655838","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2ea56586_1d930c14","updated":"2024-02-11 18:55:22.000000000","message":"recheck tacker-functional-devstack-multinode-sol-encrypt-cred-local  failure","commit_id":"2c8ef7ee02b0dd2b67ba83f078975932e718767b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"df8d0de77ee6150e1a2302bb4809fa0b1673f2c6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"fd4db475_f4efd446","updated":"2024-02-11 22:36:12.000000000","message":"recheck tacker-functional-devstack-multinode-sol-kubernetes failure","commit_id":"2c8ef7ee02b0dd2b67ba83f078975932e718767b"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"c99b640fa3068f0f49004a5d3f0c3f56d0fd1e3f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"344ab3d8_feaf235a","updated":"2024-02-12 03:38:17.000000000","message":"recheck unrelated failure","commit_id":"2c8ef7ee02b0dd2b67ba83f078975932e718767b"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"48dd6cfa2dc5172db2aded1fb4959c1156e919d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"0fbe7442_d2ed2b35","updated":"2024-03-06 09:58:23.000000000","message":"Sorry I removed CR+2, please kindly find my comments.","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"f7a88ef39285c565be39c57e93f53055f37851b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"03098dc8_ba63e308","updated":"2024-03-06 09:34:55.000000000","message":"Thanks for your patch, LGTM.","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"145d0913c6cab5b28dfbd9d56451d4a04e82210a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8c2379ae_b397ae79","updated":"2024-03-07 04:49:09.000000000","message":"Thanks for your rework, please kindly find additional comments.","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"0202ee783550c8f36551fe208c4b6f7fdf0b202c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"4621f1c2_b38e6b19","updated":"2024-03-12 03:09:38.000000000","message":"recheck test_multi_tenant_k8s_default test timeout","commit_id":"eec7254255adc6d48a742405d2d646c087eda945"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"816cd003013790a6cf8daa0cb9fccc484d90e344","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"ef3c1d3d_f963f872","updated":"2024-03-13 04:37:34.000000000","message":"Thanks for your update, LGTM! Let\u0027s wait Zuul CI.","commit_id":"71970bc665da67b2c4a9e8175b868130f92c310d"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"268429d6a6fc29c5ac87361944646540e0c2efa6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"338465a3_775ee056","updated":"2024-03-13 05:37:25.000000000","message":"recheck unrelated failure","commit_id":"71970bc665da67b2c4a9e8175b868130f92c310d"}],"tacker/tests/unit/policies/test_vnf_package.py":[{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"48dd6cfa2dc5172db2aded1fb4959c1156e919d4","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"24d544eb_764ef69e","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"updated":"2024-03-06 09:58:23.000000000","message":"Just a question,\nWhy don\u0027t you use `common_policy_check()` like other tests?","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"278a830374188f665e775709f4ae97c512424713","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"54b489b6_f5b81499","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"24d544eb_764ef69e","updated":"2024-03-06 23:24:21.000000000","message":"This and the below patch API is little different than other. In this API, vnf_package.onboarding_state is being modified to \u0027UPLOADING\u0027 [1] and if we use  common_policy_check() then first context API call pass but any further next context API call fail. The next context API call will fail because it has the modified vnf_package whose onboarding_state is \u0027UPLOADING\u0027[2]\n\nTo solve this issue, I had to use context in for loop and resetting the vnf_package_obj mock at L211 before API controller method is called. \n\n[1] https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L514\n\n[2] https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L511\n\nI think I should add a note about this here so that it will be easy for other members to understand","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"145d0913c6cab5b28dfbd9d56451d4a04e82210a","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"56cc1395_93579253","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"54b489b6_f5b81499","updated":"2024-03-07 04:49:09.000000000","message":"Thanks for your adding note, I got it.\n\nBut I have additional question,\nI feel that `test_upload_vnf_package_content_package` might have the same problem, do you know why happened only in this test ?","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b306b2051499d4b98f57c838726cb8dfb27d5383","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"b997dce7_403694ee","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"56cc1395_93579253","updated":"2024-03-08 19:04:40.000000000","message":"yeah, that is what i was wondering when writing the tests. but upload_vnf_package_content API does not raise the error instead return the detail response if vnf_package.onboarding_state is not CREATED\n\n- https://github.com/openstack/tacker/blob/0aa4c760f2f933589c850ac64431e20a1c48c861/tacker/api/vnfpkgm/v1/controller.py#L424\n\nthat is why test_upload_vnf_package_content_package test work with common_policy_check()","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"232445140cc4d7fdb23ed0e6dd43d29d6d323ab1","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"bcda3dc5_62ea6265","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"a39727e4_4aea2905","updated":"2024-03-12 06:44:28.000000000","message":"Thanks for your update,\nAlso, I understand that it turns out that the different by implementations of the following onboarding_state branch in `upload_content` and `upload_from_uri` have different ways of testing.\n* upload_content: return probrem details [1]\n* upload_from_uri: rise exception (webob.exc.HTTPConflict) [2]\n\n[1] https://github.com/openstack/tacker/blob/stable/2023.2/tacker/api/vnfpkgm/v1/controller.py#L424-L426\n[2] https://github.com/openstack/tacker/blob/stable/2023.2/tacker/api/vnfpkgm/v1/controller.py#L511-L512","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"530acdbb0f4489571134c3bf6e23a397300b5c7b","unresolved":true,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"cfc37f14_b684279e","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"b997dce7_403694ee","updated":"2024-03-11 08:47:54.000000000","message":"If nothing set `onboarding_state` to `fakes.return_vnfpkg_obj()`, `fake_vnf_package`[1] seems to return onboarding_state as \"ONBOARDED.\"\nIsn\u0027t the `test_upload_vnf_package_content_package` method need to implement `onboarding_state` to `CREATED` just like this method?\n\n[1] https://opendev.org/openstack/tacker/src/branch/stable/2023.2/tacker/tests/unit/vnfpkgm/fakes.py#L212-L226\n\n```\n            vnf_package_obj \u003d fakes.return_vnfpkg_obj(\n                vnf_package_updates\u003d{\n                    \u0027tenant_id\u0027: self.project_id,\n                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})\n```","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a7d1ce9f4a8dd6d47f5a560e2b489b94631d5941","unresolved":false,"context_lines":[{"line_number":191,"context_line":"            mock_url_open):"},{"line_number":192,"context_line":"        rule_name \u003d policies.VNFPKGM % \u0027upload_from_uri\u0027"},{"line_number":193,"context_line":"        body \u003d {\"addressInformation\": \"http://localhost/test_data.zip\"}"},{"line_number":194,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":195,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":196,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":197,"context_line":"                % constants.UUID)"},{"line_number":198,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":199,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":200,"context_line":"                vnf_package_updates\u003d{"},{"line_number":201,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":202,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":203,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":204,"context_line":"            self.controller.upload_vnf_package_from_uri("},{"line_number":205,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":206,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":207,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":208,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":209,"context_line":"                % constants.UUID)"},{"line_number":210,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":211,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":212,"context_line":"                vnf_package_updates\u003d{"},{"line_number":213,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":214,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":215,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":216,"context_line":"            exc \u003d self.assertRaises("},{"line_number":217,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":218,"context_line":"                self.controller.upload_vnf_package_from_uri,"},{"line_number":219,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":220,"context_line":"            self.assertEqual("},{"line_number":221,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":222,"context_line":"                exc.format_message())"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"a39727e4_4aea2905","line":221,"range":{"start_line":194,"start_character":0,"end_line":221,"end_character":71},"in_reply_to":"cfc37f14_b684279e","updated":"2024-03-11 19:41:57.000000000","message":"sure, that make sense. As I mentioned earlier that it does not impact on the test motive but I agree to keep it \u0027CREATED\u0027 at least we will be consistent across tests.","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"48dd6cfa2dc5172db2aded1fb4959c1156e919d4","unresolved":true,"context_lines":[{"line_number":232,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":233,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":234,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":235,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":236,"context_line":"                % constants.UUID)"},{"line_number":237,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":238,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("}],"source_content_type":"text/x-python","patch_set":4,"id":"bac63c17_0dd3c705","line":235,"range":{"start_line":235,"start_character":34,"end_line":235,"end_character":65},"updated":"2024-03-06 09:58:23.000000000","message":"Test method name is `test_patch_vnf_package`, but this uri is for `upload_from_uri`.\nCould you confirm it?","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"278a830374188f665e775709f4ae97c512424713","unresolved":false,"context_lines":[{"line_number":232,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":233,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":234,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":235,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":236,"context_line":"                % constants.UUID)"},{"line_number":237,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":238,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("}],"source_content_type":"text/x-python","patch_set":4,"id":"ee54c4c2_845f0168","line":235,"range":{"start_line":235,"start_character":34,"end_line":235,"end_character":65},"in_reply_to":"bac63c17_0dd3c705","updated":"2024-03-06 23:24:21.000000000","message":"good catch, It should be /vnf_packages/%s/ . done","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"48dd6cfa2dc5172db2aded1fb4959c1156e919d4","unresolved":true,"context_lines":[{"line_number":244,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":245,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":246,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":247,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":248,"context_line":"                % constants.UUID)"},{"line_number":249,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":250,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("}],"source_content_type":"text/x-python","patch_set":4,"id":"ecf32650_374e1f46","line":247,"range":{"start_line":247,"start_character":34,"end_line":247,"end_character":65},"updated":"2024-03-06 09:58:23.000000000","message":"Test method name is `test_patch_vnf_package`, but this uri is for `upload_from_uri`.\nCould you confirm it?","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"278a830374188f665e775709f4ae97c512424713","unresolved":false,"context_lines":[{"line_number":244,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":245,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":246,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":247,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":248,"context_line":"                % constants.UUID)"},{"line_number":249,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":250,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("}],"source_content_type":"text/x-python","patch_set":4,"id":"0eb8d1f8_4c3654eb","line":247,"range":{"start_line":247,"start_character":34,"end_line":247,"end_character":65},"in_reply_to":"ecf32650_374e1f46","updated":"2024-03-06 23:24:21.000000000","message":"ditto, fixed it. thanks","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"48dd6cfa2dc5172db2aded1fb4959c1156e919d4","unresolved":true,"context_lines":[{"line_number":230,"context_line":"        body \u003d {\"operationalState\": \"ENABLED\","},{"line_number":231,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":232,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":233,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":234,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":235,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":236,"context_line":"                % constants.UUID)"},{"line_number":237,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":238,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":239,"context_line":"                vnf_package_updates\u003d{"},{"line_number":240,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":241,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":242,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":243,"context_line":"            self.controller.patch("},{"line_number":244,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":245,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":246,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":247,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":248,"context_line":"                % constants.UUID)"},{"line_number":249,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":250,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":251,"context_line":"                vnf_package_updates\u003d{"},{"line_number":252,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":253,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":254,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":255,"context_line":"            exc \u003d self.assertRaises("},{"line_number":256,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":257,"context_line":"                self.controller.patch,"},{"line_number":258,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":259,"context_line":"            self.assertEqual("},{"line_number":260,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":261,"context_line":"                exc.format_message())"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @mock.patch.object(VNFPackageRPCAPI, \"get_vnf_package_vnfd\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"d97990fa_569c5e0a","line":260,"range":{"start_line":233,"start_character":0,"end_line":260,"end_character":71},"updated":"2024-03-06 09:58:23.000000000","message":"Just a question,\nWhy don\u0027t you use `common_policy_check` like other tests?","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"145d0913c6cab5b28dfbd9d56451d4a04e82210a","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        body \u003d {\"operationalState\": \"ENABLED\","},{"line_number":231,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":232,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":233,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":234,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":235,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":236,"context_line":"                % constants.UUID)"},{"line_number":237,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":238,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":239,"context_line":"                vnf_package_updates\u003d{"},{"line_number":240,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":241,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":242,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":243,"context_line":"            self.controller.patch("},{"line_number":244,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":245,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":246,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":247,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":248,"context_line":"                % constants.UUID)"},{"line_number":249,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":250,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":251,"context_line":"                vnf_package_updates\u003d{"},{"line_number":252,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":253,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":254,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":255,"context_line":"            exc \u003d self.assertRaises("},{"line_number":256,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":257,"context_line":"                self.controller.patch,"},{"line_number":258,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":259,"context_line":"            self.assertEqual("},{"line_number":260,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":261,"context_line":"                exc.format_message())"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @mock.patch.object(VNFPackageRPCAPI, \"get_vnf_package_vnfd\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"96974f70_49389550","line":260,"range":{"start_line":233,"start_character":0,"end_line":260,"end_character":71},"in_reply_to":"730484b2_1bf53077","updated":"2024-03-07 04:49:09.000000000","message":"Ack, but I have added comment to the description you added.","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"278a830374188f665e775709f4ae97c512424713","unresolved":false,"context_lines":[{"line_number":230,"context_line":"        body \u003d {\"operationalState\": \"ENABLED\","},{"line_number":231,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":232,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":233,"context_line":"        for cxtx in self.project_member_authorized_contexts:"},{"line_number":234,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":235,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":236,"context_line":"                % constants.UUID)"},{"line_number":237,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":238,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":239,"context_line":"                vnf_package_updates\u003d{"},{"line_number":240,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":241,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":242,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":243,"context_line":"            self.controller.patch("},{"line_number":244,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":245,"context_line":"        for cxtx in self.project_member_unauthorized_contexts:"},{"line_number":246,"context_line":"            req \u003d fake_request.HTTPRequest.blank("},{"line_number":247,"context_line":"                \u0027/vnf_packages/%s/package_content/upload_from_uri\u0027"},{"line_number":248,"context_line":"                % constants.UUID)"},{"line_number":249,"context_line":"            req.environ[\u0027tacker.context\u0027] \u003d cxtx"},{"line_number":250,"context_line":"            vnf_package_obj \u003d fakes.return_vnfpkg_obj("},{"line_number":251,"context_line":"                vnf_package_updates\u003d{"},{"line_number":252,"context_line":"                    \u0027tenant_id\u0027: self.project_id,"},{"line_number":253,"context_line":"                    \u0027onboarding_state\u0027: \u0027CREATED\u0027})"},{"line_number":254,"context_line":"            mock_vnf_by_id.return_value \u003d vnf_package_obj"},{"line_number":255,"context_line":"            exc \u003d self.assertRaises("},{"line_number":256,"context_line":"                exceptions.PolicyNotAuthorized,"},{"line_number":257,"context_line":"                self.controller.patch,"},{"line_number":258,"context_line":"                req, constants.UUID, body\u003dbody)"},{"line_number":259,"context_line":"            self.assertEqual("},{"line_number":260,"context_line":"                \"Policy doesn\u0027t allow %s to be performed.\" % rule_name,"},{"line_number":261,"context_line":"                exc.format_message())"},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"    @mock.patch.object(VNFPackageRPCAPI, \"get_vnf_package_vnfd\")"}],"source_content_type":"text/x-python","patch_set":4,"id":"730484b2_1bf53077","line":260,"range":{"start_line":233,"start_character":0,"end_line":260,"end_character":71},"in_reply_to":"d97990fa_569c5e0a","updated":"2024-03-06 23:24:21.000000000","message":"ditto","commit_id":"403ccfa311b95bac7234f7d4671d6e0517da4bc9"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"145d0913c6cab5b28dfbd9d56451d4a04e82210a","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"795dab52_70f7012d","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"updated":"2024-03-07 04:49:09.000000000","message":"In this test, the `operationalState` is changed, but the `onboarding_state` is not.\nCould you check the description again?\n\nIn my opinion, for this test condition:\n* onboardingState\u003dCREATED\nSo will the code below return 409 because there is no update to userDefinedData?\n\nhttps://opendev.org/openstack/tacker/src/branch/stable/2023.2/tacker/api/vnfpkgm/v1/controller.py#L570-L575","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"05c5755220cf680ae25c2599631916d0ecf202ac","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"4e4b153e_3e79c1a3","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"in_reply_to":"4afab75f_4251d468","updated":"2024-03-13 02:02:51.000000000","message":"I see, you are right. I saw now that it only update onboarding_state if that is \u0027ONBOARDED\u0027. as we are passing operationalState as \u0027ENABLED\u0027, it will pass as you mentioned. I will update test as you suggested, thanks for testing it.\n\n- https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L544\n- https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L555","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"b306b2051499d4b98f57c838726cb8dfb27d5383","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"a0d0305d_fa3bdfde","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"in_reply_to":"795dab52_70f7012d","updated":"2024-03-08 19:04:40.000000000","message":"actually before userDefinedData it does assert for onboarding_state. operationalState and onboarding_state both are same, operationalState is request parameter[1] but it update the vnf_package.onboarding_state value only[2]. When requested operationalState and vnf_package.onboarding_state is same then it assert[3] that is why we have to reset the vnf_package.onboarding_state for every context call.\n\n[1] https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L541\n\n[2] https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L555\n\n[3] https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L551","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":8556,"name":"Ghanshyam Maan","display_name":"Ghanshyam Maan","email":"gmaan.os14@gmail.com","username":"ghanshyam"},"change_message_id":"a7d1ce9f4a8dd6d47f5a560e2b489b94631d5941","unresolved":false,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"9d694ff3_1e379ad6","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"in_reply_to":"950aac1e_98b43aba","updated":"2024-03-11 19:41:57.000000000","message":"It does allow to change onboarding_state, but inconsistency in this API is the patch parameter is \u0027operationalState\u0027 in request and vnf package field is \u0027operational_state\u0027\n\n- https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L541-L555\n\nBut I agree with you on passing the userData also which will cover all scenario. I am doing the same in L241. please let me know if anything else I am missing.","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"232445140cc4d7fdb23ed0e6dd43d29d6d323ab1","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"4afab75f_4251d468","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"in_reply_to":"9d694ff3_1e379ad6","updated":"2024-03-12 06:44:28.000000000","message":"\u003e It does allow to change onboarding_state\n\n**`onboarding_state`** cannot be changed in patch operation.\nI think the code is just looking at `onboarding_state` as a condition.\n* https://github.com/openstack/tacker/blob/d19541340a3e722ceb7d0606d31a59c8cdfa35b8/tacker/api/vnfpkgm/v1/controller.py#L541-L555\n\nI made the following changes and the test was successful using `common_policy_check()`. Is there any problem?\n```\n    @mock.patch.object(vnf_package.VnfPackage, \"get_by_id\")\n    @mock.patch.object(vnf_package.VnfPackage, \"save\")\n    def test_patch_vnf_package(\n            self, mock_vnf_pack_save,\n            mock_vnf_by_id):\n        req \u003d fake_request.HTTPRequest.blank(\n            \u0027/vnf_packages/%s\u0027 % constants.UUID)\n        vnf_package_obj \u003d fakes.return_vnfpkg_obj(\n            vnf_package_updates\u003d{\n                \u0027tenant_id\u0027: self.project_id,\n                \u0027onboarding_state\u0027: \u0027CREATED\u0027,\n                \"user_defined_data\": {\"testKey1\": \"val01\"}})\n        mock_vnf_by_id.return_value \u003d vnf_package_obj\n        body \u003d {\"operationalState\": \"ENABLED\",\n                \"userDefinedData\": {\"testKey1\": \"val01\",\n                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}\n        rule_name \u003d policies.VNFPKGM % \u0027patch\u0027\n        self.common_policy_check(self.project_member_authorized_contexts,\n                                 self.project_member_unauthorized_contexts,\n                                 rule_name,\n                                 self.controller.patch,\n                                 req, constants.UUID, body\u003dbody)\n```","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"},{"author":{"_account_id":31857,"name":"Ayumu Ueha","email":"ueha.ayumu@fujitsu.com","username":"ueha"},"change_message_id":"530acdbb0f4489571134c3bf6e23a397300b5c7b","unresolved":true,"context_lines":[{"line_number":241,"context_line":"                \"userDefinedData\": {\"testKey1\": \"val01\","},{"line_number":242,"context_line":"                                    \"testKey2\": \"val02\", \"testkey3\": \"val03\"}}"},{"line_number":243,"context_line":"        # NOTE(gmann): This API is little different to test from other APIs."},{"line_number":244,"context_line":"        # In the patch vnf package API, vnf package object\u0027s onboarding_state"},{"line_number":245,"context_line":"        # is being modified to the one requested and if we use"},{"line_number":246,"context_line":"        # common_policy_check() then first context API call will pass but any"},{"line_number":247,"context_line":"        # further context API call will fail. The next context API call will"}],"source_content_type":"text/x-python","patch_set":5,"id":"950aac1e_98b43aba","line":244,"range":{"start_line":244,"start_character":61,"end_line":244,"end_character":77},"in_reply_to":"a0d0305d_fa3bdfde","updated":"2024-03-11 08:47:54.000000000","message":"\u003e but it update the vnf_package.onboarding_state value only[2].\n\nIn my understanding, patch operation does not update the **`onboarding_state`** and not be allowed to update it [4] (not appear in patch parameter).\nSo, I just suggest that how about this test change to update userData?\nThen I don\u0027t think it\u0027s affected by either `onboarding_state` or `operational_state`.\n\n[4] https://docs.openstack.org/api-ref/nfv-orchestration/v1/vnfpkgm.html#update-vnf-package-information","commit_id":"c539e979e936eaba8d69fbcfc7601f5707c0a751"}]}
