1023
1025
db.instance_destroy(c, instance_id2)
1024
1026
db.instance_destroy(c, instance_id3)
1026
def test_get_by_fixed_ip(self):
1027
"""Test getting 1 instance by Fixed IP"""
1028
c = context.get_admin_context()
1029
instance_id1 = self._create_instance()
1030
instance_id2 = self._create_instance({'id': 20})
1031
instance_id3 = self._create_instance({'id': 30})
1033
vif_ref1 = db.virtual_interface_create(c,
1034
{'address': '12:34:56:78:90:12',
1035
'instance_id': instance_id1,
1037
vif_ref2 = db.virtual_interface_create(c,
1038
{'address': '90:12:34:56:78:90',
1039
'instance_id': instance_id2,
1042
db.fixed_ip_create(c,
1043
{'address': '1.1.1.1',
1044
'instance_id': instance_id1,
1045
'virtual_interface_id': vif_ref1['id']})
1046
db.fixed_ip_create(c,
1047
{'address': '1.1.2.1',
1048
'instance_id': instance_id2,
1049
'virtual_interface_id': vif_ref2['id']})
1052
instances = self.compute_api.get_all(c,
1053
search_opts={'fixed_ip': '.*'})
1054
self.assertEqual(len(instances), 0)
1056
instances = self.compute_api.get_all(c,
1057
search_opts={'fixed_ip': '1.1.3.1'})
1058
self.assertEqual(len(instances), 0)
1060
instances = self.compute_api.get_all(c,
1061
search_opts={'fixed_ip': '1.1.1.1'})
1062
self.assertEqual(len(instances), 1)
1063
self.assertEqual(instances[0].id, instance_id1)
1065
instances = self.compute_api.get_all(c,
1066
search_opts={'fixed_ip': '1.1.2.1'})
1067
self.assertEqual(len(instances), 1)
1068
self.assertEqual(instances[0].id, instance_id2)
1070
db.virtual_interface_delete(c, vif_ref1['id'])
1071
db.virtual_interface_delete(c, vif_ref2['id'])
1072
db.instance_destroy(c, instance_id1)
1073
db.instance_destroy(c, instance_id2)
1075
def test_get_all_by_ip_regexp(self):
1076
"""Test searching by Floating and Fixed IP"""
1077
c = context.get_admin_context()
1078
instance_id1 = self._create_instance({'display_name': 'woot'})
1079
instance_id2 = self._create_instance({
1080
'display_name': 'woo',
1082
instance_id3 = self._create_instance({
1083
'display_name': 'not-woot',
1086
vif_ref1 = db.virtual_interface_create(c,
1087
{'address': '12:34:56:78:90:12',
1088
'instance_id': instance_id1,
1090
vif_ref2 = db.virtual_interface_create(c,
1091
{'address': '90:12:34:56:78:90',
1092
'instance_id': instance_id2,
1094
vif_ref3 = db.virtual_interface_create(c,
1095
{'address': '34:56:78:90:12:34',
1096
'instance_id': instance_id3,
1099
db.fixed_ip_create(c,
1100
{'address': '1.1.1.1',
1101
'instance_id': instance_id1,
1102
'virtual_interface_id': vif_ref1['id']})
1103
db.fixed_ip_create(c,
1104
{'address': '1.1.2.1',
1105
'instance_id': instance_id2,
1106
'virtual_interface_id': vif_ref2['id']})
1107
fix_addr = db.fixed_ip_create(c,
1108
{'address': '1.1.3.1',
1109
'instance_id': instance_id3,
1110
'virtual_interface_id': vif_ref3['id']})
1111
fix_ref = db.fixed_ip_get_by_address(c, fix_addr)
1112
flo_ref = db.floating_ip_create(c,
1113
{'address': '10.0.0.2',
1114
'fixed_ip_id': fix_ref['id']})
1116
# ends up matching 2nd octet here.. so all 3 match
1117
instances = self.compute_api.get_all(c,
1118
search_opts={'ip': '.*\.1'})
1119
self.assertEqual(len(instances), 3)
1121
instances = self.compute_api.get_all(c,
1122
search_opts={'ip': '1.*'})
1123
self.assertEqual(len(instances), 3)
1125
instances = self.compute_api.get_all(c,
1126
search_opts={'ip': '.*\.1.\d+$'})
1127
self.assertEqual(len(instances), 1)
1128
instance_ids = [instance.id for instance in instances]
1129
self.assertTrue(instance_id1 in instance_ids)
1131
instances = self.compute_api.get_all(c,
1132
search_opts={'ip': '.*\.2.+'})
1133
self.assertEqual(len(instances), 1)
1134
self.assertEqual(instances[0].id, instance_id2)
1136
instances = self.compute_api.get_all(c,
1137
search_opts={'ip': '10.*'})
1138
self.assertEqual(len(instances), 1)
1139
self.assertEqual(instances[0].id, instance_id3)
1141
db.virtual_interface_delete(c, vif_ref1['id'])
1142
db.virtual_interface_delete(c, vif_ref2['id'])
1143
db.virtual_interface_delete(c, vif_ref3['id'])
1144
db.floating_ip_destroy(c, '10.0.0.2')
1145
db.instance_destroy(c, instance_id1)
1146
db.instance_destroy(c, instance_id2)
1147
db.instance_destroy(c, instance_id3)
1149
def test_get_all_by_ipv6_regexp(self):
1150
"""Test searching by IPv6 address"""
1152
c = context.get_admin_context()
1153
instance_id1 = self._create_instance({'display_name': 'woot'})
1154
instance_id2 = self._create_instance({
1155
'display_name': 'woo',
1157
instance_id3 = self._create_instance({
1158
'display_name': 'not-woot',
1161
vif_ref1 = db.virtual_interface_create(c,
1162
{'address': '12:34:56:78:90:12',
1163
'instance_id': instance_id1,
1165
vif_ref2 = db.virtual_interface_create(c,
1166
{'address': '90:12:34:56:78:90',
1167
'instance_id': instance_id2,
1169
vif_ref3 = db.virtual_interface_create(c,
1170
{'address': '34:56:78:90:12:34',
1171
'instance_id': instance_id3,
1174
# This will create IPv6 addresses of:
1175
# 1: fd00::1034:56ff:fe78:9012
1176
# 20: fd00::9212:34ff:fe56:7890
1177
# 30: fd00::3656:78ff:fe90:1234
1179
instances = self.compute_api.get_all(c,
1180
search_opts={'ip6': '.*1034.*'})
1181
self.assertEqual(len(instances), 1)
1182
self.assertEqual(instances[0].id, instance_id1)
1184
instances = self.compute_api.get_all(c,
1185
search_opts={'ip6': '^fd00.*'})
1186
self.assertEqual(len(instances), 3)
1187
instance_ids = [instance.id for instance in instances]
1188
self.assertTrue(instance_id1 in instance_ids)
1189
self.assertTrue(instance_id2 in instance_ids)
1190
self.assertTrue(instance_id3 in instance_ids)
1192
instances = self.compute_api.get_all(c,
1193
search_opts={'ip6': '^.*12.*34.*'})
1194
self.assertEqual(len(instances), 2)
1195
instance_ids = [instance.id for instance in instances]
1196
self.assertTrue(instance_id2 in instance_ids)
1197
self.assertTrue(instance_id3 in instance_ids)
1199
db.virtual_interface_delete(c, vif_ref1['id'])
1200
db.virtual_interface_delete(c, vif_ref2['id'])
1201
db.virtual_interface_delete(c, vif_ref3['id'])
1202
db.instance_destroy(c, instance_id1)
1203
db.instance_destroy(c, instance_id2)
1204
db.instance_destroy(c, instance_id3)
1206
1028
def test_get_all_by_multiple_options_at_once(self):
1207
1029
"""Test searching by multiple options at once"""
1208
1030
c = context.get_admin_context()
1209
instance_id1 = self._create_instance({'display_name': 'woot'})
1031
network_manager = fake_network.FakeNetworkManager()
1032
self.stubs.Set(self.compute_api.network_api,
1033
'get_instance_uuids_by_ip_filter',
1034
network_manager.get_instance_uuids_by_ip_filter)
1035
self.stubs.Set(network_manager.db,
1036
'instance_get_id_to_uuid_mapping',
1037
db.instance_get_id_to_uuid_mapping)
1039
instance_id1 = self._create_instance({'display_name': 'woot',
1210
1041
instance_id2 = self._create_instance({
1211
1042
'display_name': 'woo',