Merge "Add support for interface add/remove to routers"
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
|
||||
from openstack.network import network_service
|
||||
from openstack import resource
|
||||
from openstack import utils
|
||||
|
||||
|
||||
class Router(resource.Resource):
|
||||
@@ -28,8 +29,20 @@ class Router(resource.Resource):
|
||||
allow_list = True
|
||||
|
||||
# Properties
|
||||
admin_state_up = resource.prop('admin_state_up')
|
||||
external_gateway_info = resource.prop('external_gateway_info')
|
||||
admin_state_up = resource.prop('admin_state_up', type=bool)
|
||||
external_gateway_info = resource.prop('external_gateway_info', type=dict)
|
||||
name = resource.prop('name')
|
||||
project_id = resource.prop('tenant_id')
|
||||
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
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
# License for the specific language governing permissions and limitations
|
||||
# under the License.
|
||||
|
||||
import mock
|
||||
import testtools
|
||||
|
||||
from openstack.network.v2 import router
|
||||
@@ -48,3 +49,31 @@ class TestRouter(testtools.TestCase):
|
||||
self.assertEqual(EXAMPLE['name'], sot.name)
|
||||
self.assertEqual(EXAMPLE['tenant_id'], sot.project_id)
|
||||
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)
|
||||
|
||||
Reference in New Issue
Block a user