Running Windows Applications from a Linux Instance of Airflow - airflow

I'm setting up Airflow on a Linux server to convert submitted files to different formats and then validate those derivatives. The conversion/validation software applications are all Windows based. Some of them have REST interfaces, so submission from the DAG should be straight forward, as well as polling for state, success, log file, etc. However, many of the applications are only executable via command line on Windows.
Is there any method to launch and track the Windows cmd line apps from Airflow, short of ssh?
Thanks.

Related

How to execute RFT scripts on a remote machine

I have Rational Functional Tester installed on my local machine, and I have written some scripts. I need to run these scripts on a remote machine.
Research shows I should be:
using RATIONAL TEST MANAGER
but the Rational Test Manager is now obsolete, since 2010.
I tried putting the scripts on RQM and run it through the web on remote machine, but for scripts to run from RQM we need an adapter which resides on the local machine.
How do I run my RFT scripts on a remote machine without installing RFT there?
execute rft test script using agent controller?
"Post RFT 8.2.0.1 , to be able to execute a script on a remote machine RFT must be installed on that machine.
*****EDIT***
RFT's installation is a complete package installation ,meaning when you install RFT it installs a complete product that is capable of recording /playback scripts on all the supported domains.
So it's not possible to say that on this machine X install only the recorder and on the machine Y install only the playback engine.
Another approach perhaps could be to have some kind of tool on the server machine that would say that here is the script , go and execute on the machine Z , that does not have RFT installed .. but as the script may have controls recorded for all the domains (html/java/.net/SAP/Win32) all the supporting files DLLs /JARs (consiting of proxies and OS related shared libraries) would have to be transferred to that machine and that I think would be quite a task to do :) . So in my opinion it's not impossible but it's just not been done yet."
Answer Two:
"Wrong, it is not impossible. Just takes a lot of configuration. http://www-01.ibm.com/support/docview.wss?uid=swg21319598
To execute RFT scripts on a remote machine: Make sure the scripts (java or .net ) are compiled before deploy for remote execution. After they are compiled successfully, In order to start remote execution, on the master machine, the Test Manager needs to be installed and configured correctly.
The following is the configuration on the TM on the master machine: In the "Execution" tab, right click on "Computers", and add new computer,specify the computer name, property, and the port information, so TM will be able to locate the remote machine. The set up for the remote machine will be described separately for java script and .net script. For java script, the following is needed on the remote machine: Test Manager Test Agent. (can be installed from Test manager CD). Rational Functional Tester Test Agent.( can be installed from RFT installation package). For .net script, the following is needed on the remote machine: Test Manager Test Agent. (can be installed from Test manager CD). Rational Functional Tester Test Agent.( can be installed from RFT installation package). .Net framework.(Visual Studio is not needed on the remote machine, there is currently defect on this, reference to a separate tech note on the workaround for this, searching "remote execution with .net script").
Last, but not the least, If the customer's AUT is Windows/.net/SAP based, then .net framework needs to be installed on the remote machine regardless whether it is java scripting or .net scripting. This is because some part of RFT's code gets placed into the application during infestation, the RFT code for these applications are written in C#, so at run time, the .net framework is needed to playback successfully."

Run GUI application as part of BuildMaster deploy

I need to run a GUI application as part of BuildMaster deploy. Currently I added a PowerShell action that launches that application. The problem is the process is started but there is no GUI. I guess it is caused by the fact BuildMaster agent (that executes the PowerShell script) is a Windows Service. Is there any way to resolve it?
A Windows Service cannot launch applications with a GUI (as of Windows Vista / Server 2008 and newer at least), as they run in session 0 and will never be seen by an actual user. You might be able to hack around this by setting the "Interact With Desktop" flag, but that isn't really recommended at this point.
Is it possible to re-architect the application that has to be run into something that doesn't present a GUI and instead accepts command-line arguments?

How to install FitNesse on application server as war/ear

Fitnesse download page only has option for standalone.jar and this is also what the instructions are for. Is it somehow possible to install FitNesse on a separate app server, such as Tomcat? There's not directly any war/ear to download, but can I bundle one somehow?
I'm experimenting with acceptance testing frameworks and need to run the tests on a very specific test environment, and thus require a possibility for installing on an already running app container where the tests are executed. Changes for getting even java executable from command line in this environment are slim, and if possible, the process would take probably months to realize.
I do not believe it is possible, but even if you were to get the wiki running inside an app server, a test run would still try to start a new java process (by starting the java executable) so you still need access to that executable.
But does the test environment really need to be in the app server? I usually use FitNesse to test an application from the outside: the test framework makes remote (http) calls to an application running in an app server, but it does not run in that same app server itself.

Why would installation method affect .NET service?

I have built a WCF service that is hosted in a Windows Service following this article: http://msdn.microsoft.com/en-us/library/ms733069.aspx. Part of what the code in the service does is join a multicast group and listen for data that is broadcast to the group. Then it processes it. I have found that when I install the service manually using InstallUtil it works fine. To install it manually I do the following:
Build the MyService project in Visual Studio.
Right click on the Visual Studio Command Prompt and choose Run As Administrator
Navigate to the folder that has the MyService.exe file
Run the InstallUtil command as follows: installutil.exe MyService.exe
The service installs in Windows fine and then I start it. Then I run my ASP.NET application which is the client for the service and it runs fine. The service receives and processes the data just fine.
However I am trying to use Advanced Installer to build an MSI or EXE that will install the service and the ASP.NET application all at once so it doesn't have to be done manually. I am able to successfully create the Advanced Installer project that does this and it actually installs both the ASP.NET application and the Windows Service just fine and it starts my Windows Service too. However the really strange thing is that when I run the application I find that my service code can not receive any multicast data. It seems to block on that line of code and I never get any data. Does anyone know why this would happen? I have tried using an EXE and using "Run As Administrator" when I do the Advanced Installer installation. Here is the code from my service.
_groupAddress = IPAddress.Parse(_myIPAddress);
_listener = new UdpClient(_myPort);
_groupEP = new IPEndPoint(_groupAddress, _myPort);
_listener.JoinMulticastGroup(_groupAddress);
byte[] _bytes = _listener.Receive(ref _groupEP);
It seems to block on that last line of code and it never receives any data. This only happens when I install using Advanced Installer. When I install manually it works fine.
A service is configured to run under the identity of a user. Is this different when you install with the different methods?
Do you use the same port number in both cases, if not it could be the firewall.
99% sure that you have checked it, but check that the service is running after it is installed using advanced installer.
Check the event log for problems with the service.
It may be that your Windows Service is not running with sufficient credentials to perform this action. To test this, I'd recommend trying to change the user account being used for the service to see if that makes any difference.
To do this, go to the services applet (start, run, type services.msc). Find your service, right-click, properties, "Log On" tab, choose "This Account" and select an administrator user account that the service can run under.
I initially thought as the guys said this was a problem with the user credentials. But since you said in both cases the service is installed under the LocalSystem the problem seems to be elsewhere.
I recommend you first check the system "Events Viewer" for any messages regarding your message failing to start, maybe there you can find more information about the failure case.
If you can't find more detailed there I suggest a little bit of reverse engineering, to see what InstallUtil does and Advanced Installer doesn't, or the other way around. Advanced Installer comes along with the Repackager tool. You can use this tool to capture the system changes performed when running "InstallUtil" by providing a dummy executable to the Repackager when it is asking for the setup package, for example Notepad.
When the Repackager launches Notepad, leave it open and run your install command for the service, after the service finished installing, close Notepad and leave the repackager do its job. Then analyze the new project that it generates to see what resources has captured, like files, registry, services, etc...
You can also capture the install package create by Advanced Installer to see if the services installation from it creates less or more registration info for your service.

Deploying asp.net application on windows server

I want to now what is the easiest way to deploy asp.net site to a windows server? Normally we do by uploading files through FTP client.
But as we can checkout repository on linux server and just running "svn up" command though SSH deploys the latest changes, is there any similar way on windows?
Thanks
Web deployment tool is what I use. It can be automated from the command line, and MSBuild can be used to generate deployment packages if you use a CI server. On the simplest level though it supports 1 click deploy from the toolbar in Visual Studio (probably only recommended to development servers).
You can do nearly the same thing on Windows.
Use Remote Desktop Connection to
access the server (this is the
windows counterpart of SSH)
Run "svn
up"
An SVN client doesn't ship with Windows, but the client ports from SilkSVN and CollabNet work just as well as any other.

Resources