WO2017019006A1 - Component compatibility verification - Google Patents
Component compatibility verification Download PDFInfo
- Publication number
- WO2017019006A1 WO2017019006A1 PCT/US2015/042188 US2015042188W WO2017019006A1 WO 2017019006 A1 WO2017019006 A1 WO 2017019006A1 US 2015042188 W US2015042188 W US 2015042188W WO 2017019006 A1 WO2017019006 A1 WO 2017019006A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- component
- compatibility data
- compatibility
- version
- compatible
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program code verification, e.g. Java bytecode verification, proof-carrying code
Definitions
- Software components may provide different features and/or functionality to a complex operation. By using separate components, each may focus on a specialization and be maintained and updated separately rather than using a single, overly complex controller component to handle all aspects of an operation.
- FIG. 1 is a block diagram of an example compatibility verification device
- FIG. 2 is a flowchart of an example of a method for providing compatibility verifications.
- FIG. 3 is a block diagram of an example system for providing compatibility verifications.
- a server may operate a controller, comprising a software stack of individual components.
- a software stack may comprise, for example, a Redundant Array of Independent Disks (RAID) component, a cache management component, an encryption component, a third party plugin component, a replication component, a logging component, etc.
- RAID Redundant Array of Independent Disks
- the components of the software stack of one controller often communicate with the components of another controller to coordinate operations.
- a storage server with two controllers may replicate data to be stored to disk(s) managed by each of the controllers. If the components of each controller are incompatible, however, the operation may not be performed successfully.
- Compatibility such as the ability to share a communication protocol between components, may be determined by sharing elements of compatibility data among respective components of each software stack to verify that the versions of each component can understand each other.
- the elements of compatibility data may also be shared across the components of the software stack in case a component of one type (e.g., a RAID component) needs to communicate with a component of another type (e.g., an encryption component). Controllers with incompatible components may be disabled and/or removed from an operation's communications to help avoid errors.
- FIG. 1 is a block diagram of an example compatibility verification device 100 consistent with disclosed implementations.
- Compatibility verification device 100 may comprise a processor 1 10 and a non- transitory machine-readable storage medium 120.
- Compatibility verification device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like.
- Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120.
- processor 1 10 may fetch, decode, and execute a plurality of provide compatibility data instructions 130, receive compatibility data instructions 132, determine compatibility data verification instructions 134, and enable operational communication instructions 136 to implement the functionality described in detail below.
- Executable instructions may comprise logic stored in any portion and/or component of machine-readable storage medium 120 and executable by processor 1 10.
- the machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
- the machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components.
- the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices.
- the ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
- PROM programmable read-only memory
- EPROM erasable programmable read-only memory
- EEPROM electrically erasable programmable read-only memory
- Receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A).
- compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
- Determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A).
- components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible.
- compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
- Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data.
- Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
- a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
- determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
- Enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). In response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations.
- two storage controllers may perform cooperative data replication and/or de-duplication operations.
- operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
- FIG. 2 is a flowchart of an example method 200 for compatibility verification consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of compatibility verification device 100, other suitable components for execution of method 200 may be used.
- Method 200 may begin in block 205 and proceed to block 210 where device 100 may exchange a plurality of compatibility data between a first component and a second component.
- the first component and the second component may comprise respective software components of a first software stack and a second software stack, such as corresponding RAID components of two storage controller's stacks.
- receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A) and/or a second element of compatibility data associated with a second component 145(B).
- compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
- Method 200 may then advance to block 215 where device 100 may determine whether the first component and the second component are compatible according to the exchanged plurality of compatibility data.
- determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A).
- components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible.
- compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
- Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data.
- Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
- a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
- determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
- a further determination may be made by device 100 at block 215 as to whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data.
- component 245(A) may comprise a RAID component and may further determine whether compatibility data from a corresponding component of another controller is also compatible with a cache component of the controller for component 245(A).
- determining whether the first component and the second component are compatible may comprise determining whether the first component and the second component comprise a compatible communication protocol.
- software components may define a specific message format to exchange data with each other. New versions of the format may include additional fields and/or properties that may not be understood by older versions of the component.
- newer versions of the component may modify the communication protocol between the first component and the second component to be compatible with the older version, such as by reverting to an older version of the messaging format and/or stripping out unknown fields.
- method 200 may advance to block 220 where device 100 may disable communication with the second component, wherein the second component comprises an older version of the first component.
- enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B).
- the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
- device 100 may upgrade the second component to a compatible version with the first component.
- the version of the component from a first controller may be copied to and installed on the second controller.
- an update server may be contacted to download a new version of the second component.
- method 200 may advance to block 226 where device 100 may enable communication between the first component and the second component.
- enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B).
- the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations.
- two storage controllers may perform cooperative data replication and/or de-duplication operations.
- Method 200 may then end at block 250.
- FIG. 3 is a block diagram of an example system 300 for providing compatibility verification.
- System 300 may comprise a computing device 310 comprising a first controller engine 315 that may comprise a software stack of a first plurality of components 320(A)-(C) and a second controller engine 325 that may comprise a software stack of a second plurality of components 330(A)-(C).
- Device 310 may further comprise a compatibility engine 340. Although only one device 310 is pictured in system 300, other devices and/or other controller engines may be present and/or in communication with device 310 and controller engines 315, 325.
- Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein.
- Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
- Controller engine 315 may provide a first plurality of compatibility data associated with a first set of software components 320(A)-(C) to a second controller engine and receive a second plurality of compatibility data associated with a second set of software components 330(A)-(C) from the second controller engine.
- the compatibility data may be exchanged directly between respective components, aggregated and exchanged between controller engines 315, 325 and/or via compatibility engine 340.
- Compatibility engine 340 may provide the received second plurality of compatibility data to each of the first set of software components.
- controller engine 325 may provide the compatibility data associated with components 330(A)-(C) to compatibility engine 340.
- Compatibility engine 340 may then distribute this compatibility data to controller engine 315, to a respective component of components 320(A)-(C), and/or to each of components 320(A)-(C).
- compatibility data for a RAID component of controller engine 325 e.g., component 330(A)
- Compatibility engine 340 may determine whether each of the first set of software components 320(A)-(C) comprises a compatible communication protocol with the second set of software components 330(A)-(C). In response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, compatibility engine 340 may determine whether a modified communication protocol is available, and in response to determining that a modified communication protocol is not available, disable communication between the first controller engine 315 and the second controller engine 325.
- compatibility engine 340 may identify which of the first controller engine 315 and the second controller engine 325 comprises an older version of the at least one of the first set of software components 320(A)-(C) that does not comprise the compatible communication protocol with the second set of software components 325(A)-(C).
- the controller engine comprising the older version may be the one disabled from communication by compatibility engine 340.
- the disclosed examples may include systems, devices, computer- readable storage media, and methods for compatibility verification. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures.
- the functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
Abstract
Examples disclosed herein relate to compatibility verification instructions to receive a first element of compatibility data associated with a first component, determine whether the first element of compatibility data is verified according to a second component, determine whether a second element of compatibility data associated with a second component is verified according to the first component, and in response to determining that the first element of compatibility data is verified according to the second component and that the second element of compatibility data is verified according to the first component, enable operational communication between the first component and the second component.
Description
COMPONENT COMPATIBILITY VERIFICATION
BACKGROUND
[0001 ] Software components may provide different features and/or functionality to a complex operation. By using separate components, each may focus on a specialization and be maintained and updated separately rather than using a single, overly complex controller component to handle all aspects of an operation.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] In the accompanying drawings, like numerals refer to like components or blocks. The following detailed description references the drawings, wherein:
[0003] FIG. 1 is a block diagram of an example compatibility verification device;
[0004] FIG. 2 is a flowchart of an example of a method for providing compatibility verifications; and
[0005] FIG. 3 is a block diagram of an example system for providing compatibility verifications.
DETAILED DESCRIPTION
[0006] As described above, different software components may provide different functionalities to a complex operation. For example, a server may operate a controller, comprising a software stack of individual components. For a data storage controller, such a software stack may comprise, for example, a Redundant Array of Independent Disks (RAID) component, a cache management component, an encryption component, a third party plugin component, a replication component, a logging component, etc.
[0007] In multi-controller environments, the components of the software stack of one controller often communicate with the components of another controller to
coordinate operations. For example, a storage server with two controllers may replicate data to be stored to disk(s) managed by each of the controllers. If the components of each controller are incompatible, however, the operation may not be performed successfully. Compatibility, such as the ability to share a communication protocol between components, may be determined by sharing elements of compatibility data among respective components of each software stack to verify that the versions of each component can understand each other. The elements of compatibility data may also be shared across the components of the software stack in case a component of one type (e.g., a RAID component) needs to communicate with a component of another type (e.g., an encryption component). Controllers with incompatible components may be disabled and/or removed from an operation's communications to help avoid errors.
[0008] Referring now to the drawings, FIG. 1 is a block diagram of an example compatibility verification device 100 consistent with disclosed implementations. Compatibility verification device 100 may comprise a processor 1 10 and a non- transitory machine-readable storage medium 120. Compatibility verification device 100 may comprise a computing device such as a server computer, a desktop computer, a laptop computer, a handheld computing device, a smart phone, a tablet computing device, a mobile phone, a network device (e.g., a switch and/or router), or the like.
[0009] Processor 1 10 may comprise a central processing unit (CPU), a semiconductor-based microprocessor, a programmable component such as a complex programmable logic device (CPLD) and/or field-programmable gate array (FPGA), or any other hardware device suitable for retrieval and execution of instructions stored in machine-readable storage medium 120. In particular, processor 1 10 may fetch, decode, and execute a plurality of provide compatibility data instructions 130, receive compatibility data instructions 132, determine compatibility data verification instructions 134, and enable operational communication instructions 136 to implement the functionality described in detail below.
[0010] Executable instructions may comprise logic stored in any portion and/or component of machine-readable storage medium 120 and executable by processor 1 10. The machine-readable storage medium 120 may comprise both volatile and/or nonvolatile memory and data storage components. Volatile components are those that do not retain data values upon loss of power. Nonvolatile components are those that retain data upon a loss of power.
[001 1] The machine-readable storage medium 120 may comprise, for example, random access memory (RAM), read-only memory (ROM), hard disk drives, solid- state drives, USB flash drives, memory cards accessed via a memory card reader, floppy disks accessed via an associated floppy disk drive, optical discs accessed via an optical disc drive, magnetic tapes accessed via an appropriate tape drive, and/or other memory components, and/or a combination of any two and/or more of these memory components. In addition, the RAM may comprise, for example, static random access memory (SRAM), dynamic random access memory (DRAM), and/or magnetic random access memory (MRAM) and other such devices. The ROM may comprise, for example, a programmable read-only memory (PROM), an erasable programmable read-only memory (EPROM), an electrically erasable programmable read-only memory (EEPROM), and/or other like memory device.
[0012] Receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A). For example, compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
[0013] Determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A). For example, components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers'
software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible. In some implementations, for example, compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
[0014] Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data. Receive compatibility data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
[0015] In some implementations, a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
[0016] In some implementations, determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine
whether the new version of the second component may be verified as compatible with the first component.
[0017] Enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). In response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations. For example, two storage controllers may perform cooperative data replication and/or de-duplication operations. When operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible.
[0018] FIG. 2 is a flowchart of an example method 200 for compatibility verification consistent with disclosed implementations. Although execution of method 200 is described below with reference to the components of compatibility verification device 100, other suitable components for execution of method 200 may be used.
[0019] Method 200 may begin in block 205 and proceed to block 210 where device 100 may exchange a plurality of compatibility data between a first component and a second component. In some implementations, the first component and the second component may comprise respective software components of a first software stack and a second software stack, such as corresponding RAID components of two storage controller's stacks.
[0020] For example, receive compatibility data instructions 132 may receive a first element of compatibility data 140 associated with a first component 145(A) and/or a second element of compatibility data associated with a second component 145(B). For example, compatibility data 140 may comprise a software version, a list of supported data formats and/or supported protocols, localization settings, tolerance requirements, available resources such usable as communication ports and/or storage space, etc.
[0021 ] Method 200 may then advance to block 215 where device 100 may determine whether the first component and the second component are compatible according to the exchanged plurality of compatibility data. For example, determine compatibility data verification instructions 134 may determine whether the first element of compatibility data 140 is verified according to a second component 145(B) and may determine whether a second element of compatibility data (not shown) associated with the second component 145(B) is verified according to the first component 145(A). For example, components 145(A)-(B) may comprise corresponding RAID controllers in a pair of storage controllers' software stacks. The compatibility data for each RAID controller may be examined by the corresponding controller in the other stack to determine if the software version of the other component is compatible. In some implementations, for example, compatibility data 140 may comprise a version of component 145(A) and the instructions 134 to determine whether the first element of compatibility data 140 is verified according to the second component 145(B) may comprise determining whether the version associated with the first component 145(A) comprises a later version than a version associated with the second component 145(B). Such a determination may rely, for example, on a version number, a date stamp of the component, a text string, and/or other data elements.
[0022] Compatibility may be restricted by a communication protocol format, the presence of required resources such as sufficient memory, and/or security requirements such as access to a particular encryption/decryption key and/or supporting a certain level of encryption on exchanged data. Receive compatibility
data instructions 132 may provide for the exchange of compatibility data 140 directly between the components 145(A)-(B) and/or compatibility data may be collected from a plurality of components associated with each controller and provided in bulk to the other controller(s) to distribute among their respective components.
[0023] In some implementations, a determination of compatibility may be deferred to the later version among the components 145(A)-(B). For example, if second component 145(B) comprises a version number of 2.1 and first component 145(A) comprises a version number of 2.0, the compatibility determination of second component 145(B) may overrule a verification of compatibility with first component 145(A).
[0024] In some implementations, determine compatibility data verification instructions 134 may determine whether a new version of the second component has been installed. In response to determining that the new version of the second component has been installed, the element of compatibility data associated with the second component may be provided to the first component to determine whether the new version of the second component may be verified as compatible with the first component.
[0025] In some implementations, a further determination may be made by device 100 at block 215 as to whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data. For example, component 245(A) may comprise a RAID component and may further determine whether compatibility data from a corresponding component of another controller is also compatible with a cache component of the controller for component 245(A).
[0026] In some implementations, determining whether the first component and the second component are compatible may comprise determining whether the first component and the second component comprise a compatible communication protocol. For example, software components may define a specific message format to exchange data with each other. New versions of the format may include
additional fields and/or properties that may not be understood by older versions of the component. In some implementations, newer versions of the component may modify the communication protocol between the first component and the second component to be compatible with the older version, such as by reverting to an older version of the messaging format and/or stripping out unknown fields.
[0027] In response to determining that the first component and the second component are not compatible, method 200 may advance to block 220 where device 100 may disable communication with the second component, wherein the second component comprises an older version of the first component. For example, in response to determining that the first element of compatibility data 140 is not verified according to the second component 145(B), enable operational communication instructions 136 may disable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is disabled, the two controllers associated with components 145(A)-(B) may be prevented from communication in the performance of such operations, and the operation may be performed by a single controller and/or only those controllers whose components have been verified as compatible. In some implementations, in response to determining that the first component and the second component are not compatible, device 100 may upgrade the second component to a compatible version with the first component. For example, the version of the component from a first controller may be copied to and installed on the second controller. For another example, an update server may be contacted to download a new version of the second component.
[0028] In response to determining that the first component and the second component are compatible, method 200 may advance to block 226 where device 100 may enable communication between the first component and the second component. For example, enable operational communication instructions 136 may, in response to determining that the first element of compatibility data 140 is verified according to the second component 145(B) and that the second element of
compatibility data is verified according to the first component 145(A), enable operational communication between the first component 145(A) and the second component 145(B). When operational communication between the components 145(A)-(B) is enabled, the two controllers associated with components 145(A)-(B) may communicate and cooperate to complete operations. For example, two storage controllers may perform cooperative data replication and/or de-duplication operations.
[0029] Method 200 may then end at block 250.
[0030] FIG. 3 is a block diagram of an example system 300 for providing compatibility verification. System 300 may comprise a computing device 310 comprising a first controller engine 315 that may comprise a software stack of a first plurality of components 320(A)-(C) and a second controller engine 325 that may comprise a software stack of a second plurality of components 330(A)-(C). Device 310 may further comprise a compatibility engine 340. Although only one device 310 is pictured in system 300, other devices and/or other controller engines may be present and/or in communication with device 310 and controller engines 315, 325.
[0031] Computing device 310 may comprise, for example, a general and/or special purpose computer, server, mainframe, desktop, laptop, tablet, smart phone, game console, and/or any other system capable of providing computing capability consistent with providing the implementations described herein. Computing device 410 may comprise any combination of hardware and programming to implement the functionalities of the respective components. In examples described herein, such combinations of hardware and programming may be implemented in a number of different ways. For example, programming may comprise processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the engines may include a processing resource to execute those instructions.
[0032] Controller engine 315 may provide a first plurality of compatibility data associated with a first set of software components 320(A)-(C) to a second controller engine and receive a second plurality of compatibility data associated
with a second set of software components 330(A)-(C) from the second controller engine. The compatibility data may be exchanged directly between respective components, aggregated and exchanged between controller engines 315, 325 and/or via compatibility engine 340.
[0033] Compatibility engine 340 may provide the received second plurality of compatibility data to each of the first set of software components. For example, controller engine 325 may provide the compatibility data associated with components 330(A)-(C) to compatibility engine 340. Compatibility engine 340 may then distribute this compatibility data to controller engine 315, to a respective component of components 320(A)-(C), and/or to each of components 320(A)-(C). Thus, in some implementations, compatibility data for a RAID component of controller engine 325 (e.g., component 330(A)) may be provided to the RAID component of controller engine 315 (e.g., component 320(A)).
[0034] Compatibility engine 340 may determine whether each of the first set of software components 320(A)-(C) comprises a compatible communication protocol with the second set of software components 330(A)-(C). In response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, compatibility engine 340 may determine whether a modified communication protocol is available, and in response to determining that a modified communication protocol is not available, disable communication between the first controller engine 315 and the second controller engine 325.
[0035] In some implementations, in order to disable communication between the first controller engine and the second controller engine, compatibility engine 340 may identify which of the first controller engine 315 and the second controller engine 325 comprises an older version of the at least one of the first set of software components 320(A)-(C) that does not comprise the compatible communication protocol with the second set of software components 325(A)-(C). The controller engine comprising the older version may be the one disabled from communication by compatibility engine 340.
[0036] The disclosed examples may include systems, devices, computer- readable storage media, and methods for compatibility verification. For purposes of explanation, certain examples are described with reference to the components illustrated in the Figures. The functionality of the illustrated components may overlap, however, and may be present in a fewer or greater number of elements and components. Further, all or part of the functionality of illustrated elements may coexist or be distributed among several geographically dispersed locations. Moreover, the disclosed examples may be implemented in various environments and are not limited to the illustrated examples.
[0037] Moreover, as used in the specification and the appended claims, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context indicates otherwise. Additionally, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. Instead, these terms are only used to distinguish one element from another.
[0038] Further, the sequence of operations described in connection with the Figures are examples and are not intended to be limiting. Additional or fewer operations or combinations of operations may be used or may vary without departing from the scope of the disclosed examples. Thus, the present disclosure merely sets forth possible examples of implementations, and many variations and modifications may be made to the described examples. All such modifications and variations are intended to be included within the scope of this disclosure and protected by the following claims.
Claims
1 . A non-transitory machine-readable storage medium comprising instructions to:
receive a first element of compatibility data associated with a first component;
determine whether the first element of compatibility data is verified according to a second component;
determine whether a second element of compatibility data associated with the second component is verified according to the first component; and
in response to determining that the first element of compatibility data is verified according to the second component and that the second element of compatibility data is verified according to the first component, enable operational communication between the first component and the second component.
2. The non-transitory machine-readable medium of claim 1 , wherein the first element of compatibility data comprises a first component version.
3. The non-transitory machine-readable medium of claim 2, wherein the instructions to determine whether the first element of compatibility data is verified according to the second component comprises determining whether the first component version comprises a later version than a second component version.
4. The non-transitory machine-readable medium of claim 3, wherein the instructions, in response to determining that the first component version comprises a later version than a second component version, further comprise instructions to defer to the determination of whether the second element of compatibility data is verified according to the first component.
5. The non-transitory machine-readable medium of claim 1 , wherein the instructions, in response to determining that the first element of compatibility data is not verified according to the second component, further comprise instructions to disable operational communication between the first component and the second component.
6. The non-transitory machine-readable medium of claim 5, wherein the instructions to receive the second element of compatibility data associated with the second component further comprise instructions to:
determine whether a new version of the second component has been installed; and
in response to determining that the new version of the second component has been installed, provide the second element of compatibility data associated with the new version of the second component to the first component.
7. The non-transitory machine-readable medium of claim 1 , further comprising instructions to:
determine whether the second element of compatibility data associated with the second component is verified according to a third component in communication with the first component.
8. A computer-implemented method, comprising:
exchanging a plurality of compatibility data between a first component and a second component;
determining whether the first component and the second component are compatible according to the exchanged plurality of compatibility data;
in response to determining that the first component and the second component are not compatible, disabling communication with the second component, wherein the second component comprises an older version of the first component;
in response to determining that the first component and the second component are compatible, enabling communication between the first component and the second component.
9. The computer-implemented method of claim 8, wherein the first component and the second component comprise respective software components of a first software stack and a second software stack.
10. The computer-implemented method of claim 9, further comprising determining whether at least one third component associated with the first software stack is compatible with the second component according to the exchanged plurality of compatibility data.
1 1 . The computer-implemented method of claim 8, wherein determining whether the first component and the second component are compatible comprises determining whether the first component and the second component comprise a compatible communication protocol.
12. The computer-implemented method of claim 1 1 , wherein in response to determining that the first component and the second component are not compatible, modifying a communication protocol between the first component and the second component.
13. The computer-implemented method of claim 8, wherein in response to determining that the first component and the second component are not compatible, upgrading the second component to a compatible version with the first component.
14. A system, comprising:
a first controller engine to:
provide a first plurality of compatibility data associated with a first set of software components to a second controller engine, and
receive a second plurality of compatibility data associated with a second set of software components from the second controller engine; and a compatibility engine to:
provide the received second plurality of compatibility data to each of the first set of software components,
determine whether each of the first set of software components comprises a compatible communication protocol with the second set of software components,
in response to determining that at least one of the first set of software components does not comprise a compatible communication protocol with the second set of software components, determine whether a modified communication protocol is available, and
in response to determining that a modified communication protocol is not available, disable communication between the first controller engine and the second controller engine.
15. The system of claim 14, wherein to disable communication between the first controller engine and the second controller engine comprises the compatibility engine to identify which of the first controller engine and the second controller engine comprises an older version of the at least one of the first set of software components that does not comprise the compatible communication protocol with the second set of software components.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/042188 WO2017019006A1 (en) | 2015-07-27 | 2015-07-27 | Component compatibility verification |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2015/042188 WO2017019006A1 (en) | 2015-07-27 | 2015-07-27 | Component compatibility verification |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2017019006A1 true WO2017019006A1 (en) | 2017-02-02 |
Family
ID=57885074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/US2015/042188 WO2017019006A1 (en) | 2015-07-27 | 2015-07-27 | Component compatibility verification |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2017019006A1 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190265298A1 (en) * | 2018-02-23 | 2019-08-29 | Rohde & Schwarz Gmbh & Co. Kg | Prediction system as well as method for predicting compatibility |
FR3115130A1 (en) * | 2020-10-09 | 2022-04-15 | Safran Electronics & Defense | Method and system for managing compatibility between two pieces of equipment |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579509A (en) * | 1991-02-08 | 1996-11-26 | International Business Machines Corporation | Apparatus and method for verifying compatibility of system components |
US20040181790A1 (en) * | 2003-03-12 | 2004-09-16 | Herrick Joseph W. | System and method for maintaining installed software compliance with build standards |
US20060265696A1 (en) * | 2005-05-23 | 2006-11-23 | International Business Machines Corporation | Method and system for data migration between versions of software |
US20110321029A1 (en) * | 2010-06-24 | 2011-12-29 | Microsoft Corporation | Upgrade management of application components |
US20130060558A1 (en) * | 2011-09-07 | 2013-03-07 | Jason Schultz | Updating of interfaces in non-emulated environments by programs in the emulated environment |
-
2015
- 2015-07-27 WO PCT/US2015/042188 patent/WO2017019006A1/en active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5579509A (en) * | 1991-02-08 | 1996-11-26 | International Business Machines Corporation | Apparatus and method for verifying compatibility of system components |
US20040181790A1 (en) * | 2003-03-12 | 2004-09-16 | Herrick Joseph W. | System and method for maintaining installed software compliance with build standards |
US20060265696A1 (en) * | 2005-05-23 | 2006-11-23 | International Business Machines Corporation | Method and system for data migration between versions of software |
US20110321029A1 (en) * | 2010-06-24 | 2011-12-29 | Microsoft Corporation | Upgrade management of application components |
US20130060558A1 (en) * | 2011-09-07 | 2013-03-07 | Jason Schultz | Updating of interfaces in non-emulated environments by programs in the emulated environment |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190265298A1 (en) * | 2018-02-23 | 2019-08-29 | Rohde & Schwarz Gmbh & Co. Kg | Prediction system as well as method for predicting compatibility |
FR3115130A1 (en) * | 2020-10-09 | 2022-04-15 | Safran Electronics & Defense | Method and system for managing compatibility between two pieces of equipment |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9407664B1 (en) | Systems and methods for enforcing enterprise data access control policies in cloud computing environments | |
US9219611B1 (en) | Systems and methods for automating cloud-based code-signing services | |
US10754954B2 (en) | Securely exchanging information during application startup | |
CN102722670B (en) | Mobile storage equipment-based file protection method, equipment and system | |
JP6201049B2 (en) | System and method for updating system level services in a read-only system image | |
US10187485B1 (en) | Systems and methods for sending push notifications that include preferred data center routing information | |
US9384353B2 (en) | System and method for encryption of disk based on pre-boot compatibility testing | |
US20230100899A1 (en) | Modularized basic input output system (bios) firmware activation | |
CN109376119B (en) | Method for creating disk image file encrypted snapshot, method for using disk image file encrypted snapshot and storage medium | |
WO2017019006A1 (en) | Component compatibility verification | |
US8452931B1 (en) | Systems and methods for simultaneously providing multiple data protection functions | |
CN110569042B (en) | System, method, equipment and storage medium for supporting function of updating FPGA in virtual machine | |
CN110417579B (en) | Method, equipment and readable medium for managing gigabit network by using gigabit network card | |
CN107463638A (en) | File sharing method and equipment between offline virtual machine | |
US20200250107A1 (en) | Systems and methods for safely detecting indeterminate states of ranges in a self-encrypting storage resource | |
CN112513855A (en) | Secure operation of encrypted data | |
US20180034782A1 (en) | Secure device and proxy for secure operation of a host data processing system | |
CN110908715B (en) | Pairing system for multiple devices | |
US11079959B2 (en) | Migration of memory devices | |
US9405469B2 (en) | Secure reservation mode for logical unit numbers and persistent reservations | |
US10938765B1 (en) | Systems and methods for preparing email databases for analysis | |
US20190042770A1 (en) | Systems and methods for attached digital storage devices | |
US9600508B1 (en) | Data layer service availability | |
WO2016018207A1 (en) | Providing data backup | |
US10044846B2 (en) | Method for executing dual operating systems of smart phone |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 15899803 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 15899803 Country of ref document: EP Kind code of ref document: A1 |