)]}'
{
  "log": [
    {
      "commit": "85755d17a807df83d0e472e6e73500a4d743296b",
      "tree": "0fcb9cf17689dbf6ca0c1921afd6a9168988c5fa",
      "parents": [
        "12b29244e5d333341166ea92760b8eb245c16b27"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Sep 21 19:51:23 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Sep 21 19:51:23 2020 +0200"
      },
      "message": "Add get_metrics command to n2vc_juju_conn and libjuju\n\nChange-Id: I6cde1528579c8ca7aa72d935c5e570004468bb1a\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "12b29244e5d333341166ea92760b8eb245c16b27",
      "tree": "2994f77c9ed622a5c1a74f38973a70304cfb49f5",
      "parents": [
        "c38a696d168531e3c067451044262ef4d78ef11f"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Sep 17 16:01:48 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Sep 17 16:01:48 2020 +0200"
      },
      "message": "Add add_k8s, add_cloud, and remove_cloud commands to libjuju.py and unit tests\n\n- add_k8s: Generates Cloud and CloudCredential objects for adding a Kubernetes cloud to the VCA\n- add_cloud: Takes Cloud and CloudCredential as arguments for adding the cloud to the VCA\n- remove_cloud: Remove cloud from VCA\n\nChange-Id: Ia6b4c0cbd06f38df6fe4c52414f5bcb8ffb9a5a8\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "c38a696d168531e3c067451044262ef4d78ef11f",
      "tree": "333db0a26afb040e3daf5c484bd08c2c42ecbb3a",
      "parents": [
        "ba6e532cda6464759381585452b18f9fd1a19dd3"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Sep 16 13:31:33 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Sep 16 18:59:27 2020 +0200"
      },
      "message": "Remove EntityType from juju watcher and workaround juju bug for retrieving the status\n\n- The juju watcher was doing an unnecessary translation with the entity types. The entity already provides an attribute .entity_type\n- Juju has a bug in version 2.8.2 that returns a wrong status. Therefore, charms were getting stuck in waiting for ever.\nChange-Id: I44709190acc41601e8a67f4c52074fda00c3d495\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "ba6e532cda6464759381585452b18f9fd1a19dd3",
      "tree": "efeee69a69dc4c48684b812afb5baeccde361212",
      "parents": [
        "8bfcc14713a71f43f155e3cddec168380134d344"
      ],
      "author": {
        "name": "almagia",
        "email": "silvia.almagia@etsi.org",
        "time": "Wed Sep 16 09:44:40 2020 +0200"
      },
      "committer": {
        "name": "almagia",
        "email": "silvia.almagia@etsi.org",
        "time": "Wed Sep 16 09:44:40 2020 +0200"
      },
      "message": "Revert \"Revert \"\"Remove unused lines of code\"\"\"\n\nThis reverts commit 8bfcc14713a71f43f155e3cddec168380134d344.\n\napproved by TSC on 15/09/20\n\nChange-Id: I176b1b625cbc2d94013921401b2e6048aed675f8\n"
    },
    {
      "commit": "8bfcc14713a71f43f155e3cddec168380134d344",
      "tree": "299eadf613408c0131016accff68e9452e52090a",
      "parents": [
        "e8102d9e28e5c502fc66ca842d14e1ad29efbfda"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Sep 14 15:10:04 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Sep 14 15:10:37 2020 +0200"
      },
      "message": "Revert \"\"Remove unused lines of code\"\"\n\nThis reverts commit e8102d9e28e5c502fc66ca842d14e1ad29efbfda.\n\nChange-Id: Ic22f292f601f45451d3fdd56ab98bfa4ea9161eb\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "e8102d9e28e5c502fc66ca842d14e1ad29efbfda",
      "tree": "efeee69a69dc4c48684b812afb5baeccde361212",
      "parents": [
        "68b007225cc1fd432dba07fe42a5d1362925bc32"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Jul 07 10:34:33 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 15:57:26 2020 +0200"
      },
      "message": "\"Remove unused lines of code\"\n\nChange-Id: I02be0efe4918083d95a4017c898bfabaf269e779\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "68b007225cc1fd432dba07fe42a5d1362925bc32",
      "tree": "299eadf613408c0131016accff68e9452e52090a",
      "parents": [
        "8331f7ce83ebe7b1c9b2ca25610dfa7fab3a0e64"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 15:05:00 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 15:08:05 2020 +0200"
      },
      "message": "Add consume to libjuju.py\n\nThis function allows to consume an offered endpoint in another model\n\nChange-Id: I320978aac654fbb8199fdfbf4e928b0e2ba5458b\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "8331f7ce83ebe7b1c9b2ca25610dfa7fab3a0e64",
      "tree": "fa8f12619efc434d25527bff18948c6aec562caf",
      "parents": [
        "bc538e4dc147558118094252f31b762d35392623"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Aug 25 16:10:07 2020 +0200"
      },
      "committer": {
        "name": "garciadav",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 14:34:31 2020 +0200"
      },
      "message": "Change add_relation function in libjuju.py to accept saas\n\nBefore, app_1, endpoint1, app_2, endpoint2 parameters were needed.\nNow we directly pass the endpoint names of the relation with the right format.\nIf \"app:endpoint\", it is understood that the endpoint it of a charm in the current model.\nIf \"name\", it is understood that the endpoint is a consumed endpoint from another model.\n\nThis function allows to cross-model-relate charms to external models\n\nChange-Id: I84ab45ba735a1960ab742d9ec731c357ec1042c6\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "bc538e4dc147558118094252f31b762d35392623",
      "tree": "7f030a7b791339ef9c7c4b41db987162904865e8",
      "parents": [
        "42f328a34a3ec7c066350de81e1331632a3fee92"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Aug 25 15:22:30 2020 +0200"
      },
      "committer": {
        "name": "garciadav",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 14:34:10 2020 +0200"
      },
      "message": "Add list_offers function to libjuju.py\n\nThis function return the list of offers available in a model\n\nChange-Id: Iebc9f55c79f27caab5b2f5a2874e1d2d93dc9bc4\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "42f328a34a3ec7c066350de81e1331632a3fee92",
      "tree": "f2116ce23f24c019addea804506f66c6540eca1e",
      "parents": [
        "f414edf8e9f6247e6ededbeed2318abe8027257a"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Aug 25 15:03:01 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Sep 11 14:33:20 2020 +0200"
      },
      "message": "Add models_exist function to libjuju.py\n\nThis function checks if a gives list of model names exist in the controller.\nAdditionally, it returns the list of unexisting models from the given list.\n\nChange-Id: I2a9290ef1a4ee1308626f3a31dba0a83127fdd8c\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "37004983e8e484d5504ae4253bdb75204ff389d9",
      "tree": "704c2d727211989aa20768c5ff20047a53e00b52",
      "parents": [
        "810459632a4fb28e1bde897aaef8775cba342b4b"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Jul 16 17:53:20 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Aug 20 11:47:32 2020 +0200"
      },
      "message": "Fix an issue with the service ports in Kubectl.py\n\nThe ports were retrieved as V1ServicePort classes, and LCM cannot store that in the database\n\nChange-Id: I451ab65478f36c5cb7f33594b4454bd315c22878\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "0c478257d6bd8126b27d80f76d128c7cc21d0609",
      "tree": "3e33fbcccfbd0b03aa05cd330e3cc2aef590404e",
      "parents": [
        "4d0bef5003a86170683da70259b67a8815a9e865"
      ],
      "author": {
        "name": "Dominik Fleischmann",
        "email": "dominik.fleischmann@canonical.com",
        "time": "Wed Jul 15 14:44:45 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Aug 20 11:47:32 2020 +0200"
      },
      "message": "Add unit tests for K8s Proxy Charm Feature\n\nThis commit also makes an initial template for\nfuture test in n2vc_juju_conn.py\n\nChange-Id: I34cb0f52bc2e6ce6b514ea4f99658f109e21875f\nSigned-off-by: Dominik Fleischmann \u003cdominik.fleischmann@canonical.com\u003e\n"
    },
    {
      "commit": "5d79939ab780d4717fe36bfd62f398b922f84829",
      "tree": "bbcb0cd986c1a4d073dd2d20d083f006cc245474",
      "parents": [
        "7ff392f6b60850ac7408f96fd42ab16b005ec2bf"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Jul 02 13:56:58 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Aug 20 11:47:32 2020 +0200"
      },
      "message": "Implement get_service and get_services methods for K8sJujuConnector\n\n- Add a new class (n2vc.kubectl.Kubectl) for managing the Kubectl commands\n  - Add unit tests\n- Add get_config_file() method for getting the path of the kubeconfig in K8sJujuConnector\n- Implement get_service() and get_services() methods in K8sJujuConnector\n\nChange-Id: I883ec21dad519c2dc65cb9bd601e539685336756\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "7ff392f6b60850ac7408f96fd42ab16b005ec2bf",
      "tree": "9fd2dc9d16915371e3472311a9a01a8563baec6d",
      "parents": [
        "891732a9f4f1381a49e506cb9d39132b328aaa1c"
      ],
      "author": {
        "name": "Dominik Fleischmann",
        "email": "dominik.fleischmann@canonical.com",
        "time": "Tue Jul 07 13:11:19 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Aug 20 11:47:32 2020 +0200"
      },
      "message": "Add unit tests to N2VC refactor\n\nThis commit adds unit tests for the following\nmodules:\njuju_watcher.py 96% coverage\nlibjuju.py 72% coverage\nutils.py 100% coverage\n\nMinor libjuju.py fixes found with unit testing\nFix testing with tox\n\nChange-Id: I9f23ce2f18aac6765edfa955ed200802c27d9047\nSigned-off-by: Dominik Fleischmann \u003cdominik.fleischmann@canonical.com\u003e\n"
    },
    {
      "commit": "0a8c9afacca5010da381e6382b01e31dd4e59d23",
      "tree": "4cff69de6d8ff4603ac6ed61a8ac1a97dcbe10f4",
      "parents": [
        "32b3812aaf09482ed9eb2b4492525bfccad3d0d2"
      ],
      "author": {
        "name": "beierlm",
        "email": "mark.beierl@canonical.com",
        "time": "Tue May 12 15:26:37 2020 -0400"
      },
      "committer": {
        "name": "beierlm",
        "email": "mark.beierl@canonical.com",
        "time": "Thu May 14 11:59:21 2020 -0400"
      },
      "message": "Change to sane default timeout\n\nChanges the default timeout from ~28 hours to 1 hour.\nFixed syntax errors in two log messages.\nAdds unit tests for timeouts.\nAdds nose config to create Junit style output.\n\nFixes bug 1014\n\nChange-Id: I7d1c2d28b397adc3ac638aa2366925dc744eade3\nSigned-off-by: beierlm \u003cmark.beierl@canonical.com\u003e\n"
    },
    {
      "commit": "f52cb7cfeb4e24febe7c66af3d5bb275a50d7f99",
      "tree": "889ee6b370ccb8c912040e29104047815422f82d",
      "parents": [
        "347aae6ea48b962db7ab868cb0533edf7b450349"
      ],
      "author": {
        "name": "beierlm",
        "email": "mark.beierl@canonical.com",
        "time": "Tue Apr 21 16:36:35 2020 -0400"
      },
      "committer": {
        "name": "beierlm",
        "email": "mark.beierl@canonical.com",
        "time": "Mon May 04 11:10:08 2020 -0400"
      },
      "message": "Enable lint, flake8 and unit tests\n\nCleans up non pep compliant code.\nAdds a simple unit test.\nFormats according to black.\n\nTox automatically runs lint, flake8 and unit test suite\nwith coverage.  To run each individually, execute:\n\ntox -e pylint\ntox -e black\ntox -e flake8\ntox -e cover\n\nNote that these are all run for each patch via Jenkins.  The full\ntox suite should be run locally before any commit to ensure it\nwill not fail in Jenkins.\n\nChange-Id: I2f87abe3d5086d6d65ac33a27780c498fc7b1cd3\nSigned-off-by: beierlm \u003cmark.beierl@canonical.com\u003e\n"
    }
  ]
}
