@@ -1072,7 +1072,7 @@ def test_server_create_with_empty_network_option_latest(self):
10721072 self .assertNotIn ('nics are required after microversion 2.36' ,
10731073 e .stderr )
10741074
1075- def test_server_add_remove_network_port (self ):
1075+ def test_server_add_remove_network (self ):
10761076 name = uuid .uuid4 ().hex
10771077 cmd_output = json .loads (self .openstack (
10781078 'server create -f json ' +
@@ -1085,18 +1085,63 @@ def test_server_add_remove_network_port(self):
10851085
10861086 self .assertIsNotNone (cmd_output ['id' ])
10871087 self .assertEqual (name , cmd_output ['name' ])
1088+ self .addCleanup (self .openstack , 'server delete --wait ' + name )
10881089
1090+ # add network and check 'public' is in server show
10891091 self .openstack (
10901092 'server add network ' + name + ' public' )
10911093
1094+ wait_time = 0
1095+ while wait_time < 60 :
1096+ cmd_output = json .loads (self .openstack (
1097+ 'server show -f json ' + name
1098+ ))
1099+ if 'public' not in cmd_output ['addresses' ]:
1100+ # Hang out for a bit and try again
1101+ print ('retrying add network check' )
1102+ wait_time += 10
1103+ time .sleep (10 )
1104+ else :
1105+ break
1106+ addresses = cmd_output ['addresses' ]
1107+ self .assertIn ('public' , addresses )
1108+
1109+ # remove network and check 'public' is not in server show
1110+ self .openstack ('server remove network ' + name + ' public' )
1111+
1112+ wait_time = 0
1113+ while wait_time < 60 :
1114+ cmd_output = json .loads (self .openstack (
1115+ 'server show -f json ' + name
1116+ ))
1117+ if 'public' in cmd_output ['addresses' ]:
1118+ # Hang out for a bit and try again
1119+ print ('retrying remove network check' )
1120+ wait_time += 10
1121+ time .sleep (10 )
1122+ else :
1123+ break
1124+
1125+ addresses = cmd_output ['addresses' ]
1126+ self .assertNotIn ('public' , addresses )
1127+
1128+ def test_server_add_remove_port (self ):
1129+ name = uuid .uuid4 ().hex
10921130 cmd_output = json .loads (self .openstack (
1093- 'server show -f json ' + name
1131+ 'server create -f json ' +
1132+ '--network private ' +
1133+ '--flavor ' + self .flavor_name + ' ' +
1134+ '--image ' + self .image_name + ' ' +
1135+ '--wait ' +
1136+ name
10941137 ))
10951138
1096- addresses = cmd_output ['addresses' ]
1097- self .assertIn ('public' , addresses )
1139+ self .assertIsNotNone (cmd_output ['id' ])
1140+ self .assertEqual (name , cmd_output ['name' ])
1141+ self .addCleanup (self .openstack , 'server delete --wait ' + name )
10981142
1099- port_name = 'test-port'
1143+ # create port, record one of its ip address
1144+ port_name = uuid .uuid4 ().hex
11001145
11011146 cmd_output = json .loads (self .openstack (
11021147 'port list -f json'
@@ -1108,17 +1153,44 @@ def test_server_add_remove_network_port(self):
11081153 '--network private ' + port_name
11091154 ))
11101155 self .assertIsNotNone (cmd_output ['id' ])
1156+ ip_address = cmd_output ['fixed_ips' ][0 ]['ip_address' ]
1157+ self .addCleanup (self .openstack , 'port delete ' + port_name )
11111158
1159+ # add port to server, assert the ip address of the port appears
11121160 self .openstack ('server add port ' + name + ' ' + port_name )
11131161
1114- cmd_output = json .loads (self .openstack (
1115- 'server show -f json ' + name
1116- ))
1162+ wait_time = 0
1163+ while wait_time < 60 :
1164+ cmd_output = json .loads (self .openstack (
1165+ 'server show -f json ' + name
1166+ ))
1167+ if ip_address not in cmd_output ['addresses' ]['private' ]:
1168+ # Hang out for a bit and try again
1169+ print ('retrying add port check' )
1170+ wait_time += 10
1171+ time .sleep (10 )
1172+ else :
1173+ break
1174+ addresses = cmd_output ['addresses' ]['private' ]
1175+ self .assertIn (ip_address , addresses )
11171176
1118- # TODO(diwei): test remove network/port after the commands are switched
1177+ # remove port, assert the ip address of the port doesn't appear
1178+ self .openstack ('server remove port ' + name + ' ' + port_name )
11191179
1120- self .openstack ('server delete ' + name )
1121- self .openstack ('port delete ' + port_name )
1180+ wait_time = 0
1181+ while wait_time < 60 :
1182+ cmd_output = json .loads (self .openstack (
1183+ 'server show -f json ' + name
1184+ ))
1185+ if ip_address in cmd_output ['addresses' ]['private' ]:
1186+ # Hang out for a bit and try again
1187+ print ('retrying add port check' )
1188+ wait_time += 10
1189+ time .sleep (10 )
1190+ else :
1191+ break
1192+ addresses = cmd_output ['addresses' ]['private' ]
1193+ self .assertNotIn (ip_address , addresses )
11221194
11231195 def test_server_add_remove_volume (self ):
11241196 volume_wait_for = volume_common .BaseVolumeTests .wait_for_status
0 commit comments