IP Library Granted Patent US 10,346,210
Granted Patent B2
US 10,346,210 · App. 15/444,058 · Granted Jul 9, 2019

Push signaling to run jobs on available servers

Inventors: Mark Andrew Anderson (Seattle, WA); Christopher James Brown (Issaquah, WA); Kevin Allen Smith (Raleigh, NC); John Braden Keiser (North Bend, WA)
Assignee: Chef Software, Inc.
G06F9/5027G06F9/485G06F11/30G06F11/3006G06F11/3055G06F21/44H04L9/3247H04L41/00G06F11/0715G06F11/0757
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 10,346,210
App. No.
15/444,058
Granted
Jul 9, 2019
Kind
B2
Abstract

Embodiments are directed towards push signaling to run jobs on available servers. Users may provide jobs or job instructions to a job control node. Job control node may determine one or more available job target nodes from among a plurality of managed nodes associated with the job control node. The job target nodes may be determined based on information included in the provided job instructions. If there are available job target nodes, the job control node may provide the job instructions to each available job target node. Further, the job control node may receive communications from one or more available job target nodes that indicates that the job target node is prepared and ready to execute the received job instructions. Next, the job control node may issue a job start command that triggers the prepared job target nodes to begin executing the provided job instructions.

Claims (57)

1. A method for managing a job over a network with one or more processors that perform actions, comprising:

employing a job control node to determine one or more of a plurality of managed nodes that is available to be managed as a job target node based on providing one or more heartbeat messages and one or more job instructions to the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes;

providing a job start command to each of the determined amount of job target nodes; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes, and wherein each of the determined amount of job target nodes that have become unavailable after the job start command is provided to them is identified as having failed to execute the one or more job instructions.

2. The method of claim 1 , further comprising employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully using one or more credentials included with the one or more job instructions.

3. The method of claim 1 , further comprising employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully performing one or more cryptographic operations on the one or more job instructions.

4. The method of claim 1 , further comprising including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to assign groups of objects that include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

5. The method of claim 1 , further comprising including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to dynamically provide one or more additional attributes to one or more objects in the entity group or one or more rules that filter the one or more objects from the entity group, wherein the one or more objects include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

6. A method for managing a job over a network with one or more processors that perform actions, comprising:

employing a job control node to determine one or more of a plurality of managed nodes that is available to be managed as a job target node based on providing one or more heartbeat messages and one or more job instructions to the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes and include one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to provide one or more values to individually identify one or more objects in the entity group, and wherein the one or more values are employable to query the one or more objects that are individually identified; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes.

7. A system that is arranged for managing a job over a network, comprising:

a plurality of managed nodes; and a job control node comprising:

a transceiver that is operative to communicate over the network;

a memory that is operative to store at least instructions; and

a processor device that is operative to execute instructions that enable actions, including:

determining one or more of the plurality of managed nodes that is available to be managed as a job target node based on providing one or more heartbeat messages and one or more job instructions to the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes;

providing a job start command to each of the determined amount of job target nodes; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes, and wherein each of the determined amount of job target nodes that have become unavailable after the job start command is provided to them is identified as having failed to execute the one or more job instructions.

8. The system of claim 7 , further comprising employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully using one or more credentials included with the one or more job instructions.

9. The system of claim 7 , further comprising employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully performing one or more cryptographic operations on the one or more job instructions.

10. The system of claim 7 , further comprising including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to assign groups of objects that include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

11. The system of claim 7 , further comprising including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to dynamically provide one or more additional attributes to one or more objects in the entity group or one or more rules that filter the one or more objects from the entity group, wherein the one or more objects include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

12. The system of claim 7 , further comprising including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to provide one or more values to individually identify one or more objects in the entity group, wherein the one or more values are employable to query the one or more objects that are individually identified.

13. A processor-readable non-transitory storage media that stores instructions for managing a job over a network, wherein execution of the instructions by a processor device causes actions comprising:

employing a job control node to determine one or more of a plurality of managed nodes that is available to be managed as a job target node based on providing one or more heartbeat messages and one or more job instructions to the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes;

providing a job start command to each of the determined amount of job target nodes; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes, and wherein each of the determined amount of job target nodes that have become unavailable after the job start command is provided to them is identified as having failed to execute the one or more job instructions.

14. The processor-readable non-transitory storage media of claim 13 wherein the execution of the instructions further causes employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully using one or more credentials included with the one or more job instructions.

15. The processor-readable non-transitory storage media of claim 13 wherein the execution of the instructions further causes employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully performing one or more cryptographic operations on the one or more job instructions.

16. The processor-readable non-transitory storage media of claim 13 wherein the execution of the instructions further causes including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to assign groups of objects that include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

17. The processor-readable non-transitory storage media of claim 13 wherein the execution of the instructions further causes including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to dynamically provide one or more additional attributes to one or more objects in the entity group or one or more rules that filter the one or more objects from the entity group, and wherein the one or more objects include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

18. The processor-readable non-transitory storage media of claim 13 wherein the execution of the instructions further causes including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to provide one or more values to individually identify one or more objects in the entity group, and wherein the one or more values are employable to query the one or more objects that are individually identified.

19. A system that is arranged for managing a job over a network, comprising:

a plurality of managed nodes; and a job control node including at least:

a transceiver that is operative to communicate over the network;

a memory that is operative to store at least instructions; and

a processor device that is operative to execute instructions that cause actions, including:

determining, by the job control node, one or more of the plurality of managed nodes that are available to be managed as job target nodes, exchanging one or more heartbeat messages with each of the plurality of managed nodes, and providing one or more job instructions to each of the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes and include one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to provide one or more values to individually identify one or more objects in the entity group, and wherein the one or more values are employable to query the one or more objects that are individually identified; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes.

20. The system of claim 19 wherein execution of the instructions causes further actions including employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully using one or more credentials included with the one or more job instructions.

21. The system of claim 19 wherein execution of the instructions causes further actions including employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully performing one or more cryptographic operations on the one or more job instructions.

22. The system of claim 19 wherein execution of the instructions causes further actions to include one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to assign groups of objects that include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

23. The system of claim 19 wherein execution of the instructions causes further actions to include one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to dynamically provide one or more additional attributes to one or more objects in the entity group or one or more rules that filter the one or more objects from the entity group, and wherein the one or more objects include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

24. A processor-readable non-transitory storage media that stores instructions for managing a job over a network, wherein execution of the instructions by a processor device causes actions comprising:

employing a job control node to determine one or more of a plurality of managed nodes that are available to be managed as job target nodes, including exchanging one or more heartbeat messages with the plurality of managed nodes and providing one or more job instructions to the plurality of managed nodes, wherein the job control node further determines which of the available job target nodes is prepared to execute the one or more job instructions;

employing the job control node to determine an amount of job target nodes that are available and prepared job target nodes that is sufficient to perform the one or more job instructions, wherein the one or more job instructions are provided to the determined amount of job target nodes and include one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to provide one or more values to individually identify one or more objects in the entity group, and wherein the one or more values are employable to query the one or more objects that are individually identified; and

employing each of the determined amount of job target nodes to execute the one or more job instructions, wherein a status for the one or more job instructions is updated based on execution by each of the determined amount of job target nodes.

25. The processor-readable non-transitory storage media of claim 24 wherein the execution of the instructions further causes employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully using one or more credentials included with the one or more job instructions.

26. The processor-readable non-transitory storage media of claim 24 wherein the execution of the instructions further causes employing the determined amount of job target nodes to authenticate the one or more job instructions based on successfully performing one or more cryptographic operations on the one or more job instructions.

27. The processor-readable non-transitory storage media of claim 24 wherein the execution of the instructions further causes including one or more entity groups in the one or more job instructions, and wherein the one or more entity groups are arranged to assign groups of objects that include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

28. The processor-readable non-transitory storage media of claim 24 wherein the execution of the instructions further causes including one or more entity groups in the one or more job instructions, wherein the one or more entity groups are arranged to dynamically provide one or more additional attributes to one or more objects in the entity group or one or more rules that filter the one or more objects from the entity group, and wherein the one or more objects include one or more of job target nodes, managed nodes, or components to be employed to execute a particular job.

Assignments (8)
SECURITY INTEREST Recorded Jul 21, 2025
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 072094/0790 →
SECURITY INTEREST Recorded Mar 7, 2024
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 066762/0833 →
SECURITY INTEREST Recorded Jan 25, 2022
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058840/0099 →
MERGER AND CHANGE OF NAME Recorded Nov 16, 2020
From: CHEF SOFTWARE INC.; PROGRESS SOFTWARE CORPORATION
To: PROGRESS SOFTWARE CORPORATION
Reel/Frame 054380/0897 →
TERMINATION OF INTELLECTUAL PROPERTY SECURITY AGREEMENT RECORDED AT REEL 043901 AND FRAME 0919 Recorded Oct 5, 2020
From: SILICON VALLEY BANK
To: CHEF SOFTWARE INC.
Reel/Frame 053983/0064 →
SECURITY INTEREST Recorded Oct 19, 2017
From: CHEF SOFTWARE INC.
To: SILICON VALLEY BANK
Reel/Frame 043901/0919 →
CHANGE OF NAME Recorded Feb 27, 2017
From: OPSCODE, INC.
To: CHEF SOFTWARE INC.
Reel/Frame 041824/0493 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2017
From: ANDERSON, MARK ANDREW; BROWN, CHRISTOPHER JAMES; SMITH, KEVIN ALLEN; KEISER, JOHN BRADEN
To: OPSCODE, INC.
Reel/Frame 041388/0236 →
Continuity (3)
Continuation 14102281 · Dec 10, 2013
Continuation 13831822 · Mar 15, 2013
Related Publication 20170235611A1 · Aug 17, 2017