)]}'
{
  "log": [
    {
      "commit": "1f3bb81b1ef818aadc2015051eb676b1d2a2def0",
      "tree": "1ad7cfa548457e7d4e18c7b4f3584ff66889b853",
      "parents": [
        "ca1df8f1f4d9f55da297b9759b8b9051ccc1b7b3"
      ],
      "author": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Tue Apr 16 20:15:46 2019 -0700"
      },
      "committer": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Fri May 17 05:58:36 2019 +0000"
      },
      "message": "Make default logging level \u003d ERROR\n\nChange-Id: I45664677214f271d8a37e483a0abdc5f90c7e270\n"
    },
    {
      "commit": "e9c2db8065377460e12ec4d06e403b1dd2f9882a",
      "tree": "82170c913312ff1a2323e8d256737a0a5561aa83",
      "parents": [
        "3ed33ed3b598922654d1175db9ade8aa9c17a7bd"
      ],
      "author": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Tue Jan 22 15:05:36 2019 -0800"
      },
      "committer": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Wed Jan 23 19:54:11 2019 +0000"
      },
      "message": "Fix pesky ^M characters\n\nChange-Id: I8890cb8e21c3ae1d707147805d4b637cab0c574c\n"
    },
    {
      "commit": "edede5d2d0d2267d013283908d2334cdc2a675f2",
      "tree": "ca05fdba8e3a05517642ddb1ecddbce4e18304ab",
      "parents": [
        "4568285e8cdaf00a9705de06eb8b386478961315"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Wed Dec 19 19:46:53 2018 -0800"
      },
      "committer": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Wed Dec 19 19:53:31 2018 -0800"
      },
      "message": "VOL-1368: Create a README for explicit ResourceManager Profile configuration\n\nChange-Id: Ifbc2ea4843fe23f6806e56722bfb4b9e20d56cc1\n"
    },
    {
      "commit": "b761bc1a31265e11bbc2469f45dd5b2feb2f0d5e",
      "tree": "209eb3cff4e60c063b7cee97212eed5ea7dadcf9",
      "parents": [
        "9fef0fde7480b854794b7333ae166dff798f98c7"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Thu Nov 29 02:22:18 2018 -0800"
      },
      "committer": {
        "name": "Kailash Khalasi",
        "email": "kailash@onlab.us",
        "time": "Thu Dec 13 16:41:52 2018 +0000"
      },
      "message": "VOL-1344:\n1) Place all of resource manager and tech profile KV store data under /service/voltha\n2) Ensure flow_ids are released on the KV store when device is deleted\n3) Ensure pon resources are re-used on voltha restart\n4) Few other code re-organization and bug fixes\n\nChange-Id: Ia7bc8062d88b7a8eec5d4b87209536d81b115575\n"
    },
    {
      "commit": "abd9c8489b27f1af35d2fdc0deb47c5d816ca0c2",
      "tree": "7172fd472b27b36435a156f4656067aff33ddece",
      "parents": [
        "bf5ae0c7976a805bac7300968c716c2cf1393732"
      ],
      "author": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Thu Nov 15 23:58:27 2018 +0000"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Tue Dec 11 22:47:23 2018 +0000"
      },
      "message": "VOL-1023 - Supporting multiple UNI per ONU\n\nAdded support for multiple UNIs per ONU by enabling an opt-in parameter in Resource Manager Profile\nattribute key \"uni_id_start\" and \"uni_id_end\". This represents the 0 based local-device uni\nindex range. So, for an ONU to support a single UNI, the default (including omitted) value is 0.\nTo support multiple UNIs per ONU, set \"uni_id_end\" to the maximum (0-based) index on the ONU.\n\nPlumbed in support throughout for multiple UNIs. Each UNI receives a dedicated TCONT/GEM from\nTechProfile and is applied a dedicated MAC Bridge Instance in the ONU. Each UNI is effectively\ntreated the same whether on the same or different ONUs.\n\nuni_id is used throughout to be the ONU-relative device port number (0-based)\nport_no is the logical port number\n\nChange-Id: I443d2322a2d414a358f1e0c629779c4929ce13c8\n"
    },
    {
      "commit": "69c107af81efa69abfae41d5117fac54d860112b",
      "tree": "e7a16f2bbf11b34e8f5f22f09b6efe5eade83d5c",
      "parents": [
        "36ef06999dba8c15b610cd97ba42d90420daeac8"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Wed Nov 21 20:28:54 2018 -0800"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Tue Nov 27 18:55:49 2018 +0000"
      },
      "message": "VOL-1338: Readme for Tech-Profile management\n\nChange-Id: Icbdbb813317dd2f769c8315da1d0c90375fa28b6\n"
    },
    {
      "commit": "ab836e97c15b01312892c83da287294e7228316f",
      "tree": "02534e97ed0ee0e66b9255b94bfacf320032be44",
      "parents": [
        "bb869acd0af7ff887fbb83de72c81f8fb2c45a18"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Thu Oct 25 01:17:57 2018 -0700"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Wed Nov 21 18:07:34 2018 +0000"
      },
      "message": "VOL-1221: OpenOLT Adapter/Driver will use a Technology Profile Instance to create the OLT Upstream and Downstream Queuing and Scheduling Constructs for a Bidirectional Flow.\n\nChange-Id: Iaf1a782529e2c459c586b158bd4f6447f548e004\n"
    },
    {
      "commit": "18357eda81178dec3c02f56dbd0fd5f56aa516a2",
      "tree": "86d60690f1a987d7e756190704f18d008fa71c8a",
      "parents": [
        "66dbf62e577669b48a5f6856b8802b32185b6253"
      ],
      "author": {
        "name": "Zack Williams",
        "email": "zdw@opennetworking.org",
        "time": "Wed Nov 14 10:41:08 2018 -0700"
      },
      "committer": {
        "name": "Zack Williams",
        "email": "zdw@opennetworking.org",
        "time": "Tue Nov 20 20:11:40 2018 +0000"
      },
      "message": "Minimally invasive set of logging fixes\n\n - Cache structlog logger, make formatters generic\n - Fix consul-specific naming in coordinator code\n - Fix logging statements in envoyd that require formatting\n - Clean up unicode-invalid binary strings from etcd\n - Structured \u0027msg\u0027 key is removed by logging framework, change name\n   in a few places\n - Move logging from INFO and above levels to DEBUG in a few places\n\nChange-Id: Iea40f4969ad328f3d1180533dfc35cb9a2c0756b\n"
    },
    {
      "commit": "66dbf62e577669b48a5f6856b8802b32185b6253",
      "tree": "158eec25672e054743e8bb19e9c2dbcd11e08748",
      "parents": [
        "c7890eaafbbb05a18fa2f30e76492fbcb9c9f1c2"
      ],
      "author": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Sun Nov 18 12:24:54 2018 -0600"
      },
      "committer": {
        "name": "Chip Boling",
        "email": "chip.boling@adtran.com",
        "time": "Tue Nov 20 19:29:44 2018 +0000"
      },
      "message": "VOL-1333 - OpenOMCI exception caused by missing set-table to ONU and read-table from DB\n\nAdded support to complete the set transaction for an OMCI table attribute. If using\nthe OmcitableField, the omci will automatically handle converting a set of a single row\nand upon completion of the set, cause a table \"update\" to occur to augment the new\nrow into the existing table. The supplier must provide an index() and is_delete() method\nto support determination if the row set() is updating an existing row, deleting\nan existing row, or adding a  new row. Rows are sorted by index() order.\n\nThe ramification is also a change in the query() contract for a table attribute. It now\nreturns a list[] of objects rather than a single scaler object. Presently, this\nonly affects query of the ExtendedVlanTaggingOperationData table.\n\nChange-Id: I2b24f747beb79013f078bbb8c37006e75fda0712\n"
    },
    {
      "commit": "f760147ad9b1e3981ebc98f73001d774bbd3ff45",
      "tree": "7b2a626bd618db33a10eb6ab748e9a26605c4454",
      "parents": [
        "9ea2154491ecd2324cde998ce595c9430a14516b"
      ],
      "author": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Fri Nov 02 13:27:41 2018 +0000"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Mon Nov 05 14:04:24 2018 +0000"
      },
      "message": "VOL-1312 - Resource Manager should not require hard coded vendor/models\n\nChanged extra-args parser to not require any validation checks from\na choice list.\n\nChanged openolt to auto create the extra args from device info if\nnot provided via CLI.\n\nChanged openolt to use model vs vendor as the resource manager\ntechprofile path.\n\nChange-Id: Ib7befc581574abb5c4fb30355f830a9fdafe1b60\n"
    },
    {
      "commit": "65423ce331ffb56ca27e104a85e5a55fe544c4b8",
      "tree": "be02868c1111bb68b57db4f71ca0ef686c1776ac",
      "parents": [
        "1dd47089f1f0d0290945c5bdb897e6a04c03bfad"
      ],
      "author": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Mon Oct 29 23:24:21 2018 -0500"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Mon Oct 29 23:24:21 2018 -0500"
      },
      "message": "VOL-1289 - Update Resource Manager to support per-interface ranges\n\nFix indent error by extraneous tab\n\nChange-Id: I078cfd97d860dc16e99fd7c4905c0f40a431c0f1\n"
    },
    {
      "commit": "1dd47089f1f0d0290945c5bdb897e6a04c03bfad",
      "tree": "e425748e37c9df3a099857abf03f28531880105e",
      "parents": [
        "deaebc9202fe3c156051983ff901bcbefbf55b1e"
      ],
      "author": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Tue Oct 23 13:12:26 2018 -0500"
      },
      "committer": {
        "name": "Craig Lutgen",
        "email": "craig.lutgen@tellabs.com",
        "time": "Mon Oct 29 20:40:46 2018 -0500"
      },
      "message": "VOL-1289 - Update Resource Manager to support per-interface ranges\n\nUpdated Resource Manager and OpenOLT to support constructs for managing\nresource pools by 1) each interface, 2) by all interfaces that share\na common technology, and 3) by all interfaces on the board.\n\nThe OpenOLT agent now supports returning, via DeviceInfo, a list of\n1 or more range specifications. Each range corresponds to a unique\ntechnology and identifies which interfaces on the board use that\ntechnology and the start/end specifications for each resource type,\ne.g. resource \"pool\". Options are provided for each pool to\nindependently be configured for (1) pool-per-interface, (2) pool-\nper-technology, or (3) pool-per-device, a.k.a global.\n\nA separate Resource Manager instance is used for each technology\nrange specification that manages (1) and (2) options. For (3),\none of the Resource Managers (arbitrarily chosen) is designated\nas the \"global\" Resource Manager that is delegated to from\nthe subordinate RMs for those pools configured for (3) pool-per-\ndevice.\n\nFor all pools, the Tech Profile is first read, if present. Then,\nthe device\u0027s technology range specification is overlayed to form a\nsubset of overlapping ranges. Then, globally-shared pools overalyed\nagain to form the overlapping ranges amongst all learned DeviceInfo\npools and TechProfile ranges.\n\nPresently, behavior is undefined if no overlapping range exists\nbetween TP and DevInfo ranges.\n\nBackwards compatibility with OpenOLT agent drivers that only\nsupport the original, single technology interface by synthesizing\na single range encompassing all interfaces with the start/end\nspecifications. In this case, the EdgeCore/BAL limitation for\nresource sharing is set for Alloc ID and GEM Port ID.\n\nChange-Id: I507ac013a114950dc0155b98a38406a42e2fba87\n"
    },
    {
      "commit": "632f11b976be96bf39308df589fde7c347d201e2",
      "tree": "a5f3b31a43633a80bb405406459be8a80f5dd061",
      "parents": [
        "3960fae131183e0a560c6194a024fb9c8a33192e"
      ],
      "author": {
        "name": "lcui",
        "email": "lcui@cigtech.com",
        "time": "Tue Oct 09 10:59:00 2018 -0700"
      },
      "committer": {
        "name": "Lin Cui",
        "email": "lcui@cigtech.com",
        "time": "Tue Oct 09 20:26:57 2018 +0000"
      },
      "message": "VOL-1276 Need to Add Vendor in Resource Manager in OpenOLT Adapter\n\nChange-Id: Ie62b975b9c707d8c14167e841d067cc756eb1e79\n"
    },
    {
      "commit": "1e77ea0e749cf51b5782cd1863d7f43827a7128d",
      "tree": "0934533f2fb85791e8ab55cb5ff86fb8643118ce",
      "parents": [
        "b2bbc5fc07ba120f7a7ba753d5b6058631d25c5a"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Mon Sep 24 09:10:35 2018 -0700"
      },
      "committer": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Wed Oct 03 23:57:38 2018 -0700"
      },
      "message": "VOL-1233: Change pon resource manager to use blocking KV client library\nVOL-1232: PON Resource Manager allocates same alloc id across different pon ports, and is not acceptable by asfvolt16 platform\nVOL-1245: When OpenOlt device is delete, there is Unhandled error during the deletion of child brcm_openomci ONUs\n\nChange-Id: I3f939cb12e0456b2014a133968a77fba1c4c6e63\n"
    },
    {
      "commit": "141ced8550a21d718aee36e6ce0cf0700f5194f5",
      "tree": "694bd1cb1080265492ae628ad20e3376ba748193",
      "parents": [
        "db9a86eeeacac1bce757c81b622f7237187c65f5"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Mon Sep 17 20:19:14 2018 -0700"
      },
      "committer": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Mon Sep 17 20:19:14 2018 -0700"
      },
      "message": "VOL-948: Implementation of ResourceManager module and corresponding changes in OpenOlt adapter\n\nChange-Id: I7df8226ea1a13198f1be1e15838c69cd54890239\n"
    },
    {
      "commit": "4ca78b58ebeb388c02068806dd074bc8b509c779",
      "tree": "f96f2566f7d31c56e178bde1336a7077f07dc6ec",
      "parents": [
        "c68b3add917e61b8ac735e7095c5c7b4d0e57759"
      ],
      "author": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Mon Sep 17 15:33:07 2018 +0000"
      },
      "committer": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Mon Sep 17 18:10:05 2018 +0000"
      },
      "message": "Revert \"VOL-948: Implementation of ResourceManager module and corresponding changes in OpenOlt adapter\"\n\nThis reverts commit f134c71f3b45765850995c66c3c8dbd7180fc405.\n\nChange-Id: I96b6fe11db25302de3ea8e4a40ed5aba78e8730b\n"
    },
    {
      "commit": "f134c71f3b45765850995c66c3c8dbd7180fc405",
      "tree": "178aa02cdc5cd069f6f5dca4c4ff26953b343781",
      "parents": [
        "83dedc1a0ca383bafe0d9a9989028c3553c1daf6"
      ],
      "author": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Mon Aug 27 04:11:07 2018 -0700"
      },
      "committer": {
        "name": "Girish Gowdru",
        "email": "ggowdru@radisys.com",
        "time": "Mon Sep 17 06:22:05 2018 -0700"
      },
      "message": "VOL-948: Implementation of ResourceManager module and corresponding changes in OpenOlt adapter\n\nChange-Id: Ie55ca23e975cf640cce094948a06ab5e12834895\n"
    },
    {
      "commit": "83dedc1a0ca383bafe0d9a9989028c3553c1daf6",
      "tree": "a5b923211c41f5163d4987457fc0a98cfe1f76ca",
      "parents": [
        "a171b6e70f4cf60f8357debbd4314a0c2713f1f1"
      ],
      "author": {
        "name": "Matteo Scandolo",
        "email": "teo@opennetworking.org",
        "time": "Sun Sep 16 15:11:44 2018 +0000"
      },
      "committer": {
        "name": "Shad Ansari",
        "email": "shad@opennetworking.org",
        "time": "Sun Sep 16 19:39:46 2018 +0000"
      },
      "message": "Revert \"Adding TRACE level to VOLTHA logs\"\n\nThis reverts commit 3d7abcced71b0f67d11ca028907803494a0b0a1e.\n\nChange-Id: I9efb08383389c5150cc070de902e6bb1c9736e30\n"
    },
    {
      "commit": "3d7abcced71b0f67d11ca028907803494a0b0a1e",
      "tree": "b1dbdd1c989e0fe82385b2450c9c0e98f9ab4f46",
      "parents": [
        "6c53996f89dedaa699db7161fa461c14ec2f2703"
      ],
      "author": {
        "name": "Matteo Scandolo",
        "email": "teo@opennetworking.org",
        "time": "Thu Sep 13 17:02:00 2018 -0700"
      },
      "committer": {
        "name": "Nicolas Palpacuer",
        "email": "np202g@att.com",
        "time": "Fri Sep 14 18:40:55 2018 +0000"
      },
      "message": "Adding TRACE level to VOLTHA logs\n\nChange-Id: Ieaaa707cadf2c17842ce8595bded444bce69ec57\n"
    },
    {
      "commit": "6dfca94d4ae3ee9822df608fece82990e4fcabb2",
      "tree": "7b9389fdea74841360fc8300985362a06ec81ca6",
      "parents": [
        "b03a04b2836db0a198a088f7c659010817522da2"
      ],
      "author": {
        "name": "Richard Jankowski",
        "email": "rjankows@ciena.com",
        "time": "Wed Aug 15 15:22:26 2018 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Aug 15 20:15:12 2018 +0000"
      },
      "message": "VOL-1101: Implement a Twisted Python shim layer to interface with any KV store\n- Moved methods get, list, put, delete, reserve, renew_reservation,\n  release_reservation, and release_all_reservations from each of the\n  implementation classes to the parent KVClient.\n- Did not move method _op_with_retry because it invokes different\n  target methods and handles different target exceptions, where\n  the target is Etcd or Consul.\n\nChange-Id: I7c5c06ab5d554e17b8f7658b9b11b22cb8e492d8\n"
    },
    {
      "commit": "8af3c0e9348142ca07e849db8ce494ce66ea15f6",
      "tree": "0b886092d7bfec86538161c0deef36769285fec1",
      "parents": [
        "921f8cfdac428d249385c0edb8c69b8e2b9a2da4"
      ],
      "author": {
        "name": "Richard Jankowski",
        "email": "rjankows@ciena.com",
        "time": "Tue Aug 14 16:07:18 2018 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Aug 15 14:55:58 2018 +0000"
      },
      "message": "VOL-1101: Implement a Twisted Python shim layer to interface with any KV store\n* Current support is for Etcd and Consul only\n* kv_client.py describes the interface\n* consul_client.py contains the Consul implementation\n* etcd_client.py contains the Etcd implementation\n* kvstore.py contains a factory function\n\nChange-Id: I895540eda13a78bc755adbba78a5716d7fa59612\n"
    },
    {
      "commit": "41513bfe35218ffd6964e54cb468a4671688b516",
      "tree": "bc7f84f459de0b0ce59253edc519014c37313401",
      "parents": [
        "16138de840ace426ef58d10011b73bc4cca88336"
      ],
      "author": {
        "name": "Zack Williams",
        "email": "zdw@opennetworking.org",
        "time": "Sat Jul 07 20:08:35 2018 -0700"
      },
      "committer": {
        "name": "Zack Williams",
        "email": "zdw@opennetworking.org",
        "time": "Sat Jul 07 22:45:38 2018 -0700"
      },
      "message": "Fixes to pass license check\n\nChange-Id: If9a17321030490c70d9a8fdd49adfe8b912c6fe7\n"
    },
    {
      "commit": "170630c73d05bb295b6a527868d46e1de749426a",
      "tree": "3a73b745e8d937c5365f13357d8f4f17de2659e2",
      "parents": [
        "33f1a8272f711f03ff0e8ff8ecd6eb700a7c81fb"
      ],
      "author": {
        "name": "Chip Boling",
        "email": "chip.boling@adtran.com",
        "time": "Mon Jun 11 12:03:55 2018 -0500"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Jun 14 19:34:10 2018 +0000"
      },
      "message": "VOL-943: Fix for event publish loop dropping subscribers\n\nChange-Id: I96ca0a5bf0b06ee12140966dbfb0a15290e130df\n"
    },
    {
      "commit": "50b286dc4903e50bd86c437b06473c8cc04c28f9",
      "tree": "e04b91f05153afa5762988ecaed38fe05a80497a",
      "parents": [
        "bcea2f4ad27b2dc3d39557963d16812e46952a22"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Mar 02 17:44:30 2018 -0500"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Mar 05 17:17:56 2018 +0000"
      },
      "message": "[VOL-634] Remove fluentd logging reference from voltha services\n\nThis update removes the \"hardcoded\" logging framework (fluentd)\nfrom the voltha, ofagent and netconf services.  The logging is\nnow determined at deployment time.  Testing was done in kubernetes\nenvironment and minimally in docker swarm mode environment (docker\nswarm mode is not required for voltha 1.3).  A separate Jira will\nbe raised to adjust the docker swarm deployment files, i.e. direct\nthe logs to fluentd/fluentd-agg listen ports instead of writing locally.\n\nChange-Id: Ic780fc9633f0f833f961c97dc59d89eed2112a53\n"
    },
    {
      "commit": "e9677d4445cb4573a4845ec5ed15ee49c28d595a",
      "tree": "64f9a80c77238c8569e08801463193fc645c2b50",
      "parents": [
        "1ee03e46afb8931a1abf5f7343d1e3c07391fc29"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Tue Feb 20 17:41:05 2018 -0500"
      },
      "committer": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Tue Feb 20 17:41:05 2018 -0500"
      },
      "message": "VOL-622:  Enforce datapath id (DPID) to be set as a mac address of\nthe OLT when a logical device is creating.\n\nChange-Id: Ief3a8b0277dfb786fcb8d30d5a6ce6113034433f\n"
    },
    {
      "commit": "7ec781d0b6f7325bd26484efa8b3a9812867a58c",
      "tree": "2eb5e1a6e6ffc897c50f49c4069ee45c4f182dc9",
      "parents": [
        "48946176b95f048a11fb34cb85d6a9871a9116e5"
      ],
      "author": {
        "name": "David K. Bainbridge",
        "email": "dbainbri@ciena.com",
        "time": "Fri Jan 19 18:41:16 2018 -0800"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Jan 22 16:32:27 2018 +0000"
      },
      "message": "VOL-601 check for KEY before dereference\n\nChange-Id: I6da1d6f36015acdb2743da77b01091a1d6e224c0\n"
    },
    {
      "commit": "bd0fe17d0a9e338c1940166c8a53b9f961b7fdec",
      "tree": "d999eaab68e8d0cb6785a36b2e05ca5e27c9f951",
      "parents": [
        "24dad1eed074b0cd41ba593c4c81eb8cabf0833f"
      ],
      "author": {
        "name": "David K. Bainbridge",
        "email": "dbainbri@ciena.com",
        "time": "Wed Jan 17 09:35:49 2018 -0800"
      },
      "committer": {
        "name": "David K. Bainbridge",
        "email": "dbainbri@ciena.com",
        "time": "Wed Jan 17 09:36:09 2018 -0800"
      },
      "message": "VOL-594 remove unused containers\n\nChange-Id: I82403f68969691516c8b500e876440f3f3c0e559\n"
    },
    {
      "commit": "9b9b7a355930a475ec638a9a56e4c319e4959fb4",
      "tree": "ea0bcf474875c82e3b9d0eba525dbd5842643f8d",
      "parents": [
        "a00efaf3a559deb62b01f3737cfa1c635ec908f8"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 17 12:38:57 2017 -0500"
      },
      "committer": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 17 12:56:25 2017 -0500"
      },
      "message": "[7055] : Minor cleanup.\n\nVOL-548:  Frameio test fix.  Submitted on behalf of Karthick Ramanarayanan\n\nChange-Id: If05d89bdb027faa21dc7a8fd05d3014d6d2ad01a\n"
    },
    {
      "commit": "507d92293bf0b394dd69ed0caa74802863535e06",
      "tree": "dcd3a9ce74c5efc1908227a9bd273f4ebc64b176",
      "parents": [
        "3d3f99a357fb852b568d6f645976ade2c98c40f6"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Tue Oct 10 16:23:49 2017 -0400"
      },
      "committer": {
        "name": "Sergio Slobodrian",
        "email": "sslobodr@ciena.com",
        "time": "Thu Oct 12 07:40:28 2017 -0700"
      },
      "message": "[ 6322 ] Update the code to only accept a MAC address as a datapath id (DPID). If\none is provided and it is already assigned to a logical device then an exception\n will be raised.\n\nVOL-500 : Allow adapters to set the datapath id using the MAC address of the OLT device.  The logical device id will use this datapath id as well\n\nChange-Id: Ib6ae48861c3a449000360469f7fb7332ff39961a\n"
    },
    {
      "commit": "97bef1e953e67d14454cd2ef14ae2b46117214e0",
      "tree": "85aefeaf4b96630615ff84a0116631291f43262e",
      "parents": [
        "868437070b6edf808987d045620b7436a753a400"
      ],
      "author": {
        "name": "Chip Boling",
        "email": "chip.boling@adtran.com",
        "time": "Tue Aug 29 11:44:28 2017 -0500"
      },
      "committer": {
        "name": "Niren Chidrawar",
        "email": "niren.r.chidrawar@nokia.com",
        "time": "Thu Sep 07 16:16:33 2017 -0700"
      },
      "message": "VOL-400: configurable alloc-id and gemport-id with min gemid\u003d1024\nchange requests for previous patch set. Working on itest coverage\nadded itests for new parameters including explicit zero test\nso that if zero is used it is same as if not used and it will auto\nselect the next available id (alloc-id or gemport-id)\n\nChange-Id: I2c41e0a0811614aa9c1c77ad52a13b0dd504385b\n"
    },
    {
      "commit": "cbe30830ac1495409cfbdeb37a59d2e0523dd33e",
      "tree": "cb7412115b13520d36a5a7b7e4f0493c4f999952",
      "parents": [
        "d49da3694ec3ffb1abd6096d7282934150a9f018"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Aug 25 10:43:27 2017 -0400"
      },
      "committer": {
        "name": "Sergio Slobodrian",
        "email": "sslobodr@ciena.com",
        "time": "Fri Aug 25 10:50:29 2017 -0700"
      },
      "message": "VOL-398, VOL-399:   Include vcoreids in the log and start the grpc local and global services after the reconcilation process has been completed\n\nChange-Id: I5dece92c0d4cc8ea0724b07c5d8e76a06614278a\n"
    },
    {
      "commit": "8e435b4d324deeff014cc1bc0111198cd59ad705",
      "tree": "a74c06f767103f37d7236f18ad624f1ac2e3eef8",
      "parents": [
        "63ce1b48b50fd42f12ca9c7c9d1e332db40a987a"
      ],
      "author": {
        "name": "Rachit Shrivastava",
        "email": "rachit.shrivastava@nokia.com",
        "time": "Tue Aug 08 23:15:26 2017 -0400"
      },
      "committer": {
        "name": "Rachit Shrivastava",
        "email": "rachit.shrivastava@nokia.com",
        "time": "Tue Aug 08 23:27:33 2017 -0400"
      },
      "message": "VOL-351: Assign unique ID to Channelgroup xPON object for HA\n\nChange-Id: I14bb71dde475aaaafc7c8b53ec9fbc3d1a3dc3cc\n"
    },
    {
      "commit": "a182e91e9199cdec971e6d44dc3901433613616d",
      "tree": "6632ee5af48b2eb4c38f2d2a6e05e20c5692a92d",
      "parents": [
        "b1602a34a19e3498aaee31b229c0c10a2b04b19a"
      ],
      "author": {
        "name": "Rachit Shrivastava",
        "email": "rachit.shrivastava@nokia.com",
        "time": "Fri Jul 28 15:18:34 2017 -0400"
      },
      "committer": {
        "name": "Rachit Shrivastava",
        "email": "rachit.shrivastava@nokia.com",
        "time": "Fri Jul 28 15:18:34 2017 -0400"
      },
      "message": "VOL-270: Investigate and support clustering support for xPON protos\n\nEnsuring global-scope for:\n * ChannelgroupConfig\n * ChannelpairConfig\n * ChannelpartitionConfig\n * ChannelterminationConfig\n * VOntani\n * Ontani\n * VEnets\n\nMaking relevant changes into itests for xPON\n\nAdding xPON test cases for test_dispatcher and global rest apis\n\nChange-Id: I8b1ed1cb314810886cd25bee82ffc741f7fe6fcf\n"
    },
    {
      "commit": "26a8c01f0cd1e5599d6243eabd6864a2482d6a17",
      "tree": "1eca714a3f8bb3b183e7f8e6ba6722490ead5e66",
      "parents": [
        "551646719dadee6eaee852194c586f6e07d8c2e6"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Jul 07 18:25:47 2017 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Jul 10 08:43:18 2017 -0700"
      },
      "message": "This update add two arguments to voltha when it gets started:\n   1) inter-core-subnet: the subnet to connect to for inter core communication\n   2) pon-subnet: the subnet to connect to for PON communication\n\nThis requires that the voltha_net is created with a specified subnet and that\nsubnet is specified in the docker compose file, e.g.:\n\ndocker network create --driver overlay --subnet 10.0.1.0/24 voltha_net\n\nAnd in the compose.yml file add the following options:\n\n      - --inter-core-subnet\u003d10.0.1.0/24\n      - --pon-subnet\u003d10.0.1.0/24\n\nThis update guarantees that the voltha instance is connected to the correct\nnetwork.\n\nChange-Id: I5d29ab54282c4ba9aff5ba165fdb37352cfaa0fd\n"
    },
    {
      "commit": "ccc4225fab3327f7eed1a9e00837de66a8a596dd",
      "tree": "28e54817ff7b993540dc99a86e63e2cc89fbb116",
      "parents": [
        "108f05c060f5b7d2cdcc24121c467519774b7428"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Thu Jul 06 23:00:49 2017 -0400"
      },
      "committer": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Thu Jul 06 23:00:49 2017 -0400"
      },
      "message": "Update the voltha code to make use of the interface option and add\na new voltha swarm file.\n\nChange-Id: Icf2bd5a35aea3a8aa55de58acb56bfa6f4b34e0d\n"
    },
    {
      "commit": "08d48d2394ad67e873b3b5b663d1ebd734ba6cc5",
      "tree": "0bfe12a61f2bd382219b20c63342f0ee297a385d",
      "parents": [
        "7294b25c80e4b116c627f6680a32c83f407ae3a7"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Thu Jun 29 19:42:49 2017 -0400"
      },
      "committer": {
        "name": "Sergio Slobodrian",
        "email": "sslobodr@ciena.com",
        "time": "Fri Jun 30 07:47:31 2017 -0700"
      },
      "message": "[ 4460 ] Minor fix when getting invalid voltha instance\nInitial commit of the Global Forwarder.\n\nChange-Id: I6c619a8589abaeecba00c004a42beaf063f31448\n"
    },
    {
      "commit": "96e37a7916e0a28f8f4809a21d91c5e5b13fab59",
      "tree": "c3b08525580dd3f4c3954861099efd69d2e05282",
      "parents": [
        "9be9e5e50bd5c7fbbf0a29e12832552af294a151"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Mon Jun 19 17:19:21 2017 -0400"
      },
      "committer": {
        "name": "Sergio Slobodrian",
        "email": "sslobodr@ciena.com",
        "time": "Tue Jun 20 06:41:18 2017 -0700"
      },
      "message": "Missing file from previous commit\n\nChange-Id: I79d1f63052eb2d65d6c9726ed0340c1d57997e53\n"
    },
    {
      "commit": "032d3307fb72066fbdfb8b5b2cdf010c649876d8",
      "tree": "36c8bf11cf3add1a8c2a76d362fc8c9ae92a89ae",
      "parents": [
        "d24189ec6bb130c4d517a31ceb9864a64c83a4de"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Fri Jun 09 14:50:04 2017 -0400"
      },
      "committer": {
        "name": "Sergio Slobodrian",
        "email": "sslobodr@ciena.com",
        "time": "Mon Jun 12 06:37:05 2017 -0700"
      },
      "message": "[ 4222 ] Minor changes after code review\n\nThis is the initial commit for Persistence and Voltha restart.\nIt consists of the following:\n1) Introduction of a store config id which represents the data of\n   a Voltha instance.\n2) The Coordinator service dynamically allocates a store config id\n   to each voltha instance on startup.  It also reallocates the same id\n   to another voltha instance in the event the previous voltha instance\n   with that store id went down.\n3) All voltha data is stored in Consul as KV\n4) When a Voltha instance is started and get allocated a config id that\n   refers to existing data (from an instance that went down), then it will\n   load all the data from Consul into its own memory and start a reconciliation\n   process.\n5) During the reconciliation process, the necessary agents and\n   callbacks are created as per the data.  A reconcile() API is also\n   invoked on the adapters to perform their side of the reconciliation.\n6) The Reconciliation process is implemented in ponsim OLT and ONU\n7) A set of integration tests focussed on persistence and voltha\n   restarts.\n8) Fix a few bugs along the way\n\nChange-Id: I8c2bbae3b2fc79d0afd8ce3b7b0be6bde93e492a\n"
    },
    {
      "commit": "85150c22c9ce37c83f8e6ef6e6edbb10f06417f8",
      "tree": "3dca5e6aa783aaf219ac1440b9eb85b329a34fb1",
      "parents": [
        "3eab2bba9841a159a78eb52a8c772d77e3d33c71"
      ],
      "author": {
        "name": "ggowdru",
        "email": "ggowdru@radisys.com",
        "time": "Wed Apr 26 07:24:40 2017 -0700"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Apr 28 10:31:34 2017 -0700"
      },
      "message": "Specify an optional node parameter, which shall be used to return\na list of services in the ascending order RTT from that node.\n\nChange-Id: I4f7ae563bc86465aae91ac6fe21bdf1e7a171bd6\n"
    },
    {
      "commit": "1ef322b995878d2786b81c3fa9cceec80c532a4e",
      "tree": "120e4d9a073e0604c64effc454db873f98b55196",
      "parents": [
        "ba9b3d8dc7862997442c594144d7f52d351b52a8"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Mar 16 10:39:59 2017 +0100"
      },
      "committer": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Fri Mar 17 10:54:57 2017 +0100"
      },
      "message": "fixes for omci exchange in pmcs_onu\n\nChange-Id: I078dd6a694dbedddddd28e6324cc9b8d83d33bb3\n"
    },
    {
      "commit": "c35866bfa4779fbfc4a9e69acda3ec0340f808fe",
      "tree": "3ae97cf06ae40e4ccc49244bfa833f39fd42df11",
      "parents": [
        "bf974d075d763651a0a28c6cdd2d8b1365be6dd7"
      ],
      "author": {
        "name": "Rouzbahan Rashidi-Tabrizi",
        "email": "rrashidi@ciena.com",
        "time": "Thu Feb 23 14:57:58 2017 -0500"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Sat Feb 25 07:07:00 2017 -0800"
      },
      "message": "Fix for PONSIM exit issue with execption\n\nChange-Id: Id249cb67760c8aa5708dccca63b60f06608d4900\n"
    },
    {
      "commit": "37494a747a8c9c8f0891f76d470351f576927d1b",
      "tree": "3083d3daf6a2e1fbe42fa978c4ba0b9d0e83f6da",
      "parents": [
        "8ffb893566561db58f687ee7920e8a7e9e95e062"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 26 11:59:52 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Jan 26 22:27:09 2017 -0800"
      },
      "message": "Cleaning up TODO items\n\nremoving TODO on line 162 of chameleon/grpc_client\nand entering it into backlog as CORD-815\n\nremoving TODO on line 135 of cli/utils.py\nand entering it into backlog as CORD-816\n\nremoving TODO on line 155 of cli/utils.py\nand entering it into backlog as CORD-817\n\nremoving TODO on line 94 of common/utils/consulhelpers.py\nand entering it into backlog as CORD-818\n\nChange-Id: I736ea678b16c9b0e85a3cf0aabe96da19caae64d\n"
    },
    {
      "commit": "16c0da7336a39e06c1f90be9c07c9341c2fff5c3",
      "tree": "f9efb689dc443699294d00f54c15831d990e44a4",
      "parents": [
        "3e6f0898bbeba59a02fdb99911a7b80989ff8bde"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 19 12:26:02 2017 -0600"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Sun Jan 22 16:26:03 2017 -0800"
      },
      "message": "Fixing build.md tests\n\nAlso adding some utility commands in consulhelpers, namely:\n\n- verify_all_services_healthy\n    - checks all services registered in consul are healthy\n    - can also check a single service by name\n- connect_to_consult\n    - connects to consul, unsurprisingly.\n- get_all_services\n    - returns all the services\n\nChange-Id: I5aaa4b7f5567fb6d7e8b1a9887bcc7592f9e2847\n"
    },
    {
      "commit": "3e6f0898bbeba59a02fdb99911a7b80989ff8bde",
      "tree": "0f594768c537cb7baef3d8ab6c7633cce7599f7e",
      "parents": [
        "c99552dd22611a1ba510d60fb8b58dd91c6109ea"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Jan 19 11:51:40 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Jan 19 11:51:53 2017 -0800"
      },
      "message": "FrameIO to allow sharing same Linux interface\n\nChange-Id: I30a8dd660477980069801952861d38e0dbe09739\n"
    },
    {
      "commit": "b634d90bd9e6e5255d62dda00c58c30cb61a2253",
      "tree": "6a95f8dbdfc5b2b88a322fa7e3af9af653773140",
      "parents": [
        "b5d72f13fa5cb73024fc9857effde5875695d3b4"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Mon Jan 16 13:10:17 2017 -0600"
      },
      "committer": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Mon Jan 16 13:11:35 2017 -0600"
      },
      "message": "enabling dumb-init for shovel\n\nChange-Id: I6bb546c21866f4b6d8f1095079f288945080396d\n"
    },
    {
      "commit": "9b9f1adaff80cd85a96ad190d052a6d84abf3226",
      "tree": "10443c2b6dd4395dd5f3d8fa94d25f656bbcd788",
      "parents": [
        "3578a1c3ac3c9898acff32b1e8b940ef18ceac1e"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Jan 10 15:43:32 2017 -0500"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Jan 11 06:33:31 2017 -0800"
      },
      "message": "Bug fixes\n\nChange-Id: I67349475a93d523795bbeeb28e45a0d3e416028f\n"
    },
    {
      "commit": "90fc35d555741ae0b7de1d11b9a599a9f2f2ddde",
      "tree": "88ea9a9f6bb12b1b7fdee0facffda28268b348ca",
      "parents": [
        "10eadcdb5a957b4bed5388601262f32db8cd1205"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Jan 09 08:42:04 2017 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Jan 09 23:12:29 2017 -0800"
      },
      "message": "Reformatting kafka logs\n\nChange-Id: I853d3db2324c6cf96ccd5c7d08fe295299e38688\n"
    },
    {
      "commit": "3eb27a56d762da3e4412e79b45a615ded900aad8",
      "tree": "e92eba2fa14f7d4ab77608022bf3680bae146ee4",
      "parents": [
        "9fbb223b548e5b2cd35d8dc77d2f423e176468d2"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Jan 03 21:56:48 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Jan 03 21:56:48 2017 -0800"
      },
      "message": "Happy New Year 2017\n\nChange-Id: Ib9a77f5e7d8d857a519d20904ec0d745e32eb257\n"
    },
    {
      "commit": "8017520ce20396dabf017daa33098ec81609a158",
      "tree": "ff4c0ddbda8c296dc002f4c116cb94becd960758",
      "parents": [
        "d036b7ed0ffa8dd67c7a559800b8ebd8a26b844f"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Dec 24 00:17:51 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Dec 24 00:17:51 2016 -0800"
      },
      "message": "Cleaner CLI\n\nChange-Id: I81916ee10450e6f2137a3ff72a693dcf521c8a85\n"
    },
    {
      "commit": "348d193a3429cd791b84a9df85e035d81407c117",
      "tree": "d234b25c83607f758a63a6d7e105da84a58ef47a",
      "parents": [
        "781eeb6ad440941ab90f9f9dbd5d6522e9c71362"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Dec 10 01:10:07 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 20 00:34:46 2016 -0800"
      },
      "message": "Group mods after San Jose bakeoff\n\nChange-Id: I29146da2e77e223e70a4bffea6a475a8af94f2f0\n"
    },
    {
      "commit": "e3ece3ca8f50803e7b1d7eb25aca3c692f90448f",
      "tree": "ffa5cdd23f850737a7091e279daebc23290f10d8",
      "parents": [
        "217a12eb75007ad814269eb4b8e63108c0d81845"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 19 23:32:38 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 19 23:32:38 2016 -0800"
      },
      "message": "Added OMCI message parsing tests\n\nChange-Id: Ic864446241c3507dcfb389c7e774d0aa79de3b55\n"
    },
    {
      "commit": "3bfff6645d489ec9982d35b01d002043902b3826",
      "tree": "63f61a8837f06a9420cb1a9c0de66f41899837a1",
      "parents": [
        "cc153aaac104650fd22b0281bb12c1c90cdef8b8"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 14 23:41:49 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 14 23:41:49 2016 -0800"
      },
      "message": "Manhole ssh port for troubleshooting\n\nChange-Id: I2c92a6108e04b664c12f97da88a49a3b80a4d4a7\n"
    },
    {
      "commit": "89a27307b78281fa7d90a2518aec81723927ffdd",
      "tree": "b1c85bcd0a0475c88b7516739d30e38a5f4ab798",
      "parents": [
        "29d10af098e4b77b9e8636ffccb4589423e1c357"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Dec 08 16:53:06 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Dec 10 12:03:38 2016 -0800"
      },
      "message": "Improved FrameIO support and proxy messaging\n\nSpecific changes:\n- FrameIO support for Mac OS X (making testing easier)\n- Message passing between root and child devices implemented\n  (example use in simulated_olt and simulated_onu adapters\n- Making FrameIOMgr accessible via registry so that modules\n  can easily reach it\n- Making \"main\" to be a registered component so that command\n  line args and config file based info is accessible to all.\n- Minor clean-ups and improvements\n\nChange-Id: I6812dd5b198fef5cb19f17fc8d7948d3fba8b625\n"
    },
    {
      "commit": "66862035accde9e1dcb32f7c711465d00e543af8",
      "tree": "366f637706444a93514af802d87889d3572073b9",
      "parents": [
        "00d9a842344958e9361aa02f15775f9151b3eab9"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Nov 28 14:28:39 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 07 11:50:29 2016 -0800"
      },
      "message": "Flow decomposition and miscellenous improvements\n\nSpecifically:\n\nThe biggest addition is an initial flow decomposition\nimplementation that splits flows and flow groups\ndefined over the logical device into per physical\ndevice flows, based on a very crude and heuristic\napproach. We expect this part to be much improved\nlater on, both in term of genericness as well as\nspeed.\n\nThe flow decomposition is triggered by any flow\nor group mods applied to a logical device, and it\nconsequently touches up the affected device tables.\nThis uses the POST_UPDATE (post-commit) mechanism\nof core.\n\nThere is also an initial arhcitecture diagram added\nunder docs.\n\nAdditional improvements:\n\n* Implemented metadata passing across the gRPC\n  link, both in Voltha and in Chameleon. This paves\n  the road to pass query args as metadata, and also\n  to pass HTTP header fields back and forth across\n  the gRPC API. This is alrady used to pass in depth\n  for GET /api/v1/local, and it will be used to\n  allow working with transactions and specific config\n  revs.\n* Improved automatic reload and reconnect of chameleon\n  after Voltha is restarted.\n* Improved error handling in gRPC hanlers, especially\n  for the \"resource not found (404)\", and bad argument\n  (400) type errors. This makes gRPC Rendezvous errors\n  a bit cleaner, and also allows Chameleon to map these\n  errors into 404/400 codes.\n* Better error logging in generic errors in gRPC handlers.\n* Many new test-cases\n* Initial skeleton and first many steps implemented for\n  the automated testing for the cold PON activation\n  sequence.\n* Convenience functions for working with flows (exemplified\n  by the test-cases)\n* Fixed bug in config engine that dropped changes that\n  were made in a POST_* callback, such as the ones used\n  to propagae the logical flow tables into the device\n  tables. The fix was to defer the callbacks till the\n  initial changes are complete and then execute all\n  callbacks in sequence.\n* Adapter proxy with well defined API that can be\n  used by the adapters to communicate back to Core.\n* Extended simulated_olt and simulated_onu adapters to\n  both demonstrate discovery-style and provisioned\n  activation style use cases.\n* Adapter-, device-, and logical device agents to provide\n  the active business logic associated with these\n  entities.\n* Fixed 64-bit value passing across the stack. There was\n  an issue due to inconsistent use of two JSON\u003c--\u003eProto\n  librarier, one of which did not adhere to the Google\n  specs which recommend passing 64-bit integer values as\n  strings.\n* Annotation added for all gRPC methods.\n\nAll Voltha test-cases are passing.\n\nChange-Id: Id949e8d1b76276741471bedf9901ac33bfad9ec6\n"
    },
    {
      "commit": "00d9a842344958e9361aa02f15775f9151b3eab9",
      "tree": "5a0d7a3202a5abef970fe6f870d91e908258a498",
      "parents": [
        "ee8d0b50900f0f40f2170f6c74d85b1ffffa59d8"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 23 11:18:23 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 07 11:50:29 2016 -0800"
      },
      "message": "Major rework of gRPC handling (do not merge yet)\n\nIncludes the following chages:\n\n* Refactored proto files\n  - separation of logical devices vs devices\n  - common flow related message types moved to openflow_13\n  - most RPC is defined in voltha.proto now\n* Expanded RPC definitions to cover now most of what we\n  need (a few device provisioning RPCs are still missing)\n* Reworked RPC handlers to work with new config tree\n* Implemented test cases for all existing RPCs, tested via\n  chameleon\u0027s REST service\n* Did away wih the OrderedDict internal representation\n  in the config nodes (3x performance boost on bulk\n  add, and negligible penalty in other ops)\n* Refactored transacton merge handling to align with\n  new structures\n\nChange-Id: I3740ec13b8296943b307782e86e6b596af78140e\n"
    },
    {
      "commit": "05fb71f7c46d5cd358ce475a73934f852e1e9eeb",
      "tree": "f20f9f549b1a31dd3d9d8576b5830715c6c9ec2c",
      "parents": [
        "a7b842ae84a7c5e92f84601266634c01afb80bbf"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Sun Dec 04 16:08:29 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Dec 04 23:43:54 2016 -0800"
      },
      "message": "Podder now runs with an associated thread pool.\n\nThis allows podder to parallelize requests to docker.\n\nChange-Id: Iacae80a63bcd68ef7b471d63dbb41b7314d3af20\n"
    },
    {
      "commit": "dafefe16ce5d946271ca9ac5a4fd36ec2a92bee8",
      "tree": "a0f218d28f01c9498ca63993e1c8987337be1158",
      "parents": [
        "7b1bab911a9e79da18247746f6b56168d24df049"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Nov 14 21:29:58 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 23 10:20:30 2016 -0800"
      },
      "message": "Config/management model framework initial version\n\nThis is the initial commit of the internal config\nmodel tree for Voltha.\n\nA system that borrows key concepts from Docker, repo,\nand git for multi-revision configuration handling with\ntransaction (commit/abort) logic, tagging, and the\nability to diff between config versions.\n\nKey features:\n* Stored model is defined using *annotated* Google protobuf\n  (*.proto) files\n* Model is kept in memory as Python protobuf message objects\n* The whole configuration is arranged in a nested (tree)\n  structure, made up of ConfigNode objects. Each\n  ConfigNode holds its config data as (possibly nested)\n  protobuf message object, as well as lists of \"pointers\"\n  to its logically nested children nodes. What message\n  fields are considered part of the node-local config vs.\n  what is stored as a child node is controlled by \"child_node\"\n  annotations in the *.proto files.\n* Each ConifgNode stores its config in immutable\n  ConfigRevision obects, each revision being identified\n  by a unique hash value, calculated from a unique\n  hash value of its local configuration as well as\n  the list of hash values of all its children node.\n* Collection type children nodes can be indexed (keyed)\n  so that they can be addressed with \"path\" notation\n  friendly to REST and other interfaces/APIs. Which\n  field is used as key is defined in the parent message\n  using \"key\" attribute of the \"child_node\" annotation.\n  Currently string and integer type fields can be used\n  as keys.\n* Changes to the model create new revisions in all\n  affected nodes, which are rolled up as new revisions\n  to the root node.\n* Root revisions can be tagged, tags can be moved\n* The root node by default keeps a rev, but provides\n  a mechanism to purge untagged revs.\n* All branch and leaf nodes auto-purge interim revs\n  not needed. A rev is not needed if no one refers\n  to it.\n* Diffing between revs is supported, it yields RFC6902\n  jsonpatch objects. Diffing can be done between any\n  revs.\n* The main operations are: CRUD (we call them .add,\n  .get, .update, .remove)\n* Get can be recursive to an optionally limited depth.\n* There is support for Read-Only attributes (fields)\n* All CRUD operation support \"path\" based addressing.\n* There is support for an branch/leaf node perspective\n  implemented by ConfigProxy. This proxy, when attached\n  to an arbitrary node in the tree, provides all the\n  CRUD operations in that context, that is, path args\n  are used relative to that node.\n* Transaction support: All mutations made in a transaction\n  are invisible to others until the transaction is committed.\n  The commit is atomic (either all changes are applied\n  to the tree or none). Conflicts between transactions\n  are detected at the per-node level and a conflict\n  results in rejecting the conflicting transaction (first\n  one wins).\n* Registered callbacks: via the proxy objects an\n  observer can register for pre- and post- operation\n  callbacks. Also, there is a post-get callback which\n  can be used to augment stored data with real-time\n  data.\n\nI started hooking up the new config infrastructure to\nVoltha\u0027s CORE, but this is still in progress, as not\nall existing APIs have bee moved over yet.\n\nNote: I also lumped in some experimental files working\nwith \"Any\" types in protobufs\n\nChange-Id: Ic547b36e9b893d54e6d9ce67bdfcb32a6e8acd4c\n"
    },
    {
      "commit": "9d222026a2a72f13737bfc4e9f6fd6ab2066674c",
      "tree": "6cc39013a07a5b68558f5b5186a759fd899936bf",
      "parents": [
        "6e0241bdc67cdc2df0b317205c843cac004ab168"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Nov 10 16:11:09 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 10 21:11:36 2016 -0800"
      },
      "message": "Slaves config file is now a jinja2 template\n\nChange-Id: I593ea08f87997dbd99934ad3b34c38c34fe1b824\n"
    },
    {
      "commit": "7941d40d11b0ba83fbcebdc041bc564b4b8f4b84",
      "tree": "96f24da3aa32cab0ac9f56cb8f5b2846e29a8630",
      "parents": [
        "bf8bf28ea87c4c1b0f4a27d63465bac698db2aaa"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Tue Nov 08 00:11:20 2016 +0100"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Thu Nov 10 16:17:13 2016 -0800"
      },
      "message": "Redesign of Podder.\n\nPodder now only listens to events from the docker\napi. Docker event api will use a callback mechanism\nto take action when a container is started or stopped.\n\nAdding Dockerfile for podder and an entry into the\ncompose file.\n\nChange-Id: Ib5735078a69eab3af6076af94bc697ab3e82a239\n"
    },
    {
      "commit": "c61999aa8148b9bf3e08f0e8394f26741cd113ce",
      "tree": "38ea0e24d31c36917eacea643a4b9d57864edc86",
      "parents": [
        "7eeb2b35568aa53c175013d1bec1f84abd928c71"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Oct 27 16:44:27 2016 -0700"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Mon Nov 07 15:09:42 2016 -0800"
      },
      "message": "adding ability to start container and monitor their status\n\nChange-Id: I6cbfcf1046c3d9a452d4177564a6d6c1f3773b2d\n"
    },
    {
      "commit": "91350ebd11fc030359a79332bfe18e75da139d54",
      "tree": "d2307a6b468f41367acc9ecad67674d439a4d21b",
      "parents": [
        "d70cd4de56b7d8b57493a2d1077749d7c58fb3fe"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Nov 05 15:33:53 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Nov 06 13:46:28 2016 -0800"
      },
      "message": "Async frame receive/send module\n\nChange-Id: I75b6ecdecf05f2c72b3b0fa1191d849b7d8e67ef\n"
    },
    {
      "commit": "d70cd4de56b7d8b57493a2d1077749d7c58fb3fe",
      "tree": "af229c5f94e131d7346b739f1cd8bfe845fe5f3a",
      "parents": [
        "0df86c177f6e7f81abcc463ad560e6ea7a93f55e"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 03 23:23:36 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Nov 04 22:05:27 2016 -0700"
      },
      "message": "Moved event bus to common lib\n\nChange-Id: I530498db2d4fd3ba644dd4a92e0b6ce74bce3a27\n"
    },
    {
      "commit": "cd22adc23cff59dd5f6a96ec12a5b336036937ec",
      "tree": "f8884eee569867f43a28b450a6c2242f458f1221",
      "parents": [
        "862883a240b41c87dc49d956246edd2d37c604e1"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Oct 25 00:13:06 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Oct 28 08:34:51 2016 -0700"
      },
      "message": "Packet in/out streaming from ofagent to core\nGetting ready for packet streaming\n\nChange-Id: I8d70d4d6ffbb23c0d7ab20582e9afac49f9f6461\n\nSupport flow_delete_strict\n\nChange-Id: I5dab5f74a7daddcddfeb8691a3940347cb2fc11b\n\nPacket out halfway plumbed\n\nChange-Id: I799d3f59d42ac9de0563b5e6b9a0064fd895a6f6\n\nrefactored async_twisted\n\nChange-Id: I68f8d12ce6fdbb70cee398f581669529b567d94d\n\nPacket in pipeline and ofagent refactoring\n\nChange-Id: I31ecbf7d52fdd18c3884b8d1870f673488f808df\n"
    },
    {
      "commit": "c67ee3a5374a4adf8ea867d83f581134a3c5b8fb",
      "tree": "261be20ca1c4c11a9c307842f2ff2d2055fd2eb3",
      "parents": [
        "68b9be3860d9ee41bb9a971a7f2215b5ab7d37ea"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Tue Oct 25 23:24:03 2016 -0700"
      },
      "committer": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Tue Oct 25 23:24:03 2016 -0700"
      },
      "message": "WIP: Initial implementation of Podder\n\nPodder is a service which monitors consul registered services\nin order to spin up their dependencies. Dependencies are\nindicated as SERVICE_x_TAGS as a csv. Podder picks those\ndependencies up and spins up specified containers in their own\nnetwork. For example, if a voltha_1 is instantiated\npodder will spin up chameleon_1 and ofagent_1.\n\nChange-Id: I0c1add8530c78fc761e39fe58cf24f14e96c0ba4\n"
    },
    {
      "commit": "023ea7cbbc9482643579b92ab02b3ed104e1f575",
      "tree": "e75ec5bff25548904e2a8e358029cc5fe8bb6466",
      "parents": [
        "4ba198966634f48c11a7dfb5590b404b1b2a1f34"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Oct 16 19:30:34 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Oct 24 01:38:54 2016 -0700"
      },
      "message": "Async/streaming gRPC client/server proto\n\nThis experiment was to fine-tune how we can implement\nasync gRPC client and server code inside a Twisted\npython app.\n\nChange-Id: I945014e27f4b9d6ed624666e0284cc298548adb3\n\nMajor cleanup of openflow_13.proto\n\nChange-Id: I4e54eaf87b682124ec518a0ade1a6050a6ec6da8\n\nRelocated openflow_13.proto to voltha\n\nChange-Id: I66ae45a9142d180c2c6651e75c7a1ee08aef7ef8\n\nRemoved forced utest from make build\n\nChange-Id: If0da58e9d135ebde6ca68c3316688a03a7b10f2f\n\ntwisted openflow agent first pass\n\nChange-Id: Ibe5b4727ccfe92e6fd464ccd3baf6275569ef5d3\n\nstore openflow derived files\n\nChange-Id: Ib3e1384bb2ca2a9c0872767f7b793f96b0a154e2\n\nMinor cleanup\n\nChange-Id: I1280ed3acb606121b616a0efd573f5f59d010dca\n\nFactored out common utils\n\nChange-Id: Icd86fcd50f60d0900924674cbcd65e13e47782a1\n\nRefactored twisted agent\n\nChange-Id: I71f26ce5357a4f98477df60b8c5ddc068cf75d43\n\nRelocated openflow agent to ofagent\n\n... and preserved obsolete working (non-twisted) agent under\n~/obsolete, so we can still run the olt-oftest and pass tests,\nunit the new twisted based agent reaches that maturity point.\n\nChange-Id: I727f8d7144b1291a40276dad2966b7643bd7bc4b\n\nolt-oftest in fake mode works with new agent\n\nChange-Id: I43b4f5812e8dfaa9f45e4a77fdcf6c30ac520f8d\n\nInitial ofagent/voltha operation\n\nChange-Id: Ia8104f1285a6b1c51635d36d7d78fc113f800e79\n\nAdditional callouts to Voltha\n\nChange-Id: If8f483d5140d3c9d45f22b480b8d33249a29cd4e\n\nMore gRPC calls\n\nChange-Id: I7d24fadf9425217fb26ffe18f25359d072ef38fa\n\nFlow add/list now works\n\nChange-Id: Ie3e3e73108645b47891cef798fc61372a022fd93\n\nMissed some files\n\nChange-Id: I29e81238ff1a26c095c0c73e521579edf7092e21\n"
    }
  ]
}
