From 3db4039ad115e272a8c677c76336dc2d0d5d321e Mon Sep 17 00:00:00 2001
From: Rene Moser <mail@renemoser.net>
Date: Tue, 25 Aug 2015 13:54:21 +0200
Subject: [PATCH] cloudstack: implement general api_region support, update docs

---
 lib/ansible/module_utils/cloudstack.py              |  3 ++-
 .../utils/module_docs_fragments/cloudstack.py       | 13 ++++++++++---
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/ansible/module_utils/cloudstack.py b/lib/ansible/module_utils/cloudstack.py
index 5bfd3d2db9f..b4d7cd4db13 100644
--- a/lib/ansible/module_utils/cloudstack.py
+++ b/lib/ansible/module_utils/cloudstack.py
@@ -94,7 +94,8 @@ class AnsibleCloudStack(object):
                 method=api_http_method
                 )
         else:
-            self.cs = CloudStack(**read_config())
+            api_region = self.module.params.get('api_region', 'cloudstack')
+            self.cs = CloudStack(**read_config(api_region))
 
 
     def get_or_fallback(self, key=None, fallback_key=None):
diff --git a/lib/ansible/utils/module_docs_fragments/cloudstack.py b/lib/ansible/utils/module_docs_fragments/cloudstack.py
index bafb7b4c15a..3826f7aba2c 100644
--- a/lib/ansible/utils/module_docs_fragments/cloudstack.py
+++ b/lib/ansible/utils/module_docs_fragments/cloudstack.py
@@ -48,18 +48,25 @@ options:
       - HTTP timeout.
     required: false
     default: 10
+  api_region:
+    description:
+      - Name of the ini section in the C(cloustack.ini) file.
+    required: false
+    default: cloudstack
 requirements:
   - "python >= 2.6"
-  - cs
+  - "cs >= 0.6.10"
 notes:
   - Ansible uses the C(cs) library's configuration method if credentials are not
-    provided by the options C(api_url), C(api_key), C(api_secret).
+    provided by the arguments C(api_url), C(api_key), C(api_secret).
     Configuration is read from several locations, in the following order.
     - The C(CLOUDSTACK_ENDPOINT), C(CLOUDSTACK_KEY), C(CLOUDSTACK_SECRET) and
       C(CLOUDSTACK_METHOD). C(CLOUDSTACK_TIMEOUT) environment variables.
     - A C(CLOUDSTACK_CONFIG) environment variable pointing to an C(.ini) file,
     - A C(cloudstack.ini) file in the current working directory.
     - A C(.cloudstack.ini) file in the users home directory.
-      See https://github.com/exoscale/cs for more information.
+    Optionally multiple credentials and endpoints can be specified using ini sections in C(cloudstack.ini).
+    Use the argument C(api_region) to select the section name, default section is C(cloudstack).
+    See https://github.com/exoscale/cs for more information.
   - This module supports check mode.
 '''