Aliyun ecs: Add support for creating security group

Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/1e5c631b
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/1e5c631b
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/1e5c631b

Branch: refs/heads/trunk
Commit: 1e5c631bd60eaeaa4314286669c25ba409d95c70
Parents: 8b8e133
Author: netgenius <wuhen...@otcaix.iscas.ac.cn>
Authored: Sat Jun 11 00:15:58 2016 +0800
Committer: Anthony Shaw <anthonys...@apache.org>
Committed: Fri Jun 24 13:50:17 2016 +1000

----------------------------------------------------------------------
 example_aliyun_ecs.py           | 10 ++++++++--
 libcloud/compute/drivers/ecs.py | 21 +++++++++++++++++++++
 2 files changed, 29 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e5c631b/example_aliyun_ecs.py
----------------------------------------------------------------------
diff --git a/example_aliyun_ecs.py b/example_aliyun_ecs.py
index bbaaf00..5c223c6 100644
--- a/example_aliyun_ecs.py
+++ b/example_aliyun_ecs.py
@@ -13,6 +13,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import sys
+
 from libcloud.compute.types import Provider
 from libcloud.compute.providers import get_driver
 from libcloud.compute.base import NodeAuthPassword
@@ -51,8 +53,12 @@ print('Use image %s' % image)
 
 sgs = ecs.ex_list_security_groups()
 print('Found %d security groups' % len(sgs))
-sg = sgs[0]
-print('Use security group %s' % sg)
+if len(sgs) == 0:
+    sg = ecs.ex_create_security_groups(ex_description='test')
+    print('Create security group %s' % sg)
+else:
+    sg = sgs[0]
+    print('Use security group %s' % sg)
 
 nodes = ecs.list_nodes()
 print('Found %d nodes' % len(nodes))

http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e5c631b/libcloud/compute/drivers/ecs.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ecs.py b/libcloud/compute/drivers/ecs.py
index 2ac8afa..787df7f 100644
--- a/libcloud/compute/drivers/ecs.py
+++ b/libcloud/compute/drivers/ecs.py
@@ -768,6 +768,27 @@ class ECSDriver(NodeDriver):
         return resp.success() and \
             self._wait_until_state([node], NodeState.STOPPED)
 
+    def ex_create_security_groups(self, ex_description=None,
+                                  ex_client_token=None):
+        """
+        Create a new security groups.
+
+        :keyword ex_description: volume description
+        :type ex_description: ``unicode``
+
+        :keyword ex_client_token: a token generated by client to identify
+                                  each request.
+        :type ex_client_token: ``str``
+        """
+        params = {'Action': 'CreateSecurityGroup',
+                  'RegionId': self.region}
+
+        if ex_description:
+            params['Description'] = ex_description
+        if ex_client_token:
+            params['ClientToken'] = ex_client_token
+        return self.connection.request(self.path, params).object
+
     def ex_list_security_groups(self, ex_filters=None):
         """
         List security groups in the current region.

Reply via email to