self.assertEqual(900, settings.vm_boot_timeout)
         self.assertEqual(300, settings.vm_delete_timeout)
         self.assertEqual(180, settings.ssh_connect_timeout)
+        self.assertEqual(300, settings.cloud_init_timeout)
         self.assertIsNone(settings.availability_zone)
         self.assertIsNone(settings.volume_names)
 
         self.assertEqual(900, settings.vm_boot_timeout)
         self.assertEqual(300, settings.vm_delete_timeout)
         self.assertEqual(180, settings.ssh_connect_timeout)
+        self.assertEqual(300, settings.cloud_init_timeout)
         self.assertIsNone(settings.availability_zone)
         self.assertIsNone(settings.volume_names)
 
             security_group_names=['sec_grp_1'],
             floating_ip_settings=[fip_settings], sudo_user='joe',
             vm_boot_timeout=999, vm_delete_timeout=333,
-            ssh_connect_timeout=111, availability_zone='server name',
-            volume_names=['vol1'])
+            ssh_connect_timeout=111, cloud_init_timeout=998,
+            availability_zone='server name', volume_names=['vol1'])
         self.assertEqual('foo', settings.name)
         self.assertEqual('bar', settings.flavor)
         self.assertEqual(1, len(settings.port_settings))
         self.assertEqual(999, settings.vm_boot_timeout)
         self.assertEqual(333, settings.vm_delete_timeout)
         self.assertEqual(111, settings.ssh_connect_timeout)
+        self.assertEqual(998, settings.cloud_init_timeout)
         self.assertEqual('server name', settings.availability_zone)
         self.assertEqual('vol1', settings.volume_names[0])
 
                'security_group_names': ['sec_grp_1'],
                'floating_ips': [fip_settings], 'sudo_user': 'joe',
                'vm_boot_timeout': 999, 'vm_delete_timeout': 333,
-               'ssh_connect_timeout': 111, 'availability_zone': 'server name',
-               'volume_names': ['vol2']})
+               'ssh_connect_timeout': 111, 'cloud_init_timeout': 998,
+               'availability_zone': 'server name', 'volume_names': ['vol2']})
         self.assertEqual('foo', settings.name)
         self.assertEqual('bar', settings.flavor)
         self.assertEqual(1, len(settings.port_settings))
         self.assertEqual(999, settings.vm_boot_timeout)
         self.assertEqual(333, settings.vm_delete_timeout)
         self.assertEqual(111, settings.ssh_connect_timeout)
+        self.assertEqual(998, settings.cloud_init_timeout)
         self.assertEqual('server name', settings.availability_zone)
         self.assertEqual('vol2', settings.volume_names[0])
 
 
         :param sudo_user: the sudo user of the VM that will override the
                           instance_settings.image_user when trying to
                           connect to the VM
-        :param vm_boot_timeout: the amount of time a thread will sleep waiting
+        :param vm_boot_timeout: the amount of time a thread will wait
                                 for an instance to boot
-        :param vm_delete_timeout: the amount of time a thread will sleep
-                                  waiting for an instance to be deleted
-        :param ssh_connect_timeout: the amount of time a thread will sleep
-                                    waiting obtaining an SSH connection to a VM
+        :param vm_delete_timeout: the amount of time a thread will wait
+                                  for an instance to be deleted
+        :param ssh_connect_timeout: the amount of time a thread will wait
+                                    to obtain an SSH connection to a VM
+        :param cloud_init_timeout: the amount of time a thread will wait for
+                                   cloud-init to complete
         :param availability_zone: the name of the compute server on which to
                                   deploy the VM (optional)
         :param volume_names: a list of the names of the volume to attach
         self.vm_boot_timeout = kwargs.get('vm_boot_timeout', 900)
         self.vm_delete_timeout = kwargs.get('vm_delete_timeout', 300)
         self.ssh_connect_timeout = kwargs.get('ssh_connect_timeout', 180)
+        self.cloud_init_timeout = kwargs.get('cloud_init_timeout', 300)
         self.availability_zone = kwargs.get('availability_zone')
         self.volume_names = kwargs.get('volume_names')