)]}'
{
  "log": [
    {
      "commit": "474fd958ac88b5d2275d3acbc2fabe22e5e9344f",
      "tree": "8e797fead8416ccf5645daed367883d7560e9f42",
      "parents": [
        "806cd5cf9456e69a849f4231e163da4f72379c1b"
      ],
      "author": {
        "name": "Guillermo Calvino",
        "email": "guillermo.calvino@canonical.com",
        "time": "Fri Apr 28 11:51:43 2023 +0200"
      },
      "committer": {
        "name": "Mark Beierl",
        "email": "mark.beierl@canonical.com",
        "time": "Wed May 10 12:54:21 2023 -0400"
      },
      "message": "Ubuntu 22.04 and Python 3.10 preparation\n\nChange-Id: I57a4ee39c101bdab610a6964de58eaa2653d37a3\nSigned-off-by: Guillermo Calvino \u003cguillermo.calvino@canonical.com\u003e\nSigned-off-by: Mark Beierl \u003cmark.beierl@canonical.com\u003e\n"
    },
    {
      "commit": "1138656db9f4f3bce15ec609d5448474d1e0cea1",
      "tree": "3b71429e7efe13006dd2802c7ff6505b89f11e74",
      "parents": [
        "fedf9150c2041deb65fc54944e9be245e4b6fd21"
      ],
      "author": {
        "name": "Gulsum Atici",
        "email": "gulsum.atici@canonical.com",
        "time": "Sat Jan 28 23:55:19 2023 +0300"
      },
      "committer": {
        "name": "calvinosanc1",
        "email": "guillermo.calvino@canonical.com",
        "time": "Tue Feb 07 16:37:03 2023 +0100"
      },
      "message": "Feature 10950: Replace pycrypto with pycryptodome\n\nRemove the encryption methods from N2VC and import them from common\n\nChange-Id: Ia2c9a305a27cf6c9daaa14edab5319c735e33835\nSigned-off-by: Gulsum Atici \u003cgulsum.atici@canonical.com\u003e\n"
    },
    {
      "commit": "d80f038732548191c8214f8387a95bd7919473f1",
      "tree": "b4ea59ab5565cfed3fcbd2f203867c77d11a85da",
      "parents": [
        "4395cfa6c7d0d80980c00d9f078440e0333fd826"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Jun 21 13:20:30 2021 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Jun 21 13:20:30 2021 +0200"
      },
      "message": "Fix racing condition decrypting data in store.py\n\nFixes bug 1580\n\nChange-Id: Idbb9962e2f279b4b6f322e0e989a5831e4ae3b98\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "eb8943a887e2fb8cce0240382811f9e504f3c7fb",
      "tree": "5c4c40b579e897a4914a87c8dae1ae0ac19a1b07",
      "parents": [
        "6331b04745fcd6d44b1b0320ca6e3e63cdebd0e8"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Apr 12 12:07:37 2021 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon May 03 13:30:40 2021 +0200"
      },
      "message": "Feature 10239: Distributed VCA\n\n- Add vca_id in all calls that invoke libjuju. This is for being able to\ntalk to the default VCA or the VCA associated to the VIM\n- Add store.py: Abstraction to talk to the database.\n  - DBMongoStore: Use the db from common to talk to the database\n  - MotorStore: Use motor, an asynchronous mongodb client to talk to the\ndatabase\n- Add vca/connection.py: Represents the data needed to connect the VCA\n- Add EnvironConfig in config.py: Class to get the environment config,\nand avoid LCM from passing that\n\nChange-Id: I28625e0c56ce408114022c83d4b7cacbb649434c\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    }
  ]
}
