)]}'
{
  "log": [
    {
      "commit": "236bd95e15753ca56e7e443a8960a24cea240a21",
      "tree": "d0a89a597faf9d56dd267faccf89ee4a02a9530d",
      "parents": [
        "ba9cbd8c494b46da2004c9241296ec53665ae894"
      ],
      "author": {
        "name": "ggowdru",
        "email": "ggowdru@radisys.com",
        "time": "Tue Jun 20 20:32:55 2017 -0700"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Jun 22 10:41:40 2017 -0700"
      },
      "message": "  https://jira.opencord.org/browse/VOL-167\n  Device Management: Retrieve Software Version on the device\n\n  Provides a framework in voltha to retrieve the software\n  details on the device.\n\n  Addressed Review Comments\n\nChange-Id: I2938e6e1a57f95d41cc8f548a5ebad9c952a23db\n"
    },
    {
      "commit": "88518e86d0b45ae0943258446c75775b3d8dd3d7",
      "tree": "64c42241e23bc5f14d8ed76cc065aaeca581dfe9",
      "parents": [
        "7a7091c075f30fe8273f0bcb730a4d0fca697484"
      ],
      "author": {
        "name": "khenaidoo",
        "email": "knursimu@ciena.com",
        "time": "Wed Jun 21 15:42:26 2017 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Jun 22 05:49:01 2017 -0700"
      },
      "message": "VOL-244 Fixing build issue to have enough time for the smoke test to wait for all voltha services to be ready\n\nChange-Id: Id1016720be836d343a30ad87c0cab9b93a8589a8\n"
    },
    {
      "commit": "e37300e27241ac246e5c9723af0801de76b037c0",
      "tree": "a5ff268ce0c69fd9afe872dffb1b65878a254ad1",
      "parents": [
        "37f4a0e2eb4e12f1ba706f437a9aaddac86d97ae"
      ],
      "author": {
        "name": "Stephane Barbarie",
        "email": "sbarbari@ciena.com",
        "time": "Thu Jun 08 11:22:16 2017 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Jun 14 06:50:57 2017 -0700"
      },
      "message": "Voltha Alarm Filters: Added new integration test\n- Also fixed alarm events test\n\nAmendments:\n- Execution should succeed when the topic does not exist\n- Send msg to the kafka bus to ensure the topic gets created\n- Optimized the executed kafka commands\n\nChange-Id: Iebafddf5da8f46acd4bf77e1a9fae823f085c70e\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": "cc73678ec078bcc0046345ace35c7ebfa4c37fb3",
      "tree": "383baa69aaab60782fce7a2c2c2bd95dfdfa4948",
      "parents": [
        "980a091aac891262c1069ad06577459ffe1f5a6d"
      ],
      "author": {
        "name": "sgovinda",
        "email": "sathish.govindasamy@radisys.com",
        "time": "Tue May 02 20:06:37 2017 +0530"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed May 17 05:35:01 2017 -0700"
      },
      "message": "https://jira.opencord.org/browse/CORD-824\n\nSupport for connecting multiple controllers in voltha provided.\n\nAddressed review comments patch 7\n\nChange-Id: I2d2375c7754014743c305a0f3841debe5eb3e795\n"
    },
    {
      "commit": "02af133b6be2e9569ff9de77bc5aba3e26be768c",
      "tree": "5b12704958f02c1185beddfa05225a9b285951b5",
      "parents": [
        "85150c22c9ce37c83f8e6ef6e6edbb10f06417f8"
      ],
      "author": {
        "name": "Matteo Scandolo",
        "email": "matteo.scandolo@gmail.com",
        "time": "Thu Apr 27 10:22:35 2017 -0700"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue May 02 10:49:04 2017 -0700"
      },
      "message": "[CORD-1136] Added test for swagger url\n\nChange-Id: I751fa89d330dd4fee3b7e25de28820e4408831b8\n"
    },
    {
      "commit": "c60afa1b4221702ed12f4a04c9f164cf9f6685d1",
      "tree": "33c6f6f43e65bd415feb94bb041239f21b6463a4",
      "parents": [
        "38ba203df3ff0c5e3f9a31bebb0cd0c269c3c51e"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Mar 13 14:33:50 2017 -0400"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Mar 14 07:34:18 2017 -0700"
      },
      "message": "[ 3195 ] Remove duplicate method add_port\n\nUpdate to the device operations as follows:\n1) Add a few test scenarios to test the device state transitions\n2) Check whether there is a callback before removing it from the queue\n3) Fix a port reference issue when disabling an ONU\n4) Update the CLI to handle exceptions from the grpc server\n\nChange-Id: Ic7f41e80279f41d9a4575da5dd49de11294a22d5\n"
    },
    {
      "commit": "56b3647f59d7bafd43629ac5e291f5b042c71172",
      "tree": "3497a2dbcab92afe16e30bc932ab7773d60fe42e",
      "parents": [
        "58c37e4ab5e35cd75275dd6c9737e809813a16f9"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Mar 08 15:32:42 2017 -0500"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Mar 08 15:32:42 2017 -0500"
      },
      "message": "Fixes a deadlock issue when both a model change and a notification of\nthat change is in the queue.\n\nChange-Id: I76554242b45f90c474fc772572820b9cdde16df2\n"
    },
    {
      "commit": "db68629abeec9789518df88c27b5af949266d936",
      "tree": "0d74f7f0a90b6b8e52b06fe5317c5a33cec5b5a7",
      "parents": [
        "29e75501f84d665edff75934ed010b029b46edb1"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Mar 07 22:50:58 2017 -0500"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Mar 07 22:50:58 2017 -0500"
      },
      "message": "Updating test case to prevent build failure\n\nChange-Id: I6ed52453d854bf620973b2c5fdd85ad8a341559e\n"
    },
    {
      "commit": "29e75501f84d665edff75934ed010b029b46edb1",
      "tree": "2bc5faeac25bdfceda4ca2d1cf5d14a629ae7766",
      "parents": [
        "a2eb52b38bbdb2f3b6dbc13b9fc08c7216e9ebc9"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Mar 07 17:26:50 2017 -0500"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Mar 07 17:26:50 2017 -0500"
      },
      "message": "This commit consists of:\n1) Update the existing tests to use enable instead of activate\n2) Add the required interface methods to pmcs\n3) Update the voltha.proto to have the correct delete method\n4) Comment out some code in config_node to prevent an additional\n   item to be queued on the main branch.  This new item was preventing\n   any device updates (assert failed because that item was queued but\n   not consumed).  Further debugging would be required before that code\n   can be reintegrated.\n\nChange-Id: I4fa75ea6531f496a8cf8233f2e78c0076c3b23a1\n"
    },
    {
      "commit": "fa007ce93f674a5c83dcda9529d4297d5239ce70",
      "tree": "43388a5da93fd2abdf9417aae95bcd1f65492243",
      "parents": [
        "7a1e4b70a29272d2630d8de45541f1d86c55cd74"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Wed Feb 22 22:19:51 2017 -0800"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Mon Mar 06 09:31:58 2017 -0800"
      },
      "message": "Impl of config events.\n\nChanges to the config store are advertised on the event bus\nunder the \u0027model-change-events\u0027 topic which is forwarded kafka.\n\nChange-Id: Iad019b866eedb9e53a3ea9c70434afc7ec96d548\n"
    },
    {
      "commit": "cc6b2e6b901cfb7387bdc217c883cc0cec6ab06f",
      "tree": "3408187bb4e6840426c2012b2807b436c812944e",
      "parents": [
        "52198b9c9cf6b5fc4780679bc3eb53182895bab1"
      ],
      "author": {
        "name": "Stephane Barbarie",
        "email": "sbarbari@ciena.com",
        "time": "Thu Mar 02 14:35:55 2017 -0500"
      },
      "committer": {
        "name": "Stephane Barbarie",
        "email": "sbarbari@ciena.com",
        "time": "Thu Mar 02 14:35:55 2017 -0500"
      },
      "message": "CORD-898: Re-formatting files to meet line length restriction.\n\nChange-Id: Id961b577d62f0789d87028f69a1942fafd9c8c23\n"
    },
    {
      "commit": "52198b9c9cf6b5fc4780679bc3eb53182895bab1",
      "tree": "9afd2c4a2db677785fe23897281445657a71eeed",
      "parents": [
        "b079631b45f47abbc37d82d8b90269b0063fa37c"
      ],
      "author": {
        "name": "Stephane Barbarie",
        "email": "sbarbari@ciena.com",
        "time": "Thu Mar 02 13:44:46 2017 -0500"
      },
      "committer": {
        "name": "Stephane Barbarie",
        "email": "sbarbari@ciena.com",
        "time": "Thu Mar 02 13:44:46 2017 -0500"
      },
      "message": "CORD-898: Initial integration for alarms support\n\n- Introduced an AlarmEvent type\n- Provided the necessary API to propagate the alarms\n\nChange-Id: I285cab38cd8896508a820c8aea592819e0242ed5\n"
    },
    {
      "commit": "bf974d075d763651a0a28c6cdd2d8b1365be6dd7",
      "tree": "413d56fa618436eeea5f19d3afc794647e609836",
      "parents": [
        "e52a64380ec28cc4a8d394be531f9987fab72454"
      ],
      "author": {
        "name": "Ryan Van Gilder",
        "email": "rvangild@ciena.com",
        "time": "Fri Feb 24 15:01:22 2017 -0800"
      },
      "committer": {
        "name": "khenaidoo Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Sat Feb 25 06:52:05 2017 -0800"
      },
      "message": "Fix persisted config data generating different hashes and tags not being persisted\n\nData loaded from the key value store could generate different hashes depending on the order python decides to give us keys back\nEverytime tags are updated, push the tag to the datastore if one is provided and properly load the tags back\n\nChange-Id: I148c01b13009a038187c4aeec3080b105a7d8956\n"
    },
    {
      "commit": "b9a5f75b53ac16778403ff43a7e4593e28c92f2c",
      "tree": "19ed7b27a9c79d7e505b13c64e4449caff9bf79d",
      "parents": [
        "353630d18c0d771c12a2b1607b92917eefd8de1f"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Feb 11 06:07:08 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Feb 11 06:20:31 2017 -0800"
      },
      "message": "Inject per-ONU metadata field for unicast flows\n\nThis is a CLI change to mimic a useful ONOS behavior when generating\nlogical flows for the PON. Specifically, ONOS injects a metadata\nfield in each flow rule for unicast downstream traffic, namely into\nthe first of the two flow rules handling the outer tag. The metadata\nvalue is the vlan id of the inner tag. Without this metadata there\nis no easily accessible information as to what inner tag that flow\nis meant for.\n\nThis metadata value can be considered as a \"hint\" by the OLT adapters\nto tie a downstream flow rule to a specific PON link/channel.\n\nThis is not an elegant solution, in that it slightly misuses the\nmetadata field. The more proper long-term solution would be to either\nmodel the PON channels explicitly as flow ports, or use phys-port/port\npairs (the former representing the PON port itself, and the other\nrepresenting the logical channel/link on the PON.\n\nIt is recommended to switch to the cleaner solution at a later time.\n\nChange-Id: I2a461014d697d01010101010101052609d742d04\n"
    },
    {
      "commit": "8b734becac296223663738cf77dae0ad2b4d4dde",
      "tree": "8e896fc61974d9ef403af80da476e9a6b2e23f03",
      "parents": [
        "0b9aed1224c300c3e74199d298f4e69181e0583f"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Mon Feb 06 14:56:05 2017 -0800"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Wed Feb 08 09:08:34 2017 -0800"
      },
      "message": "Moving build md tests to use kafkacat\n\nNow checks whether a topic exists and checks\nif heartbeats are received.\n\nChange-Id: Ic48c6a42898ce68b7d827d0034824207c3555af6\n"
    },
    {
      "commit": "29a3ed534787a4c529d07c25bd516bdb2f4947c7",
      "tree": "5eda757c0eddbe5483d924fc22398d07e373b83e",
      "parents": [
        "16c0da7336a39e06c1f90be9c07c9341c2fff5c3"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Mon Jan 23 14:29:21 2017 -0800"
      },
      "committer": {
        "name": "Ali Al-Shabibi",
        "email": "ali@onlab.us",
        "time": "Mon Jan 23 15:58:39 2017 -0800"
      },
      "message": "Reviving the unit tests\n\nThis commit also lays the ground work:\n    - coverage reports from unit tests\n    - enabling per commit tests\n\nChange-Id: I1115600c3f4b213a73197b40750dd29f7c17aef1\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": "482aa09ead0eee53da030151000deaa85b681993",
      "tree": "a6ef23ece171cb5b1d2b3d5c7b4d2aa2209af4b9",
      "parents": [
        "c5f740bca8f033639bf3b155e0c96aac760c2dd8"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 19 10:03:38 2017 -0600"
      },
      "committer": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 19 10:03:38 2017 -0600"
      },
      "message": "small fix for build_md_tests\n\nChange-Id: I1ed5c85acaba91ddd639308d6d4365fdd2085207\n"
    },
    {
      "commit": "b5d72f13fa5cb73024fc9857effde5875695d3b4",
      "tree": "d431d33169c636c80720aaa72641e252a2af010a",
      "parents": [
        "6692773f8cd1cce44100c02fc14bdb5796bd2c2d"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Jan 15 20:44:02 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Jan 15 20:54:28 2017 -0800"
      },
      "message": "Time-stamp added and renamed heartbeat\n\nChange-Id: I7f38752aa83572bc6b6b93093546e0fdf47763f5\n"
    },
    {
      "commit": "6692773f8cd1cce44100c02fc14bdb5796bd2c2d",
      "tree": "ef5ed333bcade50f549c1f34c6286cfe1ad577eb",
      "parents": [
        "59f1ffff01bc2df6abf24fff6ffa3c51efb6920e"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sat Jan 14 16:50:59 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Sun Jan 15 20:52:26 2017 -0800"
      },
      "message": "Fix memory usage meter for Linux\n\nChange-Id: I761a8964f5ede89bb0db601fa2acf8d5f175f199\n"
    },
    {
      "commit": "f4fb2684c2d58bb665fe4351572d071173cfb491",
      "tree": "cc2e94f9084fd39ab3fbf5c507170650f892dd41",
      "parents": [
        "8afd69809e45b480973dda168d0281fa7d8e10f6"
      ],
      "author": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 12 00:32:56 2017 -0600"
      },
      "committer": {
        "name": "alshabib",
        "email": "alshabibi.ali@gmail.com",
        "time": "Thu Jan 12 00:32:56 2017 -0600"
      },
      "message": "fixing support for group desc stats\n\nChange-Id: I3d0d9c22e05e58b13b0fdc92fbc672590bb3dd18\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": "3578a1c3ac3c9898acff32b1e8b940ef18ceac1e",
      "tree": "428c3eb476abaac4ca390972e0990340c3836d78",
      "parents": [
        "6a5107c865a46df9a6c778d8d34e300621232264"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Jan 10 15:29:02 2017 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Jan 10 20:20:30 2017 -0800"
      },
      "message": "Expand field/action conversion scope of ofagent\n\nOfagent did not parse all fields back from protobuf to lexi,\nhence ONOS was not able to confirm downloaded flows. This\nmade her unhappy.\n\nAlso, DHCP config info is added to ONOS netcfg.json.\n\nChange-Id: I57ac5d3b4d14c8c52feb52e08bb420c15809238e\n"
    },
    {
      "commit": "313c4be4cfc0b0e1bb2551efed6489333b195bfb",
      "tree": "e93dd6433c6cf3b9623d4bcf1934ec9f311e45f7",
      "parents": [
        "32d1efb995aa1285901c43b12837f8eed9d5e810"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 27 11:06:53 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 27 19:18:15 2016 -0800"
      },
      "message": "Integration with Nathan for Tibit packet in (raw)\n\nChange-Id: I0fb9a2b020eae9b45da7db4bc68a6ed98835e5db\n"
    },
    {
      "commit": "7507ab8b72f0448cc4949c0674ab4a081c04c2a1",
      "tree": "53510283bb244503a6485e7cbc3380b99a562127",
      "parents": [
        "8925d1f5bcd3da4db9c8872214cae32eb7bc5844"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 20 22:33:38 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 21 22:00:02 2016 -0800"
      },
      "message": "Minor omci test cleanup\n\nChange-Id: I97bef92b28d1a5082856cdfb7cbd16c8fb35ec70\n"
    },
    {
      "commit": "578a46c5ca344a475f0d78c99aafcf3c7dcaa67e",
      "tree": "e496253907587509dd021a9c6d37a85909842772",
      "parents": [
        "627cf96fe1a441bb9e70147e663431b1e885f2c6"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 20 16:38:43 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 20 20:46:22 2016 -0800"
      },
      "message": "Additional OMCI entity types with tests\n\nChange-Id: Iee18c73705dabf555824c9d3980dc82bf5dd1ae2\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": "e0acd8fdf327b8b54cb36a2000eacd424ad80a65",
      "tree": "b749eb31095778d89e3c0ae0b62f16098d24dfc8",
      "parents": [
        "653b1b458e32528d46ce9b24b751331465ef5131"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Dec 16 14:53:55 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 19 11:06:18 2016 -0800"
      },
      "message": "OMCI library expansion\n\nIncludes:\n- Minor refactoring to accommodate increased codebase\n- Support and test for all requests expected to be used\n  for the Broadcom ONU with Maple\n- Much increased coverage for OMCI message types\n- Many new entity types defined now\n\nChange-Id: Ib0a1c396276b194a0aa08bede3b00b95a6a22d1e\n"
    },
    {
      "commit": "c69bd218e5111c58ba37bf3ab459d17d16fabbdd",
      "tree": "1456a95979feccfa35e0d70d78d69163e3da4b69",
      "parents": [
        "afafff33a17ba803b241a938903723e1af46b169"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 13 15:13:41 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Dec 13 15:13:41 2016 -0800"
      },
      "message": "Adjust priority to collapse flows\n\nChange-Id: I41ff03788f0d9483bbdd33808c42d42dc52c248b\n"
    },
    {
      "commit": "afafff33a17ba803b241a938903723e1af46b169",
      "tree": "7a13e67fc2f71d9a617e8596aaf0beebfecbdd82",
      "parents": [
        "91730da3a686e7b2ebb74316aaed366ff58fae81"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 23:14:09 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 23:14:09 2016 -0800"
      },
      "message": "Comprehensive flow tables splitting test\n\nChange-Id: I255bdb7f984e97ff1820f17921c8c2a018500f32\n"
    },
    {
      "commit": "91730da3a686e7b2ebb74316aaed366ff58fae81",
      "tree": "70be87f6d78c9965b160e8864d8c6613ca1aa4bd",
      "parents": [
        "83fab675a96de3bb966fe3c5612b7a301948ff89"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 12:54:38 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 18:27:27 2016 -0800"
      },
      "message": "Reintegrate with olt-oftest\n\n* Added updated notes on how to run voltha with olt-oftest\n  in fake_dataplane mode (for now)\n* Relocated test_flow_decompose to unittest\n* Added new comprehensive unit test for LogicalDeviceAgent.\n  Note that this class covers the following important\n  business logic:\n  * handling flow_mod and group_mod requests coming from the\n    NBI\n  * building route table and default flows/groups tables\n    for the physical devices\n  * performs flow decomposition from the logical device\n    flows/groups to the physical device flows/groups\n  All three functions are covered by tests now.\n* Many small fixes/imporvements pciked up by the tests.\n\nChange-Id: I34d341830e39bec29bcb8a2ed2eaf2027595c0e3\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": "b706784b2101bd75737299d44f4d19b2cf53bb1c",
      "tree": "b3f2c56c4db302f93a0b3ff8dd0c64e36355bb25",
      "parents": [
        "b49dda9f2fe1d97e40efdf88fa523fc12c0f6abc"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Nov 22 18:11:53 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Nov 28 00:52:54 2016 -0800"
      },
      "message": "Initial take on persistence support via k/v stores,\n\nThis is the initial mechanisms for persistence, supported\nby a k/v store. In the initial testing the k/v store\nis mcoked by a simple (in-memory) dict, but the concept\nwill carry to external, replicated, distributed k/v\nstore options, such as cassandra, redis, or even\nconsul for small-scale deployments.\n\nChange-Id: I83d2bbb327c4516fbc15d1d9979a1e89d3e7a7e7\n"
    },
    {
      "commit": "2ef4ce7cf2666ef8fe5bd0fd2546add62907aa83",
      "tree": "16d941f3c6575149763e90662829f77adc9a84f8",
      "parents": [
        "95b919d0155d676ec0abcdf7be35a0b69d7b64fb"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Nov 23 11:37:38 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 23 10:21:21 2016 -0800"
      },
      "message": "Move experimental items undo the experiments directory and some minor name cleanuos\n\nChange-Id: I748e0546a80a593ddef6b8a4ac749d592b9d26b1\n"
    },
    {
      "commit": "95b919d0155d676ec0abcdf7be35a0b69d7b64fb",
      "tree": "1d1ea1399b4a5b5b94b942e6cbc1588aaef2a469",
      "parents": [
        "dafefe16ce5d946271ca9ac5a4fd36ec2a92bee8"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 18 16:20:20 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 23 10:21:21 2016 -0800"
      },
      "message": "This commit includes:\n1) Make descriptiuon fields mandatory\n2) Make some minor changes to comply to IETF\n3) Add a few test cases (more to come)\n\nChange-Id: Id871b2015ddb72c72a03c9fd5d0e08461fe67398\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": "283d76850c48b70e1821ff2366ecedbea50ed8a5",
      "tree": "6a85e6cfa10a9441455c4b96991d356d66a1d172",
      "parents": [
        "94026691258da57f7e3092f4481c025b9122b4b5"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 11 16:37:32 2016 -0500"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 11 16:37:32 2016 -0500"
      },
      "message": "Update the docker command in smoke-test to work with jenkins.   Also, update the test script as the docker-compose file has new service -podder\n\nChange-Id: I06393287f45b67cc029990f3a791ae397bcb0aae\n"
    },
    {
      "commit": "94026691258da57f7e3092f4481c025b9122b4b5",
      "tree": "a1f0dfca14331aeed8492c198d14eff105026f6e",
      "parents": [
        "34e7ebb30f669f3cc98a4be892901b34e9e150f4"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Nov 10 13:52:00 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 10 21:13:14 2016 -0800"
      },
      "message": "Update comment\n\nChange-Id: I04141c95ec0cdb143e25c4f505366ba193be23b5\n"
    },
    {
      "commit": "34e7ebb30f669f3cc98a4be892901b34e9e150f4",
      "tree": "900ef4d14e4cb094686b6427827e7d84843bff94",
      "parents": [
        "96bb532697cce77beb7b63274add74736bf9f26c"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Nov 10 13:38:44 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 10 21:13:14 2016 -0800"
      },
      "message": "This commit consists of:\n1) Remove frameio reference and use run from root instead\n2) Add a smoke-test to be used mostly by jenkins\n3) Limit the kafka docker heap size\n\nChange-Id: I29ef144996a72088b3c5d7d98b1639b6901ab2b8\n"
    },
    {
      "commit": "96bb532697cce77beb7b63274add74736bf9f26c",
      "tree": "0b8fdf6544aba88e8fd1610bf5c77bea07bce1f2",
      "parents": [
        "9d222026a2a72f13737bfc4e9f6fd6ab2066674c"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Nov 09 20:16:03 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 10 21:13:14 2016 -0800"
      },
      "message": "1) Keep only 1 sanity test as part of the jenkins build test, 2) exclude the test_frameio.py test from direct run, 3) set the frameio test to be run within a docker when the itest is invoked\n\nChange-Id: I2388f0465b891b3aba781ce728000dc92d134727\n"
    },
    {
      "commit": "bf8bf28ea87c4c1b0f4a27d63465bac698db2aaa",
      "tree": "72157b68e1ddb0bfaafa333655ca184e61d672b0",
      "parents": [
        "95b68c5b0b9c7353c78de6e540e85631dac06f4e"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Mon Nov 07 15:21:35 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 10 11:02:49 2016 -0800"
      },
      "message": "Add simple rpc and some cleanups\n\nChange-Id: Ia779f9ee899fabfe5b685124f8c3b7c28a1110bb\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": "0df86c177f6e7f81abcc463ad560e6ea7a93f55e",
      "tree": "03b4864f8aa8c115e5e5aa689dffca8fd5a331e1",
      "parents": [
        "f8abbc992604a3ac08e439ad8449d85178054e75"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Nov 03 23:03:35 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Nov 04 22:05:27 2016 -0700"
      },
      "message": "Internal universal pub/sub event bus\n\nChange-Id: I0f295727add5675bef292f5fd764ecc766239107\n"
    },
    {
      "commit": "f8abbc992604a3ac08e439ad8449d85178054e75",
      "tree": "92f628c0067e8aceae0d80d4818214145b16227b",
      "parents": [
        "4c43525b70b09b2ef7267a984c8fe9dd5ba3aa2f"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 04 19:56:45 2016 -0400"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 04 19:56:45 2016 -0400"
      },
      "message": "Adding initial test cases, include enumeration conversion, address review comments\n\nChange-Id: I59a19f80289464c934ad16d2d2ce1c78a6ba6f2c\n"
    },
    {
      "commit": "06854cba6caaaf0f46d8641db7ec42c4ebefe2a7",
      "tree": "aff9c6926d5ac92b25fd67b02508dff608fe1f09",
      "parents": [
        "0f387e6e73f17af75eb8b8a91fd8ea4d92f26119"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 02 01:29:20 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 02 01:34:58 2016 -0700"
      },
      "message": "Refined OMCI parsing and serialization\n\nChange-Id: I52f5a1fff997c41de51022fc6f8d4293b191994d\n"
    },
    {
      "commit": "0f387e6e73f17af75eb8b8a91fd8ea4d92f26119",
      "tree": "b320eb304806071c0c3258fbaf1ba235df0476cb",
      "parents": [
        "1c3eba81d41fd5ba1b847f74326518b823f7fc3c"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Nov 01 01:57:38 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 02 01:33:34 2016 -0700"
      },
      "message": "Microsemi and OMCI very initial code\n\nChange-Id: Ieb648f43eab3b2dff50093c79ed27b9e40ae130e\n"
    },
    {
      "commit": "9125b1a90ceff0e60c944a6430e8054cf36a0f76",
      "tree": "9be01e5e9cc146403a86b89c68307c2806ff8549",
      "parents": [
        "40f039c39f0fff90a68f7cccf3d772c4e8efcf5d"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Oct 24 22:54:33 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Oct 24 23:00:03 2016 -0700"
      },
      "message": "Fixed two bugs in OpenFlow land\n\nChange-Id: I74f37221d93c71398a1985143f03706297bd1661\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"
    },
    {
      "commit": "a54b663f7fe41e222b069bd3ef3e97d3b725d9bd",
      "tree": "6d3c32a7284ad4c237e84fcaa3f72dc8bf3597c7",
      "parents": [
        "da4ef468cbd18c886d50a5af7a4f19e78eda233e"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Oct 18 18:01:25 2016 -0400"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Tue Oct 18 18:01:25 2016 -0400"
      },
      "message": "Adding a wait for containers condition\n\nChange-Id: I4601b9f9e2f17ccfaaa1fcc6c24eaf9e13dd3b38\n"
    },
    {
      "commit": "37a9bf8598001d303178fa2d481e214501004937",
      "tree": "08583c171f70b9a5660f2a330ee16143ae0a206c",
      "parents": [
        "b4b11afec1145a93b6e61c842be1dda92c5e9fa2"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Sun Oct 16 20:11:31 2016 -0400"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Sun Oct 16 20:11:43 2016 -0400"
      },
      "message": "Integration test for the build.md file\n\nChange-Id: I93d25f1563636696a5f71471a06056eafee3e9e2\n"
    },
    {
      "commit": "bae127558ab82e7d662e20e077415fcaccecd765",
      "tree": "83ae8e5895e901ed3467b384e89b92393cdfbade",
      "parents": [
        "c51c065b01038381efb030cc7abdd3fcbe38eb75"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Oct 10 09:55:30 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Oct 12 00:44:51 2016 -0700"
      },
      "message": "Chameleon swagger support\n\nChange-Id: I63b8dc7b31d5e87aa0e5153da302537d90ff733e\n"
    },
    {
      "commit": "a96d20d3d35fd94390fe1cb493c522c8e09fbda2",
      "tree": "a60d6ee41cfd82a5bdebff6444b15c9492b1b0dd",
      "parents": [
        "aa3a584c87538701a0b5e212927bb9a8544ec11a"
      ],
      "author": {
        "name": "Nathan Knuth",
        "email": "nathan.knuth@cyaninc.com",
        "time": "Thu Sep 08 14:40:26 2016 -0700"
      },
      "committer": {
        "name": "Nathan Knuth",
        "email": "nathan.knuth@cyaninc.com",
        "time": "Thu Sep 08 14:40:26 2016 -0700"
      },
      "message": "Initial setup.py\n"
    }
  ]
}
