)]}'
{
  "log": [
    {
      "commit": "f3bf8b6cc0dc94684a3bbecc4cc1e2169506f804",
      "tree": "2bbc4cc3bbeef0641dfd7aeaff81e3c770d547e3",
      "parents": [
        "6fe32059de58964c8f089977539262f288df4601"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 29 21:53:56 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 29 22:12:17 2014 +1100"
      },
      "message": "Revert \"Single quote iniset argument in merge_config_file\"\n\nThis reverts commit e2c9fee8ed846aba124a2fc1bba245790ed7ba90.\n\nWe have decided that we don\u0027t want to support the json-style argument\nas described by bug#1374118 (see thread at [1]).\n\nThis restores the old behavior of sending the argument in\ndouble-quotes so environment variables get expanded.  As a bonus,\ntests for this are added.\n\n[1] http://lists.openstack.org/pipermail/openstack-dev/2014-October/049341.html\n\nChange-Id: I9fc99f3716cc53366907878adb00ae6cf3898f14\nCloses-Bug:#1386413\n"
    },
    {
      "commit": "751ad1aadf8447c2b6945b6ae4ab73bf71a244ca",
      "tree": "dd29652859f3a425f8a7f2853149c157d743f6f4",
      "parents": [
        "ddfbacef9fd0bd64b38674524f7829b42ed08bbd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:40:53 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Wed Oct 15 21:44:31 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nThis was originally committed in https://review.openstack.org/128805.\nBut the original change used AWK syntax that is not supported in AWK\n3.1.8, and caused syntax error on servers with that AWK version. This\npatch makes the necessary change so that it\u0027s compatible with AWK\n3.1.8.\n\nChange-Id: Id1e1fe01f05bd0f19ea6e89c4f4c0f8be695dfce\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "a7eb07a3e22eb0362b28cec4bd289201a9adf699",
      "tree": "f71ea7688ba146a393e4e17acfecf2592a486cef",
      "parents": [
        "e9c70ab4097cd8d1991a893811dbd862ee001f10"
      ],
      "author": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:35:59 2014 -0700"
      },
      "committer": {
        "name": "Kevin Benton",
        "email": "blak111@gmail.com",
        "time": "Tue Oct 14 04:38:56 2014 -0700"
      },
      "message": "Revert \"Allow multi-line config items in meta-section of local.conf\"\n\nThis reverts commit 6ff21acf4c4d4ef08bbef419ba582cade4da8da7.\n\nThis commit has broken config options with colons in them.\nThe following is a sample configuration that no longer works:\n\n[[post-config|/etc/neutron/plugins/ml2/ml2_conf.ini]]\n[restproxy]\nserver_ssl\u003dFalse\nservers\u003d10.211.1.9:80\nserver_ssl\u003dFalse\n\nWith the above config and the code present that this reverts,\nthe \u0027servers\u0027 option will come out blank.\n\nChange-Id: I328852d2d941605051a1bf5eaf0f7674191f8c48\n"
    },
    {
      "commit": "6ff21acf4c4d4ef08bbef419ba582cade4da8da7",
      "tree": "b5acb9e70c03cb15be733339b742f3bf9d10ae87",
      "parents": [
        "cc87c2871dc436b2134f60e9fa4663723a094ebd"
      ],
      "author": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:43:05 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 12:53:24 2014 -0400"
      },
      "message": "Allow multi-line config items in meta-section of local.conf\n\nIt would behave such as the contents from each meta-section in\nlocal.conf is copied to the destination files. One exception is the multiline\noptions not grouped together. In that case, the contents will be grouped\ntogether in its destination config file.\n\nCheck tests/test_config.sh for examples.\n\nChange-Id: I8c046b558eeb98ed221f6f1a59182d4179956ced\nPartial-Bug: #1374118\n"
    },
    {
      "commit": "cc87c2871dc436b2134f60e9fa4663723a094ebd",
      "tree": "253024468ea6f45620386034ba09b0fa654043ee",
      "parents": [
        "284492cc1194bb2f156f860d35b5a1a46ac5b179"
      ],
      "author": {
        "name": "Fergal Mc Carthy",
        "email": "fergal.mccarthy@hp.com",
        "time": "Thu Oct 09 16:16:42 2014 -0400"
      },
      "committer": {
        "name": "Robert Li",
        "email": "baoli@cisco.com",
        "time": "Fri Oct 10 08:25:38 2014 -0400"
      },
      "message": "local.conf processing doesn\u0027t handle \u0027\u003d\u0027 in values\n\nWhen attempting to add a libvirt section with a volume_drivers entry\nto $NOVA_CONF, via a post-config block in the local.conf file, I\nencountered problems; the value for this attribute takes the form\n\n    driver\u003dpython.import.path.to.driver\n\nbut the value actually populated in the $NOVA_CONF was truncated at the\nequals.\n\nTaking the iscsi driver setting specified in the official nova.conf\ndocumentation as an example, if I have the following in my local.conf\nfile:\n\n[[post-config|$NOVA_CONF]]\n[libvirt]\nvolume_drivers \u003d iscsi\u003dnova.virt.libvirt.volume.LibvirtISCSIVolumeDriver\n\nI will see that the generated $NOVA_CONF has the following:\n\n[libvirt]\nvolume_driver \u003d iscsi\n\nThis occurs because the existing handling for a post-config setion, as\nimplemented in merge_config_file(), splits the line on the equals sign,\nand then uses the first and seconds elements of the resulting array as\nattribute name and value respectively.\n\nHowever when an equals occurs as part of the value this results in the\nvalue being truncated at the first equals in the value.\n\nThe fix I\u0027ve implemented, based upon review feedback, extracts the\ncontents of $0 before the first equals as the attr name, and extracts\nthe remainder after the equals as the value. Then it strips the leading\nand trailing whitespaces from both as appropriate.\n\nI\u0027ve also added test5 to tests/test_config.sh to test for, and verify,\ncorrect operation when this scenario is encountered.  Similarly I\u0027ve\nadded test6 to ensure that trailing spaces in values are stripped\ncorrectly.\n\nChange-Id: Id0cb1e6e1cece21bc5dbf427c4d756af86fbd927\nCloses-Bug: #1374482\n"
    },
    {
      "commit": "e2c9fee8ed846aba124a2fc1bba245790ed7ba90",
      "tree": "589865dd5959c3e0f9645dd1282c2a6dd4ee93d3",
      "parents": [
        "690e3c25742f47fd2a42d6407ffa30bc99288dc0"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 26 09:42:11 2014 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Oct 07 12:16:00 2014 +1100"
      },
      "message": "Single quote iniset argument in merge_config_file\n\nIf we don\u0027t single quote the extracted argument to iniset we drop any\nquotes from the source.  Add a simple test-case for this.\n\nPartial-bug: #1374118\n\nChange-Id: If2f47b64b11015e727a011c7e5f6e8ad378b90eb\n"
    },
    {
      "commit": "b1e3d0f222da5e3edd68dd92020962beb1155e1e",
      "tree": "e44c9c6e84e8baf3459040264e85e889f3afcdf5",
      "parents": [
        "b939caea45e2b43f36a831837821ad466451f7ed"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jul 25 14:57:54 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Tue Aug 19 19:14:04 2014 -0500"
      },
      "message": "Clean up local variable usage - Remainder\n\nMinor cleanups in a couple ofplaces:\n* Config funtions\n* Stackforge\n* TLS\n\nCombined a couple of smaller changesets that are loosly related\n\nChange-Id: Ifa16f2e4c0eca0ef3401c0dfdc4f3d91809021a5\n"
    },
    {
      "commit": "410f5c0016a9d3b1fbd42b95ce1402a1c614e3d3",
      "tree": "51b01c296832b71b71aac47f6ef3969d57163ab9",
      "parents": [
        "4fbb8137af8c3e0e5805db7337651048f11b6bb2"
      ],
      "author": {
        "name": "Ryota MIBU",
        "email": "r-mibu@cq.jp.nec.com",
        "time": "Fri Apr 04 02:00:31 2014 +0900"
      },
      "committer": {
        "name": "Ryota MIBU",
        "email": "r-mibu@cq.jp.nec.com",
        "time": "Tue Jun 17 15:43:07 2014 +0900"
      },
      "message": "Fix unsubstituted filename creation\n\nSince merge_config_file() tries to create an unsubstituted config file,\nstack.sh fails due to permission denied in the file creation when you\nuse \u0027[[post-config|/$Q_PLUGIN_CONF_FILE]]\u0027 and the file does not exist.\n\nThis patch deletes unnecessary \u0027touch\u0027 command, because the file will\nbe made by \u0027iniset\u0027 function in the next command line with evaled\nstring from \u0027configfile\u0027.\n\nThis patch also fixes merge_config_group() to use evaled \u0027configfile\u0027\nwhen it checks the directory of the config file exists.\n\nChange-Id: I608847a34143b5c6a1708c180186dd88a32dd44b\nCloses-bug: #1294213\n"
    },
    {
      "commit": "aee18c749b0e3a1a3a6907a33db76ae83b8d41d9",
      "tree": "01a8ab5abb9867986f3e848918abd9e749b691cd",
      "parents": [
        "0ed4af02da0bd4a0f757dd8c2156913e6c7a724c"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 21 15:35:08 2014 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Feb 28 07:59:03 2014 +1100"
      },
      "message": "Enforce function declaration format in bash8\n\nCheck that function calls look like ^function foo {$ in bash8, and fix\nall existing failures of that check.  Add a note to HACKING.rst\n\nChange-Id: Ic19eecb39e0b20273d1bcd551a42fe400d54e938\n"
    },
    {
      "commit": "bff001456cc5a804f752722d1c406bbb880dd542",
      "tree": "4c79cb3be96203c7c6bd1dabfbe8587e7feade67",
      "parents": [
        "03af3f180251e19eff2cdab317e3019d8af75e58"
      ],
      "author": {
        "name": "Isaku Yamahata",
        "email": "isaku.yamahata@intel.com",
        "time": "Fri Dec 20 11:55:08 2013 +0900"
      },
      "committer": {
        "name": "Isaku Yamahata",
        "email": "isaku.yamahata@intel.com",
        "time": "Fri Dec 20 12:02:39 2013 +0900"
      },
      "message": "config: get_meta_section() misunderstands the beginning of metasection\n\nFor example, the line, \"if [[ -n $no_proxy ]]; then\" is misparsed\nas the beginning of metasection because get_meta_section() misses\nescaping of \"|\" unlike get_meta_section_files().\nThis patch adds necessary escape as \"|\" -\u003e \"\\|\".\n\nChange-Id: Ic14b2ac167037c4f5db89492f0e8a4c5b13c7b6d\nCloses-Bug: #1262960\n"
    },
    {
      "commit": "2ac8b3f3c2ebe586802d7789cf152b13fe0d0497",
      "tree": "118837bd091932efab16e3fd59ec1e5f1824c6f9",
      "parents": [
        "df8410c387034bec1b82c8f9d9fd949967f7080b"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Dec 04 17:20:28 2013 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Dec 09 10:30:02 2013 -0600"
      },
      "message": "Fix a couple of INI whitespace bugs\n\n* iniset() bails if no section or option (attribute) is supplied\n* merge_config_file() properly skips lines with only whitespace\n\n* Also split the ini-tests into their own script\n\nBug 1257954\n\nChange-Id: Ie31c5bd0df8dfed129fbcf1e37228aaf25e9305d\n"
    },
    {
      "commit": "537d4025c511d9b162726bb5c972da72028573ed",
      "tree": "f5e9e3e9d545225b41ca4678b834aab01f12618a",
      "parents": [
        "8d3beb673cee45db73617f84b92df7b588db0411"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 07:43:22 2013 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sdague@linux.vnet.ibm.com",
        "time": "Tue Oct 22 12:59:22 2013 -0400"
      },
      "message": "whitespace cleanup on functions \u0026 lib/config\n\nfix some of the bash8 issues found in functions and lib/config,\npart of the long march towards fixing all the bash8 issues.\n\nChange-Id: Ia131f64870acb0f9d196fe1a9a45d633abb6fc4d\n"
    },
    {
      "commit": "893e66360caf3bcf0578d4541b3c17d089c33b02",
      "tree": "c91bd45ede20b9739c5dd39bec08d8ee32937af5",
      "parents": [
        "7ab1f22c606ae55883ac47298c810062965a1527"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Sep 13 15:05:51 2013 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Oct 11 11:41:58 2013 -0500"
      },
      "message": "Add meta-config via local.conf\n\nThis defines a new local.conf file that is designed to take the place of all\nof the \u0027pass-through\u0027[1] configuration options that have been defined in DevStack.\n\n* new local.conf file can contain multiple config file settings to be\n  merged in to existing project config files\n* localrc can be embedded into local.conf and will auto-extract if\n  localrc does not exist\n* Adds functions get_meta_section(), get_meta_section_files(),\n  merge_config_file() and merge_config_group()\n* Adds EXTRA_OPTS, EXTRA_BAREMETAL_OPTS, Q_DHCP_EXTRA_DEFAULT_OPTS and\n  Q_SRV_EXTRA_DEFAULT_OPTS to the deprecated warning list at the end of stack.sh\n\n[1] Pass-through options are those that do not configure or change DevStack\u0027s behaviour\nbut simply set a value in a project config file.  This includes most of the EXTRA_XXX_OPTS\nconfiguration variables.\n\nChange-Id: I367cadc86116621e9574ac203aafdab483d810d3\n"
    }
  ]
}
