def tearDown(self):
         pass
 
-    @mock.patch.object(restcall, 'call_req_aai')
+    # @mock.patch.object(restcall, 'call_req_aai')
     @mock.patch.object(restcall, 'call_req')
-    def test_instantiate_vnf(self, mock_call_req, mock_call_req_aai):
+    def test_instantiate_vnf(self, mock_call_req):
         vnfm_info = {
             'userName': 'admin',
              'vendor': 'ZTE',
         r1 = [0, json.JSONEncoder().encode(vnfm_info), "200"]
         ret = [0, json.JSONEncoder().encode(job_info), '200']
         ret2 = [0, json.JSONEncoder().encode(vnflcm_info), '200']
-        mock_call_req_aai.side_effect = [r1, r1]
-        mock_call_req.side_effect = [ret, ret2]
+        # mock_call_req_aai.side_effect = [r1, r1]
+        mock_call_req.side_effect = [r1, ret, r1, ret2]
         req_data = {
             'vnfInstanceName': 'VFW_f88c0cb7-512a-44c4-bd09-891663f19367',
             'vnfPackageId': 'd852e1be-0aac-48f1-b1a4-cd825f6cdf9a',
         self.assertEqual(job_info, response.data)
 
 
-    @mock.patch.object(restcall, 'call_req_aai')
+    # @mock.patch.object(restcall, 'call_req_aai')
     @mock.patch.object(restcall, 'call_req')
-    def test_terminate_vnf(self, mock_call_req, mock_call_req_aai):
+    def test_terminate_vnf(self, mock_call_req):
         vnfm_info = {
             "vnfmId": "19ecbb3a-3242-4fa3-9926-8dfb7ddc29ee",
             "name": "g_vnfm",
         r1 = [0, json.JSONEncoder().encode(vnfm_info), "200"]
         r2 = [0, json.JSONEncoder().encode(job_info), "200"]
         job_ret = [0,  json.JSONEncoder().encode(job_status_info), "200"]
-        mock_call_req_aai.side_effect = [r1, r1, r1]
-        mock_call_req.side_effect = [r2, job_ret, r2]
+        # mock_call_req_aai.side_effect = [r1, r1, r1]
+        mock_call_req.side_effect = [r1, r2, r1, job_ret, r1, r2]
         response = self.client.post("/api/gvnfmdriver/v1/ztevnfmid/vnfs/2/terminate")
         self.assertEqual(status.HTTP_204_NO_CONTENT, response.status_code)
         self.assertEqual(job_info, response.data)
 
 
-    @mock.patch.object(restcall, 'call_req_aai')
+    # @mock.patch.object(restcall, 'call_req_aai')
     @mock.patch.object(restcall, 'call_req')
-    def test_query_vnf(self, mock_call_req, mock_call_req_aai):
+    def test_query_vnf(self, mock_call_req):
         vnfm_info = {
             "vnfmId": "19ecbb3a-3242-4fa3-9926-8dfb7ddc29ee",
             "name": "g_vnfm",
         job_info = {"ResponseInfo": {"vnfInstanceId":"88","instantiationState":"INSTANTIATED","vnfSoftwareVersion":"v1.2.3"}}
         r1 = [0, json.JSONEncoder().encode(vnfm_info), "200"]
         r2 = [0, json.JSONEncoder().encode(job_info), "200"]
-        mock_call_req_aai.side_effect = [r1]
-        mock_call_req.side_effect = [r2]
+        # mock_call_req_aai.side_effect = [r1]
+        mock_call_req.side_effect = [r1, r2]
         response = self.client.get("/api/gvnfmdriver/v1/19ecbb3a-3242-4fa3-9926-8dfb7ddc29ee/vnfs/88")
         self.assertEqual(status.HTTP_200_OK, response.status_code)
         expect_resp_data = {"vnfInfo": {"vnfInstanceId": "88", "vnfStatus": "ACTIVE","version":"v1.2.3"}}
         self.assertEqual(expect_resp_data, response.data)
 
 
-    @mock.patch.object(restcall, 'call_req_aai')
+    # @mock.patch.object(restcall, 'call_req_aai')
     @mock.patch.object(restcall, 'call_req')
-    def test_operation_status(self, mock_call_req, mock_call_req_aai):
+    def test_operation_status(self, mock_call_req):
         vnfm_info = {
             'userName': 'admin',
              'vendor': 'ZTE',
         }
         r1 = [0, json.JSONEncoder().encode(vnfm_info), '200']
         r2 = [0, json.JSONEncoder().encode(resp_body), '200']
-        mock_call_req_aai.side_effect = [r1]
-        mock_call_req.side_effect = [r2]
+        # mock_call_req_aai.side_effect = [r1]
+        mock_call_req.side_effect = [r1, r2]
         response = self.client.get("/api/gvnfmdriver/v1/{vnfmid}/jobs/{jobid}?responseId={responseId}".
             format(vnfmid=vnfm_info["vnfmId"],jobid=resp_body["ResponseInfo"]["vnfLcOpId"],
                    responseId=resp_body["ResponseInfo"]["responseDescriptor"]["responseId"]))
 
 
     return inst_levelId
 
+# Query vnfm info from nslcm
+def get_vnfminfo_from_nslcm(vnfm_id):
+    ret = req_by_msb((EXTSYS_GET_VNFM) % vnfm_id, "GET")
+    if ret[0] != 0:
+        return 255, Response(data={'error': ret[1]}, status=ret[2])
+    vnfm_info = json.JSONDecoder().decode(ret[1])
+    logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info)
+    return 0, vnfm_info
+
+# Query vnfm info from esr
 def get_vnfm_info(vnfm_id):
     ret = call_aai((EXTSYS_GET_VNFM) % vnfm_id, "GET")
     if ret[0] != 0:
     logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info)
     return 0, vnfm_info
 
+
+
 def call_vnfm_rest(vnfm_info, input_data, res_url, call_method = "post"):
     ret = restcall.call_req(
         base_url=ignorcase_get(vnfm_info, "url"),
 
     begin_time = time.time()
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return 255, Response(data={"error":"Fail to get VNFM!"}, status=status.HTTP_412_PRECONDITION_FAILED)
 
     logger.debug("[%s] request.data=%s", fun_name(), request.data)
 
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return ret, vnfm_info
 
     logger.debug("[%s] request.data=%s", fun_name(), request.data)
 
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return ret, vnfm_info
 
 def do_terminatevnf(request, data, vnfm_id, vnfInstanceId):
     logger.debug("[%s] request.data=%s", fun_name(), request.data)
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return ret,vnfm_info
 
     logger.debug("[%s] request.data=%s", fun_name(), request.data)
     input_data = set_deletevnf_params(request.data)
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return ret, vnfm_info
 
 def do_queryvnf(request, vnfm_id, vnfInstanceId):
     logger.debug("[%s] request.data=%s", fun_name(), request.data)
     try:
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return ret, vnfm_info
 
         jobId = ignorcase_get(kwargs, "jobId")
         responseId = ignorcase_get(kwargs, "responseId")
 
-        ret, vnfm_info = get_vnfm_info(vnfm_id)
+        ret, vnfm_info = get_vnfminfo_from_nslcm(vnfm_id)
         if ret != 0:
             return Response(data={'error': ret[1]}, status=ret[2])
         logger.debug("[%s] vnfm_info=%s", fun_name(), vnfm_info)
 
 
 # ==================================================
-grant_vnf_url = 'api/nslcm/v1/ns/grantvnf'
+grant_vnf_url = 'api/nslcm/v1/grantvnf'
 
 @api_view(http_method_names=['PUT'])
 def grantvnf(request, *args, **kwargs):