public Form1() { InitializeComponent(); try { ServiceKeyClientMessageInspector.ServiceKey = _apiClient.GetTimeLimitedServiceKey(); DistributionServices = _apiClient.GetServices(ServiceTypes.QlikViewDistributionService); if (DistributionServices == null) { return; } bindingSource1.DataSource = DistributionServices; cboQvdServices.DataSource = bindingSource1.DataSource; cboQvdServices.DisplayMember = "Name"; cboQvdServices.ValueMember = "Name"; GetQDSSettings(); } catch (Exception e) { MessageBox.Show(e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); throw; } }
private static IQMS CreateQMSAPIClient(Uri uri) { QMSClient client = null; try { client = new QMSClient("BasicHttpBinding_IQMS", uri.AbsoluteUri); ServiceKeyEndpointBehavior serviceKeyEndpointBehavior = new ServiceKeyEndpointBehavior(); client.Endpoint.Behaviors.Add(serviceKeyEndpointBehavior); ServiceKeyClientMessageInspector.ServiceKey = client.GetTimeLimitedServiceKey(); } catch (Exception e) { commSupport.PrintMessage("Exception when creating QMs client, run help command for information about usage. Exeception: " + e.Message, true); } return(client); }
static int TriggerTask(EDXTask t) { /* * Completed 0 The task has completed successfully. (same as 6) * Waiting 1 The task is waiting to be executed. * Running 2 The task is running * Aborting 3 The task is aborting the execution. * Failed 4 The task failed. * Warning 5 The task completed with a warning. * Completed 6 The task has completed successfully. * Error 9 An unknown error occured * Exception 10 Catch exception error */ var exitCode = 0; LogProperties logProperties = new LogProperties { TaskNameOrId = t.TaskNameOrId, ExecId = "-1" }; try { // Create a QMS API client IQMS apiClient = String.IsNullOrEmpty(t.ServiceAddress) ? new QMSClient() : new QMSClient("BasicHttpBinding_IQMS", t.ServiceAddress); // Retrieve a time limited service key ServiceKeyClientMessageInspector.ServiceKey = apiClient.GetTimeLimitedServiceKey(); TaskInfo taskInfo = new TaskInfo(); if (!IsGuid(t.TaskNameOrId)) { List <TaskInfo> taskList = apiClient.FindEDX(t.TaskNameOrId); // Find correct task with support for multiple qds if (taskList.Count > 0) { int i = 0; for (i = 0; i < taskList.Count; i++) { if (taskList[i].Name == t.TaskNameOrId) { break; } } taskInfo = new TaskInfo { Name = taskList[i].Name, ID = taskList[i].ID, QDSID = taskList[i].QDSID, Enabled = taskList[i].Enabled }; } } else { taskInfo = apiClient.GetTask(Guid.Parse(t.TaskNameOrId)); } if (taskInfo.Name != null) { // Trigger the task TriggerEDXTaskResult result = apiClient.TriggerEDXTask(Guid.Empty, taskInfo.Name, t.Password, t.VariableName, t.VariableValues); if (result.EDXTaskStartResult == EDXTaskStartResult.Success) { logProperties.ExecId = result.ExecId.ToString(); if (t.Verbosity > 0) { LogHelper.Log(LogLevel.Info, String.Format("Name: {0}, ID: {1}, Enabled: {2}, Sleep: {3} seconds, Timeout: {4}", taskInfo.Name, taskInfo.ID, taskInfo.Enabled ? "Yes" : "No", t.Sleep / 1000, t.TimeOut == -1 ? "Indefinitely" : t.TimeOut / 60000 + " minutes"), logProperties); } LogHelper.Log(LogLevel.Info, "Started", logProperties); EDXStatus executionStatus = null; if (t.TimeOut != 0) { // Wait until the task is completed or TIMEOUT has passed. SpinWait.SpinUntil(() => { Thread.Sleep(t.Sleep); // Retrieve a new service key if sleep time is above 18 minutes to be safe (timeout is 20 minutes in QV11) if (t.Sleep > 18 * 60 * 1000) { if (t.Verbosity > 1) { LogHelper.Log(LogLevel.Info, "GetTimeLimitedServiceKey()", logProperties); } ServiceKeyClientMessageInspector.ServiceKey = apiClient.GetTimeLimitedServiceKey(); } // Get the current state of the task. try { executionStatus = apiClient.GetEDXTaskStatus(Guid.Empty, result.ExecId); } catch (Exception ex) { LogHelper.Log(LogLevel.Warn, String.Format("{0}", ex.Message.Replace(Environment.NewLine, " ")), logProperties); } if (executionStatus != null && t.Verbosity > 1 && executionStatus.TaskStatus != TaskStatusValue.Running) { LogHelper.Log(LogLevel.Info, executionStatus.TaskStatus.ToString(), logProperties); } // Return true if the task has completed. return(executionStatus != null && (executionStatus.TaskStatus != TaskStatusValue.Running && executionStatus.TaskStatus != TaskStatusValue.Waiting)); }, t.TimeOut); // Write the result if (executionStatus != null) { if (executionStatus.TaskStatus == TaskStatusValue.Completed) { // datetime parsing needs culture formatting, catch it for now and avoid... try { TimeSpan span = DateTime.Parse(executionStatus.FinishTime).Subtract(DateTime.Parse(executionStatus.StartTime)); LogHelper.Log(LogLevel.Info, String.Format("{0} (Duration: {1})", executionStatus.TaskStatus, span), logProperties); } catch (Exception) { LogHelper.Log(LogLevel.Info, String.Format("{0}", executionStatus.TaskStatus), logProperties); } } else { // If something went wrong, point to the logfile for the task execution exitCode = (Int32)executionStatus.TaskStatus; LogHelper.Log(LogLevel.Error, String.Format("{0} (Error code: {1})", executionStatus.TaskStatus, exitCode), logProperties); LogHelper.Log(LogLevel.Error, "Logfile: " + executionStatus.LogFileFullPath, logProperties); } } else { exitCode = 9; LogHelper.Log(LogLevel.Error, String.Format("Failed to get execution status (Error code: {0})", exitCode), logProperties); } } } else { exitCode = 9; LogHelper.Log(LogLevel.Error, String.Format("{0} (Error code: {1})", result.EDXTaskStartResult, exitCode), logProperties); } } else { exitCode = 9; LogHelper.Log(LogLevel.Error, "TaskNotFound (Error code: 9)", logProperties); } } catch (Exception ex) { exitCode = 10; LogHelper.Log(LogLevel.Error, String.Format("{0} (Error code: {1})", ex.Message.Replace(Environment.NewLine, " "), exitCode), logProperties); } return(exitCode); }
static void Main(string[] args) { if (args.Length == 0 || args[0] == "-h") { PrintUsage(); return; } //try //{ // create a QMS API client apiClient = new QMSClient(); //If you want to connect to a server different from the one used when creating the service reference, //do as follows: // //NTLM only (default installation) //IQMS apiClient = new QMSClient("BasicHttpBinding_IQMS", "http://*****:*****@"\\unc\some", Name = "MyMount" }); // // save settings // apiClient.SaveQVSSettings(qvsSettings); // Console.WriteLine("Settings saved. New mount added."); //} //} //catch (System.Exception ex) //{ // Console.WriteLine("An exception occurred: " + ex.Message); //} // wait for user to press any key //Console.ReadLine(); }