txaws-dev team mailing list archive
-
txaws-dev team
-
Mailing list archive
-
Message #00130
[Merge] lp:~franciscosouza/txaws/txaws-secgroupid into lp:txaws
Francisco Souza has proposed merging lp:~franciscosouza/txaws/txaws-secgroupid into lp:txaws.
Requested reviews:
txAWS Committers (txaws-dev)
For more details, see:
https://code.launchpad.net/~franciscosouza/txaws/txaws-secgroupid/+merge/133542
ec2: recognize ID on security groups
When using VPC, security groups are identified by ID, not name.
https://codereview.appspot.com/6822097/
--
https://code.launchpad.net/~franciscosouza/txaws/txaws-secgroupid/+merge/133542
Your team txAWS Committers is requested to review the proposed merge of lp:~franciscosouza/txaws/txaws-secgroupid into lp:txaws.
=== modified file 'txaws/ec2/client.py'
--- txaws/ec2/client.py 2012-05-05 00:17:02 +0000
+++ txaws/ec2/client.py 2012-11-08 18:50:26 +0000
@@ -125,13 +125,18 @@
d = query.submit()
return d.addCallback(self.parser.truth_return)
- def delete_security_group(self, name):
+ def delete_security_group(self, name=None, id=None):
"""
@param name: Name of the new security group.
@return: A C{Deferred} that will fire with a truth value for the
success of the operation.
"""
- parameter = {"GroupName": name}
+ if name:
+ parameter = {"GroupName": name}
+ elif id:
+ parameter = {"GroupId": id}
+ else:
+ raise ValueError("You must provide either the security group name or id")
query = self.query_factory(
action="DeleteSecurityGroup", creds=self.creds,
endpoint=self.endpoint, other_params=parameter)
@@ -670,6 +675,7 @@
root = XML(xml_bytes)
result = []
for group_info in root.findall("securityGroupInfo/item"):
+ id = group_info.findtext("groupId")
name = group_info.findtext("groupName")
description = group_info.findtext("groupDescription")
owner_id = group_info.findtext("ownerId")
@@ -709,7 +715,7 @@
for user_id, group_name in allowed_groups]
security_group = model.SecurityGroup(
- name, description, owner_id=owner_id,
+ id, name, description, owner_id=owner_id,
groups=allowed_groups, ips=allowed_ips)
result.append(security_group)
return result
=== modified file 'txaws/ec2/model.py'
--- txaws/ec2/model.py 2012-03-02 22:00:10 +0000
+++ txaws/ec2/model.py 2012-11-08 18:50:26 +0000
@@ -80,7 +80,8 @@
@ivar allowed_ips: The sequence of L{IPPermission} instances for this
security group.
"""
- def __init__(self, name, description, owner_id="", groups=None, ips=None):
+ def __init__(self, id, name, description, owner_id="", groups=None, ips=None):
+ self.id = id
self.name = name
self.description = description
self.owner_id = owner_id
=== modified file 'txaws/ec2/tests/test_client.py'
--- txaws/ec2/tests/test_client.py 2012-03-02 22:00:10 +0000
+++ txaws/ec2/tests/test_client.py 2012-11-08 18:50:26 +0000
@@ -400,6 +400,7 @@
def check_results(security_groups):
[security_group] = security_groups
+ self.assertEquals(security_group.id, "sg-a1a1a1")
self.assertEquals(security_group.owner_id,
"UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM")
self.assertEquals(security_group.name, "WebServers")
@@ -440,6 +441,7 @@
security_group = security_groups[0]
self.assertEquals(security_group.owner_id,
"UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM")
+ self.assertEquals(security_group.id, "sg-a1a1a1")
self.assertEquals(security_group.name, "MessageServers")
self.assertEquals(security_group.description, "Message Servers")
self.assertEquals(security_group.allowed_groups, [])
@@ -451,6 +453,7 @@
security_group = security_groups[1]
self.assertEquals(security_group.owner_id,
"UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM")
+ self.assertEquals(security_group.id, "sg-c3c3c3")
self.assertEquals(security_group.name, "WebServers")
self.assertEquals(security_group.description, "Web Servers")
self.assertEquals([(pair.user_id, pair.group_name)
@@ -590,7 +593,7 @@
"The group for the web server farm.")
return self.assertTrue(d)
- def test_delete_security_group(self):
+ def test_delete_security_group_using_name(self):
"""
L{EC2Client.delete_security_group} returns a C{Deferred} that
eventually fires with a true value, indicating the success of the
@@ -615,6 +618,40 @@
d = ec2.delete_security_group("WebServers")
return self.assertTrue(d)
+ def test_delete_security_group_using_id(self):
+ """
+ L{EC2Client.delete_security_group} returns a C{Deferred} that
+ eventually fires with a true value, indicating the success of the
+ operation.
+ """
+ class StubQuery(object):
+
+ def __init__(stub, action="", creds=None, endpoint=None,
+ other_params={}):
+ self.assertEqual(action, "DeleteSecurityGroup")
+ self.assertEqual(creds.access_key, "foo")
+ self.assertEqual(creds.secret_key, "bar")
+ self.assertEqual(other_params, {
+ "GroupId": "sg-a1a1a1",
+ })
+
+ def submit(self):
+ return succeed(payload.sample_delete_security_group)
+
+ creds = AWSCredentials("foo", "bar")
+ ec2 = client.EC2Client(creds, query_factory=StubQuery)
+ d = ec2.delete_security_group(id="sg-a1a1a1")
+ return self.assertTrue(d)
+
+ def test_delete_security_group_without_id_and_name(self):
+ creds = AWSCredentials("foo", "bar")
+ ec2 = client.EC2Client(creds)
+ error = self.assertRaises(ValueError, ec2.delete_security_group)
+ self.assertEquals(
+ str(error),
+ "You must provide either the security group name or id",
+ )
+
def test_delete_security_group_failure(self):
"""
L{EC2Client.delete_security_group} returns a C{Deferred} that
=== modified file 'txaws/ec2/tests/test_model.py'
--- txaws/ec2/tests/test_model.py 2012-01-23 01:04:25 +0000
+++ txaws/ec2/tests/test_model.py 2012-11-08 18:50:26 +0000
@@ -8,7 +8,8 @@
class SecurityGroupTestCase(TXAWSTestCase):
def test_creation_defaults(self):
- group = model.SecurityGroup("name", "desc")
+ group = model.SecurityGroup("sg-a3f2", "name", "desc")
+ self.assertEquals(group.id, "sg-a3f2")
self.assertEquals(group.name, "name")
self.assertEquals(group.description, "desc")
self.assertEquals(group.owner_id, "")
@@ -18,14 +19,15 @@
def test_creation_all_parameters(self):
user = "somegal24"
other_groups = [
- model.SecurityGroup("other1", "another group 1"),
- model.SecurityGroup("other2", "another group 2")]
+ model.SecurityGroup("sg-other1", "other1", "another group 1"),
+ model.SecurityGroup("sg-other2", "other2", "another group 2")]
user_group_pairs = [
model.UserIDGroupPair(user, other_groups[0].name),
model.UserIDGroupPair(user, other_groups[1].name)]
ips = [model.IPPermission("tcp", "80", "80", "10.0.1.0/24")]
group = model.SecurityGroup(
- "name", "desc", owner_id="me", groups=user_group_pairs, ips=ips)
+ "id", "name", "desc", owner_id="me", groups=user_group_pairs, ips=ips)
+ self.assertEquals(group.id, "id")
self.assertEquals(group.name, "name")
self.assertEquals(group.description, "desc")
self.assertEquals(group.owner_id, "me")
=== modified file 'txaws/testing/payload.py'
--- txaws/testing/payload.py 2012-05-16 02:47:12 +0000
+++ txaws/testing/payload.py 2012-11-08 18:50:26 +0000
@@ -213,6 +213,7 @@
<fromPort/>
</item>
</ipPermissions>
+ <groupId>sg-a1a1a1</groupId>
<groupName>WebServers</groupName>
<groupDescription>Web servers</groupDescription>
<ownerId>UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM</ownerId>
@@ -228,6 +229,7 @@
<securityGroupInfo>
<item>
<ownerId>UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM</ownerId>
+ <groupId>sg-a1a1a1</groupId>
<groupName>WebServers</groupName>
<groupDescription>Web Servers</groupDescription>
<ipPermissions>
@@ -256,6 +258,7 @@
<securityGroupInfo>
<item>
<ownerId>UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM</ownerId>
+ <groupId>sg-a1a1a1</groupId>
<groupName>MessageServers</groupName>
<groupDescription>Message Servers</groupDescription>
<ipPermissions>
@@ -274,6 +277,7 @@
</item>
<item>
<ownerId>UYY3TLBUXIEON5NQVUUX6OMPWBZIQNFM</ownerId>
+ <groupId>sg-c3c3c3</groupId>
<groupName>WebServers</groupName>
<groupDescription>Web Servers</groupDescription>
<ipPermissions>
Follow ups