def test_get_original_port_for_create(self): gateway = mock.Mock() rule_inlist = self.generate_nat_rule( 'SNAT', 'external', 'any', 'internal', '11', 'TCP' ) gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) # exeption about same port with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', 'any', 'internal', '11', 'TCP' ) # everythiong fine with different port self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', 'any', 'internal', '12', 'TCP' ), 'any' ) # relink some port to other # port have not used yet self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', 10, 'internal', '12', 'TCP' ), 10 )
def test_get_original_port_for_create_with_ctx(self): # with replace, but without replace table - up port +1 fake_ctx = self.generate_relation_context() fake_ctx._target.instance.runtime_properties = { public_nat.PORT_REPLACEMENT: {} } gateway = mock.Mock() rule_inlist = self.generate_nat_rule('SNAT', 'external', 10, 'internal', 11, 'TCP') gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) with mock.patch('network_plugin.public_nat.ctx', fake_ctx): self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', '10', 'internal', '11', 'TCP'), 11) self.assertEqual( fake_ctx._target.instance.runtime_properties, {public_nat.PORT_REPLACEMENT: { ('external', '10'): 11 }}) # same but without replacement at all fake_ctx._target.instance.runtime_properties = {} with mock.patch('network_plugin.public_nat.ctx', fake_ctx): self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', '10', 'internal', '11', 'TCP'), 11) self.assertEqual( fake_ctx._target.instance.runtime_properties, {public_nat.PORT_REPLACEMENT: { ('external', '10'): 11 }}) # we dont have enought ports rule_inlist = self.generate_nat_rule('SNAT', 'external', utils.MAX_PORT_NUMBER, 'internal', 11, 'TCP') gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) fake_ctx._target.instance.runtime_properties = {} with mock.patch('network_plugin.public_nat.ctx', fake_ctx): with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', utils.MAX_PORT_NUMBER, 'internal', '11', 'TCP')
def test_get_original_port_for_create(self): gateway = mock.Mock() rule_inlist = self.generate_nat_rule('SNAT', 'external', 'any', 'internal', '11', 'TCP') gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) # exeption about same port with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create(gateway, 'SNAT', 'external', 'any', 'internal', '11', 'TCP') # everythiong fine with different port self.assertEqual( public_nat._get_original_port_for_create(gateway, 'SNAT', 'external', 'any', 'internal', '12', 'TCP'), 'any') # relink some port to other # port have not used yet self.assertEqual( public_nat._get_original_port_for_create(gateway, 'SNAT', 'external', 10, 'internal', '12', 'TCP'), 10)
def test_get_original_port_for_create(self): gateway = mock.Mock() fake_ctx = self.generate_relation_context() rule_inlist = self.generate_nat_rule( 'DNAT', 'external', 'any', 'internal', '11', 'TCP') gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) with mock.patch( 'network_plugin.public_nat.ctx', fake_ctx ): # exeption about same port with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create( gateway, 'DNAT', 'external', 'any', 'internal', '11', 'TCP' ) # everythiong fine with different port self.assertEqual( public_nat._get_original_port_for_create( gateway, 'DNAT', 'external', '12', 'internal', '12', 'TCP'), 12) # relink some port to other # port have not used yet self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', 13, 'internal', '12', 'TCP'), 13)
def test_get_original_port_for_create(self): gateway = mock.Mock() fake_ctx = self.generate_relation_context() rule_inlist = self.generate_nat_rule('DNAT', 'external', 'any', 'internal', '11', 'TCP') gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) with mock.patch('network_plugin.public_nat.ctx', fake_ctx): # exeption about same port with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create( gateway, 'DNAT', 'external', 'any', 'internal', '11', 'TCP') # everythiong fine with different port self.assertEqual( public_nat._get_original_port_for_create( gateway, 'DNAT', 'external', '12', 'internal', '12', 'TCP'), 12) # relink some port to other # port have not used yet self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', 13, 'internal', '12', 'TCP'), 13)
def test_get_original_port_for_create_with_ctx(self): # with replace, but without replace table - up port +1 fake_ctx = self.generate_relation_context() fake_ctx._target.instance.runtime_properties = { public_nat.PORT_REPLACEMENT: {} } gateway = mock.Mock() rule_inlist = self.generate_nat_rule( 'SNAT', 'external', 10, 'internal', 11, 'TCP' ) gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) with mock.patch( 'network_plugin.public_nat.ctx', fake_ctx ): self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', '10', 'internal', '11', 'TCP' ), 11 ) self.assertEqual( fake_ctx._target.instance.runtime_properties, { public_nat.PORT_REPLACEMENT: { ('external', '10'): 11 } } ) # same but without replacement at all fake_ctx._target.instance.runtime_properties = {} with mock.patch( 'network_plugin.public_nat.ctx', fake_ctx ): self.assertEqual( public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', '10', 'internal', '11', 'TCP' ), 11 ) self.assertEqual( fake_ctx._target.instance.runtime_properties, { public_nat.PORT_REPLACEMENT: { ('external', '10'): 11 } } ) # we dont have enought ports rule_inlist = self.generate_nat_rule( 'SNAT', 'external', public_nat.MAX_PORT_NUMBER, 'internal', 11, 'TCP' ) gateway.get_nat_rules = mock.MagicMock(return_value=[rule_inlist]) fake_ctx._target.instance.runtime_properties = {} with mock.patch( 'network_plugin.public_nat.ctx', fake_ctx ): with self.assertRaises(cfy_exc.NonRecoverableError): public_nat._get_original_port_for_create( gateway, 'SNAT', 'external', public_nat.MAX_PORT_NUMBER, 'internal', '11', 'TCP' )