return self.mime_string
+ @staticmethod
+ def _build_nics(network_interfaces):
+ if not network_interfaces:
+ return None
+
+ nics = []
+ for nic in network_interfaces:
+ if isinstance(nic, basestring):
+ nics.append({
+ 'NetworkInterfaceId': nic,
+ 'DeviceIndex': len(nics)})
+ else:
+ nics.append(nic)
+ sorted_nics = sorted(nics, key=lambda nic: int(nic['DeviceIndex']))
+
+ return [{'port-id': nic['NetworkInterfaceId']} for nic in sorted_nics]
+
def handle_create(self):
if self.properties.get('SecurityGroups') is None:
security_groups = None
else:
scheduler_hints = None
- nics = []
- if self.properties['NetworkInterfaces']:
- for nic in self.properties['NetworkInterfaces']:
- nics.append({'port-id': nic})
- else:
- nics = None
+ nics = self._build_nics(self.properties['NetworkInterfaces'])
server_userdata = self._build_userdata(userdata)
server = None
self.assertEqual(instance.update(update_template),
instance.UPDATE_COMPLETE)
self.assertEqual(instance.metadata, {'test': 123})
+
+ def test_build_nics(self):
+ self.assertEqual(None, instances.Instance._build_nics([]))
+ self.assertEqual(None, instances.Instance._build_nics(None))
+ self.assertEqual([
+ {'port-id': 'id3'}, {'port-id': 'id1'}, {'port-id': 'id2'}],
+ instances.Instance._build_nics([
+ 'id3', 'id1', 'id2']))
+ self.assertEqual([
+ {'port-id': 'id1'},
+ {'port-id': 'id2'},
+ {'port-id': 'id3'}], instances.Instance._build_nics([
+ {'NetworkInterfaceId': 'id3', 'DeviceIndex': '3'},
+ {'NetworkInterfaceId': 'id1', 'DeviceIndex': '1'},
+ {'NetworkInterfaceId': 'id2', 'DeviceIndex': 2},
+ ]))
+ self.assertEqual([
+ {'port-id': 'id1'},
+ {'port-id': 'id2'},
+ {'port-id': 'id3'},
+ {'port-id': 'id4'},
+ {'port-id': 'id5'}
+ ], instances.Instance._build_nics([
+ {'NetworkInterfaceId': 'id3', 'DeviceIndex': '3'},
+ {'NetworkInterfaceId': 'id1', 'DeviceIndex': '1'},
+ {'NetworkInterfaceId': 'id2', 'DeviceIndex': 2},
+ 'id4',
+ 'id5'
+ ]))