Index: /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/client/app/modules/va/va-add.controller.js
===================================================================
--- /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/client/app/modules/va/va-add.controller.js	(revision 9176)
+++ /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/client/app/modules/va/va-add.controller.js	(working copy)
@@ -700,7 +700,8 @@
                             "image_name": modalViewModel.va_image,
                             "_asso_idx": 0
                         }]
-                    }
+                    },
+                    "is_insert_only": true
                 };
                 if (modalViewModel.va_size == "custom") {
                     vaInstancerequestData.post_data["cpu_thread"] = modalViewModel.cpuSliderConfirm;
Index: /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/ajax.py
===================================================================
--- /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/ajax.py	(revision 9176)
+++ /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/ajax.py	(working copy)
@@ -173,7 +173,11 @@
         except ValidationError, e:
             return json.dumps([False, unicode(e)])
         try:
-            self.manager.insert(new_obj)
+            if "is_insert_only" in kwargs and kwargs["is_insert_only"]:
+                # only for insert, not check duplicate or insert_or_update
+                self.manager.insertFunc(new_obj)
+            else:
+                self.manager.insert(new_obj)
         except ModelQueryException, e:
             if e.has_error():
                 return json.dumps([False, unicode(e)])
Index: /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/manager.py
===================================================================
--- /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/manager.py	(revision 9176)
+++ /branches/rel_avx_2_7_5/src/webui/webui/htdocs/new/src/hive/model/manager.py	(working copy)
@@ -231,6 +231,29 @@
         mark_expire_all(model_instance._meta._model, clear_all_if_has_asso=True)
         return result
 
+    def insertFunc(self, model_instance):
+        # This new insert function will only call _insert function of the manager implementation
+        # It won't check insert_or_update function
+        # and it won't check if the instance is already exist
+        # please make sure CLI will check duplicate before calling this function
+        try:
+            try:
+                result = self._insert(model_instance)
+            except ModelQueryException as e:
+                self.reset_after_change()
+                # XXX check insert success or failed?
+                mark_expire_all(model_instance._meta._model, clear_all_if_has_asso=True)
+                raise e
+        except ModelQueryException as e:
+            self.reset_after_change()
+            # XXX check insert success or failed?
+            mark_expire_all(model_instance._meta._model, clear_all_if_has_asso=True)
+            raise e
+        self.reset_after_change()
+        # XXX check insert success or failed?
+        mark_expire_all(model_instance._meta._model, clear_all_if_has_asso=True)
+        return result
+
     def update(self, model_instance, field_list=None, old_values=None):
         # if field_list is empty, it means that the whole instance is to be updated
         # or else, just update the specified fields
