)]}'
{
  "log": [
    {
      "commit": "7943a92bdbdd2a3b2f75fe66ee8c69db65147692",
      "tree": "219779ddebabf2bdc63e8d54ec259882ecd65a3b",
      "parents": [
        "c0882aeaae8ebdc692f2f0e005f8795bbb6c3d53"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "haleyb.dev@gmail.com",
        "time": "Mon Mar 14 13:53:41 2022 -0400"
      },
      "committer": {
        "name": "Brian Haley",
        "email": "haleyb.dev@gmail.com",
        "time": "Mon Mar 14 16:04:08 2022 -0400"
      },
      "message": "Do not use hardcoded IPv4 localhost value\n\nThere are a couple of places that still use a hardcoded\n127.0.0.1 value, even if devstack is run with\nSERVICE_IP_VERSION\u003d6 in local.conf. While things still\nwork, SERVICE_LOCAL_HOST should be used instead since\neverything else could be using IPv6.\n\nChange-Id: I2dd9247a4ac19f565d4d5ecb2e1490501fda8bca\n"
    },
    {
      "commit": "343e35162798af4c0399f2f7c0a733c568782686",
      "tree": "dcaddb94eb36d7bc5e84160e2a0ff0fc1deaced5",
      "parents": [
        "a756f4b9681d429f2612164eb01d57c800ff2d2a"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Feb 03 11:19:08 2022 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Feb 08 08:08:19 2022 +1100"
      },
      "message": "Bump fedora-latest to F35\n\nGenerally this is straight forward, but Horizon has a dependency issue\nwith pyScss (described in [1]) so it is disabled, for now.\n\n[1] https://bugs.launchpad.net/horizon/+bug/1960204\n\nCo-Authored-By: Dr. Jens Harbott \u003charbott@osism.tech\u003e\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/827578\nChange-Id: I7c4bf0945f9ac5bd563fe0a698c09b8571c97c5e\n"
    },
    {
      "commit": "7880ba665e2d594b2eabb0533e6dca52e042ca50",
      "tree": "929c86999c7e4588f1f8186015fa86f2286f8fb8",
      "parents": [
        "6c849e371384e468679d3d030fe494a36587c505"
      ],
      "author": {
        "name": "Kevin Zhao",
        "email": "kevin.zhao@linaro.org",
        "time": "Wed Mar 31 04:58:28 2021 +0000"
      },
      "committer": {
        "name": "wangxiyuan",
        "email": "wangxiyuan1007@gmail.com",
        "time": "Wed Dec 22 14:47:27 2021 +0800"
      },
      "message": "openEuler 20.03 LTS SP2 support\n\nopenEuler is an open-source Linux based operating system. The current\nopenEuler kernel is based on Linux and supports multi arch, such as X86_64\nand aarch64. It fully unleashes the potential of computing chips. As an\nefficient, stable, and secure open-source OS built by global open-source\ncontributors, openEuler applies to database, big data, cloud computing,\nand AI scenarios. openEuler is using RPM for package management.\n\nNote:\nCurrently there is no available package for uwsgi-plugin-python3 and ovn, so that\nopenEuler needs manually install them from source.\n\nWebsite: https://www.openeuler.org/en/\n\nChange-Id: I169a0017998054604a63ac6c177d0f43f8a32ba6\nCo-Authored-By: wangxiyuan \u003cwangxiyuan1007@gmail.com\u003e\nSigned-off-by: Kevin Zhao \u003ckevin.zhao@linaro.org\u003e\n"
    },
    {
      "commit": "56e75e4aef3ea42d13b192e805c48357b0071239",
      "tree": "1ada55bdf53f1c3ae5ec93a0ea34805a17f20ae3",
      "parents": [
        "8d1bfcacf8ffc73f0aa8c8a8a9e0fee447a1c116"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "frickler@offenerstapel.de",
        "time": "Tue Sep 28 20:02:34 2021 +0200"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "frickler@offenerstapel.de",
        "time": "Tue Sep 28 20:05:08 2021 +0200"
      },
      "message": "Fix uwsgi config for trailing slashes\n\nThe apache mod_proxy documentation[0] says that trailing slashes need to\nmatch for the ProxyPass statement. Since adding a slash to the redirected\nurl would break things that need to access endpoints like /identity\nwithout anything added, we need to drop the trailing slash for the\ntarget URL. See [1] for the discussion of the CVE fix that changed the\nprevious behavior.\n\n[0] https://httpd.apache.org/docs/trunk/mod/mod_proxy.html#proxypass\n[1] https://bugs.launchpad.net/ubuntu/+source/apache2/+bug/1945274\n\nDepends-On: https://review.opendev.org/c/openstack/devstack/+/811389\nChange-Id: Ia6b1a41957833fba87a2e6f048d2483267632385\n"
    },
    {
      "commit": "7ad4cd07c8bf4f302acc4fc6684e362309332c9d",
      "tree": "cc86b1fdfdef4a624fbd599dd42e63f6a1403b53",
      "parents": [
        "0386c1cda61b57da3aedde05e317137c354fb4d9"
      ],
      "author": {
        "name": "Ghanshyam Mann",
        "email": "gmann@ghanshyammann.com",
        "time": "Thu Apr 29 09:24:38 2021 -0500"
      },
      "committer": {
        "name": "Ghanshyam Mann",
        "email": "gmann@ghanshyammann.com",
        "time": "Thu Apr 29 09:33:59 2021 -0500"
      },
      "message": "Drop Bionic support\n\nSince victoria cycle, we have moved upstream testing to\nUbuntu Focal (20.04) and so does no Bionic distro in\nXena cycle testing runtime[1]. Grenade jobs also started\nrunning on Focal since victoria was released.\n\nOnly thing left was legacy jobs which were not migrated to\nUbuntu Focal in Victoria and as per another community-wide\ngoal[2], all the lgeacy jobs were suppsoed to be migrated\nto zuulv3 native jobs in victoria cycle itself. One of the\npending job was in nova (nova-grenade-multinode) which is also\nmigrated to zuulv3 native now\n- https://review.opendev.org/c/openstack/nova/+/778885\n\nIf there is any job running on bionic, we strongly recommend\nto migrate it to Ubuntu Focal.\n\n[1] https://governance.openstack.org/tc/reference/runtimes/xena.html\n[2] https://governance.openstack.org/tc/goals/selected/victoria/native-zuulv3-jobs.html\n\nChange-Id: I39e38e4a6c2e52dd3822c9fdea354258359a9f53\n"
    },
    {
      "commit": "489645f79ec34566d1f61f8001e00411c1fb4ca7",
      "tree": "a1d307f8dc81e8d7b9c2b65f8e5a44e5a4dbeb9b",
      "parents": [
        "12a88cfb7685db63d30b1f2d1558cdfe9ac1eb4d",
        "1e26508983a1ebf2c23560395ffca8b1f6f79462"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.opendev.org",
        "time": "Thu Jul 16 04:54:23 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jul 16 04:54:23 2020 +0000"
      },
      "message": "Merge \"Use python3-mod-wsgi instead of mod_wsgi on CentOS8\""
    },
    {
      "commit": "09eea0b20bf750baa10b4edb5cd52e31b19a4a3a",
      "tree": "a18190cea41b2fce8ebc2ef2e0dc10d1281110e9",
      "parents": [
        "73ad9760a384e3f872de07a174440fe8e3b174ec"
      ],
      "author": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Thu Jul 09 08:31:51 2020 -0700"
      },
      "committer": {
        "name": "Dan Smith",
        "email": "dansmith@redhat.com",
        "time": "Tue Jul 14 08:07:07 2020 -0700"
      },
      "message": "Make Glance standalone-ness a separate flag\n\nFull Glance functionality requires Glance being run in a configuration\nwhere it can spawn long-running task threads. The default uwsgi mode\ndoes not allow this, and the current workaround is to set WSGI_MODE\nto something other than uwsgi to get the devstack code to deploy\nGlance as a standalone service. Since this affects the entire rest of\nthe deployment, this patch separates out a flag to control this behavior\nspecifically for Glance. When WSGI_MODE\u003duwsgi, control of the Glance\ndeployment mechanism is allowed via GLANCE_STANDALONE\u003dTrue|False. If\nWSGI_MODE!\u003d uwsgi then we deploy standalone Glance anyway.\n\nChange-Id: I79068ce0bd7414bc48ff534ee22f0de5d7b091cb\n"
    },
    {
      "commit": "8956006e519022bc9640476674e638c7dd080478",
      "tree": "5a14a5274bc7bb99cb1fb993f768ddbc0290cb9c",
      "parents": [
        "3cbb33e5c6068d80c50f64a543550611eca8309a"
      ],
      "author": {
        "name": "Xinliang Liu",
        "email": "xinliang.liu@linaro.org",
        "time": "Thu Jul 02 08:31:10 2020 +0000"
      },
      "committer": {
        "name": "Xinliang Liu",
        "email": "xinliang.liu@linaro.org",
        "time": "Thu Jul 02 08:34:01 2020 +0000"
      },
      "message": "Fix string comparison\n\nString comparison should be included with square brackets.\n\nChange-Id: I9a4fab7848e5dba8a5b3b09a75e7aac213368706\n"
    },
    {
      "commit": "1e26508983a1ebf2c23560395ffca8b1f6f79462",
      "tree": "ec071db7ba8b7f0f7c9b463b56b51a115c1c1e0f",
      "parents": [
        "3cbb33e5c6068d80c50f64a543550611eca8309a"
      ],
      "author": {
        "name": "Hirotaka Wakabayashi",
        "email": "hiwkby@yahoo.com",
        "time": "Thu Jul 02 06:19:21 2020 +0000"
      },
      "committer": {
        "name": "Hirotaka Wakabayashi",
        "email": "hiwkby@yahoo.com",
        "time": "Thu Jul 02 06:27:06 2020 +0000"
      },
      "message": "Use python3-mod-wsgi instead of mod_wsgi on CentOS8\n\nThis fixes a stack.sh execution error on CentOS8. We should use\npython3-mod_wsgi instead of mod_wsgi since mod_wsgi is replaced by\npython3-mod_wsgi. The following change may affect this issue.\nhttps://git.centos.org/rpms/mod_wsgi/c/4a746b53e9e3fef74b227e016e785449160871b8?branch\u003dc8s\n\nChange-Id: I5344ecf519e1a79091b6158c2d711d09b21fae0c\nCloses-Bug: #1885645\n"
    },
    {
      "commit": "d7a82f41e469fc51fb021184c1fa6c98da428411",
      "tree": "8b0efcf039e29af25b4c70f7a842ae3b44cfbda6",
      "parents": [
        "f6286cb586eb1f861866bfdf85c4f873c79fd592"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 10:21:09 2020 +0200"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Fri Jun 26 15:27:32 2020 +0200"
      },
      "message": "Drop support for python2\n\npython2 is EOL, let\u0027s move on and only support python3.\n\nChange-Id: Ieffda4edea9cc19484c04420ed703f7141ef9f15\n"
    },
    {
      "commit": "3480093b937b45e05f12d2af9df26d076f05067e",
      "tree": "23c1d3338118620045d2ba8b930e462069104b1b",
      "parents": [
        "f1ed7c77c50ac28cb58c9f7ed885c6a3e0a75403"
      ],
      "author": {
        "name": "Dr. Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Thu Feb 13 09:38:35 2020 +0000"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 08:04:18 2020 +0200"
      },
      "message": "Make devstack run on focal (Ubuntu LTS 20.04)\n\n- Add a nodeset and a platform job\n- Drop uwsgi-py2 pkg that no longer exists\n- Blacklist tests that are currently failing\n\nChange-Id: Ib4416dc2f5e003fd770f5240a8f78213c56af8e6\n"
    },
    {
      "commit": "c2c2b6b415a4289ab740e7506f68e820ecbc5818",
      "tree": "8f5e24525a73497a3b701cd4e1b2f1335ee7de0b",
      "parents": [
        "a13ab8db2dbd959b5a1f52ac03d3fca07a19eb04"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Mon Jun 15 12:48:38 2020 +0200"
      },
      "committer": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Thu Jun 18 10:18:06 2020 +0000"
      },
      "message": "Handle uwsgi install for CentOS/RHEL\n\nChange-Id: Ifa876b3e5f89258f40055fa7ce03f5e9c601771c\n"
    },
    {
      "commit": "10c3ffd26557f1921841e456b003a77f6fb11948",
      "tree": "98973d6cf9ceb4cc5cdbac75254ea27006504f0c",
      "parents": [
        "2d903568ed4158aa668bbda6986307a8780c71a4"
      ],
      "author": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Mon Jun 15 10:03:42 2020 +0200"
      },
      "committer": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Mon Jun 15 10:03:42 2020 +0200"
      },
      "message": "Handle uwsgi install for openSUSE\n\nAdd packages for openSUSE distribution for installation of uwsgi.\n\nChange-Id: I2ce8959460a79b6472bd9dd59edd7d94eccbacf5\n"
    },
    {
      "commit": "2d903568ed4158aa668bbda6986307a8780c71a4",
      "tree": "ae6a9a0e1042f21b9bce0cb40b3463e665e0f6ae",
      "parents": [
        "84737ebd96327310ec5f8f7c312aeae12cbeb234"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu May 03 10:51:30 2018 +1000"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Mon Jun 15 09:53:04 2020 +0200"
      },
      "message": "Use packaged uwsgi on Fedora and Ubuntu\n\nBuilding uwsgi from source was a workaround that was introduced a long\ntime ago, it doesn\u0027t seem like it is needed anymore and will actually\nfail for Ubuntu 20.04.\n\nAlso it doesn\u0027t match what will happen for most real-world\ninstallations, so let\u0027s try to get back to using distro packages. We\u0027ll\nstill use the source install for RHEL/Centos, it remains to be tested\nwhether we can get back to using distro versions there, too.\n\nChange-Id: I82f539bfa533349293dd5a8ce309c9cc0ffb0393\n"
    },
    {
      "commit": "9fd38e79701b65d41116a8915e47978fc50176c6",
      "tree": "49f4cfff0c9566dcb6703af5ad870d5fe7ddb268",
      "parents": [
        "83194f956e1c5308386adbf7146626e75875bcfe"
      ],
      "author": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Mon Dec 11 12:20:25 2017 +0100"
      },
      "committer": {
        "name": "Attila Fazekas",
        "email": "afazekas@redhat.com",
        "time": "Thu Jan 11 16:19:36 2018 +0100"
      },
      "message": "Add Fedora 27 support\n\nRemoving the (f23,)f24 support they are EOL.\nThe only non-trivial change is the apache-httpd default worker change,\nhowever might not be bad idea to use `event` instead of `worker`\nin the future, but for now keep it AS-IS and continue to use `worker`.\n\nChange-Id: I96d414a30b58bc4b43da45066fdf310a6a830079\nCloses-Bug: #1740194\n"
    },
    {
      "commit": "57ddd7c1613208017728c50370d2e259c072d511",
      "tree": "91aad5755cf75a8b9776aec1615a441b0f5e7173",
      "parents": [
        "b907adce85836224f76d93de7b204be43b218f31",
        "a3488d5f0067b570974c14572c58bbf8cedf7ed2"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Thu Oct 19 18:25:30 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Oct 19 18:25:30 2017 +0000"
      },
      "message": "Merge \"Remove proxy-sendcl from mod_proxy_uwsgi apache path\""
    },
    {
      "commit": "ef60f2b7180f269a53f405efa7449618eddf86a1",
      "tree": "85e2c8b1a9e4b15a83186ebe5a8b18dab825fb08",
      "parents": [
        "477a962861afe2e859179245d6d39cb41f6c499d"
      ],
      "author": {
        "name": "Dinesh Bhor",
        "email": "dinesh.bhor@nttdata.com",
        "time": "Tue Sep 05 14:40:32 2017 +0530"
      },
      "committer": {
        "name": "Dinesh Bhor",
        "email": "dinesh.bhor@nttdata.com",
        "time": "Fri Sep 08 12:49:00 2017 +0530"
      },
      "message": "Enable reloadable config in services\n\nuwsgi services:\n[1] By default uwsgi is set to exit on reload this breaks config reloading\n    of the service [1][2]. It needs to be set to \u0027false\u0027.\n[2] Requires to add \u0027systemctl reload\u0027 command support by adding ExecReload\n    in unit file.\n\nNon uwsgi services:\n[1] Non uwsgi services only requires to add ExecReload in unit file.\n\nThere was a similar patch submitted by Matthew Treinish [3] but it was\nalready set to workflow +1(not merged as having dependency on other patch)\nand it was having some issues as specified in comment and missing reload\nfunctionality for other services.\n\n[1] https://etherpad.openstack.org/p/uwsgi-issues\n[2] http://uwsgi-docs.readthedocs.io/en/latest/Options.html#exit-on-reload\n[3] https://review.openstack.org/#/c/490904/2\n\nChange-Id: I78f5e9d4574671c74a52af64724946feb41c2d7a\n"
    },
    {
      "commit": "477a962861afe2e859179245d6d39cb41f6c499d",
      "tree": "59a314a73112284a03333241ed9758e2350514b1",
      "parents": [
        "63651db44ddef10bc629312707ba6d2a349fbc10"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Aug 04 11:09:26 2017 -0400"
      },
      "committer": {
        "name": "Dinesh Bhor",
        "email": "dinesh.bhor@nttdata.com",
        "time": "Wed Sep 06 11:55:04 2017 +0530"
      },
      "message": "Enable graceful shutdown for services\n\n1] Process using uwsgi:\n   uwsgi services doesn\u0027t support for graceful shutting down [1].\n   It requires some changes in unit files [2] including adding below\n   graceful shutdown hook and changing KillSignal:\n      --hook-master-start \"unix_signal:15 gracefully_kill_them_all\n   All the steps and changes required are specified in etherpad [1].\n\n2] Non uwsgi services needs below changes:\n   In [service] section:\n   a. Add KillMode \u003d process\n   b. Add TimeoutStopSec \u003d infinity\n\nNOTE:\nCreating unit file for services other than uwsgi is handled by the\n\u0027write_user_unit_file\u0027 function [3]. This function is common for all\nthe services so this patch adds the above mentioned parameters for\nservices using ServiceLauncher also though they don\u0027t require.\n\nAdded a new stackrc variable WORKER_TIMEOUT which is required to add\ngraceful shutdown support to uwsgi services. It will be set as a value\nto \u0027worker-reload-mercy\u0027 [4] in uwsgi file of service. The default\nvalue set to this variable is 90.\n\n[1] https://etherpad.openstack.org/p/uwsgi-issues\n[2] https://www.freedesktop.org/software/systemd/man/systemd.kill.html\n[3] https://github.com/openstack-dev/devstack/blob/2967ca3dfd0d64970dfa5dfa7ac2330ee7aa90ed/functions-common#L1439-L1461\n[4] http://uwsgi-docs.readthedocs.io/en/latest/Options.html#worker-reload-mercy\n\nCo-Authored-By: Dinesh Bhor \u003cdinesh.bhor@nttdata.com\u003e\nChange-Id: Ia95291325ce4858b47102dd49504250183f339ab\n"
    },
    {
      "commit": "a3488d5f0067b570974c14572c58bbf8cedf7ed2",
      "tree": "903cd9a9229717641818092bec2c173d8ad6d245",
      "parents": [
        "7acc29ba9a24c1c72a36b6c032b720d3315293ed"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Thu Aug 10 14:55:15 2017 -0400"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Mon Aug 14 15:47:11 2017 -0400"
      },
      "message": "Remove proxy-sendcl from mod_proxy_uwsgi apache path\n\nCalling setenv appears to be globally scoped which is breaking the\nglance path which relies on chunked uploads. The glance path is\nseparated by using mod_proxy instead of mod_proxy_uwsgi because\nmod_proxy_uwsgi doesn\u0027t support chunked encoding.[1] The proxy-sendcl [2]\nwas set on the mod_proxy_uwsgi path just in case someone tried to send a\nchunked request to the api server we would be able to handle it. It\ntells apache to locally cache the chunked request and send the\ncontent-length as a normal upload to the upstream server. However, if we\ncan only set it globally across then small potential benefit is not worth\nhaving all glance uploads cached by apache. This commit just removes\nsetting the flag. In the future if we can have devstack isolate this\nflag it might be worth adding back to the mod_proxy_uwsgi path, but for\nright now it\u0027s not worth the tradeoff.\n\n[1] https://github.com/unbit/uwsgi/issues/1540\n[2] https://httpd.apache.org/docs/2.4/mod/mod_proxy.html#request-bodies\n\nDepends-On: Idf6b4b891ba31cccbeb53d373b40fce5380cea64\nChange-Id: Iab2e2848877fa1497008d18c05b0154892941589\nCloses-Bug: #1709970\n"
    },
    {
      "commit": "41e6e12318718c3c5eb6f47ed75a215ed67eccf2",
      "tree": "0fd92dd3c55fa02f4eb4e19704fe356d260baad2",
      "parents": [
        "2f9825711f8c9234d702e401ee828ad403d9e72f"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Aug 08 15:06:26 2017 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Aug 08 15:58:22 2017 +1000"
      },
      "message": "Switch Centos/Fedora to Apache woker MPM\n\nIn trying to debug periodic gate instability of CentOS, I noticed that\nit is using the prefork mpm, while Ubuntu is defaulting to the\nmulti-threaded worker mpm.\n\nOne of the problems seems related to 502 proxy errors from the TLS\nproxy.  We see out-of-sync timestamps in the centos TLS proxy access\nlogs, which might be innocent behaviour based on the prefork model or\nindicate something else.\n\nBefore going too deep down this rabbit-hole, I think it is better for\nconsistency to use the same mpm model on all our platforms, and start\ndebugging from there.\n\nChange-Id: I9881f2e7d51fdd9fc0f7fb3e37179aa53171b531\n"
    },
    {
      "commit": "2f7df51cfa422ae79942953ca63d6b3a4aa37dd3",
      "tree": "9d3d59e88d171fb9464fffd98a63b7d6f0a1a095",
      "parents": [
        "254116305c4a471ee857a9301e310bd2c406d937"
      ],
      "author": {
        "name": "Jeremy Liu",
        "email": "liujiong@gohighsec.com",
        "time": "Wed Jul 12 10:09:48 2017 +0800"
      },
      "committer": {
        "name": "Jeremy Liu",
        "email": "liujiong@gohighsec.com",
        "time": "Wed Jul 12 10:09:48 2017 +0800"
      },
      "message": "Correct \u0027uswgi\u0027 to \u0027uwsgi\u0027\n\nChange-Id: I22026e5640a626f45b7508b60f492dbdb30631af\n"
    },
    {
      "commit": "b79531a9f96736225a8991052a0be5767c217377",
      "tree": "cea0e17884b4b91dbb46401aaf0933e06e212a7f",
      "parents": [
        "1560efe9c93b17438ab37d94443832dde3842637"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 30 12:10:06 2017 -0400"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 30 12:24:21 2017 -0400"
      },
      "message": "Increase the socket timeout on uwsgi local mode\n\nThis commit increases the socket timeout value from 4 secs to a much\nhigher 30 secs. This is just for sanity, the load is high when we\u0027re\nseeing the wsgi.input timeouts, so uwsgi might be just closing the\nsocket waiting for data over the wire. 30 seconds is overly conservative\njust so we can rule this out. This will likely be shrunk to a more\nreasonable value in the future.\n\nChange-Id: Iae85d3a084fb33b2a63550d6e353413e98c0b39c\nPartial-Bug: #1701088\n"
    },
    {
      "commit": "1560efe9c93b17438ab37d94443832dde3842637",
      "tree": "6d425e1d0ac0f541a79514c8d44aa73acb56b962",
      "parents": [
        "3415521d5659b2268b8984bf89ede8e34f1b76f7"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 30 12:15:26 2017 -0400"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 30 12:24:21 2017 -0400"
      },
      "message": "Switch local http uwsgi conf to http-socket mode\n\nPreviously the local uwsgi server mode was using uwsgi in http mode.\nThis was unessecary and actually not recommend by the uwsgi docs [1][2]\nThis is because http mode starts a frontend http process that forwards\nrequests to the workers running the python code. This is done for the\nlargely the same reasons we\u0027re using apache as a proxy and is\nunnecessary. http-socket mode doesn\u0027t do this and just exposes the\nworkers as an http interface to the proxy. (in our case apache)\n\n[1] http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html#http-sockets\n[2] http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html\n\nChange-Id: I5671687c8083fa4bdee066c07b083a0f00be532b\n"
    },
    {
      "commit": "248d54b51b049355b22cf17a1473415ad7661f56",
      "tree": "1607da22bbb82f3ba23fecb0d284a96f25b821b3",
      "parents": [
        "8f314400d8dd7113f828a7e53f1c37819fbe1c5f",
        "82d0610f14e09931e00443364c7da25f42aa89de"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Thu Jun 29 23:03:42 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Jun 29 23:03:42 2017 +0000"
      },
      "message": "Merge \"Ensure keepalive isn\u0027t used on uwsgi http mode\""
    },
    {
      "commit": "82d0610f14e09931e00443364c7da25f42aa89de",
      "tree": "e9bb3a1f59fe79e52927a492462b959c5264edec",
      "parents": [
        "87362e572204ed7a8d66b7d4c518735bd311f256"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Wed Jun 28 17:42:31 2017 -0400"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Wed Jun 28 17:42:31 2017 -0400"
      },
      "message": "Ensure keepalive isn\u0027t used on uwsgi http mode\n\nAccording to the uwsgi docs [1] for http keepalive there is a separate\noption for http keep alive, and just setting connection close isn\u0027t\nenough. This commit makes sure we disable http keepalive. This will\nhopefully fix the random connection issues we get on image uploads to\nglance, which uses uwsgi http mode.\n\n[1] http://uwsgi-docs.readthedocs.io/en/latest/HTTP.html#http-keep-alive\n\nChange-Id: Ic5f83c5c93f28b2bd62ca9ac96ca8c87797ea5c9\nCloses-Bug: #1701088\n"
    },
    {
      "commit": "b90bb1a46193b052cd98513213eed688e8e29d23",
      "tree": "ce6573beae654bb7b9b0a9835c82abf1bf2fb2bb",
      "parents": [
        "87362e572204ed7a8d66b7d4c518735bd311f256"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "cdent@anticdent.org",
        "time": "Tue Apr 18 16:30:14 2017 +0000"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Wed Jun 28 17:46:22 2017 +0000"
      },
      "message": "Use uwsgi for nova when NOVA_USE_MOD_WSGI is not False\n\nUnless NOVA_USE_MOD_WSGI is False, run nova-api and nova-metadata\nusing uwsgi.\n\nBecause the metadata server is always expected to run on a port and\nwithout a prefix, we have it configured to use uwsgi but not to\nproxy from apache: uwsgi listens on the configured port itself.\n\nuwsgi process that listen themselve do not need a socket or to\nchmod-socket, so those config lines have been moved to the block\nthat is also writing proxy configuration for apache.\n\nBecause this change only uses uwsgi for nova-api and nova-api-meta,\nnova-api-meta is set to default to enabled in stackrc because the\nnova-api wsgi application used by wsgi only presents the one service\n(osapi_compute).\n\nIf NOVA_USE_MOD_WSGI is False and tls_proxy service is enabled,\nnova-api is run on an internal port reached via the tls_proxy.\n\nDepends-On: I8ff08d61520ccf04e32dcd02f4cecc39dae823cb\nChange-Id: If2d7e363a6541854f2e30c03171bef7a41aff745\n"
    },
    {
      "commit": "1fa653635781cd975a1031e212b35b6c38196ba4",
      "tree": "95578a2dfb81151317f8a270b2fdee969830d4c3",
      "parents": [
        "3410e3e01bdbdbfd360d9baebeac081c33ee0821"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 23 22:32:37 2017 +0000"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Fri Jun 23 22:32:37 2017 +0000"
      },
      "message": "Revert \"Revert \"Use uwsgi for glance-api\"\"\n\nThis reverts commit 3410e3e01bdbdbfd360d9baebeac081c33ee0821.\n\nChange-Id: Ic58711311eb8534cb3c4b25c333197c412ffdce5\n"
    },
    {
      "commit": "3410e3e01bdbdbfd360d9baebeac081c33ee0821",
      "tree": "24a8b8cfbbe7b3543b3b64c136a8e14eb1e4336e",
      "parents": [
        "43304849cfde41fa86a6fdd334ab6e703598ef8d"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Jun 21 22:07:53 2017 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Jun 22 13:48:06 2017 +1000"
      },
      "message": "Revert \"Use uwsgi for glance-api\"\n\nThis reverts commit e6217a9719b88b550ccbbce7c9bc064cb746c1a3.\n\nUnfortunately it seems to break glance; for examples see some of the\nnodepool dib jobs which have all failed to upload images into glance.\n\nNote this has a revert for 43304849cfde41fa86a6fdd334ab6e703598ef8d as\nwell, since that uses GLANCE_URL defined here.\n\n[1] http://logs.openstack.org/51/475051/2/gate/gate-dsvm-nodepool-redhat-src/e1bdb34/\n[2] http://logs.openstack.org/51/475051/2/gate/gate-dsvm-nodepool-ubuntu-src/6a7665b/\n[3] http://logs.openstack.org/51/475051/2/gate/gate-dsvm-nodepool-opensuse-src/b357de1/\n\nChange-Id: I2aea120e733b05e806801121ec994f4e31a337d9\n"
    },
    {
      "commit": "7fef90aff9b023709428977c41a8db5893675c81",
      "tree": "1c1a745e62b88d263c7f38af07c01e619cd47040",
      "parents": [
        "3603bf59c363aa6ed2dca57c5fef8d35aceb46c1",
        "e6217a9719b88b550ccbbce7c9bc064cb746c1a3"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jun 21 08:34:52 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jun 21 08:34:52 2017 +0000"
      },
      "message": "Merge \"Use uwsgi for glance-api\""
    },
    {
      "commit": "f500d6a29d13dff0731c54eff832678f012707c4",
      "tree": "5ceda4aaf74ca4f0c24065c8a489693cf0a9762a",
      "parents": [
        "f4b4a79979c22e116964579ef44f8e9bb3713ad2",
        "d0db62a476e29355ca08db0237295139c8fce4f6"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jun 14 06:18:11 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jun 14 06:18:12 2017 +0000"
      },
      "message": "Merge \"Use systemd-tmpfiles to create /var/run/uwsgi\""
    },
    {
      "commit": "35649ae0d2a356c310fd92f16356bdd086cab290",
      "tree": "896b2dddcdd7e6884f7876dd20293d834e1833a6",
      "parents": [
        "9b2a2fa55dbba724a781d2720546611a8add8936"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Sat May 27 17:52:55 2017 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Sun May 28 09:58:51 2017 -0700"
      },
      "message": "Make stack.sh work on SUSE\n\nThis adds packages to suse for systemd python linkages as well as\napache2 and which. And configures mod_proxy and mod_proxy_uwsgi with\na2enmod.\n\nWe also properly query if apache mods are enabled to avoid running\ninto systemd service restart limits. Enable mod_version across the board\nas we use it and it may not be enabled by default (like in SUSE).\n\nAlso in addition to enabling mod_ssl we enable the SSL flag so that TLS\nwill work...\n\nFinally we tell the system to trust the devstack CA.\n\nChange-Id: I3442cebfb2e7c2550733eb95a12fab42e1229ce7\n"
    },
    {
      "commit": "e6217a9719b88b550ccbbce7c9bc064cb746c1a3",
      "tree": "83fbc563d98a97f376042e8f5e76fbf8a92dd80f",
      "parents": [
        "309b99ebcfa9d8bcf18c1d3eed1e52787c63f8c7"
      ],
      "author": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Mon Apr 24 16:49:04 2017 -0400"
      },
      "committer": {
        "name": "Matthew Treinish",
        "email": "mtreinish@kortar.org",
        "time": "Sun May 28 14:36:36 2017 +0000"
      },
      "message": "Use uwsgi for glance-api\n\nThis commit adds support for deploying glance as a wsgi script under\nuwsgi. To get around limitations in the uwsgi protocol when using\npython3 for chunked encoding we have to setup uwsgi in http mode on a\nrandom port listening on localhost and use mod_proxy to forward the\nincoming requests. The alternative approach of having apache buffer the\nrequests locally with the send_cl option with mod_proxy_uwsgi only\nworked on python2 and also has the limitation that apache is buffering\nthe entire chunked object, which could be several gigabytes in size.\n\nDepends-On: I089a22a4be4227a551c32442dba27c426f54c87d\nChange-Id: Ie98fb7da5e8ecfa49cd680b88139cb7034d5f88f\n"
    },
    {
      "commit": "d0db62a476e29355ca08db0237295139c8fce4f6",
      "tree": "f29b2edebd8640c6edf3008a4b39fd2b3f756798",
      "parents": [
        "9b2a2fa55dbba724a781d2720546611a8add8936"
      ],
      "author": {
        "name": "Kirill Zaitsev",
        "email": "k.zaitsev@me.com",
        "time": "Fri May 26 19:02:52 2017 +0300"
      },
      "committer": {
        "name": "Kirill Zaitsev",
        "email": "k.zaitsev@me.com",
        "time": "Fri May 26 19:11:02 2017 +0300"
      },
      "message": "Use systemd-tmpfiles to create /var/run/uwsgi\n\nOn ubuntu contents of /var/run do not persist between reboots. Devstack\nuses /var/run/uwsgi as home for wsgi sockets. This means that after\nrebooting the machine services, that rely on uwsgi would fail to start.\nCurrently it affects keystone.service and placement-api.service.\nThis patch changes delegates directory creation to systemd-tmpfiles,\nwhich would run on startup.\n\nChange-Id: I27d168cea93698739ef08ac76c828695a49176c7\nCloses-Bug: #1692767\n"
    },
    {
      "commit": "f6a2d2cd4edd06408690081d6207ff73b76f543a",
      "tree": "787b8f9837aadc464607276dae87c573b6c24c76",
      "parents": [
        "2eb322ab2e16b017ba71cfcc4d2ce84be8e5869c"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Apr 26 10:50:29 2017 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Apr 26 11:09:59 2017 +1000"
      },
      "message": "Always restart apache\n\nAs described in [1], it seems that mod_wsgi is not \"graceful\" reload\nsafe.  Upon re-init, it can end up in a segfault loop.\n\nThe \"reload\" (not *restart*) after setting up uwsgi was added with\nI1d89be1f1b36f26eaf543b99bde6fdc5701474fe but not causing an issue\nuntil uwsgi was enabled.\n\nWe do not notice in the gate, because the TLS setup ends up doing a\nrestart after this setup.  In the period between the\nwrite_uwsgi_config and that restart, Apache is sitting in a segfault\nloop, but we never noticed because we don\u0027t try talking to it.  Other\njobs that don\u0027t do any further apache configuration have started\nfailing, however.\n\nLooking at the original comments around \"reload_apache_server\" I\u0027m not\nsure if it is still necessary.  [2] shows it is not used outside these\ntwo calls.\n\n[1] https://bugzilla.redhat.com/show_bug.cgi?id\u003d1445540\n[2] http://codesearch.openstack.org/?q\u003dreload_apache_server\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d\n\nCloses-Bug: #1686210\nChange-Id: I5234bae0595efdcd30305a32bf9c121072a3625e\n"
    },
    {
      "commit": "aa26baacb8206967d61aef74686be94e3f8c90b8",
      "tree": "c729e2ee885069c2ce2c8e90da8f5f894ca1950d",
      "parents": [
        "1b245cef7f078139f95260b080558422063f363f"
      ],
      "author": {
        "name": "rabi",
        "email": "ramishra@redhat.com",
        "time": "Thu Apr 20 10:55:16 2017 +0530"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Apr 21 10:42:27 2017 +1000"
      },
      "message": "Create custom dir for uwsgi domain sockets\n\nOn Centos, apache has a private view of /tmp and thus can\u0027t see this\nsocket, causing keystone to fail. This happened after\nI46294fb24e3c23fa19fcfd7d6c9ee8a932354702.\n\nMove it to /var/run.\n\nCloses-Bug: #1684360\nChange-Id: I47f091656802719c259752454ec88bf50760b967\n"
    },
    {
      "commit": "2fcdaac56e20f1002ae76c6ae1b30a093452d21b",
      "tree": "dbbf624f8c7870ec426bdb04e3266593b3413782",
      "parents": [
        "6ed53156b6198e69d59d1cf3a3497e96f5b7a870"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "cdent@anticdent.org",
        "time": "Tue Apr 18 16:54:12 2017 +0100"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "cdent@anticdent.org",
        "time": "Tue Apr 18 16:54:12 2017 +0100"
      },
      "message": "Make a2dissite fail softly if the site is not enabled\n\na2dissite will return a non-zero error code if the site that is being\ndisabled is not currently enabled (that is, if the conf file for it does\nnot exist). This can happen during development if you\u0027ve been messing\nwith files by hand. Rather than exploding out of a ./stack.sh, accept\nthe missing file as meaning \"it\u0027s disabled\" and carry one. The rpm\nversion of disable, which does not use a2dissite, does this already.\n\nChange-Id: Ie5dfd42efdff4bdba5ffaa765af000dd8e1d596e\n"
    },
    {
      "commit": "6ed53156b6198e69d59d1cf3a3497e96f5b7a870",
      "tree": "07c09ef525734b2b3c3fa7fc1e3b8e5bd0c6869a",
      "parents": [
        "64ffff9b7d79b9e75616cf43f9f7b31c89026f30"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 13:33:16 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Apr 17 16:27:35 2017 -0400"
      },
      "message": "Convert keystone to use uwsgi with the proxy\n\nThis makes keystone use the proxy uwsgi module when running in uwsgi\nmode. It also introduces a new stackrc variable which is WSGI_MODE\nthat we can use to control the conditionals in services that current\nwork with mod_wsgi.\n\nAlso update retry timeouts on proxy pass so that workers don\u0027t disable\ntheir connections during polling for initial activity.\n\nChange-Id: I46294fb24e3c23fa19fcfd7d6c9ee8a932354702\n"
    },
    {
      "commit": "604e598e2abca37c84d6cd3c84ad8fa5295fb327",
      "tree": "b13be5376d2b538fdbde1c031624d0b23552af20",
      "parents": [
        "a1446b960fa7c21bc1e7141921d6fc95c6e212d2"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 13:28:12 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Apr 17 14:51:44 2017 -0400"
      },
      "message": "Install and enable apache uwsgi proxy\n\nThe uwsgi proxy version that comes with Ubuntu xenial is too old, so\nwe have to build it from source. This is a temporary solution until\nthe next LTS.\n\nThis lays the ground work for using it in keystone.\n\nChange-Id: I00fb1759e6988c7df0ce0f3df5ff1ce9fd7cd381\n"
    },
    {
      "commit": "2f8c88e0532b6b712cc386a9c15d833d3629b19a",
      "tree": "157ac93c5e2b9f35f1adcd6f145467032f60c4bd",
      "parents": [
        "2b85cf0f06b099f9a771e9fbdbdef173c9d04784"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 09:08:39 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Apr 14 15:41:02 2017 -0400"
      },
      "message": "Factor out code to write uwsgi config files\n\nInstead of this code all existing in keystone inline, factor out into\na dedicated set of functions, and make keystone use this. This drops\nuwsgi supporting https directly, but that\u0027s not going to be a\nsupported model going forward once we get to proxy only anyway.\n\nChange-Id: I1d89be1f1b36f26eaf543b99bde6fdc5701474fe\n"
    },
    {
      "commit": "2b85cf0f06b099f9a771e9fbdbdef173c9d04784",
      "tree": "fb9595dac852da2c06a70d7e00ac9c5505a74783",
      "parents": [
        "4da0fa8c1387e3888de1f4174b478e82e7cc7a67"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 09:02:14 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Apr 14 15:41:02 2017 -0400"
      },
      "message": "Just use normal restart for apache\n\nWe\u0027re now in a systemd world where systemd is managing the restart\neffectively, there is no reason to be tricksy with apache now that\nwe\u0027re not working around weird upstartd issues.\n\nChange-Id: Ifadfd504eb10a90db5177ea9180b9cd8331a2948\n"
    },
    {
      "commit": "8f8b274e60ac94bd6b2486ea075217411550c257",
      "tree": "ff07747a9d8a111904167f83902693e5907db212",
      "parents": [
        "3d4c6d2dd16280de150b462ae51ccf85a932c7c1"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 09:34:12 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Apr 13 09:35:21 2017 -0400"
      },
      "message": "Clean up apache 2.2 cruft from Ubuntu 12.04\n\nAll the apache 2.2 handling is obsolete now, as we don\u0027t support those\ndistros, so get rid of it.\n\nChange-Id: I9c0f78af2b32afabb2c4264aebc92089c4694f91\n"
    },
    {
      "commit": "afa8a00c14f100cf610ac076f07db2379cfcee20",
      "tree": "d4136642c135cfb9ba5fe01dc30fdb1230d32a7e",
      "parents": [
        "29890549929b4f2ab9dd5c96d0a857708c683997"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Mon Dec 19 09:51:01 2016 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Fri Dec 23 13:15:03 2016 -0500"
      },
      "message": "Switch to python 3.5\n\nUse trueorfalse to normalize the values for USE_PYTHON3\n\nInstall 3.5 instead of 3.4 When USE_PYTHON3 is specified.\nAlso, since not many packages are classified correctly, fallback\nto looking for just \"Programming Language :: Python :: 3\" and\nlog a message for the package to highlight the problem.\n\nAlso special case some services that are *almost* ready\n\nDepends-On: Id48e1b328230fcdf97ed1cb4b97f4c3f9cf6eb8a\nDepends-On: Ib7d9aa0e0b74a936002e0eea0b3af05102b06a62\nChange-Id: I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n"
    },
    {
      "commit": "cfb9f057ea5896687d95cdcc5aa5216ef32b87f8",
      "tree": "4a93106d96e79a8720454f959d1d02df50ae7eda",
      "parents": [
        "84fb7731787a1665ca541ff3e350949bee31685d"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Tue Nov 29 10:43:05 2016 -0800"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Tue Nov 29 10:43:05 2016 -0800"
      },
      "message": "Tune apache connections for tls proxy\n\nWe are seeing connection errors to the proxy occasionally. These errors\ndo not result in a logged http request or error to the backends,\nresulting in a theory that the proxy itself may just not be able to\nhandle the number of connections. More than double the total number of\nconnections that will be accepted by the proxy in an attempt to fix\nthis.\n\nChange-Id: Iefa6c43451dd1f95927528d2ce0003c84248847f\nRelated-bug: 1630664\n"
    },
    {
      "commit": "66ce5c257ae32e269ede901f1737d04e194a6457",
      "tree": "5d2037566f3d0b28a436d4fda63160c94fc61e5c",
      "parents": [
        "91d8a38e16d5dea09df13aa8063a00e31b42efae"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Wed Oct 05 12:11:05 2016 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Wed Oct 05 16:25:53 2016 -0700"
      },
      "message": "Update apache tls proxy logs\n\nThis creates log files per proxy vhost and sets the log level to info to\nhelp debug potential issues with tls proxying.\n\nChange-Id: I02a62224662b021b35c293909ba045b4b74e1df8\n"
    },
    {
      "commit": "4b49e409f853104dae021dfca1a9342ec9ac4709",
      "tree": "dc27f7ff83839baa55b459ca4aa2230c4ed19439",
      "parents": [
        "fb1e1cc7e3de4483de48661b03a4417e2d24957a"
      ],
      "author": {
        "name": "Gregory Haynes",
        "email": "greg@greghaynes.net",
        "time": "Wed Aug 31 18:19:51 2016 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Tue Sep 20 08:14:11 2016 -0700"
      },
      "message": "Use apache for tls-proxy ssl termination\n\nStud is now abandonware (see https://github.com/bumptech/stud) and is\nnot packaged in xenial. Lets use Apache for SSL termination since its\nthere already.\n\nChange-Id: Ifcba410f5969521e8b3d30f02795541c1661f83a\n"
    },
    {
      "commit": "2ca8af45a78226f29c3251cbef6449a0a51a4c1f",
      "tree": "9db1b9497e9b199ec86b1f9ca74282020e779004",
      "parents": [
        "63b7d7bcae863a22feab34079d2d4b5fc1c845f3"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Tue Dec 08 15:36:13 2015 +0900"
      },
      "committer": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Thu Dec 17 20:28:54 2015 +0900"
      },
      "message": "Add 5 time measurement points\n\nrun_process           process starting time\ntest_with_retry       process starting time (for neutron legacy)\nrestart_apache_server Apache HTTPD restart time\nwait_for_service      HTTP server waiting time\ngit_timed             git command execution time\n\nexample\n\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\nDevStack Components Timed\n\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\nrun_process - 52 secs\ntest_with_retry - 3 secs\napt-get-update - 8 secs\npip_install - 76 secs\nrestart_apache_server - 9 secs\nwait_for_service - 11 secs\ngit_timed - 127 secs\napt-get - 15 secs\n\nChange-Id: I66140726617450cd9fe9b702092cacf053a20065\n"
    },
    {
      "commit": "523f48803609b35350b624244fa73b1030c1d5fa",
      "tree": "17f99ab223f42eec58523fa89a49f243efba754b",
      "parents": [
        "307730acd9d271bc4c3d44f2dfed0eab67e1657d"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Oct 13 11:03:03 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Nov 27 15:36:04 2015 +1100"
      },
      "message": "Namespace XTRACE commands\n\nI noticed this when debugging some grenade issues failures.\n\nAn include of grenade/functions stores the current value of XTRACE\n(on) and disables xtrace for the rest of the import.\n\nWe then include devstack\u0027s \"functions\" library, which now overwrites\nthe stored value of XTRACE the current state; i.e. disabled.\n\nWhen it finishes it restores the prior state (disabled), and then\ngrenade restores the same value of XTRACE (disabled).\n\nThe result is that xtrace is incorrectly disabled until the next time\nit just happens to be turned on.\n\nThe solution is to name-space the store of the current-value of xtrace\nso when we finish sourcing a file, we always restore the tracing value\nto what it was when we entered.\n\nSome files had already discovered this.  In general there is\ninconsistency around the setting of the variable, and a lot of obvious\ncopy-paste.  This brings consistency across all files by using\n_XTRACE_* prefixes for the sotre/restore of tracing values.\n\nChange-Id: Iba7739eada5711d9c269cb4127fa712e9f961695\n"
    },
    {
      "commit": "ada886dd43ccc07f48d3a82d8d3d840fe5096c03",
      "tree": "93d62f1c82edc08d813b7f9f7eb9270e7024e055",
      "parents": [
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 14:06:26 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 17:03:32 2015 +1100"
      },
      "message": "Don\u0027t mix declaration and set of locals\n\nIa0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate\nfind instances of setting a local value.  The issue is that \"local\"\nalways returns 0, thus hiding any failure in the commands running to\nset the variable.\n\nThis is an automated replacement of such instances\n\nDepends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81\nChange-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe\n"
    },
    {
      "commit": "144dbc62f8aa6a62cdca403a69bb883cb8552142",
      "tree": "93bee1f2f4c63e9c4d914f534e3dfaccebc2018b",
      "parents": [
        "4627ac118350588ec56371f5fa9593c4c8e1ed9b"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 10 12:51:29 2015 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 10 04:19:19 2015 +0000"
      },
      "message": "Remove config_apache_wsgi mention\n\nThis has only ever appeared in\nI3a5d1e511c5dca1e6d01a1adca8fda0a43d4f632 and has never been exported,\nreferenced, etc.\n\nRemove it to avoid confusion\n(e.g. Icfad40ee6998296727a95613199e5c2d87bd0a45)\n\nChange-Id: Ic71e841f6f751ff43083e12ad734b9c84be7b645\n"
    },
    {
      "commit": "e263c82e48a431e502bd6baceb6dfcfdc1750cbb",
      "tree": "5ca592e668dedb4debc6c7170f3abf37cc4bc0c6",
      "parents": [
        "2f8e08b5728f4272b415b1c0aab8ff62eae29b06"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Dec 05 14:25:28 2014 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Dec 10 11:28:05 2014 -0500"
      },
      "message": "add shebang lines to all lib files\n\nWith gerrit 2.8, and the new change screen, this will trigger syntax\nhighlighting in gerrit. Thus making reviewing code a lot nicer.\n\nChange-Id: Id238748417ffab53e02d59413dba66f61e724383\n"
    },
    {
      "commit": "b4495eb410e3ad348700f127dcf7c0562014c325",
      "tree": "a2af0cc87edd09d37ab764ebc014264c60b79a00",
      "parents": [
        "3d458eb703e52606d8aa8d58757285e61cb47b8b"
      ],
      "author": {
        "name": "Noboru Iwamatsu",
        "email": "n_iwamatsu@jp.fujitsu.com",
        "time": "Wed Jul 02 18:31:31 2014 +0900"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Sep 08 15:59:29 2014 +1000"
      },
      "message": "Use mod_version to clean-up apache version matching\n\nThis change uses mod_version (shipped by default on everything we care\nabout) to set-up version-specific config within apache rather than\nwithin devstack scripts.\n\nClean up the horizon and keystone config file generation to use the\ninternal apache matching.\n\nSince I6478db385fda2fa1c75ced12d3e886b2e1152852 the apache matching in\n\u0027functions\u0027 is actually duplicated.  just leave get_apache_version in\nlib/apache as it is used for config-file name matching in there.\n\nChange-Id: I6478db385fda2fa1c75ced12d3e886b2e1152852\n"
    },
    {
      "commit": "d074dc7f7e37c8ff1ce781f0bbc7f88196567f00",
      "tree": "60995ba98b831d71ccb931f357fd4d11573a0046",
      "parents": [
        "a90898d90438834ac32224162500b7d54fe2e603"
      ],
      "author": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Tue Jun 24 21:33:39 2014 -0700"
      },
      "committer": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Thu Aug 28 08:39:50 2014 -0700"
      },
      "message": "Use the apache 2.4 ErrorLogFormat directive\n\nUse the new ErrorLogFormat directive to make the Keystone logs\nunder Apache to look like the standard oslo log format.\n\nChange-Id: Ie823abf2fa06b8ce22027c21bef455808a4a768e\n"
    },
    {
      "commit": "2df0046fa759481f793d9c51563728b21c7858d8",
      "tree": "ec5beffaf303fe82ec87304b460b394d2521a71b",
      "parents": [
        "0ae54daa4a34502f16cc1751d6ddf8f5f9525171"
      ],
      "author": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Tue Jul 15 11:06:36 2014 -0700"
      },
      "committer": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Tue Jul 15 11:06:36 2014 -0700"
      },
      "message": "Make apache restarts a little more forgiving\n\nApache sometimes is slow to release the port (from the kernel\u0027s\nperspective) which can cause restarts of apache to fail due to the\nrequested port already being bound. This fix introduces a small sleep\nbetween the stop and start to help make apache deployments a bit\nmore resilient.\n\nChange-Id: I9697d71f3cb2d8d5da8fe7ffa8b3e1ade9d52afd\nCloses-Bug: #1342256\n"
    },
    {
      "commit": "46455a34d56c4bd91ccab5a33f801d3c3e065121",
      "tree": "a4cb63e72647347f8da82de4f10670fca84f94f6",
      "parents": [
        "9c0f077dd5e8cc01b30598e2306fce755f0c84e1"
      ],
      "author": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Fri Jun 20 10:37:18 2014 -0700"
      },
      "committer": {
        "name": "Morgan Fainberg",
        "email": "morgan.fainberg@gmail.com",
        "time": "Mon Jul 07 08:46:28 2014 -0700"
      },
      "message": "Update Apache + mod_wsgi deployment mechanisms\n\nAdded a global toggle for enabling HTTPD + mod_wsgi for services\nthat default deploy to running under Apache. When the variable\n``ENABLE_HTTPD_MOD_WSGI_SERVICES`` is set to ``True`` any service\nthat recommends deploying under HTTPD + mod_wsgi, will be run\nunder Apache.\n\nIf ``ENABLE_HTTPD_MOD_WSGI_SERVICES`` is set to ``False`` the\nany service that is defaulted to running under HTTPD + mod_wsgi\nwill (if capable) be run in an alternate deployment strategy (e.g.\neventlet).\n\nUpdated Swift and Keystone to have individual toggles for deploying\nunder HTTPD + mod_wsgi. This is done to allow for gate to run on\nthe services under mod_wsgi where appropriate. Toggles are\n``KEYSTONE_USE_MOD_WSGI`` and ``SWIFT_USE_MOD_WSGI`` and are both\ndefaulted to \"False\" (do not deploy under HTTPD + mod_wsgi).\n\nChange-Id: Id3b121b8f1cde369d184b586e0d875bdbda34813\n"
    },
    {
      "commit": "633a1290e5afbc13030baa2744a9619ef6e332d3",
      "tree": "e4f3f72f8ed2526c69ed1cdb7bbb067f01b67a8f",
      "parents": [
        "7006105997a7d9264dde69b55d109f52cd4c015e"
      ],
      "author": {
        "name": "Ralf Haferkamp",
        "email": "rhafer@suse.de",
        "time": "Mon Jun 16 14:10:05 2014 +0200"
      },
      "committer": {
        "name": "Ralf Haferkamp",
        "email": "rhafer@suse.de",
        "time": "Mon Jun 16 14:10:05 2014 +0200"
      },
      "message": "Fix Apache Site configuration for openSUSE\n\nWe can use the mechnism as on Fedora for openSUSE.\n\nChange-Id: Ic0d1734df3bdc9ec66e1592109b2d3770d6e0144\n"
    },
    {
      "commit": "444a8d53ca32adc4c1bb531f9a7b4f65dcc71ddb",
      "tree": "2d4f6e0e9f51d8740067c9a2711728ccb7b723e9",
      "parents": [
        "afda4efb2c9d69795ecaf1da10322fec67cac093"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jun 06 16:36:52 2014 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jun 06 16:52:20 2014 -0500"
      },
      "message": "Fix Apache site config handling on Fedora\n\nAllow enable/disable_apache_sites() on Fedora to gracefully fail if the\nconfig is not present.  This is primarily an issue when the config from\na previous run is not completely cleaned out (unstack.sh vs clean.sh).\n\nMake APACHE_CONFIG_DIR fully qualified and overrideable in local.conf.\n\nAlso fix Horizon\u0027s handling of its Apache config file to be removed\nin clean.sh.\n\nChange-Id: I78a5de579dd3b02fa2e4e7e00ac0aabe71b531ad\n"
    },
    {
      "commit": "a688bc65104e7d8998ffdb321d67a9f33df6997e",
      "tree": "37bbb8cb4ee95e617a04461e9fe311ab0536d72f",
      "parents": [
        "ced4ba63cdbc727207d18104c123b3511b35cb68"
      ],
      "author": {
        "name": "Gabriel Assis Bezerra",
        "email": "gabrielb@lsd.ufcg.edu.br",
        "time": "Tue May 27 20:58:22 2014 +0000"
      },
      "committer": {
        "name": "Gabriel Assis Bezerra",
        "email": "gabrielb@lsd.ufcg.edu.br",
        "time": "Fri May 30 12:07:24 2014 +0000"
      },
      "message": "Fix the way Apache site configuration files are used, to improve OS portability\n\nOn Ubuntu 14.04, the site configuration file must have a .conf suffix for a2ensite and a2dissite to\nrecognise it. a2ensite and a2dissite ignore the .conf suffix used as parameter. The default sites\u0027\nfiles are 000-default.conf and default-ssl.conf.\n\nOn Ubuntu 12.04, the site configuration file may have any format, as long as it is in\n/etc/apache2/sites-available/. a2ensite and a2dissite need the entire file name to work. The default\nsites\u0027 files are default and default-ssl.\n\nOn Fedora, any file in /etc/httpd/conf.d/ whose name ends with .conf is enabled.\n\nOn RHEL and CentOS, things should hopefully work as in Fedora.\n\nThis change puts all distribution-related site configuration file name differences in lib/apache and\nthe other services gets the file name for its sites using the new exported function\napache_site_config_for \u003csitename\u003e.\n\nIt also makes Fedora disabled sites use the .conf.disabled suffix instead of removing the .conf from\nthe file name.\n\nThe table below summarizes what should happen on each distribution:\n+----------------------+--------------------+--------------------------+--------------------------+\n| Distribution         | File name          | Site enabling command    | Site disabling command   |\n+----------------------+--------------------+--------------------------+--------------------------+\n| Ubuntu 12.04         | site               | a2ensite site            | a2dissite site           |\n| Ubuntu 14.04         | site.conf          | a2ensite site            | a2dissite site           |\n| Fedora, RHEL, CentOS | site.conf.disabled | mv site.conf{.disabled,} | mv site.conf{,.disabled} |\n+----------------------+--------------------+--------------------------+--------------------------+\n\nChange-Id: Ia2ba3cb7caccb6e9b65380f9d51d9d21180b894e\nCloses-bug: #1313765\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": "d8864feae93f898f043febf0b4734f0b61c602d4",
      "tree": "2c7e54c06e7745e39b4e13cc1a85f614deef62ea",
      "parents": [
        "83f7736dcf9039d9114dd4568687f28221bac5d9"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 17 11:00:42 2014 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Mon Feb 17 11:18:12 2014 -0600"
      },
      "message": "Fix shocco errors\n\nClean up comments to fix errors seen while processing with shocco\n\nChange-Id: I0e97ad27613313f03e47c107051ea93b115d4744\n"
    },
    {
      "commit": "e578effb330f6ee0adf3b2b19fba1a7f5c64b2f0",
      "tree": "277b46598d27eb02dccfff23800839cbd711fdc2",
      "parents": [
        "c85ac787ba43115a3f47416470ef16e21ad20caf"
      ],
      "author": {
        "name": "Stephan Renatus",
        "email": "s.renatus@cloudbau.de",
        "time": "Tue Nov 19 13:31:04 2013 +0100"
      },
      "committer": {
        "name": "Stephan Renatus",
        "email": "s.renatus@cloudbau.de",
        "time": "Tue Nov 19 13:39:58 2013 +0100"
      },
      "message": "Make use of STACK_USER instead of relying on USER\n\nQuite easily one ends up calling ./stack.sh in an environment that,\nalbeit being user \"stack\" (for example), doesn\u0027t quite meet the\nexpectations of devstack.  The errors that follow can be rather hard to\ntrack down, as the dependency on `USER` is not mentioned.\n\nTo remedy this situation, this commit\n\n- uses STACK_USER instead of USER and\n- mentions that dependency in the script headers of lib/*\n\nChange-Id: If4cdc39b922ea64b4c0893a0e695ec06349fccc5\n"
    },
    {
      "commit": "6a5aa7c6a20435bbd276a0f1823396b52a8f0daf",
      "tree": "d5137f132a359469f1225d61850466feb4658297",
      "parents": [
        "cb961597cc30f9d8ece17529f09a8291454827e3"
      ],
      "author": {
        "name": "Adam Spiers",
        "email": "aspiers@suse.com",
        "time": "Thu Oct 24 11:27:02 2013 +0100"
      },
      "committer": {
        "name": "Adam Spiers",
        "email": "aspiers@suse.com",
        "time": "Thu Oct 24 17:38:19 2013 +0100"
      },
      "message": "Fix some Markdown formatting issues\n\nAddress miscellaneous issues with Markdown formatting in comments which\nare consumed by shocco when generating the online documentation.\n\nChange-Id: I953075cdbddbf1f119c6c7e35f039e2e54b79078\n"
    },
    {
      "commit": "5470701e10ee68c80860d4cf7e0fa5d8a913c288",
      "tree": "93194851ace00b4dcab8018c42e877f602134187",
      "parents": [
        "d24674ed22687159ced65613c714a075d9804279"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jlennox@redhat.com",
        "time": "Tue Sep 17 12:07:48 2013 +1000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jamielennox@redhat.com",
        "time": "Tue Sep 24 10:48:01 2013 +1000"
      },
      "message": "Fix swift httpd on fedora\n\nImplements a fedora equivalent of ubuntu\u0027s sites-enabled and moves\nenabling of mod_wsgi to the installation period so that it doesn\u0027t have\nto be handled in a platform dependant way later.\n\nFixes: bug 1226363\nChange-Id: I85325179f1792d985b0375572abfe8c8a82fecc3\n"
    },
    {
      "commit": "5a3d7707931186664f32b1232970e3f4f4b7526f",
      "tree": "d17bbafb8171cc3c7bb6fcc33afdc3e2051f859e",
      "parents": [
        "d582460147404587fbcd3a39f350109d1a04a74f"
      ],
      "author": {
        "name": "Jamie Lennox",
        "email": "jlennox@redhat.com",
        "time": "Tue Sep 17 11:44:05 2013 +1000"
      },
      "committer": {
        "name": "Jamie Lennox",
        "email": "jlennox@redhat.com",
        "time": "Tue Sep 17 11:45:32 2013 +1000"
      },
      "message": "Remove change_apache_user_group function\n\nThis function allowed you to change the process running user for all of\napache. This is better handled on a per-process basis.\n\nChange-Id: I165adc0c49fc328f34835856b49983c4e189f143\nFixes: bug 1226346\nFixes: bug 1225853\n"
    },
    {
      "commit": "d98a5d0a58c1fae2ce8adcd8098cefaa9f558381",
      "tree": "77bf37cbfaf5f3f797bc369072b199357d5bf5dd",
      "parents": [
        "bc84cdf4877bf61c5b684dc01e4ef9b77bb3e4be"
      ],
      "author": {
        "name": "zhang-hare",
        "email": "zhuadl@cn.ibm.com",
        "time": "Fri Jun 21 18:18:02 2013 +0800"
      },
      "committer": {
        "name": "zhang-hare",
        "email": "zhuadl@cn.ibm.com",
        "time": "Mon Jul 29 11:15:21 2013 +0800"
      },
      "message": "enable apache2 server as front end for swift\n\n1.install apache and wsgi module\n2.config apache2 vhost and wsgi files for proxy,\naccount, container and object server.\n3.refactor apache functions from horizon and swift\ninto lib/apache\n\nChange-Id: I3a5d1e511c5dca1e6d01a1adca8fda0a43d4f632\nImplements: blueprint enable-apache-frontend-for-swift\n"
    }
  ]
}
