)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"ac6fde6ca49232cf625cd3d286053d11cd39b309","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a079b233_d1ee2fe9","updated":"2024-07-19 15:20:21.000000000","message":"Looking good so far! When testing using solely the flavor plugin, I\u0027m not seeing any issues.\n\nThe handling around using this with the current instance plugin still needs some work though, I\u0027ve left comments inline :)","commit_id":"ece33079e01e04513cc19e7732048846b9732451"},{"author":{"_account_id":15197,"name":"Pierre Riteau","email":"pierre@stackhpc.com","username":"priteau","status":"StackHPC"},"change_message_id":"5f14e44ca2eac6810612e5842dfba6d9b39e4bfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":17,"id":"94eb7d66_596ed1e3","updated":"2024-08-28 22:34:10.000000000","message":"recheck: ipv6 job failed","commit_id":"8f2fab33bf76f7fe39805b8bad90af0b3c5f5e79"}],"blazar/plugins/flavor/flavor_plugin.py":[{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"515a1b637e0113f6b4fba38851e7c85e67b899b2","unresolved":true,"context_lines":[{"line_number":362,"context_line":"            # [scheduler]enable_isolated_aggregate_filtering\u003dTrue"},{"line_number":363,"context_line":"            # such that only flavors that request this trait can be"},{"line_number":364,"context_line":"            # used within this aggregate"},{"line_number":365,"context_line":"            \u0027trait:CUSTOM_BLAZAR_RESERVATION\u0027: \u0027required\u0027,"},{"line_number":366,"context_line":"        }"},{"line_number":367,"context_line":"        agg \u003d pool.create(name\u003dreservation_id, metadata\u003dpool_metadata)"},{"line_number":368,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"cbb25c02_34270ce0","line":365,"updated":"2024-06-05 09:43:01.000000000","message":"We don\u0027t automate adding in this trait, lets remove this complication for now, and add back in as a follow up patch.","commit_id":"c8151294a4e8a6939d655c3b1819c38ddbf0603a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"0e676d42505e0dd03a7962ade4f3ec90909834fe","unresolved":true,"context_lines":[{"line_number":370,"context_line":"        # then inventory as reserved to start with?"},{"line_number":371,"context_line":"        self._placement_client.create_reservation_class(reservation_id)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        return reserved_flavor[\"id\"], agg[\"id\"]"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def _create_flavor(self, instance_reservation):"},{"line_number":376,"context_line":"        source_flavor \u003d self._get_cached_flavor(instance_reservation)"}],"source_content_type":"text/x-python","patch_set":8,"id":"c784b442_38b90ad9","line":373,"updated":"2024-06-05 09:39:44.000000000","message":"This is incorrect, it should be (reserved_flavor.id, agg.id) because we are not using the SDK here.","commit_id":"c8151294a4e8a6939d655c3b1819c38ddbf0603a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"ff8e280ecbaa804cea850458ad5878d205469653","unresolved":false,"context_lines":[{"line_number":370,"context_line":"        # then inventory as reserved to start with?"},{"line_number":371,"context_line":"        self._placement_client.create_reservation_class(reservation_id)"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"        return reserved_flavor[\"id\"], agg[\"id\"]"},{"line_number":374,"context_line":""},{"line_number":375,"context_line":"    def _create_flavor(self, instance_reservation):"},{"line_number":376,"context_line":"        source_flavor \u003d self._get_cached_flavor(instance_reservation)"}],"source_content_type":"text/x-python","patch_set":8,"id":"a5ed094e_b6b96e6c","line":373,"in_reply_to":"c784b442_38b90ad9","updated":"2024-06-07 08:43:10.000000000","message":"Done","commit_id":"c8151294a4e8a6939d655c3b1819c38ddbf0603a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"515a1b637e0113f6b4fba38851e7c85e67b899b2","unresolved":true,"context_lines":[{"line_number":397,"context_line":"        extra_specs[instance_plugin.FLAVOR_EXTRA_SPEC] \u003d reservation_id"},{"line_number":398,"context_line":"        extra_specs[reservation_rc] \u003d \"1\""},{"line_number":399,"context_line":"        # NOTE(johngarbutt): added to work with isolated aggregate filtering"},{"line_number":400,"context_line":"        extra_specs[\"trait:CUSTOM_BLAZAR_RESERVATION\"] \u003d \"required\""},{"line_number":401,"context_line":"        reserved_flavor.set_keys(extra_specs)"},{"line_number":402,"context_line":""},{"line_number":403,"context_line":"        return reserved_flavor"}],"source_content_type":"text/x-python","patch_set":8,"id":"54b1b0af_aeba9fdc","line":400,"updated":"2024-06-05 09:43:01.000000000","message":"As above, lets remove this trait for now.","commit_id":"c8151294a4e8a6939d655c3b1819c38ddbf0603a"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"ac6fde6ca49232cf625cd3d286053d11cd39b309","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                    for rc, amount in flavor_resource_inventory.items()"},{"line_number":213,"context_line":"                    if amount \u003e 0"},{"line_number":214,"context_line":"                }"},{"line_number":215,"context_line":"            raise NotImplementedError(\"Found unsupported instance reservation\")"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get sorted list of events for all reservations"},{"line_number":218,"context_line":"        # that exist in the target time window"}],"source_content_type":"text/x-python","patch_set":11,"id":"b552eeb7_5a99b93a","line":215,"updated":"2024-07-19 15:20:21.000000000","message":"I don\u0027t think this message is clear enough, what are we meant to be catching here?\n\nLooking at the code, I think that it means we can\u0027t create a flavor:instance reservation on a host that already has a virtual:instance reservation. Indeed, if I create a virtual:instance reservation I then can\u0027t create a flavor:instance reservation. \n\nIf this is the intended behaviour, we need an equivalent exception to be raised in the instance plugin. Right now if I create a flavor:instance reservation, I can then still create a virtual:instance reservation.","commit_id":"ece33079e01e04513cc19e7732048846b9732451"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"ac6fde6ca49232cf625cd3d286053d11cd39b309","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                    for rc, amount in flavor_resource_inventory.items()"},{"line_number":213,"context_line":"                    if amount \u003e 0"},{"line_number":214,"context_line":"                }"},{"line_number":215,"context_line":"            raise NotImplementedError(\"Found unsupported instance reservation\")"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get sorted list of events for all reservations"},{"line_number":218,"context_line":"        # that exist in the target time window"}],"source_content_type":"text/x-python","patch_set":11,"id":"1ab1f29b_a18b73aa","line":215,"updated":"2024-07-19 15:20:21.000000000","message":"This message doesn\u0027t get raised to the user. They just see ``ERROR: Internal Server Error``. If we create a new exception for this under ``blazar/manager/exceptions.py``, we can raise like: ``raise mgr_exceptions.ReservationTypesConflict()``. This will get shown to the user.","commit_id":"ece33079e01e04513cc19e7732048846b9732451"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"1c76d792f088a784018857cdffa4e6b9890c1a37","unresolved":false,"context_lines":[{"line_number":212,"context_line":"                    for rc, amount in flavor_resource_inventory.items()"},{"line_number":213,"context_line":"                    if amount \u003e 0"},{"line_number":214,"context_line":"                }"},{"line_number":215,"context_line":"            raise NotImplementedError(\"Found unsupported instance reservation\")"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get sorted list of events for all reservations"},{"line_number":218,"context_line":"        # that exist in the target time window"}],"source_content_type":"text/x-python","patch_set":11,"id":"a2aa900d_0d2b4a10","line":215,"in_reply_to":"1ab1f29b_a18b73aa","updated":"2024-08-27 09:08:43.000000000","message":"Done","commit_id":"ece33079e01e04513cc19e7732048846b9732451"},{"author":{"_account_id":35263,"name":"Matt Crees","email":"mattc@stackhpc.com","username":"mattcrees"},"change_message_id":"1c76d792f088a784018857cdffa4e6b9890c1a37","unresolved":true,"context_lines":[{"line_number":212,"context_line":"                    for rc, amount in flavor_resource_inventory.items()"},{"line_number":213,"context_line":"                    if amount \u003e 0"},{"line_number":214,"context_line":"                }"},{"line_number":215,"context_line":"            raise NotImplementedError(\"Found unsupported instance reservation\")"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"        # Get sorted list of events for all reservations"},{"line_number":218,"context_line":"        # that exist in the target time window"}],"source_content_type":"text/x-python","patch_set":11,"id":"325e9559_ee714450","line":215,"in_reply_to":"b552eeb7_5a99b93a","updated":"2024-08-27 09:08:43.000000000","message":"I\u0027ll leave this comment open as the point still stands, but given we document that the plugins shouldn\u0027t be used together it doesn\u0027t need to block this patch.\n\nWould still be good to see a check in place in a future patch :)","commit_id":"ece33079e01e04513cc19e7732048846b9732451"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"b6e4bd45ae96d93d6f8254fbca64dba559e35179","unresolved":true,"context_lines":[{"line_number":328,"context_line":"        except nova_exceptions.ClientException:"},{"line_number":329,"context_line":"            LOG.exception(\"Failed to create Nova resources \""},{"line_number":330,"context_line":"                          \"for reservation %s\", reservation_id)"},{"line_number":331,"context_line":"            self._cleanup_resources(instance_reservation)"},{"line_number":332,"context_line":"            raise mgr_exceptions.NovaClientError()"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":"        db_api.instance_reservation_update(instance_reservation[\u0027id\u0027],"}],"source_content_type":"text/x-python","patch_set":11,"id":"d4afb6c3_2394825e","line":331,"updated":"2024-06-28 13:14:27.000000000","message":"Note: we need to call this in more cases, such as when the first reservation in a lease is OK, but the second one fails. The needs a follow on patch that fixes this for all plugins and adds a top level _cleanup_resources function.","commit_id":"ece33079e01e04513cc19e7732048846b9732451"}]}
