)]}'
{
  "log": [
    {
      "commit": "7626ce1a0466394c047985c9286f2e0dc065559c",
      "tree": "ba0dc42b21b1a3551a16f9e70ae763dff623b39f",
      "parents": [
        "e0d53f8301eab8f38ccc042bf9d2eb49f4d6e430"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Dec 21 11:51:46 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 21 21:06:47 2016 -0800"
      },
      "message": "This commit consists of:\n1) Yang annotations to the protobuf definitions.  These annotations, when\n   added to the relevant proto files in Voltha,  allow us to convert\n   the voltha proto schemas into Yang schemas without the need to change the\n   model definitions.\n2) Update to the Yang parser to handle the above annotations\n3) Some initial work on the netconf GET RPCs (work in progress)\n4) Cleanup\n\nChange-Id: I5e4f4217850f0beb1c41aca1b2530a41e4f8a809\n"
    },
    {
      "commit": "e0d53f8301eab8f38ccc042bf9d2eb49f4d6e430",
      "tree": "f6995169d846ea4ed1243751b87bdb96abe773a7",
      "parents": [
        "3b212948d7b642b9defb29e4cfb5ab1bd8b40adc"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Dec 14 11:05:44 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Dec 21 21:06:47 2016 -0800"
      },
      "message": "Adding more get voltha apis\n\nChange-Id: I4fe2696e3ffdcb1477e5d97d0405353ab465c062\n"
    },
    {
      "commit": "aaac7ee1b70085929f99e55aa655fd7b3161863d",
      "tree": "1b8b9748cbc6c3ed124a623903b74046cbc08f24",
      "parents": [
        "9ad4569b8562999bfb2cad4d6281884d969e8666"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Sun Dec 11 22:03:52 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 18:24:35 2016 -0800"
      },
      "message": "This commit consists of:\n1) Dockerizing the netconf server\n2) Update proto2yang to support module imports\n3) Provide a set of yang modules derived from the proto files in voltha.\n   These files as well as the slight mmodifications to the proto files are\n   provided in the experiments/netconf/proto2yang directory\n4) Code to automatically pull proto files from voltha into the netconf server,\n   compiles them and produce the yang equivalent files.\n5) Add a getvoltha netconf API to provide voltha state information (basic at\n   this time).  There is potential to make this generic once we experiment\n   with additional APIs\n\nChange-Id: I94f3a1f871b8025ad675d5f9b9b626d1be8b8d36\n"
    },
    {
      "commit": "9ad4569b8562999bfb2cad4d6281884d969e8666",
      "tree": "eb35b6777c279def6f2f2e6287270932e5e6b3ab",
      "parents": [
        "1b7c03627ddc934fee8ab96a42eb3c0b69709999"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 10:37:54 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Mon Dec 12 10:37:54 2016 -0800"
      },
      "message": "Small utility to automate Grafana setup\n\nChange-Id: I99f413c979bb1e27adf7fdbbdd67f7f2e0e23045\n"
    },
    {
      "commit": "a6d9113c4fcaa38b1e6cec82a27e97f4316d67ad",
      "tree": "620fbf70a19cc41af33b8e971a080c9270c9e764",
      "parents": [
        "2ef4ce7cf2666ef8fe5bd0fd2546add62907aa83"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Wed Nov 23 11:43:09 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Nov 23 10:21:40 2016 -0800"
      },
      "message": "Correct plugin format\n\nChange-Id: I7e152cccaf9a11036f59cf99c5ffc0001ff412c2\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": "bd24f55a1f337ac7dff2f5ce0d749e0515a0f874",
      "tree": "3b9b94c589a09c69bda6ee4ff5cd52250b5fb8ce",
      "parents": [
        "d76880994529ddae378c56b2d2be39925e256d00"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Fri Nov 18 11:31:15 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Nov 18 23:42:26 2016 -0800"
      },
      "message": "This commit consists of:\n1) Differentiate between yang containers and groupings\n2) Handle repeated fields\n3) Add yang list to encapsulate reference to message types\n\nChange-Id: Ideb5bf8c6ff847a580b5e27339f238d463c091f2\n"
    },
    {
      "commit": "d76880994529ddae378c56b2d2be39925e256d00",
      "tree": "56416bead1fcb52e9e8870e5cf8f4b2740f465d4",
      "parents": [
        "57828bded7bba8c13747e637ea2144e7b524a53c"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Nov 17 00:08:57 2016 -0500"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Fri Nov 18 23:39:19 2016 -0800"
      },
      "message": "This commit is the initial attempt in converting a protobuf schema\ninto a yang schema. Intructions on how to execute this convertion is\nin the proto2yang.py header.  Test cases to follow.\n\nChange-Id: I7a9273138339bbaf521a2b5eab3e5f1205f79bd0\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": "6618662aee433d3fec1c92b41c4199ed24f53190",
      "tree": "5e5fe18dfc4b23c137b8d2bc9deb0ecef87c14a8",
      "parents": [
        "3c74d3b1fc6ad14854fd6d18f37c9b37567889e5"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Nov 08 14:24:00 2016 -0800"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Tue Nov 08 16:54:29 2016 -0800"
      },
      "message": "Remove generated artifacts from git\n\nChange-Id: I1d8f9a5a4519004618e2df87c28fdb8849b68c00\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": "4c43525b70b09b2ef7267a984c8fe9dd5ba3aa2f",
      "tree": "e1977383b7ff23033f9ae18d8db0b2502b283936",
      "parents": [
        "2bdb6b31e4b86a5ae88fbceb70bd05143cef318b"
      ],
      "author": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Nov 03 23:21:32 2016 -0400"
      },
      "committer": {
        "name": "Khen Nursimulu",
        "email": "knursimu@ciena.com",
        "time": "Thu Nov 03 23:21:47 2016 -0400"
      },
      "message": "experiments with converting yang to protobuf with limited types\n\nChange-Id: Icae31cbd779ff6f1efb6b5259e749436a7ee9bbf\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": "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": "e39523be566546d3431c26f0bc1bdbecdea1d09e",
      "tree": "1154bf88363a50dacf6d62a54e0752b47d98f5a3",
      "parents": [
        "a54b663f7fe41e222b069bd3ef3e97d3b725d9bd"
      ],
      "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": "Thu Oct 20 18:28:08 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"
    },
    {
      "commit": "f1c3c031f90419e19725193fb71fe517fdcd8310",
      "tree": "37b34c2dceae9c88c04d8ec9586ae4ea95e114a1",
      "parents": [
        "74c1ef0e935e2790848ebab47c0eedd8f5feb45f"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Oct 12 21:58:25 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Oct 12 21:58:25 2016 -0700"
      },
      "message": "Experimental protobuf rendition of OF1.3\n\nThis version happily compiles, but more work is needed:\n- add methods\n- simplify some of the structured (systematically). For\n  instance, many lenth fields are unnecessary in protobuf.\n- Clean file (comments, alignments)\n\nChange-Id: I7e377e874391845b43136a2fcf06380fdc6a4322\n"
    },
    {
      "commit": "d1c9f235279f23db0ca2664d305c8666da360668",
      "tree": "25df7cfcbae6e9f06b7409b4a703da144b5626c8",
      "parents": [
        "cfd15e5ffaef251e44d0a1c4596fd054bba77a57"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Sep 22 23:18:38 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Thu Sep 22 23:18:38 2016 -0700"
      },
      "message": "Backing out pypcap to save build\n"
    },
    {
      "commit": "a54f2ac5df7889261d5b27373e0d3ac5f4f21d50",
      "tree": "4b5a89321f8eb34c26d0cef069ad02eca01d6460",
      "parents": [
        "4161248cf648f9a326b4a4264210d2ecaaa5e391"
      ],
      "author": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Sep 21 15:54:15 2016 -0700"
      },
      "committer": {
        "name": "Zsolt Haraszti",
        "email": "zharaszt@ciena.com",
        "time": "Wed Sep 21 15:54:15 2016 -0700"
      },
      "message": "Add support for protobuf API definitions\n"
    }
  ]
}
