)]}'
{
  "commit": "6d84dbd8746388114361e09300697da471de20ca",
  "tree": "efa9accf616e79a2311e81c71d62fbfe958d9e8f",
  "parents": [
    "1afb30a22cc175cf67572b7195609be6a484258c"
  ],
  "author": {
    "name": "Adam Israel",
    "email": "adam.israel@canonical.com",
    "time": "Fri Mar 08 18:33:35 2019 -0500"
  },
  "committer": {
    "name": "Adam Israel",
    "email": "adam.israel@canonical.com",
    "time": "Thu Mar 14 12:33:12 2019 -0400"
  },
  "message": "Fix bug 628 - Better handling of model management\n\nIn order to address the issue raised in bug 628, we\u0027ve improved the\nhandling of how N2VC creates and destroys models. Previously this was\ndone transparently, but now they are explicit operations that will need\nto be performed by the LCM.\n\nThe LCM will be required to call `CreateNetworkService()` prior to\ncalling `DeployCharms`. This will return True if successful, or raise an\nexception if the model can\u0027t be created.\n\nAfter LCM has called `RemoveCharms()`, it will need to call\n`DestroyNetworkService()` to remove the model from the Juju controller.\n\n- Fix lint errors\n- Implement the `DestroyNetworkService` method, which will destroy the\nmodel per Network Service, and any applications deployed to it.\n- Adds a new test for creating and deleting models\n- Add `CreateNetworkService` to explicitly create a new model for a\nNetwork Service.\n- Add proper return values from `logout()` so we can assert against it\nduring tests\n- Add dependency on pytest-assume so we can test multiple failures per\ntest. This allows us to properly assert and still tear down the juju\nclient.\n- Use pytest.assume. If a method asserts, we can continue with the\nteardown of the client.\n\nChange-Id: I3031b008f4ed79f978ecd84ade72e125153729a7\nSigned-off-by: Adam Israel \u003cadam.israel@canonical.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a079b97dfe18f0c016764ceb8b9efd2f1214a595",
      "old_mode": 33188,
      "old_path": "n2vc/vnf.py",
      "new_id": "6e4aaf37e8bd013663eb4d03c6dbe766408cdb3f",
      "new_mode": 33188,
      "new_path": "n2vc/vnf.py"
    },
    {
      "type": "modify",
      "old_id": "8b61461745889908fb4703391e19cc329c6d3f66",
      "old_mode": 33188,
      "old_path": "tests/base.py",
      "new_id": "e4111ebb673d04240f2d18e8038154cdf193a23a",
      "new_mode": 33188,
      "new_path": "tests/base.py"
    },
    {
      "type": "modify",
      "old_id": "228be3c3ffaf70fb4c2829d71d90204403a937ba",
      "old_mode": 33188,
      "old_path": "tests/charms/layers/simple/reactive/simple.py",
      "new_id": "802d60cba2b2f1c1c082bd78245c2e3e6e8638e7",
      "new_mode": 33188,
      "new_path": "tests/charms/layers/simple/reactive/simple.py"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b54a7bba9eed4fb0eac73a1d6e4c6635abd6c99d",
      "new_mode": 33188,
      "new_path": "tests/test_model.py"
    },
    {
      "type": "modify",
      "old_id": "a568d3f0fd3791581b330a79e3cef5b9c8f8e8cc",
      "old_mode": 33188,
      "old_path": "tox.ini",
      "new_id": "b353ce8d7b7e5df6697b529fc6073b54afeeb78e",
      "new_mode": 33188,
      "new_path": "tox.ini"
    }
  ]
}
