IP Library Granted Patent US 8,904,388
Granted Patent B2
US 8,904,388 · App. 13/738,673 · Granted Dec 2, 2014

Scripting language executor service for applications

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,904,388
App. No.
13/738,673
Granted
Dec 2, 2014
Kind
B2
Abstract

A method and system for executing scripts on virtual machines is provided. The system includes an executor service that accepts scripts, parameters, authentication information from another process that needs to invoke a script on a target virtual machine (or group of virtual machines). The executor service remains running even after a script has completed execution. The executor service accepts any number of scripts and places them in a command queue. Agents running on the target virtual machine(s) check-in with the executor service to receive scripts from the command queue. Also, the executor service may directly invoke a script using a persistent connection to a virtual machine management center.

Claims (62)

1. A method for executing a script on a plurality of virtual machines, the method comprising:

loading, by a first process, a library configured to connect to a virtual management center and enable remote execution of a script on the plurality of virtual machines;

establishing a connection to the virtual management center based on the loaded library;

receiving, from a second process, a command request having a script and specifying at least one target virtual machine of the plurality of virtual machines on which to invoke the script;

responsive to determining an agent is available on the target virtual machine, storing the received command request associated with the target virtual machine in a command queue; and

responsive to determining an agent is not available on the target virtual machine, invoking execution of the script on the target virtual machine using the connection to the virtual management center.

2. The method of claim 1 , further comprising:

responsive to receiving a check-in request from an agent executing in a virtual machine, determining whether any command requests associated with the virtual machine are available in the command queue; and

transmitting, to the agent executing in the virtual machine, at least one script associated with the command requests retrieved from the command queue.

3. The method of claim 2 , wherein the determining whether any command requests associated with the target virtual machine further comprises:

identifying any command requests having a target identifier matching the virtual machine of the check-in request;

identifying any command requests configured for multicast operation and having a target identifier matching at least a portion of the virtual machine of the check-in request; and

identifying any command requests configured for broadcast operation.

4. The method of claim 1 , further comprising:

receiving, from the target virtual machine, script output resulting from execution of the script on the target virtual machine; and

modifying the command queue to update a status of the command request and store the script output.

5. The method of claim 4 , further comprising:

transmitting the updated status of the command request to the second process in response to receiving, from the second process, a status request associated with the command request.

6. The method of claim 1 , wherein the receiving the command request further comprises:

receiving, from the second process comprising a Java application, the command request having a PowerShell script configured to be executed on the plurality of virtual machines.

7. A system for executing scripts on a plurality of virtual machines, comprising:

one or more computer processors; and

a memory containing a program which, when executed by the one or more computer processors, is configured to perform an operation comprising:

loading, by a first process executing in the computer processor, a library configured to connect to a virtual management center and enable remote execution of a script on the plurality of virtual machines;

establishing a connection to the virtual management center based on the loaded library;

receiving, from a second process executing in the computer processor, a command request having a script and specifying at least one target virtual machine of the plurality of virtual machines on which to invoke the script;

responsive to determining an agent is available on the target virtual machine, storing the received command request associated with the target virtual machine in a command queue; and

responsive to determining an agent is not available on the target virtual machine, invoking execution of the script on the target virtual machine using the connection to the virtual management center.

8. The system of claim 7 , wherein the operation further comprises:

responsive to receiving a check-in request from an agent executing in a virtual machine, determining whether any command requests associated with the virtual machine are available in the command queue; and

transmitting, to the agent executing in the virtual machine, at least one script associated with the command requests retrieved from the command queue.

9. The system of claim 8 , wherein the determining whether any command requests associated with the target virtual machine further comprises:

identifying any command requests having a target identifier matching the virtual machine of the check-in request;

identifying any command requests configured for multicast operation and having a target identifier matching at least a portion of the virtual machine of the check-in request; and

identifying any command requests configured for broadcast operation.

10. The system of claim 7 , wherein the operation further comprises:

receiving, from the target virtual machine, script output resulting from execution of the script on the target virtual machine;

modifying the command queue to update a status of the command request and store the script output.

11. The system of claim 10 , wherein the operation further comprises:

transmitting the updated status of the command request to the second process in response to receiving, from the second process, a status request associated with the command request.

12. The system of claim 7 , wherein the receiving the command request further comprises:

receiving, from the second process comprising a Java application, the command request having a PowerShell script configured to be executed on the plurality of virtual machines.

13. A non-transitory computer-readable storage medium having computer-readable program code embodied therewith, the computer-readable program code comprising:

computer-readable program code configured to load, by a first process, a library configured to connect to a virtual management center and enable remote execution of a script on a plurality of virtual machines;

computer-readable program code configured to establish a connection to the virtual management center based on the loaded library;

computer-readable program code configured to receive, from a second process, a command request having a script and specifying at least one target virtual machine of the plurality of virtual machines on which to invoke the script;

computer-readable program code configured to, responsive to determining an agent is available on the target virtual machine, store the received command request associated with the target virtual machine in a command queue; and

computer-readable program code configured to, responsive to determining an agent is not available on the target virtual machine, invoke execution of the script on the target virtual machine using the connection to the virtual management center.

14. The non-transitory computer-readable storage medium of claim 13 , further comprising:

computer-readable program code configured to, responsive to receiving a check-in request from an agent executing in a virtual machine, determine whether any command requests associated with the virtual machine are available in the command queue; and

computer-readable program code configured to transmit, to the agent executing in the virtual machine, at least one script associated with the command requests retrieved from the command queue.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the computer-readable program code configured to determine whether any command requests associated with the target virtual machine further comprises:

computer-readable program code configured to identify any command requests having a target identifier matching the virtual machine of the check-in request;

computer-readable program code configured to identify any command requests configured for multicast operation and having a target identifier matching at least a portion of the virtual machine of the check-in request; and

computer-readable program code configured to identify any command requests configured for broadcast operation.

16. The non-transitory computer-readable storage medium of claim 13 , further comprising:

computer-readable program code configured to, receive, from the target virtual machine, script output resulting from execution of the script on the target virtual machine; and

computer-readable program code configured to modify the command queue to update a status of the command request and store the script output.

17. The non-transitory computer-readable storage medium of claim 16 , further comprising:

computer-readable program code configured to transmit the updated status of the command request to the second process in response to receiving, from the second process, a status request associated with the command request.

18. The non-transitory computer-readable storage medium of claim 13 , wherein the computer-readable program code configured to receive the command request further comprises:

computer-readable program code configured to receive, from the second process comprising a Java application, the command request having a PowerShell script configured to be executed on the plurality of virtual machines.

Assignments (4)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
MERGER Recorded Mar 25, 2020
From: VCE IP HOLDING COMPANY LLC
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 052224/0314 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 8, 2016
From: VCE COMPANY, LLC
To: VCE IP HOLDING COMPANY LLC
Reel/Frame 040576/0161 →