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.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
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user