)]}'
{
  "commit": "0eb9ae7445d6b6077d55c54ce9c4337e7d8ebc8a",
  "tree": "9ae7f03b8e25039f1a4479aae40b6495d2c4ed2e",
  "parents": [
    "72417706034ccce75450e10fcac57100b1f8d1d5"
  ],
  "author": {
    "name": "Julia Kreger",
    "email": "juliaashleykreger@gmail.com",
    "time": "Tue Mar 26 08:47:26 2024 -0700"
  },
  "committer": {
    "name": "Julia Kreger",
    "email": "juliaashleykreger@gmail.com",
    "time": "Fri Mar 29 09:38:45 2024 -0700"
  },
  "message": "Leverage the remote microversion without requiring human config\n\nTempest plugins are... weird.\n\nThe challenge is to have a branchless utility which can be loaded\nand help provide feedback if the remote service is correctly\nresponding as we would expect.\n\nThis works great in theory, until you have to either do some\nsort of negative test, or plan in advance, or until you have\nsome sort of mixed state environment. This also weirdly\nrestraints testing against older versions on older branches,\nrequiring further care and feeding to keep things passing.\n\nAnd the way issues like these are resolved, originally, was to\nleverage manual human configuration. The problem is, that doesn\u0027t\nalways work and operationally becomes an increased burden.\nSo the logical path forward is for the plugin to automatically\nskip specific tests *based upon* the remote offered API\nmicroversion, much like many of the tests do if a driver or\nrunning configuration does not exist.\n\nThis can be done because when we compose tests, we have a minimum\nand maximum API version where we know the test is valid, and if\nthe remote endpoint is outside of that bound.\n\nThe result is now the plugin will query the remote endpoint and\ncollect the minimum and maximum API versions as part of skip\nversion testing, so if either are defined on a test class, then\nwe make a decision automatically removing the need to configure\naspects specifically.\n\nChange-Id: I197e6c30c8514e1f72cb1ce3ebad851802632203\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2acad18d32a39d1c4b03a7c837b5199e7f6b7efd",
      "old_mode": 33188,
      "old_path": "ironic_tempest_plugin/services/baremetal/base.py",
      "new_id": "f23310fbf6719ddb82ff77ac5b457b2aa60a1a38",
      "new_mode": 33188,
      "new_path": "ironic_tempest_plugin/services/baremetal/base.py"
    },
    {
      "type": "modify",
      "old_id": "6ebb162a2a31984b6d8be931332c362c0e6bc993",
      "old_mode": 33188,
      "old_path": "ironic_tempest_plugin/tests/api/base.py",
      "new_id": "59f2f9469d3277188355b9d50a4896bd7d236dc2",
      "new_mode": 33188,
      "new_path": "ironic_tempest_plugin/tests/api/base.py"
    },
    {
      "type": "modify",
      "old_id": "27b3c9d70dfadb47908ced0b336c5c52e94cf0e8",
      "old_mode": 33188,
      "old_path": "ironic_tempest_plugin/tests/scenario/baremetal_manager.py",
      "new_id": "9ceecb70e7d975a1cae410ad6de5014fd57db0b7",
      "new_mode": 33188,
      "new_path": "ironic_tempest_plugin/tests/scenario/baremetal_manager.py"
    }
  ]
}
