@@ -59,6 +59,7 @@ def _get_common_cols_data(fake_port):
5959 'mac_address' ,
6060 'name' ,
6161 'network_id' ,
62+ 'numa_affinity_policy' ,
6263 'port_security_enabled' ,
6364 'project_id' ,
6465 'qos_network_policy_id' ,
@@ -90,6 +91,7 @@ def _get_common_cols_data(fake_port):
9091 fake_port .mac_address ,
9192 fake_port .name ,
9293 fake_port .network_id ,
94+ fake_port .numa_affinity_policy ,
9395 fake_port .port_security_enabled ,
9496 fake_port .project_id ,
9597 fake_port .qos_network_policy_id ,
@@ -655,6 +657,50 @@ def test_create_port_with_extra_dhcp_option(self):
655657 'name' : 'test-port' ,
656658 })
657659
660+ def _test_create_with_numa_affinity_policy (self , policy = None ):
661+ arglist = [
662+ '--network' , self ._port .network_id ,
663+ 'test-port' ,
664+ ]
665+ if policy :
666+ arglist += ['--numa-policy-%s' % policy ]
667+
668+ numa_affinity_policy = None if not policy else policy
669+ verifylist = [
670+ ('network' , self ._port .network_id ,),
671+ ('name' , 'test-port' ),
672+ ]
673+ if policy :
674+ verifylist .append (('numa_policy_%s' % policy , True ))
675+
676+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
677+
678+ columns , data = (self .cmd .take_action (parsed_args ))
679+
680+ create_args = {
681+ 'admin_state_up' : True ,
682+ 'network_id' : self ._port .network_id ,
683+ 'name' : 'test-port' ,
684+ }
685+ if numa_affinity_policy :
686+ create_args ['numa_affinity_policy' ] = numa_affinity_policy
687+ self .network .create_port .assert_called_once_with (** create_args )
688+
689+ self .assertEqual (self .columns , columns )
690+ self .assertItemEqual (self .data , data )
691+
692+ def test_create_with_numa_affinity_policy_required (self ):
693+ self ._test_create_with_numa_affinity_policy (policy = 'required' )
694+
695+ def test_create_with_numa_affinity_policy_preferred (self ):
696+ self ._test_create_with_numa_affinity_policy (policy = 'preferred' )
697+
698+ def test_create_with_numa_affinity_policy_legacy (self ):
699+ self ._test_create_with_numa_affinity_policy (policy = 'legacy' )
700+
701+ def test_create_with_numa_affinity_policy_null (self ):
702+ self ._test_create_with_numa_affinity_policy ()
703+
658704
659705class TestDeletePort (TestPort ):
660706
@@ -1668,6 +1714,32 @@ def test_set_with_tags(self):
16681714 def test_set_with_no_tag (self ):
16691715 self ._test_set_tags (with_tags = False )
16701716
1717+ def _test_create_with_numa_affinity_policy (self , policy ):
1718+ arglist = [
1719+ '--numa-policy-%s' % policy ,
1720+ self ._port .id ,
1721+ ]
1722+ verifylist = [
1723+ ('numa_policy_%s' % policy , True ),
1724+ ('port' , self ._port .id ,)
1725+ ]
1726+
1727+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
1728+
1729+ self .cmd .take_action (parsed_args )
1730+
1731+ self .network .update_port .assert_called_once_with (
1732+ self ._port , ** {'numa_affinity_policy' : policy })
1733+
1734+ def test_create_with_numa_affinity_policy_required (self ):
1735+ self ._test_create_with_numa_affinity_policy ('required' )
1736+
1737+ def test_create_with_numa_affinity_policy_preferred (self ):
1738+ self ._test_create_with_numa_affinity_policy ('preferred' )
1739+
1740+ def test_create_with_numa_affinity_policy_legacy (self ):
1741+ self ._test_create_with_numa_affinity_policy ('legacy' )
1742+
16711743
16721744class TestShowPort (TestPort ):
16731745
@@ -1923,3 +1995,26 @@ def test_unset_with_tags(self):
19231995
19241996 def test_unset_with_all_tag (self ):
19251997 self ._test_unset_tags (with_tags = False )
1998+
1999+ def test_unset_numa_affinity_policy (self ):
2000+ _fake_port = network_fakes .FakePort .create_one_port (
2001+ {'numa_affinity_policy' : 'required' })
2002+ self .network .find_port = mock .Mock (return_value = _fake_port )
2003+ arglist = [
2004+ '--numa-policy' ,
2005+ _fake_port .name ,
2006+ ]
2007+ verifylist = [
2008+ ('numa_policy' , True ),
2009+ ('port' , _fake_port .name ),
2010+ ]
2011+
2012+ parsed_args = self .check_parser (self .cmd , arglist , verifylist )
2013+ result = self .cmd .take_action (parsed_args )
2014+
2015+ attrs = {
2016+ 'numa_affinity_policy' : None ,
2017+ }
2018+
2019+ self .network .update_port .assert_called_once_with (_fake_port , ** attrs )
2020+ self .assertIsNone (result )
0 commit comments