BACKGROUND OF THE INVENTION1. Field of the Invention
The present invention relates in general to computers, and more particularly to a method and computer program product for concurrently executing multiple primitive commands in a command line interface (CLI).
2. Description of the Related Art
In storage controllers, command line interface (CLI) commands are used to configure hardware resources and to utilize existing resources for several different applications. The configuration of hardware resources involves the creation and deletion of resources such as arrays, volumes, volume groups, host connections, and the like. Once the hardware resources are configured, the configured resources can be used for such applications as Copy Services applications (e.g., Flash Copy, Metro Mirror, Global Mirror). In both cases of the configuration of hardware resources and the usage of the existing resources in applications, “primitive commands” and their parameters are used to specify to the CLI the intent of a command request.
While multiple primitive commands may currently be executed in sequence by a CLI, there is currently no mechanism by which multiple primitives commands may be concurrently executed to save computing resources.
SUMMARY OF THE INVENTIONA need exists for a method and computer program product for concurrently executing multiple primitive commands in a command line interface. Accordingly, in one embodiment, by way of example only, a method to concurrently execute multiple primitive commands in a command line interface (CLI) is provided. Each of a plurality of signal parameters is designated for each of a plurality of primitive commands. The plurality of primitive commands are encapsulated into a header CLI command. The header CLI command is executed.
In another embodiment, again by way of example only, a computer program product for concurrently executing multiple primitive commands in a command line interface (CLI) is provided. The computer program product comprises a computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable program code portions include a first executable portion for designating each of a plurality of signal parameters for each of a plurality of primitive commands, a second executable portion for encapsulating the plurality of primitive commands into a header CLI command, and a third executable portion for executing the header CLI command.
BRIEF DESCRIPTION OF THE DRAWINGSIn order that the advantages of the invention will be readily understood, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments that are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings, in which:
FIG. 1 depicts one embodiment of a computing environment to incorporate and use one or more aspects of the claimed subject matter; and
FIG. 2 depicts an exemplary method for concurrently executing multiple primitive commands in a command line interface (CLI);
FIG. 3 depicts an exemplary method of executing multiple primitive commands where the primitive commands are independent from one another; and
FIG. 4 depicts an exemplary method of executing multiple primitive commands where some of the primitive commands must be processed in sequence.
DETAILED DESCRIPTION OF THE DRAWINGSTurning toFIG. 1, anexemplary computing environment100 is depicted capable of incorporating and using one or more aspects of the following claimed subject matter. As one skilled in the art will appreciate, however, the depicted exemplary embodiment is only one representation of a variety of configurations in which one or more aspects of the claimed subject matter may be implemented.
Environment100 includes acontroller110 in combination with a plurality of information storage and retrieval systems. For example, in the illustrated embodiment ofFIG. 1,environment100 includescontroller110 in combination with information storage andretrieval systems120,130,140, and additional systems not shown.
In certain embodiments,environment100 further includes anetwork interface180.Network interface180 may be, for example, a Storage Attached Network (“SAN”), a local area network (LAN), a wide area network (WAN), a private network or combinations thereof. In these embodiments,controller110 is capable of communicating withnetwork interface180 viacommunication link152.
Controller110 includesprocessor112,memory114,microcode116, network interface (NI)node117, and network interface (NI)server118. In certain embodiments,memory114 comprises non-volatile memory, such as for example, one or more EEPROMs (Electrically Erasable Programmable Read Only Memory), one or more flash PROMs (Programmable Read Only Memory), battery backup RAM, hard disk drive (HDD), combinations thereof, and the like.Controller110 may be deemed a “storage controller” ascontroller110 is responsible for at least a portion ofstorage systems125,135, and145.
Anadditional server160 includes one or more command line interface (CLI) clients. CLI161 may be a script which is executed on theCLI clients160. In certain embodiments,communication link162 may be implemented asnetwork interface180. Additionally,controller110 further includes network interface (NI)node117 andNI server118 for providing communications between a CLI client onserver160 and thenetwork interface180.Host computer105 is capable of communication with any of the components ofenvironment100 usingnetwork interface180 viacommunication link182. In other embodiments,host computer105 may communicate with any of the components ofenvironment100 directly using for example, a host adapter.
In the illustrated embodiment ofFIG. 1,controller110 is external to each of Applicant's information storage and retrievalsystems comprising environment100. In other embodiments,controller110 is integral with one of the information storage and retrievalsystems comprising environment100. Additionally, more than onecontroller110 may be implemented in a particular application.
Controller110 is capable of bidirectional communication with information storage andretrieval systems120,130, and140, usingnetwork interface180,communication link152 andcommunication links122,132, and142, respectively. In the illustrated embodiment ofFIG. 1,controller110 communicates with a plurality of information storage and retrieval systems usingnetwork interface180, such as for example, a storage area network (SAN). In other embodiments,controller110 may also communicate directly with any of the information storage and retrieval systems. In yet other embodiments,controller110 communicates directly with one or more information storage and retrieval systems, and with one or other information storage and retrieval systems usingnetwork interface180.
Communication links122,132,142,152,162 and182, are independently selected from the group comprising a wireless communication link, a serial interconnection, such as RS-232 or RS-422, an ethernet interconnection, a SCSI interconnection, an iSCSI interconnection, a Gigabit Ethernet interconnection, a Bluetooth interconnection, a Fibre Channel interconnection, an ESCON interconnection, a FICON interconnection, a Local Area Network (LAN), a private Wide Area Network (WAN), a public wide area network, Storage Area Network (SAN), Transmission Control Protocol/Internet Protocol (TCP/IP), the Internet, and combinations thereof.
Information storage andretrieval system120 includes a plurality ofinformation storage media125. In certain embodiments, plurality ofinformation storage media125 comprises one or more hard disk drives, one or more tape storage media, one or more optical storage media, one or more electronic storage media and combinations thereof.
Information storage andretrieval system130 includes a plurality ofinformation storage media135. In certain embodiments, plurality ofinformation storage media135 comprises one or more hard disk drives, one or more tape storage media, one or more optical storage media, one or more electronic storage media, and combinations thereof.
Information storage andretrieval system140 includes a plurality ofinformation storage media145. In certain embodiments, plurality ofinformation storage media145 comprises one or more hard disk drives, one or more tape storage media, one or more optical storage media, one or more electronic storage media and combinations thereof.
As those skilled in the art will appreciate, information andretrieval storage systems120,130, and140, may comprise elements in addition to the plurality of storage media shown. As those skilled in the art will further appreciate, such information storage and retrieval systems may further include, without limitation, one or more processors, one or more data buffers, one or more DASD devices, one or more data caches, one or more input/output adapters, one or more storage device adapters, one or more operator input panels, one or more web servers, one or more robotic accessors, one or more data storage devices which include the plurality ofstorage media125 and the like.
As previously described, CLI commands are used to configure hardware resources and to configure existing resources for several different applications. In both cases of the configuration of hardware resources and the usage of the existing resources in applications, “primitive commands” and their parameters are used to specify to the CLI the intent of a command request.
Although the primitive commands provide several parameters that extend the functionality of the primitive command, the primitive commands are limited in scope to perform a single task. For example, for the configuration of volumes to be used in one in flash copy pairs to run in background copy, and in another case for another set of device pairs to run flash copy with no background copy, the same primitive commands are involved that are expanded with parameters to indicate the type of flash copy command to run.
To illustrate, the primitive command “mkflash device_pair_set” may is used to create flash copy pairs with background copy. The primitive command “mkflash-ncopy different_device_pair” is used to create flash copy pairs without background copy.
The above two primitive commands are executed one at a time when CLI is invoked to execute the commands. The primitive commands can be executed in foreground or background mode. In either case, the first primitive command of a list of primitive commands must be completed before the second primitive command can be executed.
Referring again toFIG. 1, when a primitive command is submitted, theCLI client161 will do syntax checking of the primitive command and its parameters. As a next step, CLI sends the primitive command and parameters to the network interface (NI)server118. At theNI server118, software will build one or more packages that contains commands/requests to be processed bymicrocode116. Once the package is built, NI software sends the package to thenetwork interface node117. From there, the package is sent across to the kernel to be processed by thespecialized microcode116 that would handle the command/request from theclient160.
For example, for Copy Services (CS) applications, the software in the NI server converts the primitive command and its parameters into a check key data (CKD) type command. A primitive command that is used for a Copy Services application allows parameters that comprise several devices. The primitive command is expanded into several CKD type of commands, organized as one CKD command per device. Therefore, from one primitive, the NI software can expand the primitive into several CKD commands. Once NI software expands a primitive command into several CKD commands, and a package of CKD commands is built, the software in the NI server sends the package to the network interface node that reside in one of the servers of a storage controller. The NI node then sends the packaged command to the microcode that resides in the kernel to be processed as if the command has come from a host. Once microcode processes all the commands in the package, status for each command is returned to NI server. The NI server then sends back the status to the CLI client.
Although the capability to apply the same primitive command to several devices provides a way to encapsulate in one primitive command several requests, there currently exists no mechanism by which to send several different primitive commands from CLI to the NI server at the same time.
The present description and following claimed subject matter allows for the simultaneous execution of several different CLI primitive commands that have been converted into several different commands/requests understood by microcode at storage controller. To achieve simultaneous execution, a method is disclosed to encapsulate several CLI primitive commands into one payload. Multiple CLI primitive commands may be encapsulated in this way by use of a CLI header command.
The CLI header command may contain a parameter including a signal and its modifier. The signal may indicate the start of a respective primitive command. The signal parameter modifier may be a CLI primitive command. One signal parameter may be designated per each primitive command. In this way, a plurality of signal parameters may be designated for each of a plurality of primitive commands. The signal parameter precedes the primitive command, indicating the start of a primitive command. The CLI header command may be implemented as the first command in the CLI script or shell script.
To illustrate, an exemplary header command and the encapsulate CLI primitive commands may be created according to the following syntax:
header_command -signal primitive_command <parameters> -signal primitive_command <parameters> . . .
Similarly, the header command may follow the description:
>>--header_command--+-- -signal -- primitive_command <parameters> ---+---------+---------><, - . . . -, >
At the client server, CLI may verify the syntax of the header command and each primitive command in the payload. After the syntax is verified, CLI may send the payload to the NI server. Once the payload arrives at NI server, NI software would unpack the payload. The NI software will build one or more packages containing several commands/requests for processing by the storage controller microcode. Finally, NI software would send the packages to the NI node which sends the packages to microcode to be processed.
Although several different primitive commands are packaged into one payload, it is possible that in a particular scenario a particular set of primitive commands may be required to be executed sequentially. To execute commands in sequence, the successful execution of each respective primitive command to be executed sequentially depends on the successful completion of the previous primitive command. If one primitive command of a sequence of primitive commands fails, the following commands are not executed. Examples of such sequential commands are the commands that create a volume and the commands that group some of the newly created volumes into a volume group. Volumes must be created before they are grouped. Although it is possible to create an empty volume group, and then assign volumes to it, if both commands come in the same payload, the commands must be executed sequentially. In one embodiment, to successfully process sequential commands, the <parameters> field of the primitive commands may include an indicator that directs the microcode to execute the commands with the same sequential indicators.
FIG. 2 depicts an exemplary method of concurrently executing multiple primitives in a command line interface. As one skilled in the art will appreciate, various steps in the method may be implemented in differing ways to suit a particular application. In addition, the described method may be implemented by various means, such as hardware, software, firmware, or a combination thereof operational on or otherwise associated with the storage environment. For example, the method may be implemented, partially or wholly, as a computer program product including a computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable storage medium may include disk drives, flash memory, digital versatile disks (DVDs), compact disks (CDs), and other types of storage mediums.
Method200 begins (step202) by the designation of each of a plurality of signal parameters for each of a plurality of primitive CLI commands (step204). As a next step, the primitive commands are encapsulated as a single package as previously described by use of the CLI header command (step206). The CLI header command is then executed (step208). As part of the execution of the header command, the following additional steps may take place. The header CLI command may be sent to the network interface. The header CLI command may be packaged by the NI software (e.g., into a package of CKD commands). The packaged header CLI command may be sent to microcode as previously described. Finally, the packaged header CLI may be processed by the microcode, again as previously described.
Turning toFIG. 3, anexemplary method300 depicting the execution of multiple primitive commands is shown.Method300 assumes that each of the primitive commands are independent from each other. As shown, various components involved in the execution process are depicted, such as aserver302, aCLI client304, aNI server306, and a command processor (microcode)308.Server302 may be any server, such as an AIX, UNIX, or Windows server that contains theCLI client304.
Server302 beginsmethod300 by building the command payload that contains header primitive commands (step310). The server then invokes the CLI script to create a CLI session (step312). The CLI client then reads the command payload (step314), verifies the header command and primitive commands (step316), initiates a session authentication (step318) which is verified by the NI server (step320), and sends the command payload “as is” to the NI server306 (step322).
NI server306 receives the payload (step324) and builds commands/requests package(s) based on the primitive commands (step326). The package(s) are sent to microcode to be processed (step328).Microcode308 then receives the package(s) (step330) and processes the commands in the package(s) (step332).
A secondexemplary method400 depicting the execution of multiple primitive commands is shown inFIG. 4.Method400 assumes that at least some of the primitive commands must be executed in sequence as previously described. Again, various components involved in the execution process are shown, including server402 (similar to server302), CLI client404 (similar to client304), NI server406 (similar to server306), and command processor (microcode)408 (similar to microcode308).
Server402 again builds a command payload containing header primitive commands (step410). In this case, however, some primitive commands contain indicators that flag the particular commands as belonging to a sequential group. Again, a CLI script is invoked to create a CLI session (step412). Steps414-428 proceed in a similar manner as depicted inFIG. 3, where the payload is verified, the CLI session is authenticated and verified, the payload is transferred and received, and the package is processed and sent to microcode to be further processed. In microcode, the packages are received and processed (steps430 and432). In this case, however, the designated sequential primitive commands are processed one at a time (step434). Again, the successful processing of these commands depends on successful processing of the respective previous command in the sequential group.
Reference throughout this specification to “one embodiment,” “an embodiment,” or similar language means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, appearances of the phrases “in one embodiment,” “in an embodiment,” and similar language throughout this specification may, but do not necessarily, all refer to the same embodiment.
While one or more embodiments of the present invention have been illustrated in detail, the skilled artisan will appreciate that modifications and adaptations to those embodiments may be made without departing from the scope of the present invention as set forth in the following claims.