Merge "Add support for interface add/remove to routers"

This commit is contained in:
Jenkins
2014-08-07 17:34:00 +00:00
committed by Gerrit Code Review
2 changed files with 44 additions and 2 deletions

View File

@@ -12,6 +12,7 @@
from openstack.network import network_service from openstack.network import network_service
from openstack import resource from openstack import resource
from openstack import utils
class Router(resource.Resource): class Router(resource.Resource):
@@ -28,8 +29,20 @@ class Router(resource.Resource):
allow_list = True allow_list = True
# Properties # Properties
admin_state_up = resource.prop('admin_state_up') admin_state_up = resource.prop('admin_state_up', type=bool)
external_gateway_info = resource.prop('external_gateway_info') external_gateway_info = resource.prop('external_gateway_info', type=dict)
name = resource.prop('name') name = resource.prop('name')
project_id = resource.prop('tenant_id') project_id = resource.prop('tenant_id')
status = resource.prop('status') status = resource.prop('status')
def add_interface(self, session, subnet_id):
body = {'subnet_id': subnet_id}
url = utils.urljoin(self.base_path, self.id, 'add_router_interface')
resp = session.put(url, service=self.service, json=body).body
return resp
def remove_interface(self, session, subnet_id):
body = {'subnet_id': subnet_id}
url = utils.urljoin(self.base_path, self.id, 'remove_router_interface')
resp = session.put(url, service=self.service, json=body).body
return resp

View File

@@ -10,6 +10,7 @@
# License for the specific language governing permissions and limitations # License for the specific language governing permissions and limitations
# under the License. # under the License.
import mock
import testtools import testtools
from openstack.network.v2 import router from openstack.network.v2 import router
@@ -48,3 +49,31 @@ class TestRouter(testtools.TestCase):
self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['name'], sot.name)
self.assertEqual(EXAMPLE['tenant_id'], sot.project_id) self.assertEqual(EXAMPLE['tenant_id'], sot.project_id)
self.assertEqual(EXAMPLE['status'], sot.status) self.assertEqual(EXAMPLE['status'], sot.status)
def test_add_interface(self):
sot = router.Router(EXAMPLE)
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "2"}
sess = mock.Mock()
sess.put = mock.MagicMock()
sess.put.return_value = response
self.assertEqual(response.body, sot.add_interface(sess, '3'))
url = 'v2.0/routers/IDENTIFIER/add_router_interface'
body = {"subnet_id": "3"}
sess.put.assert_called_with(url, service=sot.service, json=body)
def test_remove_interface(self):
sot = router.Router(EXAMPLE)
response = mock.Mock()
response.body = {"subnet_id": "3", "port_id": "2"}
sess = mock.Mock()
sess.put = mock.MagicMock()
sess.put.return_value = response
self.assertEqual(response.body, sot.remove_interface(sess, '3'))
url = 'v2.0/routers/IDENTIFIER/remove_router_interface'
body = {"subnet_id": "3"}
sess.put.assert_called_with(url, service=sot.service, json=body)