)]}'
{
  "log": [
    {
      "commit": "804cc042c04683f8a2a695e108627e0d663d79d7",
      "tree": "8e54358a073952a13b9cf6e7e1f8a94f1e92c7da",
      "parents": [
        "c9a1aba66e14ed6366e28c2c79bd51c93dad9390"
      ],
      "author": {
        "name": "endika",
        "email": "endika.aldecoa@ehu.eus",
        "time": "Wed Sep 16 15:41:18 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Apr 15 15:57:17 2021 +0200"
      },
      "message": "fix 1208: add native charm support for rhel and fix centos support\n\nThe commit adds SO discovery support for rhel and adds a script to\nadd a DNAT rule to rhel and centos images.\n\nThere are some things that needs to be taken in acount.\n- It uses firewalld, wich is the default firewall for centos and rhel,\n  instead of iptables. This may break some thinghs if the image uses\n  iptables.\n- If firewalld is not actibe it assumes that the VM is not using it,\n  so it creates a input rule to accept all incoming conections\n  (by default rejects all). If the firewall was not enabled, with\n  accept all it should have the same behavior.\n\nChange-Id: I29c9781d354c4e8268e19f64dcc9568d725a0de3\nSigned-off-by: endika \u003cendika.aldecoa@ehu.eus\u003e\n(cherry picked from commit f97b231c021d082f5f56ac88804af3d73be2caa9)\n"
    },
    {
      "commit": "30701e3fbbbd545dabbd69c5145f44c0a5909558",
      "tree": "4a5f5846d1ec563389a70dcbac8f9eba73f6ee97",
      "parents": [
        "5d7d622b026f6f4c6994fc5fbb1789d7827bf641"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Mar 10 20:00:53 2021 +0100"
      },
      "committer": {
        "name": "garciadav",
        "email": "david.garcia@canonical.com",
        "time": "Wed Mar 24 15:09:39 2021 +0100"
      },
      "message": "Add ModelConfig\n\nThis class maps the model-config from the vca_config. That config will\nbe passed every time a model is added.\n\nChange-Id: I0a1e47ba7d708f3514c64a6f20d410a21fe8ea1d\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n(cherry picked from commit a71d4a04c1e8ad3ffe1a129024e6dbc14d6d3bd5)\n"
    },
    {
      "commit": "7ff8ed57dd2b4fe9b8285353bdf59d7a4cd7a010",
      "tree": "a143bb1dd20443d9a213e68d8feb3c4bfef7557d",
      "parents": [
        "ec52d282dcc06a8b9eaef9cbaa0cbfb58348bfe0"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Mar 15 18:41:34 2021 +0100"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Mar 16 12:06:30 2021 +0100"
      },
      "message": "Fix bug 1467\n\nDo not raise exceptions in n2vc.libjuju.add_model() or n2vc.libjuju.destroy_model() functions\n\nIn general, functions should be as idempotent as possible. In this\nparticular case, executing the add_model() function several times with\nthe same arguments should just work. Same thing for destroy_model(). If\nthe model has already been destroyed, it should return and not give any\nerrors saying that the model doesn\u0027t exist.\n\nChange-Id: I87e11ea0fe1b4063b2f89900fcc2bbf1f915b953\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "ec52d282dcc06a8b9eaef9cbaa0cbfb58348bfe0",
      "tree": "ebbf9db37ec3ba370bb9564dd1e622e2aab75ebd",
      "parents": [
        "ff9d9013c43951a782da38116357a8274b4549ee"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Mar 10 17:09:44 2021 +0100"
      },
      "committer": {
        "name": "garciadav",
        "email": "david.garcia@canonical.com",
        "time": "Tue Mar 16 12:05:41 2021 +0100"
      },
      "message": "Minor improvements to libjuju.py\n\n- Increase default timeout to connect to the controller\n- Minor fix in destroy_model function\n- Fix unit tests. Now they run faster :-)\n\nChange-Id: Ia2cbcb3e052fe91f4e712ea572ecf444b1d5894f\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n(cherry picked from commit 435b86410c96c0e034a892ac5df9ebc9547e3b7d)\n"
    },
    {
      "commit": "f6e9b00b6f7cd35e45ace4c84b53fe8d12b2438c",
      "tree": "86711bb6ca5aaf63d032860441dc8f605e067a2d",
      "parents": [
        "1c83f2e4d061ad37ba898e114cb42e70fdee5145"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Nov 27 15:32:02 2020 +0100"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Sat Nov 28 11:12:41 2020 +0100"
      },
      "message": "Fix bug 1298\n\nThis bug was caused because a bad parsing of the kubeconfig.\nThe token should be the secret from k8s for the created service\naccount.\n\nWhen adding a k8s cluster, a clusterrole, clusterrolebinding, and\nserviceaccounts are created.\n\nTests are needed for oauth2 and userpass kubeconfigs.\n\nChange-Id: I6a4a2834bd6477f255e8ca48e7f53cd3a0d3fddf\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "5b802c9d0ee35b529cdac7e6db237aab2fe409d8",
      "tree": "574f60f61f7702662327d091236f5f0a2fba364d",
      "parents": [
        "9a63e8d905b4b98f567acccce745b39919fa6860"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Nov 11 16:56:06 2020 +0100"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Nov 11 17:02:09 2020 +0100"
      },
      "message": "Fix minor bug in configure application\n\nVariable model was unassigned if the connection to the controller was\nfailing\n\nChange-Id: I14764079f505c46ff7c9af7adec8079b43eca14e\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "667696ef11356f3267df58f2a81c6ecebb0e94b9",
      "tree": "ea2805559407bdbb73a0beacd1aa17973dd5ac9c",
      "parents": [
        "a4f57d6260e6520aa6a89e86f9d1b2ca5e0a3a08"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Sep 22 14:52:32 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Nov 04 13:34:50 2020 +0100"
      },
      "message": "Feature 9751: Centralized VCA for KNFs\n\n- Use libjuju.py for the communication with VCA\n- Add the k8s_cloud as an external cloud to the VCA\n- Add unit tests\n\nChange-Id: Id55bfada3957f35e13cef7b4bfcc7acb72452df0\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "a4f57d6260e6520aa6a89e86f9d1b2ca5e0a3a08",
      "tree": "ade0629b5759e1f62cff3db58a8a42f596e47f85",
      "parents": [
        "168bb198ea5c86aaa2cd8d0e20c634ac896e385f"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Oct 22 10:50:56 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Oct 22 10:56:24 2020 +0200"
      },
      "message": "Fix bug 1263\n\nUpdate database endpoints when a new VCA_HOST_IP is provided\n\nBefore, we were not considering the that the VCA_HOST_IP could be\nupdated, in that case, the old ips stored in the database should be\nreplace by the new one. Of course, this won\u0027t do any model migration\nfrom the previous VCA to the new one. It will only start pointing to\nthe new VCA provided.\n\nChange-Id: I5e259f773f90e4f440d87c4b6342cd82425c0e0c\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "168bb198ea5c86aaa2cd8d0e20c634ac896e385f",
      "tree": "fad8cab927683fb57dc72b7d7f3430716bde2262",
      "parents": [
        "5ef42a14f766aa00a5917845ba1b3e04cc3c15f7"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Oct 21 14:19:45 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Oct 21 18:57:37 2020 +0200"
      },
      "message": "Fix bug 1267: Destroy machines that are pending\n\nWhen osm destroys a NS, and a native charm hasn\u0027t been able\nto finish the provisioning of a machine, it will be in a pending state.\nAs it was seen in the bug 1267, when a model is destroyed and machines\nare pending, the deletion of the model will get stuck.\n\nThis patch solves that by checking (before deleting the model) if there\nare any manually provisioned machines in the juju model (native charms)\nin a pending state. If there are, it will destroy them so that the deletion\nof the model won\u0027t get stuck.\n\nChange-Id: Ia3f6ae7390ccc2bb5d4874d7d08fd446019b0901\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "5ef42a14f766aa00a5917845ba1b3e04cc3c15f7",
      "tree": "3f0c4072d7307bd40de98ef2c35ba83cb8cd2e10",
      "parents": [
        "59f520da90fb12b9d9871889dfbc5d57aa14c591"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Sep 29 19:48:13 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Oct 21 16:24:02 2020 +0200"
      },
      "message": "Fix bug 1216: Force model deletion\n\nChange-Id: I3f41eead305349eba5d404f5f3d61d33f0536aca\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "59f520da90fb12b9d9871889dfbc5d57aa14c591",
      "tree": "56c43333879f27690ea51ccf0d5aa4ef824c8c43",
      "parents": [
        "7077e2601a209a87f7fe397b35586e7701ca759a"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Oct 15 13:16:45 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Oct 21 13:28:23 2020 +0200"
      },
      "message": "Fix bug 1236: Retry if leader unit is not obtained\n\nThere a racing condition when N2VC tries to get the leader unit, but there\nleader-elected hook has not been triggered. In that case, day-1 action might fail.\n\nThis commit solved this issue by retrying a couple of times.\n\nChange-Id: If79cd243aa9ebdf8ed0e6235481eeb9fd2640612\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "7077e2601a209a87f7fe397b35586e7701ca759a",
      "tree": "6736461f7e89817a1df2c664437e810372a933ed",
      "parents": [
        "e22c72017d4756571ea04760ce5059c7ba7cd295"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Oct 16 15:38:13 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Oct 16 15:38:13 2020 +0200"
      },
      "message": "Add credential_name option for add_k8s() and add_cloud()\n\nChange-Id: I4adf740231e4c0d8785768631a8f2daedc198947\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "e22c72017d4756571ea04760ce5059c7ba7cd295",
      "tree": "6d73c979214f7247eb26c6365209c2a2ef46ea5c",
      "parents": [
        "a062074373b1d6dcf94029bd44be32043eff26eb"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Oct 16 14:37:37 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Oct 16 14:37:37 2020 +0200"
      },
      "message": "Add credential_name in Libjuju.add_model() function\n\nChange-Id: Ic3ca0fce931de4b9f7d200e99feb604f21c1ab83\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "475a7221e3598ad1c75ce802c5ad74ef7ecf72f1",
      "tree": "d4d2a9a5d1430567848e4721d9ba7e4eea869189",
      "parents": [
        "85755d17a807df83d0e472e6e73500a4d743296b"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Mon Sep 21 16:19:15 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Tue Sep 22 18:24:22 2020 +0200"
      },
      "message": "Add new kubectl.py functions, modify some libjuju.py functions, add unit tests\n\n- Kubectl.py: two new functions added (get_configuration and get_default_storage_class)\n  - get_configuration(): Returns a kubernetes Configuration object.\n    It can be used to properly parse the kubeconfig.\n  - get_default_storage_class(): Searches for the default storage class of a k8s cluster.\n- Libjuju.py: modified add_k8s function and get_k8s_cloud_credential function was added.\n  - add_k8s(): Improves the way of generation Cloud and CloudCredential objects for the K8s Cloud\n  - get_k8s_cloud_credential(): It parses the kubeconfig to properly determine the authentication\n    method type that should be used for that k8s cluster.\n- Unit tests: Added unit tests for all the new functions added.\n- Exceptions: Make all Juju Exceptions to inherit from N2VC Exception.\n  Now Juju exceptions have the message attribute, that is useful for unit testing, to not only check that\n  an exception raised, but to check the message too.\n- Move get_k8s_cloud_credential() function to n2vc/utils in order to share that code between different connectors.\n\nChange-Id: Ife9027d80663fe95f1f3ad883cb9a3376b047d0b\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "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": "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": "810459632a4fb28e1bde897aaef8775cba342b4b",
      "tree": "f428dd5dffde55cb33b541a5f20568644bb45003",
      "parents": [
        "0c478257d6bd8126b27d80f76d128c7cc21d0609"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Jul 16 12:37:13 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Aug 20 11:47:32 2020 +0200"
      },
      "message": "Make API Proxy optional and avoid replacing existing SSH Keys in the provisioner\n\n- Fixes bug 1154\n- Fixes bug 1083\nChange-Id: I0ee5e092f5ff205089c2b80ece9f4262572d58d2\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": "2cf8b2e0cd32ab2e8f3913ae9c5e156710465240",
      "tree": "431a8152d78b2d9581b430b8735eae1590cee241",
      "parents": [
        "d745e229c23053e565c89231c4e239186ba3e332"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Jul 01 20:25:30 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Jul 01 20:26:47 2020 +0200"
      },
      "message": "Update database with api_endpoints of VCA on initialization\n\nChange-Id: Id5666d8c93d357632efde93e8e60abafdad56e35\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "b8ff39bee1fffc09564f911ab522269306163f84",
      "tree": "327d893d3b4dd535780474633bf13f9a2fb00a28",
      "parents": [
        "7ace6faf03350236447f49ea6435e271a3f84aae"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Jun 25 17:18:31 2020 +0200"
      },
      "committer": {
        "name": "garciadav",
        "email": "david.garcia@canonical.com",
        "time": "Tue Jun 30 08:12:40 2020 +0200"
      },
      "message": "Fix model deletion\n\n- Model deletion is failing with Juju 2.8\n\nChange-Id: I6d7fc85ac9166a4eb7ff5851c231490400d64787\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "b95133489d1cd16e1692085b1193d24d52c858fc",
      "tree": "59b6bc32b3061d9f221283541f63d324f3ebeb7b",
      "parents": [
        "f8a9d46e66f1222d7aefdf5a641e4490ef1a40b8"
      ],
      "author": {
        "name": "Dominik Fleischmann",
        "email": "dominik.fleischmann@canonical.com",
        "time": "Tue Jun 09 11:57:14 2020 +0200"
      },
      "committer": {
        "name": "Dominik Fleischmann",
        "email": "dominik.fleischmann@canonical.com",
        "time": "Mon Jun 29 13:28:21 2020 +0200"
      },
      "message": "8716 - K8s Proxy Charms\n\nThis commit enables the possibility to deploy\nProxy Charms on Kubernetes.\n\nIt depends on a new LCM environment variable\ncalled `k8s_cloud` which will state the k8s name\nin VCA that will be used for deploying the proxy\ncharms.\n\nIt will also check the k8s model for status\nand delete the k8s model if it exists.\n\nFinally it will now retry the verify ssh\ncredential action when the action fails, instead\nof only retrying when a excpetion is launched.\n\nChange-Id: I09510dcec00f747da945f88d54c2e25c1402d56c\nSigned-off-by: Dominik Fleischmann \u003cdominik.fleischmann@canonical.com\u003e\n"
    },
    {
      "commit": "f8a9d46e66f1222d7aefdf5a641e4490ef1a40b8",
      "tree": "1b65dfcce22b5a078452f9e9170cf8668c37015c",
      "parents": [
        "2f66c4df28308b5b2747bb207e7797932e502436"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed Mar 25 18:19:02 2020 +0100"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Jun 26 16:36:47 2020 +0200"
      },
      "message": "Feature 8720: Add scale support\n\nChange-Id: Ie94521fb6a1ce0a765f9558de749f4f438cf8b93\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "2f66c4df28308b5b2747bb207e7797932e502436",
      "tree": "4dd7b55986e55b0cf59fab4b36bf27f589b65262",
      "parents": [
        "41b40a10384cd725be87f1800242cc8eba38e991"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Jun 19 11:40:18 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Fri Jun 26 13:40:16 2020 +0200"
      },
      "message": "Feature 8681: Add VCA HA capabilities\n\n- juju watcher: fix exception handling when websocket is closed\n- libjuju.py:\n  - Get vca endpoints from database (if exists)\n  - Update vca endpoints in database\n  - Get controller per operation (remove controller from class attribute)\n  - Add health check: Every 5 minutes the connection to the controller will be tested.\n- Dockerfile: update it to 18.04\n\nChange-Id: Ifa0a3a705d48fd736a9634b0722bdc914003b497\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    },
    {
      "commit": "4fee80e46dff88732b7927e502007203fcd8a15c",
      "tree": "cafcf533d4c649c7a3b30e2f699c52fc0e138f27",
      "parents": [
        "d3de135758e35c4d511b067c6ebeea378f63d79e"
      ],
      "author": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Wed May 13 12:18:38 2020 +0200"
      },
      "committer": {
        "name": "David Garcia",
        "email": "david.garcia@canonical.com",
        "time": "Thu Jun 18 14:21:31 2020 +0200"
      },
      "message": "Initial refactor of N2VC\n\n- Add libjuju.py to encapsulate all code related with the communication using libjuju\n- Replace juju_observer with juju_watcher\n- Add utils with some utilities like EntityType, FinalStatus, and JujuStatusToOSM\n\nChange-Id: I5d46ad65d6ed37b49bf2504209bfdd46d1b5a7e4\nSigned-off-by: David Garcia \u003cdavid.garcia@canonical.com\u003e\n"
    }
  ]
}
