diff --git libcloud/compute/drivers/cloudstack.py libcloud/compute/drivers/cloudstack.py
index ca53249..de4e6ec 100644
--- libcloud/compute/drivers/cloudstack.py
+++ libcloud/compute/drivers/cloudstack.py
@@ -124,7 +124,7 @@ class CloudStackNodeDriver(CloudStackDriverMixIn, NodeDriver):
             args['zoneid'] = location.id
         imgs = self._sync_request('listTemplates', **args)
         images = []
-        for img in imgs['template']:
+        for img in imgs.get('template', ()):
             images.append(NodeImage(img['id'], img['name'], self, {
                 'hypervisor': img['hypervisor'],
                 'format': img['format'],
diff --git test/compute/fixtures/cloudstack/listTemplates_notemplates.json test/compute/fixtures/cloudstack/listTemplates_notemplates.json
new file mode 100644
index 0000000..64a1a75
--- /dev/null
+++ test/compute/fixtures/cloudstack/listTemplates_notemplates.json
@@ -0,0 +1 @@
+{ "listtemplatesresponse" : {} }
diff --git test/compute/test_cloudstack.py test/compute/test_cloudstack.py
index 45c487c..8f045d6 100644
--- test/compute/test_cloudstack.py
+++ test/compute/test_cloudstack.py
@@ -58,6 +58,13 @@ class CloudStackNodeDriverTest(unittest.TestCase, TestCaseMixin):
             return
         self.assertTrue(False)
 
+
+    def test_list_images_no_images_available(self):
+        CloudStackMockHttp.fixture_tag = 'notemplates'
+
+        images = self.driver.list_images()
+        self.assertEquals(0, len(images))
+
 class CloudStackMockHttp(MockHttpTestCase):
     fixtures = ComputeFileFixtures('cloudstack')
     fixture_tag = 'default'
