diff --git a/libcloud/loadbalancer/drivers/rackspace.py b/libcloud/loadbalancer/drivers/rackspace.py
index 1828c75..be25f76 100644
--- a/libcloud/loadbalancer/drivers/rackspace.py
+++ b/libcloud/loadbalancer/drivers/rackspace.py
@@ -399,6 +399,24 @@ class RackspaceLBDriver(Driver):
                 data=json.dumps(member_object))
         return self._to_members(resp.object)[0]
 
+    def ex_balancer_attach_members(self, balancer, members):
+        """
+        Attaches a list of members to a load balancer.
+
+        @param balancer: The Balancer to which members will be attached.
+        @type balancer: C{Balancer}
+
+        @param members: A list of Members to attach.
+        @type members: C{list}
+        """
+        member_objects = {"nodes": [self._member_attributes(member) for member
+                                    in members]}
+
+        uri = '/loadbalancers/%s/nodes' % (balancer.id)
+        resp = self.connection.request(uri, method='POST',
+                data=json.dumps(member_objects))
+        return self._to_members(resp.object)
+
     def balancer_detach_member(self, balancer, member):
         # Loadbalancer always needs to have at least 1 member.
         # Last member cannot be detached. You can only disable it or destroy
diff --git a/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292.json b/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292.json
new file mode 100644
index 0000000..c62a3dc
--- /dev/null
+++ b/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292.json
@@ -0,0 +1,56 @@
+{
+    "loadBalancer": {
+        "algorithm": "RANDOM",
+        "cluster": {
+            "name": "ztm-n05.lbaas.ord1.rackspace.net"
+        },
+        "connectionLogging": {
+            "enabled": false
+        },
+        "created": {
+            "time": "2011-04-07T16:27:50Z"
+        },
+        "id": 8292,
+        "name": "test8292",
+        "nodes": [
+            {
+                "address": "10.1.0.11",
+                "condition": "ENABLED",
+                "id": 30944,
+                "port": 80,
+                "status": "ONLINE",
+                "weight": 12
+            },
+            {
+                "address": "10.1.0.10",
+                "condition": "DISABLED",
+                "id": 30945,
+                "port": 80,
+                "status": "OFFLINE",
+                "weight": 8
+            },
+            {
+                "address": "10.1.0.9",
+                "condition": "DRAINING",
+                "id": 30946,
+                "port": 8080,
+                "status": "DRAINING",
+                "weight": 20
+            }
+        ],
+        "port": 80,
+        "protocol": "HTTP",
+        "status": "ACTIVE",
+        "updated": {
+            "time": "2011-04-07T16:28:12Z"
+        },
+        "virtualIps": [
+            {
+                "address": "1.1.1.2",
+                "id": 1151,
+                "ipVersion": "IPV4",
+                "type": "PUBLIC"
+            }
+        ]
+    }
+}
diff --git a/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292_nodes_post.json b/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292_nodes_post.json
new file mode 100644
index 0000000..e127c82
--- /dev/null
+++ b/test/loadbalancer/fixtures/rackspace/v1_slug_loadbalancers_8292_nodes_post.json
@@ -0,0 +1,20 @@
+{
+    "nodes": [
+        {
+            "address": "10.1.0.12",
+            "condition": "ENABLED",
+            "id": 30972,
+            "port": 80,
+            "status": "ONLINE",
+            "weight": 1
+        },
+        {
+            "address": "10.1.0.13",
+            "condition": "ENABLED",
+            "id": 30973,
+            "port": 80,
+            "status": "ONLINE",
+            "weight": 1
+        }
+    ]
+}
diff --git a/test/loadbalancer/test_rackspace.py b/test/loadbalancer/test_rackspace.py
index 89173e5..3af7b2a 100644
--- a/test/loadbalancer/test_rackspace.py
+++ b/test/loadbalancer/test_rackspace.py
@@ -613,6 +613,21 @@ class RackspaceLBTests(unittest.TestCase):
         self.assertEquals(member.ip, '10.1.0.12')
         self.assertEquals(member.port, 80)
 
+    def test_balancer_attach_members(self):
+        balancer = self.driver.get_balancer(balancer_id='8292')
+        members = [Member(None, ip='10.1.0.12', port='80'),
+                   Member(None, ip='10.1.0.13', port='80')]
+
+        attached_members = self.driver.ex_balancer_attach_members(balancer,
+                                                                  members)
+
+        first_member = attached_members[0]
+        second_member = attached_members[1]
+        self.assertEquals(first_member.ip, '10.1.0.12')
+        self.assertEquals(first_member.port, 80)
+        self.assertEquals(second_member.ip, '10.1.0.13')
+        self.assertEquals(second_member.port, 80)
+
     def test_balancer_detach_member(self):
         balancer = self.driver.get_balancer(balancer_id='8290')
         member = balancer.list_members()[0]
@@ -892,6 +907,26 @@ class RackspaceLBMockHttp(MockHttpTestCase):
 
         raise NotImplementedError
 
+    def _v1_0_slug_loadbalancers_8292(self, method, url, body, headers):
+        if method == "GET":
+            body = self.fixtures.load('v1_slug_loadbalancers_8292.json')
+            return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+        raise NotImplementedError
+
+    def _v1_0_slug_loadbalancers_8292_nodes(self, method, url, body, headers):
+        if method == "POST":
+            json_body = json.loads(body)
+            json_node_1 = json_body['nodes'][0]
+            json_node_2 = json_body['nodes'][1]
+            self.assertEqual('10.1.0.12', json_node_1['address'])
+            self.assertEqual('10.1.0.13', json_node_2['address'])
+            response_body = self.fixtures.load('v1_slug_loadbalancers_8292_nodes_post.json')
+            return (httplib.ACCEPTED, response_body, {},
+                    httplib.responses[httplib.ACCEPTED])
+
+        raise NotImplementedError
+
     def _v1_0_slug_loadbalancers_8290_nodes_30944(self, method, url, body, headers):
         if method == "PUT":
             json_body = json.loads(body)
