diff --git a/kuryr/controllers.py b/kuryr/controllers.py
index 621d76af..e0d40b89 100644
--- a/kuryr/controllers.py
+++ b/kuryr/controllers.py
@@ -512,8 +512,14 @@ def network_driver_create_network():
         try:
             if neutron_uuid:
                 networks = _get_networks_by_attrs(id=neutron_uuid)
+                specified_network = neutron_uuid
             else:
                 networks = _get_networks_by_attrs(name=neutron_name)
+                specified_network = neutron_name
+            if not networks:
+                raise exceptions.KuryrException(
+                      ("Specified network id/name({0}) does not "
+                       "exist.").format(specified_network))
             network_id = networks[0]['id']
         except n_exceptions.NeutronClientException as ex:
             app.logger.error(_LE("Error happened during listing "
diff --git a/kuryr/tests/unit/test_kuryr.py b/kuryr/tests/unit/test_kuryr.py
index 6cbf1c50..f3108396 100644
--- a/kuryr/tests/unit/test_kuryr.py
+++ b/kuryr/tests/unit/test_kuryr.py
@@ -233,6 +233,86 @@ class TestKuryr(base.TestKuryrBase):
         decoded_json = jsonutils.loads(response.data)
         self.assertEqual(constants.SCHEMA['SUCCESS'], decoded_json)
 
+    def test_network_driver_create_network_with_network_id_not_exist(self):
+        docker_network_id = hashlib.sha256(
+            utils.getrandbits(256)).hexdigest()
+
+        self.mox.StubOutWithMock(app.neutron, "list_networks")
+        fake_neutron_net_id = str(uuid.uuid4())
+        fake_existing_networks_response = {
+            "networks": []
+        }
+        app.neutron.list_networks(
+            id=fake_neutron_net_id).AndReturn(
+                fake_existing_networks_response)
+        self.mox.ReplayAll()
+        network_request = {
+            'NetworkID': docker_network_id,
+            'IPv4Data': [{
+                'AddressSpace': 'foo',
+                'Pool': '192.168.42.0/24',
+            }],
+            'IPv6Data': [{
+                'AddressSpace': 'bar',
+                'Pool': 'fe80::/64',
+                'Gateway': 'fe80::f816:3eff:fe20:57c3/64',
+            }],
+            'Options': {
+                 constants.NETWORK_GENERIC_OPTIONS: {
+                     constants.NEUTRON_UUID_OPTION: fake_neutron_net_id
+                 }
+            }
+        }
+        response = self.app.post('/NetworkDriver.CreateNetwork',
+                                 content_type='application/json',
+                                 data=jsonutils.dumps(network_request))
+        self.assertEqual(500, response.status_code)
+        decoded_json = jsonutils.loads(response.data)
+        self.assertIn('Err', decoded_json)
+        err_message = ("Specified network id/name({0}) does not "
+                      "exist.").format(fake_neutron_net_id)
+        self.assertEqual({'Err': err_message}, decoded_json)
+
+    def test_network_driver_create_network_with_network_name_not_exist(self):
+        docker_network_id = hashlib.sha256(
+            utils.getrandbits(256)).hexdigest()
+
+        self.mox.StubOutWithMock(app.neutron, "list_networks")
+        fake_neutron_network_name = "fake_network"
+        fake_existing_networks_response = {
+            "networks": []
+        }
+        app.neutron.list_networks(
+            name=fake_neutron_network_name).AndReturn(
+                fake_existing_networks_response)
+        self.mox.ReplayAll()
+        network_request = {
+            'NetworkID': docker_network_id,
+            'IPv4Data': [{
+                'AddressSpace': 'foo',
+                'Pool': '192.168.42.0/24',
+            }],
+            'IPv6Data': [{
+                'AddressSpace': 'bar',
+                'Pool': 'fe80::/64',
+                'Gateway': 'fe80::f816:3eff:fe20:57c3/64',
+            }],
+            'Options': {
+                 constants.NETWORK_GENERIC_OPTIONS: {
+                     constants.NEUTRON_NAME_OPTION: fake_neutron_network_name
+                 }
+            }
+        }
+        response = self.app.post('/NetworkDriver.CreateNetwork',
+                                 content_type='application/json',
+                                 data=jsonutils.dumps(network_request))
+        self.assertEqual(500, response.status_code)
+        decoded_json = jsonutils.loads(response.data)
+        self.assertIn('Err', decoded_json)
+        err_message = ("Specified network id/name({0}) does not "
+                      "exist.").format(fake_neutron_network_name)
+        self.assertEqual({'Err': err_message}, decoded_json)
+
     def test_network_driver_delete_network(self):
         docker_network_id = hashlib.sha256(
             utils.getrandbits(256)).hexdigest()