We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
os_project requires python-shade 1.8.1 or higher
<!--- Verify first that your issue/request is not already reported in GitHub -->
##### ISSUE TYPE

<!--- Pick one below and delete the rest: -->
- Bug Report
##### COMPONENT NAME

<!--- Name of the plugin/module/task -->

os_project
##### ANSIBLE VERSION

<!--- Paste verbatim output from “ansible --version” between quotes below -->

```
ansible 2.1.1.0
```
##### OS / ENVIRONMENT

<!---
Mention the OS you are running Ansible from, and the OS you are
managing, or say “N/A” for anything that is not platform-specific.
-->

Ubuntu 16.04
##### SUMMARY

<!--- Explain the problem briefly -->

With ansible 2.1.1.0 the os_project module requires python-shade 1.8 or higher. But ubuntu ships python-shade 1.5, so this module does not work anymore. The os_project module is working correctly with ansible 2.1.0.0
##### STEPS TO REPRODUCE

<!---
For bugs, show exactly how to reproduce the problem.
For new features, show how the feature would be used.
-->

<!--- Paste example playbooks or commands between quotes below -->

```
- name: Create OpenStack project
  os_project:
    cloud: my_cloud
    name: projectname
    description: Test Project
    domain_id: default
    endpoint_type: internal
```

<!--- You can also paste gist.github.com links for larger files -->
##### EXPECTED RESULTS

<!--- What did you expect to happen when running the steps above? -->

A new project in OpenStack
##### ACTUAL RESULTS

<!--- What actually happened? If possible run with high verbosity (-vvvv) -->

<!--- Paste verbatim command output between quotes below -->

```
An exception occurred during task execution. The full traceback is:
Traceback (most recent call last):
  File "/tmp/ansible_g7eGSB/ansible_module_os_project.py", line 222, in <module>
    main()
  File "/tmp/ansible_g7eGSB/ansible_module_os_project.py", line 183, in main
    project = cloud.get_project(name, domain_id=domain)
TypeError: get_project() got an unexpected keyword argument 'domain_id'
```


--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `cloud/openstack/os_project.py`
Content:
```
1 #!/usr/bin/python
2 # Copyright (c) 2015 IBM Corporation
3 #
4 # This module is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License as published by
6 # the Free Software Foundation, either version 3 of the License, or
7 # (at your option) any later version.
8 #
9 # This software is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13 #
14 # You should have received a copy of the GNU General Public License
15 # along with this software.  If not, see <http://www.gnu.org/licenses/>.
16 
17 
18 try:
19     import shade
20     HAS_SHADE = True
21 except ImportError:
22     HAS_SHADE = False
23 
24 DOCUMENTATION = '''
25 ---
26 module: os_project
27 short_description: Manage OpenStack Projects
28 extends_documentation_fragment: openstack
29 version_added: "2.0"
30 author: "Alberto Gireud (@agireud)"
31 description:
32     - Manage OpenStack Projects. Projects can be created,
33       updated or deleted using this module. A project will be updated
34       if I(name) matches an existing project and I(state) is present.
35       The value for I(name) cannot be updated without deleting and
36       re-creating the project.
37 options:
38    name:
39      description:
40         - Name for the project
41      required: true
42    description:
43      description:
44         - Description for the project
45      required: false
46      default: None
47    domain_id:
48      description:
49         - Domain id to create the project in if the cloud supports domains
50      required: false
51      default: None
52      aliases: ['domain']
53    enabled:
54      description:
55         - Is the project enabled
56      required: false
57      default: True
58    state:
59      description:
60        - Should the resource be present or absent.
61      choices: [present, absent]
62      default: present
63 requirements:
64     - "python >= 2.6"
65     - "shade"
66 '''
67 
68 EXAMPLES = '''
69 # Create a project
70 - os_project:
71     cloud: mycloud
72     state: present
73     name: demoproject
74     description: demodescription
75     domain_id: demoid
76     enabled: True
77 
78 # Delete a project
79 - os_project:
80     cloud: mycloud
81     state: absent
82     name: demoproject
83 '''
84 
85 
86 RETURN = '''
87 project:
88     description: Dictionary describing the project.
89     returned: On success when I(state) is 'present'
90     type: dictionary
91     contains:
92         id:
93             description: Project ID
94             type: string
95             sample: "f59382db809c43139982ca4189404650"
96         name:
97             description: Project name
98             type: string
99             sample: "demoproject"
100         description:
101             description: Project description
102             type: string
103             sample: "demodescription"
104         enabled:
105             description: Boolean to indicate if project is enabled
106             type: bool
107             sample: True
108 '''
109 
110 def _needs_update(module, project):
111     keys = ('description', 'enabled')
112     for key in keys:
113         if module.params[key] is not None and module.params[key] != project.get(key):
114             return True
115 
116     return False
117 
118 def _system_state_change(module, project):
119     state = module.params['state']
120     if state == 'present':
121         if project is None:
122             changed = True
123         else:
124             if _needs_update(module, project):
125                 changed = True
126             else:
127                 changed = False
128 
129     elif state == 'absent':
130         if project is None:
131             changed=False
132         else:
133             changed=True
134 
135     return changed;
136 
137 def main():
138 
139     argument_spec = openstack_full_argument_spec(
140         name=dict(required=True),
141         description=dict(required=False, default=None),
142         domain_id=dict(required=False, default=None, aliases=['domain']),
143         enabled=dict(default=True, type='bool'),
144         state=dict(default='present', choices=['absent', 'present'])
145     )
146 
147     module_kwargs = openstack_module_kwargs()
148     module = AnsibleModule(
149         argument_spec,
150         supports_check_mode=True,
151         **module_kwargs
152     )
153 
154     if not HAS_SHADE:
155         module.fail_json(msg='shade is required for this module')
156 
157     name = module.params['name']
158     description = module.params['description']
159     domain = module.params.pop('domain_id')
160     enabled = module.params['enabled']
161     state = module.params['state']
162 
163     try:
164         if domain:
165             opcloud = shade.operator_cloud(**module.params)
166             try:
167                 # We assume admin is passing domain id
168                 dom = opcloud.get_domain(domain)['id']
169                 domain = dom
170             except:
171                 # If we fail, maybe admin is passing a domain name.
172                 # Note that domains have unique names, just like id.
173                 try:
174                     dom = opcloud.search_domains(filters={'name': domain})[0]['id']
175                     domain = dom
176                 except:
177                     # Ok, let's hope the user is non-admin and passing a sane id
178                     pass
179 
180         cloud = shade.openstack_cloud(**module.params)
181 
182         if domain:
183             project = cloud.get_project(name, domain_id=domain)
184         else:
185             project = cloud.get_project(name)
186 
187         if module.check_mode:
188             module.exit_json(changed=_system_state_change(module, project))
189 
190         if state == 'present':
191             if project is None:
192                 project = cloud.create_project(
193                     name=name, description=description,
194                     domain_id=domain,
195                     enabled=enabled)
196                 changed = True
197             else:
198                 if _needs_update(module, project):
199                     project = cloud.update_project(
200                         project['id'], description=description,
201                         enabled=enabled)
202                     changed = True
203                 else:
204                     changed = False
205             module.exit_json(changed=changed, project=project)
206 
207         elif state == 'absent':
208             if project is None:
209                 changed=False
210             else:
211                 cloud.delete_project(project['id'])
212                 changed=True
213             module.exit_json(changed=changed)
214 
215     except shade.OpenStackCloudException as e:
216         module.fail_json(msg=e.message, extra_data=e.extra_data)
217 
218 from ansible.module_utils.basic import *
219 from ansible.module_utils.openstack import *
220 
221 if __name__ == '__main__':
222     main()
223
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/cloud/openstack/os_project.py b/cloud/openstack/os_project.py
--- a/cloud/openstack/os_project.py
+++ b/cloud/openstack/os_project.py
@@ -21,6 +21,8 @@
 except ImportError:
     HAS_SHADE = False
 
+from distutils.version import StrictVersion
+
 DOCUMENTATION = '''
 ---
 module: os_project
@@ -46,7 +48,8 @@
      default: None
    domain_id:
      description:
-        - Domain id to create the project in if the cloud supports domains
+        - Domain id to create the project in if the cloud supports domains.
+          The domain_id parameter requires shade >= 1.8.0
      required: false
      default: None
      aliases: ['domain']
@@ -160,6 +163,9 @@
     enabled = module.params['enabled']
     state = module.params['state']
 
+    if domain and StrictVersion(shade.__version__) < StrictVersion('1.8.0'):
+        module.fail_json(msg="The domain argument requires shade >=1.8.0")
+
     try:
         if domain:
             opcloud = shade.operator_cloud(**module.params)

{"golden_diff": "diff --git a/cloud/openstack/os_project.py b/cloud/openstack/os_project.py\n--- a/cloud/openstack/os_project.py\n+++ b/cloud/openstack/os_project.py\n@@ -21,6 +21,8 @@\n except ImportError:\n     HAS_SHADE = False\n \n+from distutils.version import StrictVersion\n+\n DOCUMENTATION = '''\n ---\n module: os_project\n@@ -46,7 +48,8 @@\n      default: None\n    domain_id:\n      description:\n-        - Domain id to create the project in if the cloud supports domains\n+        - Domain id to create the project in if the cloud supports domains.\n+          The domain_id parameter requires shade >= 1.8.0\n      required: false\n      default: None\n      aliases: ['domain']\n@@ -160,6 +163,9 @@\n     enabled = module.params['enabled']\n     state = module.params['state']\n \n+    if domain and StrictVersion(shade.__version__) < StrictVersion('1.8.0'):\n+        module.fail_json(msg=\"The domain argument requires shade >=1.8.0\")\n+\n     try:\n         if domain:\n             opcloud = shade.operator_cloud(**module.params)\n", "issue": "os_project requires python-shade 1.8.1 or higher\n<!--- Verify first that your issue/request is not already reported in GitHub -->\n##### ISSUE TYPE\n\n<!--- Pick one below and delete the rest: -->\n- Bug Report\n##### COMPONENT NAME\n\n<!--- Name of the plugin/module/task -->\n\nos_project\n##### ANSIBLE VERSION\n\n<!--- Paste verbatim output from \u201cansible --version\u201d between quotes below -->\n\n```\nansible 2.1.1.0\n```\n##### OS / ENVIRONMENT\n\n<!---\nMention the OS you are running Ansible from, and the OS you are\nmanaging, or say \u201cN/A\u201d for anything that is not platform-specific.\n-->\n\nUbuntu 16.04\n##### SUMMARY\n\n<!--- Explain the problem briefly -->\n\nWith ansible 2.1.1.0 the os_project module requires python-shade 1.8 or higher. But ubuntu ships python-shade 1.5, so this module does not work anymore. The os_project module is working correctly with ansible 2.1.0.0\n##### STEPS TO REPRODUCE\n\n<!---\nFor bugs, show exactly how to reproduce the problem.\nFor new features, show how the feature would be used.\n-->\n\n<!--- Paste example playbooks or commands between quotes below -->\n\n```\n- name: Create OpenStack project\n  os_project:\n    cloud: my_cloud\n    name: projectname\n    description: Test Project\n    domain_id: default\n    endpoint_type: internal\n```\n\n<!--- You can also paste gist.github.com links for larger files -->\n##### EXPECTED RESULTS\n\n<!--- What did you expect to happen when running the steps above? -->\n\nA new project in OpenStack\n##### ACTUAL RESULTS\n\n<!--- What actually happened? If possible run with high verbosity (-vvvv) -->\n\n<!--- Paste verbatim command output between quotes below -->\n\n```\nAn exception occurred during task execution. The full traceback is:\nTraceback (most recent call last):\n  File \"/tmp/ansible_g7eGSB/ansible_module_os_project.py\", line 222, in <module>\n    main()\n  File \"/tmp/ansible_g7eGSB/ansible_module_os_project.py\", line 183, in main\n    project = cloud.get_project(name, domain_id=domain)\nTypeError: get_project() got an unexpected keyword argument 'domain_id'\n```\n\n", "before_files": [{"content": "#!/usr/bin/python\n# Copyright (c) 2015 IBM Corporation\n#\n# This module is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This software is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this software.  If not, see <http://www.gnu.org/licenses/>.\n\n\ntry:\n    import shade\n    HAS_SHADE = True\nexcept ImportError:\n    HAS_SHADE = False\n\nDOCUMENTATION = '''\n---\nmodule: os_project\nshort_description: Manage OpenStack Projects\nextends_documentation_fragment: openstack\nversion_added: \"2.0\"\nauthor: \"Alberto Gireud (@agireud)\"\ndescription:\n    - Manage OpenStack Projects. Projects can be created,\n      updated or deleted using this module. A project will be updated\n      if I(name) matches an existing project and I(state) is present.\n      The value for I(name) cannot be updated without deleting and\n      re-creating the project.\noptions:\n   name:\n     description:\n        - Name for the project\n     required: true\n   description:\n     description:\n        - Description for the project\n     required: false\n     default: None\n   domain_id:\n     description:\n        - Domain id to create the project in if the cloud supports domains\n     required: false\n     default: None\n     aliases: ['domain']\n   enabled:\n     description:\n        - Is the project enabled\n     required: false\n     default: True\n   state:\n     description:\n       - Should the resource be present or absent.\n     choices: [present, absent]\n     default: present\nrequirements:\n    - \"python >= 2.6\"\n    - \"shade\"\n'''\n\nEXAMPLES = '''\n# Create a project\n- os_project:\n    cloud: mycloud\n    state: present\n    name: demoproject\n    description: demodescription\n    domain_id: demoid\n    enabled: True\n\n# Delete a project\n- os_project:\n    cloud: mycloud\n    state: absent\n    name: demoproject\n'''\n\n\nRETURN = '''\nproject:\n    description: Dictionary describing the project.\n    returned: On success when I(state) is 'present'\n    type: dictionary\n    contains:\n        id:\n            description: Project ID\n            type: string\n            sample: \"f59382db809c43139982ca4189404650\"\n        name:\n            description: Project name\n            type: string\n            sample: \"demoproject\"\n        description:\n            description: Project description\n            type: string\n            sample: \"demodescription\"\n        enabled:\n            description: Boolean to indicate if project is enabled\n            type: bool\n            sample: True\n'''\n\ndef _needs_update(module, project):\n    keys = ('description', 'enabled')\n    for key in keys:\n        if module.params[key] is not None and module.params[key] != project.get(key):\n            return True\n\n    return False\n\ndef _system_state_change(module, project):\n    state = module.params['state']\n    if state == 'present':\n        if project is None:\n            changed = True\n        else:\n            if _needs_update(module, project):\n                changed = True\n            else:\n                changed = False\n\n    elif state == 'absent':\n        if project is None:\n            changed=False\n        else:\n            changed=True\n\n    return changed;\n\ndef main():\n\n    argument_spec = openstack_full_argument_spec(\n        name=dict(required=True),\n        description=dict(required=False, default=None),\n        domain_id=dict(required=False, default=None, aliases=['domain']),\n        enabled=dict(default=True, type='bool'),\n        state=dict(default='present', choices=['absent', 'present'])\n    )\n\n    module_kwargs = openstack_module_kwargs()\n    module = AnsibleModule(\n        argument_spec,\n        supports_check_mode=True,\n        **module_kwargs\n    )\n\n    if not HAS_SHADE:\n        module.fail_json(msg='shade is required for this module')\n\n    name = module.params['name']\n    description = module.params['description']\n    domain = module.params.pop('domain_id')\n    enabled = module.params['enabled']\n    state = module.params['state']\n\n    try:\n        if domain:\n            opcloud = shade.operator_cloud(**module.params)\n            try:\n                # We assume admin is passing domain id\n                dom = opcloud.get_domain(domain)['id']\n                domain = dom\n            except:\n                # If we fail, maybe admin is passing a domain name.\n                # Note that domains have unique names, just like id.\n                try:\n                    dom = opcloud.search_domains(filters={'name': domain})[0]['id']\n                    domain = dom\n                except:\n                    # Ok, let's hope the user is non-admin and passing a sane id\n                    pass\n\n        cloud = shade.openstack_cloud(**module.params)\n\n        if domain:\n            project = cloud.get_project(name, domain_id=domain)\n        else:\n            project = cloud.get_project(name)\n\n        if module.check_mode:\n            module.exit_json(changed=_system_state_change(module, project))\n\n        if state == 'present':\n            if project is None:\n                project = cloud.create_project(\n                    name=name, description=description,\n                    domain_id=domain,\n                    enabled=enabled)\n                changed = True\n            else:\n                if _needs_update(module, project):\n                    project = cloud.update_project(\n                        project['id'], description=description,\n                        enabled=enabled)\n                    changed = True\n                else:\n                    changed = False\n            module.exit_json(changed=changed, project=project)\n\n        elif state == 'absent':\n            if project is None:\n                changed=False\n            else:\n                cloud.delete_project(project['id'])\n                changed=True\n            module.exit_json(changed=changed)\n\n    except shade.OpenStackCloudException as e:\n        module.fail_json(msg=e.message, extra_data=e.extra_data)\n\nfrom ansible.module_utils.basic import *\nfrom ansible.module_utils.openstack import *\n\nif __name__ == '__main__':\n    main()\n", "path": "cloud/openstack/os_project.py"}], "after_files": [{"content": "#!/usr/bin/python\n# Copyright (c) 2015 IBM Corporation\n#\n# This module is free software: you can redistribute it and/or modify\n# it under the terms of the GNU General Public License as published by\n# the Free Software Foundation, either version 3 of the License, or\n# (at your option) any later version.\n#\n# This software is distributed in the hope that it will be useful,\n# but WITHOUT ANY WARRANTY; without even the implied warranty of\n# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n# GNU General Public License for more details.\n#\n# You should have received a copy of the GNU General Public License\n# along with this software.  If not, see <http://www.gnu.org/licenses/>.\n\n\ntry:\n    import shade\n    HAS_SHADE = True\nexcept ImportError:\n    HAS_SHADE = False\n\nfrom distutils.version import StrictVersion\n\nDOCUMENTATION = '''\n---\nmodule: os_project\nshort_description: Manage OpenStack Projects\nextends_documentation_fragment: openstack\nversion_added: \"2.0\"\nauthor: \"Alberto Gireud (@agireud)\"\ndescription:\n    - Manage OpenStack Projects. Projects can be created,\n      updated or deleted using this module. A project will be updated\n      if I(name) matches an existing project and I(state) is present.\n      The value for I(name) cannot be updated without deleting and\n      re-creating the project.\noptions:\n   name:\n     description:\n        - Name for the project\n     required: true\n   description:\n     description:\n        - Description for the project\n     required: false\n     default: None\n   domain_id:\n     description:\n        - Domain id to create the project in if the cloud supports domains.\n          The domain_id parameter requires shade >= 1.8.0\n     required: false\n     default: None\n     aliases: ['domain']\n   enabled:\n     description:\n        - Is the project enabled\n     required: false\n     default: True\n   state:\n     description:\n       - Should the resource be present or absent.\n     choices: [present, absent]\n     default: present\nrequirements:\n    - \"python >= 2.6\"\n    - \"shade\"\n'''\n\nEXAMPLES = '''\n# Create a project\n- os_project:\n    cloud: mycloud\n    state: present\n    name: demoproject\n    description: demodescription\n    domain_id: demoid\n    enabled: True\n\n# Delete a project\n- os_project:\n    cloud: mycloud\n    state: absent\n    name: demoproject\n'''\n\n\nRETURN = '''\nproject:\n    description: Dictionary describing the project.\n    returned: On success when I(state) is 'present'\n    type: dictionary\n    contains:\n        id:\n            description: Project ID\n            type: string\n            sample: \"f59382db809c43139982ca4189404650\"\n        name:\n            description: Project name\n            type: string\n            sample: \"demoproject\"\n        description:\n            description: Project description\n            type: string\n            sample: \"demodescription\"\n        enabled:\n            description: Boolean to indicate if project is enabled\n            type: bool\n            sample: True\n'''\n\ndef _needs_update(module, project):\n    keys = ('description', 'enabled')\n    for key in keys:\n        if module.params[key] is not None and module.params[key] != project.get(key):\n            return True\n\n    return False\n\ndef _system_state_change(module, project):\n    state = module.params['state']\n    if state == 'present':\n        if project is None:\n            changed = True\n        else:\n            if _needs_update(module, project):\n                changed = True\n            else:\n                changed = False\n\n    elif state == 'absent':\n        if project is None:\n            changed=False\n        else:\n            changed=True\n\n    return changed;\n\ndef main():\n\n    argument_spec = openstack_full_argument_spec(\n        name=dict(required=True),\n        description=dict(required=False, default=None),\n        domain_id=dict(required=False, default=None, aliases=['domain']),\n        enabled=dict(default=True, type='bool'),\n        state=dict(default='present', choices=['absent', 'present'])\n    )\n\n    module_kwargs = openstack_module_kwargs()\n    module = AnsibleModule(\n        argument_spec,\n        supports_check_mode=True,\n        **module_kwargs\n    )\n\n    if not HAS_SHADE:\n        module.fail_json(msg='shade is required for this module')\n\n    name = module.params['name']\n    description = module.params['description']\n    domain = module.params.pop('domain_id')\n    enabled = module.params['enabled']\n    state = module.params['state']\n\n    if domain and StrictVersion(shade.__version__) < StrictVersion('1.8.0'):\n        module.fail_json(msg=\"The domain argument requires shade >=1.8.0\")\n\n    try:\n        if domain:\n            opcloud = shade.operator_cloud(**module.params)\n            try:\n                # We assume admin is passing domain id\n                dom = opcloud.get_domain(domain)['id']\n                domain = dom\n            except:\n                # If we fail, maybe admin is passing a domain name.\n                # Note that domains have unique names, just like id.\n                try:\n                    dom = opcloud.search_domains(filters={'name': domain})[0]['id']\n                    domain = dom\n                except:\n                    # Ok, let's hope the user is non-admin and passing a sane id\n                    pass\n\n        cloud = shade.openstack_cloud(**module.params)\n\n        if domain:\n            project = cloud.get_project(name, domain_id=domain)\n        else:\n            project = cloud.get_project(name)\n\n        if module.check_mode:\n            module.exit_json(changed=_system_state_change(module, project))\n\n        if state == 'present':\n            if project is None:\n                project = cloud.create_project(\n                    name=name, description=description,\n                    domain_id=domain,\n                    enabled=enabled)\n                changed = True\n            else:\n                if _needs_update(module, project):\n                    project = cloud.update_project(\n                        project['id'], description=description,\n                        enabled=enabled)\n                    changed = True\n                else:\n                    changed = False\n            module.exit_json(changed=changed, project=project)\n\n        elif state == 'absent':\n            if project is None:\n                changed=False\n            else:\n                cloud.delete_project(project['id'])\n                changed=True\n            module.exit_json(changed=changed)\n\n    except shade.OpenStackCloudException as e:\n        module.fail_json(msg=e.message, extra_data=e.extra_data)\n\nfrom ansible.module_utils.basic import *\nfrom ansible.module_utils.openstack import *\n\nif __name__ == '__main__':\n    main()\n", "path": "cloud/openstack/os_project.py"}]}