FFAStrans API monitor javitasa
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 16 Oct 2019 11:07:52 +0000 (11:07 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 16 Oct 2019 11:07:52 +0000 (11:07 +0000)
git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube;C31569

server/user.jobengine.osgi.commons/src/user/commons/FFAStransAPI.java
server/user.jobengine.osgi.commons/src/user/commons/IFFAStransAPI.java

index bdcd23e80f3ccf5985ab7a3ee6057f43afd505f6..4159c03038da6e755fee4387330155da976af688 100644 (file)
@@ -1,5 +1,6 @@
 package user.commons;\r
 \r
+import java.io.File;\r
 import java.util.List;\r
 \r
 import javax.ws.rs.client.Entity;\r
@@ -28,7 +29,7 @@ public class FFAStransAPI implements IFFAStransAPI {
                                System.out.println("Progress: " + p);\r
                        });\r
 \r
-                       String inputFile = "\\\\10.11.1.100\\Promise\\ARCHIVE\\6.MXF";\r
+                       String inputFile = "\\\\10.11.1.100\\Promise\\ARCHIVE\\20.MXF";\r
                        api.submit("MP4", inputFile);\r
                        try {\r
                                api.monitor(1000);\r
@@ -53,16 +54,17 @@ public class FFAStransAPI implements IFFAStransAPI {
        private ResteasyWebTarget webTarget;\r
        private IProgressChangedListener listener;\r
        private String jobId;\r
-       private BasicDBObject lastJobToSubmit;\r
+       private String inputFile;\r
+       private String workflowName;\r
 \r
        public FFAStransAPI(String apiAddress, IProgressChangedListener listener) {\r
                this.listener = listener;\r
                webTarget = new ResteasyClientBuilder().build().target(apiAddress);\r
        }\r
 \r
-       private void doSubmit() throws Exception {\r
+       private void doSubmit(BasicDBObject jobToSubmit) throws Exception {\r
                ResteasyWebTarget target = webTarget.path("jobs");\r
-               Response apiResponse = target.request().post(Entity.entity(lastJobToSubmit.toString(), MediaType.APPLICATION_JSON));\r
+               Response apiResponse = target.request().post(Entity.entity(jobToSubmit.toString(), MediaType.APPLICATION_JSON));\r
                if (apiResponse.getStatus() != 202)\r
                        throw new Exception("Can not submit, response status is: " + apiResponse.getStatus());\r
                String json = apiResponse.readEntity(String.class);\r
@@ -76,7 +78,7 @@ public class FFAStransAPI implements IFFAStransAPI {
        }\r
 \r
        @Override\r
-       public BasicDBObject getHistory(String jobStart) {\r
+       public BasicDBObject getHistory() {\r
                ResteasyWebTarget target = webTarget.path("history");\r
                BasicDBObject result = null;\r
                try {\r
@@ -86,12 +88,28 @@ public class FFAStransAPI implements IFFAStransAPI {
                        String json = apiResponse.readEntity(String.class);\r
                        BasicDBObject resultObject = (BasicDBObject) JSONUtil.jsonToDbObject(json);\r
                        List<BasicDBObject> jobs = NoSQLUtils.asList(resultObject, "history");\r
+\r
+                       File f = new File(inputFile);\r
+\r
                        for (BasicDBObject job : jobs) {\r
                                if (job == null)\r
                                        continue;\r
 \r
-                               String job_start = NoSQLUtils.asString(job, "job_start");\r
-                               if (jobStart.equals(job_start)) {\r
+                               String file = NoSQLUtils.asString(job, "file");\r
+                               if (file == null)\r
+                                       continue;\r
+\r
+                               String wf_name = NoSQLUtils.asString(job, "wf_name");\r
+                               if (wf_name == null || !workflowName.equals(wf_name))\r
+                                       continue;\r
+\r
+                               if (file.equals(f.getName())) {\r
+                                       logger.info("Found success history");\r
+                                       result = job;\r
+                                       break;\r
+                               }\r
+                               if (file.equals(inputFile)) {\r
+                                       logger.info("Found error history");\r
                                        result = job;\r
                                        break;\r
                                }\r
@@ -156,48 +174,48 @@ public class FFAStransAPI implements IFFAStransAPI {
 \r
        @Override\r
        public void monitor(int pollIntervall) throws InterruptedException, Exception {\r
-               String jobStart = null;\r
                int progress = 0;\r
                while (true) {\r
                        Thread.sleep(pollIntervall);\r
+                       //Status: {"job_id":"20180226-162821-217-A7E91DC625BD","job_start":"2018/02/26 16:28:21","file":"\\\\PROXY-TRANSCODER-01\\MAM-Proxy_input\\20180201-0700_hirado_TEST-_CS.MXF","wf_name":"MAM_proxy","splits":[{"steps":"4 / 5","processor":"Folder","status":"Waiting for next processor resources...","node":"PROXY-TRANSCODE","progress":"78.5"}]}\r
                        BasicDBObject status = getStatus(jobId);\r
                        if (status != null) {\r
-                               //System.out.println("Status: " + status.toPrettyString(null));\r
-                               if (jobStart == null)\r
-                                       jobStart = status.getString("job_start");\r
-\r
+                               logger.info("Status: " + status.toPrettyString(null));\r
                                List<BasicDBObject> splits = NoSQLUtils.asList(status, "splits");\r
+\r
+                               int current = 0;\r
                                if (splits != null && splits.size() > 0) {\r
-                                       String processor = NoSQLUtils.asString(splits.get(0), "processor");\r
-                                       if (StringUtils.isNotBlank(processor) && "Generate text file".equals(processor))\r
-                                               continue;\r
-                                       String prg = NoSQLUtils.asString(splits.get(0), "progress");\r
-                                       int current = (int) Float.parseFloat(prg);\r
-                                       //System.out.println(String.format("%s %s %s", current, progress, current != progress));\r
-                                       if (current != progress) {\r
-                                               progress = current;\r
-                                               listener.onProgressChanged(progress);\r
+                                       //                                      String processor = NoSQLUtils.asString(splits.get(0), "processor");\r
+                                       //                                      if (StringUtils.isNotBlank(processor) && "Generate text file".equals(processor))\r
+                                       //                                              continue;\r
+                                       for (BasicDBObject split : splits) {\r
+                                               String prg = NoSQLUtils.asString(split, "progress");\r
+                                               current += (int) Float.parseFloat(prg);\r
                                        }\r
+                                       current = current / splits.size();\r
+                                       //System.out.println(String.format("%s %s %s", current, progress, current != progress));\r
+                               }\r
+                               if (current != progress) {\r
+                                       progress = current;\r
+                                       listener.onProgressChanged(progress);\r
                                }\r
-                               //Status: {"job_id":"20180226-162821-217-A7E91DC625BD","job_start":"2018/02/26 16:28:21","file":"\\\\PROXY-TRANSCODER-01\\MAM-Proxy_input\\20180201-0700_hirado_TEST-_CS.MXF","wf_name":"MAM_proxy","splits":[{"steps":"4 / 5","processor":"Folder","status":"Waiting for next processor resources...","node":"PROXY-TRANSCODE","progress":"78.5"}]}\r
 \r
                        } else {\r
-                               //System.out.println("Progress: " + 100);\r
                                listener.onProgressChanged(100);\r
-                               BasicDBObject history = getHistory(jobStart);\r
-\r
-                               if (history == null && lastJobToSubmit != null) {\r
-                                       //plusz 1 proba\r
-                                       doSubmit();\r
-                                       lastJobToSubmit = null;\r
-                                       monitor(pollIntervall);\r
-                                       return;\r
-                               }\r
+                               BasicDBObject history = getHistory();\r
+\r
+                               //                              if (history == null && lastJobToSubmit != null) {\r
+                               //                                      //plusz 1 proba\r
+                               //                                      doSubmit();\r
+                               //                                      lastJobToSubmit = null;\r
+                               //                                      monitor(pollIntervall);\r
+                               //                                      return;\r
+                               //                              }\r
 \r
                                //System.out.println("History: " + history.toPrettyString(null));\r
                                if (history == null || NoSQLUtils.asLong(history, "state") != 1) {\r
                                        String error = NoSQLUtils.asString(history, "outcome");\r
-                                       throw new Exception("Transcode error: " + error);\r
+                                       throw new Exception("Transcode error. " + error);\r
                                } else {\r
                                        //System.out.println("Transcode completed");\r
                                        break;\r
@@ -211,6 +229,8 @@ public class FFAStransAPI implements IFFAStransAPI {
 \r
        @Override\r
        public void submit(String workflowName, String inputFile) throws Exception {\r
+               this.workflowName = workflowName;\r
+               this.inputFile = inputFile;\r
                List<BasicDBObject> workflows = getWorkflows();\r
                if (workflows == null)\r
                        throw new Exception("No workflows");\r
@@ -220,7 +240,7 @@ public class FFAStransAPI implements IFFAStransAPI {
                if (wfID < 0)\r
                        throw new Exception("Workflow not exists: " + workflowName);\r
 \r
-               lastJobToSubmit = new BasicDBObject("wf_id", wfID).append("inputfile", inputFile);\r
-               doSubmit();\r
+               BasicDBObject jobToSubmit = new BasicDBObject("wf_id", wfID).append("inputfile", inputFile);\r
+               doSubmit(jobToSubmit);\r
        }\r
 }\r
index d14ba3e66832a907c97c72b78b88db89641524c3..9747b424c7de9b6f99303e0a031a37d4c330cc15 100644 (file)
@@ -6,7 +6,7 @@ import com.ibm.nosql.json.api.BasicDBObject;
 \r
 public interface IFFAStransAPI {\r
 \r
-       BasicDBObject getHistory(String jobStart);\r
+       BasicDBObject getHistory();\r
 \r
        BasicDBObject getStatus(String jobID);\r
 \r