CONSOLE COMMAND COMPOSITION
20230116173 · 2023-04-13
Inventors
Cpc classification
International classification
Abstract
Techniques for facilitating the composition of console commands for storage systems and appliances. The techniques include receiving a command prefix at a management console and accessing a plurality of first parameter designations associated with the command prefix from a first hierarchical level of a command tree. The techniques include receiving a selection of a first parameter designation from among the first parameter designations and accessing a plurality of second parameter designations associated with the first parameter designation from a second hierarchical level of the command tree. The techniques include receiving a selection of a second parameter designation from among the second parameter designations and merging the command prefix, the first parameter designation, and the second parameter designation to form a console command for performing a specified task or operation. The techniques include performing the specified task or operation by executing the console command, which may have its own parameters.
Claims
1. A method of facilitating the composition of console commands, comprising: receiving a command prefix at a console of a computer; accessing a plurality of first parameter designations associated with the command prefix from a first hierarchical level of a command tree; receiving a selection of a first parameter designation from among the plurality of first parameter designations; accessing a plurality of second parameter designations associated with the first parameter designation from a second hierarchical level of the command tree; receiving a selection of a second parameter designation from among the plurality of second parameter designations; and merging the command prefix, the first parameter designation, and the second parameter designation to form a console command for performing a specified task or operation.
2. The method of claim 1 wherein the console command has its own parameters, if required, and wherein the method further comprises: executing the console command to perform the specified task or operation.
3. The method of claim 1 further comprising: having received the command prefix at the console of the computer, entering the command prefix on a command line of a command line interface (CLI) of the computer.
4. The method of claim 3 further comprising: having received the selection of the first parameter designation from among the plurality of first parameter designations, causing the first parameter designation to automatically appear on the command line adjacent and following the command prefix, the command prefix and the first parameter designation being separated on the command line by a first space character.
5. The method of claim 4 further comprising: having received the selection of the second parameter designation from among the plurality of second parameter designations, causing the second parameter designation to automatically appear on the command line adjacent and following the first parameter designation, the first parameter designation and the second parameter designation being separated on the command line by a second space character.
6. The method of claim 5 wherein the merging of the command prefix, the first parameter designation, and the second parameter designation includes forming the console command on a next input line below the command line of the CLI.
7. The method of claim 5 wherein the merging of the command prefix, the first parameter designation, and the second parameter designation includes forming the console command on the same input line as the command line of the CLI.
8. The method of claim 5 wherein the merging of the command prefix, the first parameter designation, and the second parameter designation includes forming the console command on a next input line below the command line of the CLI or the same input line as the command line of the CLI with the first space character separating the command prefix and the first parameter designation being removed and the second space character separating the first parameter designation and the second parameter designation being removed.
9. The method of claim 1 wherein the command prefix corresponds to a second console command configured to accept the first parameter designation and the second parameter designation as a first command parameter and a second command parameter, respectively, and wherein the method further comprises: executing the second console command with the first command parameter to navigate the command tree to select the first parameter designation; and executing the second console command with the second command parameter to navigate the command tree to select the second parameter designation.
10. A system for facilitating the composition of console commands, comprising: a memory; and processing circuitry configured to execute program instructions out of the memory to: receive a command prefix at a console of a computer; access a plurality of first parameter designations associated with the command prefix from a first hierarchical level of a command tree; receive a selection of a first parameter designation from among the plurality of first parameter designations; access a plurality of second parameter designations associated with the first parameter designation from a second hierarchical level of the command tree; receive a selection of a second parameter designation from among the plurality of second parameter designations; and merge the command prefix, the first parameter designation, and the second parameter designation to form a console command for performing a specified task or operation.
11. The system of claim 10 wherein the console command has its own parameters, if required, and wherein the processing circuitry is further configured to execute the program instructions out of the memory to execute the console command to perform the specified task or operation.
12. The system of claim 10 wherein the processing circuitry is further configured to execute the program instructions out of the memory, having received the command prefix at the console of the computer, to enter the command prefix on a command line of a command line interface (CLI) of the computer.
13. The system of claim 12 wherein the processing circuitry is further configured to execute the program instructions out of the memory, having received the selection of the first parameter designation from among the plurality of first parameter designations, to cause the first parameter designation to automatically appear on the command line adjacent and following the command prefix, wherein the command prefix and the first parameter designation are separated on the command line by a first space character.
14. The system of claim 13 wherein the processing circuitry is further configured to execute the program instructions out of the memory, having received the selection of the second parameter designation from among the plurality of second parameter designations, to cause the second parameter designation to automatically appear on the command line adjacent and following the first parameter designation, wherein the first parameter designation and the second parameter designation are separated on the command line by a second space character.
15. The system of claim 14 wherein the processing circuitry is further configured to execute the program instructions out of the memory to form the console command on a next input line below the command line of the CLI.
16. The system of claim 14 wherein the processing circuitry is further configured to execute the program instructions out of the memory to form the console command on the same input line as the command line of the CLI.
17. The system of claim 14 wherein the processing circuitry is further configured to execute the program instructions out of the memory to form the console command on a next input line below the command line of the CLI or the same input line as the command line of the CLI with the first space character separating the command prefix and the first parameter designation being removed and the second space character separating the first parameter designation and the second parameter designation being removed.
18. The system of claim 10 wherein the command prefix corresponds to a second console command configured to accept the first parameter designation and the second parameter designation as a first command parameter and a second command parameter, respectively, and wherein the processing circuitry is further configured to execute the program instructions out of the memory to execute the second console command with the first command parameter to navigate the command tree to select the first parameter designation and to execute the second console command with the second command parameter to navigate the command tree to select the second parameter designation.
19. A computer program product including a set of non-transitory, computer-readable media having instructions that, when executed by processing circuitry, cause the processing circuitry to perform a method comprising: receiving a command prefix at a console of a computer; accessing a plurality of first parameter designations associated with the command prefix from a first hierarchical level of a command tree; receiving a selection of a first parameter designation from among the plurality of first parameter designations; accessing a plurality of second parameter designations associated with the first parameter designation from a second hierarchical level of the command tree; receiving a selection of a second parameter designation from among the plurality of second parameter designations; and merging the command prefix, the first parameter designation, and the second parameter designation to form a console command for performing a specified task or operation.
20. The computer program product of claim 19 wherein the console command has its own parameters, if required, and wherein the method further comprises executing the console command to perform the specified task or operation.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0018] The foregoing and other objects, features, and advantages will be apparent from the following description of embodiments of the present disclosure, as illustrated in the accompanying drawings, in which like reference characters refer to the same parts throughout the different views.
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
DETAILED DESCRIPTION
[0029] Techniques are disclosed herein for facilitating the composition of console commands for storage systems and appliances. The disclosed techniques can include receiving a command prefix at a management console and accessing a plurality of first parameter designations associated with the command prefix from a first hierarchical level of a command tree. The disclosed techniques can further include receiving a selection of a first parameter designation from among the plurality of first parameter designations and accessing a plurality of second parameter designations associated with the first parameter designation from a second hierarchical level of the command tree. The disclosed techniques can further include receiving a selection of a second parameter designation from among the plurality of second parameter designations and merging the command prefix, the first parameter designation, and the second parameter designation to form a console command for performing a specified task or operation. The disclosed techniques can further include executing the console command with at least one parameter to perform the specified task or operation. In this way, the quality of user experience while performing administrative tasks and/or storage operations on management consoles can be improved.
[0030]
[0031] The communications medium 103 can be configured to interconnect the storage clients 102.1, . . . , 102.n with one, two, or more of the storage appliances 106.1, . . . , 106.m to enable them to communicate and exchange data and control signaling. As shown in
[0032] The storage appliances 106.1, 106.2, . . . , 106.m can include communications interfaces 114.1, 114.2, . . . , 114.m, respectively, processing circuitry and memory components 116.1, 116.2, . . . , 116.m, respectively, as well as the storage arrays 118.1, 118.2, . . . , 118.m, respectively. Each of the communications interfaces 114.1, . . . , 114.m can include an Ethernet interface, an InfiniBand interface, a Fiber Channel interface, and/or any other suitable communications interface. The communications interfaces 114.1, . . . , 114.m can further include SCSI target adapters, network interface adapters, and/or any other suitable adapters for converting electronic, optical, and/or wireless signals received over the network(s) 110 to a form suitable for use by the processing circuitry and memory components 116.1, . . . , 116.m. The processing circuitry/memory components 116.1, . . . , 116.m can be configured to process storage 10 requests (e.g., read requests, write requests) from the respective storage clients 102.1, . . . , 102.n and store client data in a redundant array of independent disk (RAID) environment implemented by the storage arrays 118.1, . . . , 118.m. Each of the processing circuitry/memory components 116.1, . . . , 116.m can include persistent memory (e.g., flash memory, magnetic memory) and non-persistent cache memory (e.g., dynamic random-access memory (DRAM), static random-access memory (SRAM)), and accommodate a variety of software constructs including operating system (OS) code and data, storage system code and data, and so on. The storage arrays 118.1, 118.2, . . . , 118.m can be configured to store volumes (VOLs) 124.1, 124.2, . . . , 124.m, respectively, and/or any other suitable storage objects. The storage appliances 106.1, . . . , 106.m can be coupled to an Ethernet sub-network 112 and/or any other suitable network or sub-network.
[0033] As shown in
[0034] During operation, the disclosed techniques can be used to facilitate the composition of console commands for storage systems and appliances. The disclosed techniques can be used with command shells such as the PowerShell™ command shell (or any other suitable command shell) to create or compose specialized commands or aliases pertaining to administrative tasks and/or storage operations, without requiring users to remember and/or input complex command names on the management console 120. In the disclosed techniques, each specialized command or alias has a format that includes a relatively concise command prefix followed by one or more command parameters. In the context of the PowerShell™ command shell, the command prefix can correspond to a command name, and the one or more command parameters can correspond to parameter values of the command name. In the disclosed techniques, each command prefix and parameter can correspond to a hierarchical level of a command tree. The command prefix (e.g., xms) can correspond to an upper hierarchical level of the command tree, a first command parameter can correspond to an intermediate hierarchical level of the command tree, and a second command parameter can correspond to a lower hierarchical level of the command tree. In the disclosed techniques, the first command parameter can correspond to a desired entity designation (e.g., Volume) and the second command parameter can correspond to a desired action designation (e.g., Get). The user can enter the command prefix (e.g., xms), the first command parameter (e.g., Volume), and the second command parameter (e.g., Get) on a command line interface (CLI) of the management computer 108.
[0035] Once the concise command prefix (e.g., xms) has been entered on the management console 120, a plurality of entity designations associated with the command prefix can be accessed from the intermediate hierarchical level of the command tree and displayed on a UI display of the management computer 108 to facilitate user selection of the desired entity designation (e.g., Volume). Once the desired entity designation has been selected, a plurality of action designations associated with the desired entity designation can be accessed from the lower hierarchical level of the command tree and displayed on the UI display to facilitate user selection of the desired action designation (e.g., Get). Once the desired action designation has been selected, the command prefix, the desired entity designation, and the desired action designation can be merged (e.g., xmsVolumeGet) on the CLI of the management computer 108 to form a simplified console command or alias for a more complex command name, which is recognizable by the command shell (e.g., PowerShell™) implemented on the management console 120. The user can then execute the simplified console command or alias with its own parameters (e.g., parameter name, parameter value) to perform a specified administrative task or storage operation. In this way, the quality of user experience while performing administrative tasks and/or storage operations on management consoles can be improved.
[0036] The disclosed techniques for facilitating the composition of console commands for storage systems and appliances will be further understood with reference to the following illustrative example and
[0037] As described herein, each console command or alias can be composed using a format that includes a relatively concise command prefix followed by one or more command parameters, in which each command prefix and parameter corresponds to a hierarchical level of a command tree.
[0038]
[0039] Once the action designation List 210 has been selected, the management console 120 removes the plurality of action designations 208 from the UI display. Further, the management console 120 merges the command prefix “xms,” the entity designation “Volume,” and the action designation “List” to form the console command “xmsVolumeList” on the next input line below the command line 203, as follows:
C:>xmsVolumeList. (1)
For example, to merge the command prefix “xms,” the entity designation “Volume,” and the action designation “List” and form the merged console command “xmsVolumeList” on the next input line, the Microsoft™ Component Object Model (COM) can be used in conjunction with the PowerShell™ command shell to send the appropriate keystrokes, as follows:
$wshell=New-Object-ComObject wscript.shell;$wshell.SendKeys(‘$theCommand’), (2)
in which “$theCommand” corresponds to a variable containing the string “xmsVolumeList.” Alternatively, using the PowerShell™ PSReadLine module, the merged console command “xmsVolumeList” can be formed on the same input line as the command line 203. To that end, the code for the “space” character can be registered with the PSReadLine key handler (PSReadLineKeyHandler), and, using the PSReadLine key handler, the command prefix “xms,” the entity designation “Volume,” and the action designation “List” can be merged by deleting a first space character between the command prefix “xms” and the entity designation “Volume” and deleting a second space character between the entity designation “Volume” and the action designation “List.”
[0040] Once the command prefix “xms,” the entity designation “Volume,” and the action designation “List” are merged to form the console command “xmsVolumeList,” the user can execute the console command “xmsVolumeList” with its own parameter or parameters to perform a specified task or operation on the management console 120. In this example, the user executes the console command “xmsVolumeList” with the parameter “-Property name” (or any other suitable parameter), as follows:
C:>xmsVolumeList-Property name. (3)
[0041] Once the console command “xmsVolumeList” has been executed with the parameter “-Property name,” the management computer 108 displays, on the UI display, an exemplary list of volume names for the respective VOLs 124.1, 124.2, . . . , 124.m (see
Vol1_200503_1907
Vol2_200503_1907
Volm_200503_1907. (4)
[0042]
[0043]
[0044] Once the action designation “List” has been selected, the management console 120 removes the plurality of action designations 308 from the UI display. Further, using the Microsoft™ COM in conjunction with the PowerShell™ command shell, the management console 120 merges the command prefix “xms,” the entity designation “ConsistencyGroup,” and the action designation “List” to form the console command “xmsConsistencyGroupList” on the next input line below the command line 303, as follows:
C:>xmsConsistencyGroupList. (5)
Alternatively, the console command “xmsConsistencyGroupList” can be formed on the same input line as the command line 303 using the PowerShell™ PSReadLine module.
[0045] Once the command prefix “xms,” the entity designation “ConsistencyGroup,” and the action designation “List” are merged to form the console command “xmsConsistencyGroupList,” the user can execute the console command “xmsConsistencyGroupList” with its own parameter or parameters to perform another specified task or operation on the management console 120. In this example, the user executes the console command “xmsConsistencyGroupList” with the parameter “-Property name” (or any other suitable additional parameter), as follows:
C:>xmsConsistencyGroupList-Property name. (6)
[0046] Once the console command “xmsConsistencyGroupList” has been executed with the parameter “-Property name,” the management computer 108 displays, on the UI display, an exemplary list of names of consistency groups for the storage system 104. Because the single consistency group 126 has been created for the storage system 104, the management computer 108 displays a list that includes an exemplary consistency group name for the single consistency group 126, as follows:
CG1. (7)
[0047] An exemplary method of facilitating the composition of console commands for storage systems and appliances is described below with reference to
[0048] Having described the above illustrative embodiments, various alternative embodiments and/or variations may be made and/or practiced. For example, it was described herein that a desired entity designation (e.g., Volume) and a desired action designation (e.g., List) can be selected by a user on a UI display of a management computer, causing the selected entity and action designations to automatically appear on a command line of a CLI of the management computer. In an alternative embodiment, having entered the command prefix (e.g., xms) on the CLI using a keyboard, the user can strike the “space” bar, enter one or more characters of the desired entity designation (e.g., “V”) on the CLI, and strike the “tab” key to complete the full entity name (e.g., Volume). Likewise, having completed the full entity name (e.g., Volume) on the CLI, the user can strike the “space” bar, enter one or more characters of the desired action designation (e.g., “L”) on the CLI, and strike the “tab” key to complete the full action name (e.g., List). In this case, because the available action designations may include more than one action designation starting with the character “L” (e.g., “List,” “ListMappings”; see
[0049] Several definitions of terms are provided below for the purpose of aiding the understanding of the foregoing description, as well as the claims set forth herein.
[0050] As employed herein, the term “storage system” is intended to be broadly construed to encompass, for example, private or public cloud computing systems for storing data, as well as systems for storing data comprising virtual infrastructure and those not comprising virtual infrastructure.
[0051] As employed herein, the terms “client,” “host,” and “user” refer, interchangeably, to any person, system, or other entity that uses a storage system to read/write data.
[0052] As employed herein, the term “storage device” may refer to a storage array including multiple storage devices. Such a storage device may refer to any non-volatile memory (NVM) device, including hard disk drives (HDDs), solid state drives (SSDs), flash devices (e.g., NAND flash devices, NOR flash devices), and/or similar devices that may be accessed locally and/or remotely (e.g., via a storage attached network (SAN)). A storage array (drive array, disk array) may refer to a storage system used for block-based, file-based, or object storage. Storage arrays can include, for example, dedicated storage hardware containing HDDs, SSDs, and/or all-flash drives. A storage entity may be a filesystem, an object storage, a virtualized device, a logical unit (LU), a logical unit number (LUN), a logical volume (LV), a logical device, a physical device, and/or a storage medium. An LU may be a logical entity provided by a storage system for accessing data from the storage system and may be used interchangeably with a logical volume. An LU or LUN may be used interchangeably with each other. A LUN may be a logical unit number for identifying an LU and may also refer to one or more virtual disks or virtual LUNs, which may correspond to one or more virtual machines. A physical storage unit or device may be a physical entity such as a drive or disk or an array of drives or disks for storing data in storage locations that can be accessed by addresses. A physical storage unit or device may be used interchangeably with a physical volume.
[0053] As employed herein, the term “storage medium” may refer to one or more storage media such as a hard drive, a combination of hard drives, flash storage, a combination of flash storage, a combination of hard drives, flash storage, and other storage devices, and/or any other suitable types or combinations of computer readable storage media. A storage medium may also refer to both physical and logical storage media, include multiple levels of virtual-to-physical mappings, and include an image or disk image. A storage medium may be computer-readable and may be referred to as a computer-readable program medium.
[0054] As employed herein, the term “TO request” or “TO” may be used to refer to an input or output request such as a data read request or data write request.
[0055] As employed herein, the terms, “such as,” “for example,” “e.g.,” “exemplary,” and variants thereof describe non-limiting embodiments and mean “serving as an example, instance, or illustration.” Any embodiments described herein using such phrases and/or variants are not necessarily to be construed as preferred or more advantageous over other embodiments, and/or to exclude the incorporation of features from other embodiments. In addition, the term “optionally” is employed herein to mean that a feature or process, etc., is provided in certain embodiments and not provided in other certain embodiments. Any embodiment of the present disclosure may include a plurality of “optional” features unless such features conflict with one another.
[0056] While various embodiments of the present disclosure have been particularly shown and described, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the present disclosure, as defined by the appended claims.