)]}'
{
  "log": [
    {
      "commit": "48f36ae36dcf63cbedb5c5951fee1fb39dd02900",
      "tree": "31a28eeb54a3b9ba280142304c2be148b94370c3",
      "parents": [
        "5cb543c8c13ece4f73656b2de9d1883bbb8890f0"
      ],
      "author": {
        "name": "Joe Topjian",
        "email": "joe@topjian.net",
        "time": "Mon Feb 20 14:36:44 2017 -0700"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Feb 20 15:36:44 2017 -0600"
      },
      "message": "Add os-volume_upload_image action to volumeactions (#240)\n\n* Add os-volume_upload_image action to volumeactions\r\n\r\n* Code updates to align with style guide\r\n"
    },
    {
      "commit": "98d0162076e5ac4f47a4b7ce531234fc4b91aa79",
      "tree": "7256eedfec0e891710f80d666e80de1522d7a7ba",
      "parents": [
        "8baf47a5b9d7a92daf5571f9a072aea83bdc889a"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Jan 12 14:24:42 2017 -0600"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jan 12 14:24:42 2017 -0600"
      },
      "message": "change all time fields to have type time.Time (#190)\n\n* add Volume.Unmarshal\r\n\r\n* add volumetenants.VolumeExt.Unmarshal\r\n\r\n* create servers.Server time.Time fields\r\n\r\n* json.Unmarshal can correctly handle time.RFC3339 (Server time fields)\r\n\r\n* add v3 Token UnmarshalJSON method\r\n\r\n* check for empty string when unmarshaling time\r\n\r\n* add Member UnmarshalJSON\r\n\r\n* v3 tokens.Token ExtractInto\r\n\r\n* v3 trust.Trust UnmarshalJSON\r\n\r\n* time.Time fields swift response objects\r\n\r\n* time.Time fields for orchestration response objects\r\n\r\n* time.Time fields for shared file systems response objects\r\n\r\n* if we don\u0027t use pointers for the custom time fields, we don\u0027t need to check if they\u0027re nil\r\n\r\n* style guide fixes: \u0027r\u0027 for receiver, \u0027s\u0027 for struct\r\n\r\n* remove unnecessary pointers from UnmarshalJSON methods\r\n"
    },
    {
      "commit": "bb45a5e9acdaa82987a5806fdab954c31c7813a8",
      "tree": "452a751ef372c08204d01f2dedfdd3a52d3435b7",
      "parents": [
        "25492a9d0f93ebc52868393193f95240f115acf1"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Nov 14 12:20:22 2016 -0600"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Nov 14 12:21:34 2016 -0600"
      },
      "message": "rename tenantattr to volumetenants; remove commented code\n"
    },
    {
      "commit": "25492a9d0f93ebc52868393193f95240f115acf1",
      "tree": "233696955489c68d8fd59c0aebd3e90b0c87ee79",
      "parents": [
        "c501bc1d93651ab04907d9d420831744c523957d"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Nov 09 17:42:24 2016 -0600"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Mon Nov 14 12:21:18 2016 -0600"
      },
      "message": "check for http response error in ExtractInto*Ptr methods\n\nrename tenantattr pkg to volumetenants\n"
    },
    {
      "commit": "6be8c4247d29435e773753d98626bfe0b0b0d03c",
      "tree": "3390ef282fda045f2e2cb3df704d28abd22c01f9",
      "parents": [
        "17e8b62988e092bcd35eb39834b07ec925a376b6"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Nov 09 13:08:35 2016 -0600"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Wed Nov 09 13:08:35 2016 -0600"
      },
      "message": "comments for tenantattr pkg\n"
    },
    {
      "commit": "7dc49465540b00c1146b1e5290bc2c042e5e988d",
      "tree": "ba770d5c09dad2f3d1ea6cbd9deeba8bc35dc292",
      "parents": [
        "cd65a06fb6a69eef63cb1c1ec861144e86011b2f"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Nov 08 15:09:33 2016 -0600"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Nov 08 15:09:33 2016 -0600"
      },
      "message": "tenantattr extension for cinder; ExtractInto method for handling custom Volume objects\n"
    },
    {
      "commit": "b3a4f337bdea57bb2d96b70ce6ac828001ec6781",
      "tree": "8847c78b4bda5e556d55bc147f1dd0d3adf3ae1f",
      "parents": [
        "18a8bcc5b1618e616565108822a0ac7903be38ce"
      ],
      "author": {
        "name": "Eugene Yakubovich",
        "email": "eyakubovich@gmail.com",
        "time": "Thu Oct 13 11:01:06 2016 -0700"
      },
      "committer": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Thu Oct 13 13:01:06 2016 -0500"
      },
      "message": "Add BeginDetaching call for Cinder v2 (#90)\n\nPer Cinder API, os-begin_detaching action needs to\r\nbe called prior to os-terminate_connection."
    },
    {
      "commit": "18a8bcc5b1618e616565108822a0ac7903be38ce",
      "tree": "2e23a18e840b9dc02c404a50203b50153745cb19",
      "parents": [
        "c8f12c6e39d96d0e07f0976e184ea0308cb6aaf0"
      ],
      "author": {
        "name": "jrperritt",
        "email": "jrperritt@gmail.com",
        "time": "Tue Oct 11 15:23:03 2016 -0500"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Oct 11 15:23:03 2016 -0500"
      },
      "message": "move block storage extensions from \u0027v2\u0027 to \u0027blockstorage\u0027 (#112)\n\n"
    }
  ]
}
