Extraction of information as to a volume group and logical units

Abstract
A method of data extraction for use with a host, connected to one or more logical units (LUNs), that is operable to host a volume manager that manages access to the one or more LUNs via the creation of one or more volume groups, the method includes: providing one or more queries to the volume manager; and determining, for each volume group, which of the one or more LUNs are members of the volume group based upon results of the queries, respectively.
Description


COPYRIGHT NOTICE

[0001] A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure, as it appears in the Patent and Trademark Office patent files or records, but otherwise reserves all copyright rights whatsoever.



BACKGROUND OF THE INVENTION

[0002] A storage area network (SAN) is a high-speed, high-bandwidth inter-server network utilizing integrated hardware and software to provide a robust, high-speed storage backbone. A SAN enables clusters of servers to share storage with exclusive data access or to share data on common storage devices, depending on the SAN topology. SAN networks are useful, for example, in fully networked enterprises that require storage of terabytes of information collected on each customer and each transaction. The need for high availability and security of data adds to escalating requirements. SANs offer fast, available pools of storage that can be shared throughout an enterprise, yet managed through simplified operations.


[0003] SANs include large collections of storage elements, such as multiple hard disk drives, tapes, etc. To ensure adequate performance of a SAN, data and metrics (measurements of performance, capacity, efficiency, etc.) are gathered. These metrics are used to determine, among other things, performance trends and statistics by which possible problems (such as bandwidth bottlenecks) can be anticipated and prevented.


[0004] With a SAN or other storage environment according to the Background Art, it is known to run a storage area manager (SAM) process on a server within the SAN. As its name implies, the SAM, in part, manages the interaction between components of the storage environment as well as interaction of application programs having storage needs (consumers) with components of the storage environment.


[0005]
FIG. 1 is a block diagram of a system 100 that includes a SAM 120, a SAN 108 and a consumer 130. The SAM 120 can be loaded on a managing host device 106. Also loaded on the managing host 106 is a client 122 that includes a graphical user interface (GUI). The managing host 106 can run either a WINDOWS NT or WINDOWS 2000 operating system. The SAM 120 can communicate with the host agent 126 using a JAVA RMI over, e.g., a LAN.


[0006] The consumer of storage, or storage consumer, 130 can be loaded on a managed host 104. Also loaded on the managed host 104 can be a volume manager 128 and a host agent 126 of the SAM 120. The volume manager 128 (and therefore the managed host 126) can communicate with the SAN 108 (via a Fibre Channel, iSCSI, etc. link) and/or a local/dedicated SCSI device 118 (via a SCSI link).


[0007] The SAN 108 has various storage devices connected to it, such as a SCSI/FC device 112 or a SCSI device 114 connected via a bridge 116. The SAN 108 also includes an SNMP device 110 by which the SAM 120 can communicate with the SAN 108.


[0008] For ease of reference, a block has been drawn around the SAN and the related storage resources. This block has been given the reference number 102 and is labeled SAN+Resources. Logical units (LUNs) (not depicted) represent paths of access to the SAN+Resources 102.


[0009] The host agent 126 has builder components 132 and the SAM 120 has corresponding builder components 124. The builder components 132 that include a volume gatherer 134, a user gatherer 136 and a file gatherer 138. The volume gatherer 134 collects summary information regarding consumption by the storage consumers 130, the user gatherer 136 identifies who can consume storage and the file gatherer 138 collects details of both who, namely which user, and what, namely a list of data types, are consuming the available storage.


[0010] Via the client 122, a user of the SAM 120 can observe the total amount of storage available on a logical volume and an amount of the available storage that has been consumed. But no additional information concerning the relationship between a logical volume and its associated LUNs is available from the SAM 120 via the client 122.



SUMMARY

[0011] An embodiment of the invention provides a method of data extraction for use with a host, connected to one or more logical units (LUNs), that is operable to host a volume manager that manages access to the one or more LUNs via the creation of one or more volume groups. Such a method includes: providing one or more queries to the volume manager; and determining, for each volume group, which of the one or more LUNs are members of the volume group based upon results of the queries, respectively.


[0012] Additional features and advantages of the invention will be more fully apparent from the following detailed description of example embodiments, the appended claims and the accompanying drawings.







BRIEF DESCRIPTION OF THE DRAWINGS

[0013]
FIG. 1 is a block diagram of a SAN, a managing host and a managed host according to the Background Art.


[0014]
FIG. 2 is a block diagram of a SAN, a managing host and a managed host according to an embodiment of the invention.


[0015]
FIG. 3 is a sequence diagram of data collection actors and actions according to an embodiment of the invention.


[0016]
FIG. 4 is a UML class diagram according to an embodiment of the invention.


[0017]
FIG. 5 is a diagram depicting relationships according to an embodiment of the invention.







[0018] Actions in a UML sequence diagram are depicted with arrows of different styles. A indicates an action that expects a response action. A indicates a response action. A indicates an action for which the response is implied. And a indicates an action for which no response is expected.


[0019] The accompanying drawings are: intended to depict example embodiments of the invention and should not be interpreted to limit the scope thereof; and not to be considered as drawn to scale unless explicitly noted. ,


BRIEF DETAILED DESCRIPTION OF EXAMPLE EMBODIMENTS

[0020]
FIG. 2 is a block diagram of a system 200 according to an embodiment of the invention that includes a SAN+Resources 102, a managed host 204 (connected to the SAN+Resources 102) and a managing host 206 (connected to each of the SAN+Resources 102 and a host agent 226 of the managed host 204). The SAN+Resources 102 can be the same as in the Background Art. Each of the managed host 204 and the managing host 206 can be implemented by typical computers that, e.g., have: a CPU; volatile memory (such as RAM, DRAM, SRAM, etc.); non-volatile memory (such as magnetic, opto-magnetic and/or opto-hard disk drives, flash memory, etc.); and an input/output (IO) unit (adapted to provide a man-to-machine interface and/or a machine-to-machine interface). Paths into the SAN+Resources 102 are indicated as logical units (LUNs) 201.


[0021] Similar to the Background Art, the managing host 206 has software loaded on it that includes a management server or SAM 220 and a client 222 (that includes a GUI, etc.). The SAM 220 includes building components 224. But unlike the Background Art, the builder components 224 include a harvester component 242.


[0022] Also similar to the Background Art, the managed host 204 includes a volume manager 128, a consumer of storage 130 (such as an application program) and a host agent 226. The host agent 226 has builder components 232 that include a volume gatherer 234, a user gatherer component 136 and a file gatherer component 138. But unlike the volume gatherer 134 according to the Background Art, volume gatherer 234 includes a data getter component 240.


[0023] The harvester 242 and the volume gatherer 234 (via the data getter 240) extract information about the utilization of storage allocated on the SAN+Resources 102 to the managed host 204. FIG. 5 is a diagram of relationships according to an embodiment of the invention that represent such utilization, albeit in terms of a simplistic example. It should be understood that the relationships depicted in FIG. 5 have applicability far beyond the example circumstances depicted in FIG. 5.


[0024] In FIG. 5, a volume manager 128 has created a single volume group 502 that has as its members logical units (LUNs) A-E (504-512). It should be noted that a volume manager 128 can create multiple volume groups. A LUN should be a member of a single volume group.


[0025] Four logical storage blocks (LSBs) 520, 522 and 524 and 526 are depicted in FIG. 5. An LSB can have one or multiple physical storage blocks (PSBs) that map to it, either directly or indirectly via one or more intervening child LSBs. A LUN can map to one or more PSBs.


[0026] As to the details of the example that is FIG. 5, each of the five LUNs A-E 504-512, respectively, represents 1 GB of memory. Logical volume A (514) has a single LSB (520) that represents 100 MB memory. A PSB (528) represents 100M of memory allocated on the LUN A (504). A PSB (530) represents 100M of memory allocated on the LUN B (504) in a mirror arrangement.


[0027] Logical volume B (516) has a single LSB (522) that represents 150 MB memory in a RAID 5 arrangement. Four 50 MB PSBs 532-538 map from LUNs A-D (504-510), respectively. It is noted that the, e.g., PSB 538 represents 50 MB of overhead needed for the RAID 5 arrangement.


[0028] Logical volume C (518) has two LSBs (524 and 526) that each represent 200 MB and together represent 400 MB of memory. Two 100 MB PSBs 540 and 542 map from LUNs B-C (506-508), respectively. Two 100 MB PSBs 544 and 546 map from LUNs D-E (5010-512), respectively.


[0029] The hypothetical numerical details in FIG. 5 can be described as representing 3 logical volumes distributed across 5 LUNs. LUNs A (514) and C (508) have 150 MB usage. LUN B (506) has 250 MB usage. LUN D (510) has 150 MB usage. And LUN E (512) has 100 MB usage. Percentage usages can be determined for each LUN relative to its maximum capacity, e.g., LUN A is at 15% usage=(150 MB/1 GB)*100. The total usage of the LUNs A-E 504-512 is 800 MB, or 16%=(800 MB/1 GB)*100. Free space at the volume group level is 4.2 GB. Any one of LVs A-C (514, 516 and 518) can extend into that free space. It is to be noted that the LSB 526 can be viewed as an extension of LV C (518). Such statistics about a volume group are desirable. An embodiment of the invention makes available the data regarding the volume group, logical volumes, LSBs, PSBs and LUNs needed to provide such statistics, respectively.


[0030] The harvester 242 and the volume gatherer 234 (via the data getter 240) extract information about the utilization of the LUNs 201 on the SAN+Resources 102. A sequence of actions and the associated actors that extract such data is depicted in FIG. 3, a UML sequence diagram.


[0031] At action 302 in FIG. 3, the harvester 242 instructs the volume gatherer 234 to extract or gather data related to relationships between volume groups and LUNs. Next, via action 304, the volume gatherer 234 calls the data getter 240 in order to obtain the desired data. In turn, the data getter 240 (via action 306) queries the volume manager 128 to obtain summary information about the currently configured volume group(s) that the volume manager 128 manages. The summary information, e.g., can be a list of the volume groups.


[0032] At action 308, the volume manager 128 returns the requested volume group summary information to the data getter 240. At action 310, the data getter 240 processes the volume group summary information. Such processing, e.g., can be making a request for detailed information regarding each identified volume group. At action 312, the data getter 240 queries the volume manager 128 to obtain details about the volume group that the volume manager 128 manages.


[0033] Actions 306, 308, 310, 312 and 314 reflect a two-part technique, namely collecting a list of groups and then retrieving the detailed information about each of the groups. Alternative techniques can be used to extract the detailed information about volume groups.


[0034] At action 314, the volume manager 128 returns the requested details concerning the volume group. At self action 316, the data getter 240 processes the volume manager details into a format, e.g., a data structure, that is independent of the type of volume manager from which the details were obtained (to be discussed in more detail below). For example, at action 316, the data getter 240 also filters out data from the volume manager 128 that is too granular to be of diagnostic and/or predicted value to a user of a SAM 220.


[0035] At self call 318, the data getter 240 converts the data into a language that facilitates the transmission and interpretation of the data, e.g., XML. At action 320, the data getter 240 provides the XML to the volume gatherer 234. At action 322, the volume manager 234 notifies the harvester 242 that the requested data is available. At action 324, the harvester 242 requests the data from the volume gatherer 234. At action 326, the volume getter 234 provides the XML data set to the harvester 242. Lastly, at action 328, the harvester processes the XML data set, e.g., to present the data in a more user-friendly format and/or inclusion in a database.


[0036]
FIG. 4 is a JAVA class diagram that depicts the various relationships represented by the standardized data set produced by the data getter 240 at action 316. In FIG. 4, a set 400 of data objects (DOs) includes a volume group DO 402, a logical volume (or storage consumer) DO 404, a logical storage block (LSB) DO 406, a physical storage block (PSB) 408 and a logical unit (LUN) DO 410. A line connecting one DO to another indicates a relationship between the DOs. For example, a relationship line 412 connects the volume group DO 402 to the logical volume DO 404.


[0037] Near where the line 412 connects to the volume group DO 402 is listed the legend “0..1”. This indicates that the logical volume DO 404 can have between 0 and 1 volume group DO 402 to which the logical volume DO 404 reports. Near the end of the line 412 that connects to the logical volume DO 404 is located the legend “0..*”. This indicates that there can be between 0 and an infinite number of logical volume DOs 404 that can report to the volume group DO 402. In other words, the volume group DO 402 can have multiple logical volume DOs 404 that report to it, but each logical volume DO can report to at most one volume group DO 402.


[0038] Similarly, the LSB DO 406 can report to at most one logical volume DO 404. But a logical volume DO 404 can have one or more LSB DOs 406 that report to it.


[0039] Relationship line 413 indicates a relationship between a parent LSB DO 406 and a child LSB DO (not separately depicted from the parent LSB DO 406). A child LSB DO can have at most one parent LSB DO. But a parent LSB DO can have zero, one or more child LSB DOs.


[0040] The relationship between the LSB DO 406 and the physical storage block (PSB) DO 408 is as follows. The PSB DO 408 can have at most one LSB DO 406 to which it reports. But the LSB DO 406 has one or more PSB DOs 408. A relationship between the PSB DO 408 and the logical unit (LUN) DO 410 is as follows. Each PSB DO 408 has one LUN DO 410 to which it reports. But the LUN DO 410 has one or more PSB DOs 408 that report to it.


[0041] Lastly, the relationship between the volume group DO 402 and the LUN DO 410 explained. The LUN DO 410 can have at most one volume group DO 402 to which it reports. But the volume group DO 402 can have zero, one or more LUN DOs 410 reporting to it.


[0042] Each of the DOs depicted in FIG. 4 is organized into two parts. The first part represents attributes of the DO while the second part represents JAVA methods used to obtain information related to the nature of the DO. For example, the volume group DO 402 has an attributes portion 414 and a JAVA methods portion 416. Similarly, the logical volume 404 has an attributes portion 418 and a JAVA methods portion 420. The LSB 406 has an attributes portion 422 and a JAVA methods portion 424. The PSB DO 408 has an attributes portion 426 and a JAVA methods portion 428. And the LUN DO 410 has an attributes portion 430 and JAVA methods portion 432.


[0043] The attributes portion of the DOs 402, 404, 406, 408 and 410 will have a variety of information that depends upon the circumstances of the SAN+Resources 102 in which the set of data objects 400 is concerned. Similarly, the JAVA methods portion of the DOs 402, 404, 406, 408 and 410 will have varying sense of methods depending upon the circumstances of the SAN+Resources 102 in which the data objects at 400 is concerned.


[0044] At the end of the description are example JAVA documents that populate the attributes sections and methods sections of the DOs 402, 404, 406, 408 and 410. As an example, for the JAVA document referred to as class LogicalStoragePool (corresponding to the volume group DO 402 of FIG. 4), the attributes portion 414 of the volume group DO 402 is elaborated upon, e.g., in the following Field Summary section and the Field Detail section. The JAVA methods portion 416 is elaborated upon, e.g., in the Methods Summary section, the Constructor Summary section, the Constructor Detail section and the Methods Detail section.


[0045] The methods listed within the JAVA methods portion, e.g., 416 of volume group DO 402, are determined as follows. Depending upon the circumstances of the source+resources 102 to which the manage host 204 is connected, a user of the SAM 220 will prepare a heavily-patterned JAVA source file (as known as a class) and submit it to a tool that generates corresponding methods. Such a tool is described in three copending applications, having U.S. patent application Ser. Nos. 10/232,000, 10/231,947 and 10/231,693, each of which was filed on Aug. 30, 2002, the entirety of each of which is hereby incorporated by reference. The heavily patterned JAVA source file is also known as a template. Sample templates are provided at the end of this description. The sample templates are interspersed with the corresponding JAVA documents.


[0046] A SAM 220 can work with a variety of volume managers 128, e.g., the brand of volume manager made available by VERITAS (referred to as VxVM) or by the HEWLETT-PACKARD Company (referred to as LVM). Each of the volume managers typically can operate on a variety of operating systems, e.g., the versions of Unix made available by the SUN MICROSYSTEMS Corporation (known as SOLARIS), the versions of Unix made available by the HEWLETT-PACKARD COMPANY (known as HPUX), the windowing family of operating systems made available by the MICROSOFT CORPORATION, e.g., WINDOWS 2000 and WINDOWS NT (collectively referred to as W2K/NT), and the versions of Unix made available by the IBM corporation (referred to as AIX).


[0047] For example, consider the circumstances in which the SAM 220 should interact with versions of VxVM running on SOLARIS, HPUX and W2K/NT, and with LVM running on AIX and EPUX. In effect, the number of volume managers with which the SAM 220 must interact in the example is not merely two but is five because of the variations conferred by the different operating systems. As such, when the volume manager 128 provides the volume group details at action 314, the nature and format of the details will depend upon the brand of the volume manager as well as the operating system upon which the volume manager 128 runs. Accordingly, the data getter 240 processes the volume group details into a standardized set of data at action 316.


[0048] Alternatively, the standardization capability could be incorporated into the harvester 242, but that would complicate the harvester 242. Plus, as interaction with additional volume managers is accommodated by the harvester 242, the harvester 242 would continually need to be revised to handle the variations in the data set return by the volume manager. Locating the standardization capability in the data getter 240 can simplify the process of making a harvester 242 compatible with additional volume manager 128 because the necessary data transformations/standardizations for a given volume manager 128 and its respective operating systems can be handled by the data getter 240 rather than the harvester 242. The successive development of several smaller less complex data getters can be simpler to achieve than repeated revision of a larger, more complicated harvester 242.


[0049] As noted, each data getter 240 can generate an XML file which will include information about the groups under the control of the volume manager 128. The following discusses example configuration of the XML file. Initially, the tags in the file are discussed in general. That discussion is followed by some example file configurations.


[0050] <VG>
1typeVolume Manager that manages the group, e.g., LVM, VxVM,etc . . .nameName of the volume/disk group


[0051] <SC>
2nameName of a logical volume in the volume/disk group (Shouldhave a relationship with file systems as reported by thevolume gatherer)sizeThe total number of blocksblockSizeThe total size of the block. It is in the unit of bytes.


[0052] <LSB>
3nameAn identifier that represents a slice or, in situations wherethere are multiple transformations of the data (e.g. mirroringand striping) a subslice of the storage consumer.typeThe type of relationship between the components that makeup this block e.g., mirror, stripe, direct, raid.typeCountThe number of components that make up the block.


[0053] <PSB>
4nameAn identifier that represents a slice of a LUN that has beenused to create a storage consumer.sizeThe size of the slice in blocksblockSizeThe block size in the unit of bytes.LunThe device file for the LUN that the slice is carved from


[0054] <Lun>
5nameThe device file that connects to a LUNsizeThe size of the LUN in extentsextentSizeThe extent size. It is in the unit of bytes.


[0055] An example of an XML file or data set where the volume manager 128 is LVM running upon operating system (OS) HPUX would be:
6<VG type=“LVM” name=“/dev/vg00” > <SC name=“/dev/vg00/lvol1” size=“64” blockSize=“1048576”> <LSB name=“lvol1” type=“direct” typeCount=“1”>  <PSB name=“lvol1-01” size=“64” blockSize=“1048576”  lun=“/dev/dsk/c0t6d0” >  </PSB> </LSB> </SC> <SC name=“/dev/vg00/lvol2” size=“768” blockSize=“1048576”> <LSB name=“lvol2” type=“stripe” typeCount=“2”>  <PSB name=“lvol2-01” size=“384” blockSize=“1048576”lun=“/dev/dsk/c0t6d0”>  </PSB>  <PSB name=“lvol2-02” size=“384” blockSize=“1048576”lun=“/dev/dsk/c0t6d1”>  </PSB> </LSB> </SC> <SC name=“/dev/vg00/lvol3” size=“2000” blockSize=“1048576”> <LSB name=“/dev/vg00/lvol3” type=“mirror” typeCount=“2”>  <PSB name=“lvol3-01” size=“2000” blockSize=“1048576”  lun=“/dev/dsk/c0t6d0”>  </PSB>  <PSB name=“lvol3-02” size=“2000” blockSize=“1048576”lun=“/dev/dsk/c0t6d1” >  </PSB> </LSB> </SC> <hostluns> <Lun name=“/dev/dsk/c0t6d0” size=“18000” extentSize=“1048576”></Lun><Lun name=“/dev/dsk/c0t6d1” size=“7000” extentSize=“1048576”></Lun> </hostluns></VG>


[0056] An example of an XML data set where the volume manager 128 is VxVM running upon the OS HPUX would be:
7<VG type=“VxVM” name=“rootdg”> <hostluns> <Lun name=“/dev/dsk/c3t3d0” size=“2081484” extentSize=“1024”> </Lun> </hostluns></VG><VG type=“VxVM” name=“builderdg”> <SC name=“/dev/builderdg/vol01” size=“10000” blockSize=“1024”> <LSB name=“vol01-01” type=“direct” typeCount=“1”>  <PSB name=“builder01-01” size=“10000” blockSize=“1024”lun=“/dev/dsk/c3t4d0”>  </PSB> </LSB> </SC> <SC name=“/dev/builderdg/vol02” size=“20000” blockSize=“1024”> <LSB name=“vol02-01” type=“stripe” typeCount=“2”>  <PSB name=“builder01-01” size=“10000” blockSize=“1024”lun=“/dev/dsk/c3t4d0”>  </PSB>  <PSB name=“builder01-02” size=“10000” blockSize=“1024”lun=“ldev/dsk/c3t4d1”>  </PSB> </LSB> </SC> <SC name=“/dev/builderdg/vol03” size=“3000” blockSize=“1024”> <LSB name=“vol03-01” type=“mirror” typeCount=“3”>  <PSB name=“dg0203-01” size=“3000” blockSize=“1024”  lun=“/dev/dsk/c8t8d0”>  </PSB>  <PSB name=“dg0201-02” size=“3000” blockSize=“1024”  lun=“/dev/dsk/c8t9d0”>  </PSB>  <PSB name=“dg0205-02” size=“3000” blockSize=“1024”  lun=“/dev/dsk/c8t7d0”>  </PSB> </LSB> </SC> <hostluns> <Lun name=“/dev/dsk/c3t4d0” size=“4193005” extentSize=“1024”></Lun><Lun name=“/dev/dsk/c3t4d1” size=“6450000” extentSize=“1024”></Lun> <Lun name=“/dev/dsk/c8t8d0” size=“17782088” extentsize=“1024”></Lun> <Lun name=“/dev/dsk/c8t9d0” size=“17782088” extentSize=“1024”></Lun> <Lun name=“/dev/dsk/c8t7d0” size=“17782088” extentSize=“1024”></Lun> </hostluns></VG>


[0057] The LVM data and VxVM data can be combined into a single XML data set by the harvester 242. Such an example data set would be:
8<managedgroups>.... Lvm xml data... vxvm xml data</managedgroups>


[0058] Logical Storage Blocks (LSBs) are a representation of the complicated mapping performed by volume managers between logical volumes and physical volumes. An LSB represents the aggregation of a number of storage blocks (physical or logical) with a particular relationship to create a logical piece of storage (or storage resource) for a consumer of store (or storage, a storage consumer) or to create another logical storage block.


[0059] LUNs are organized or sliced into physical storage blocks (PSBs). PSBs are contiguous blocks of physical memory device, e.g., a disk drive or a tape drive. Logical storage blocks are logical mappings of other storage blocks using one of several simple mapping techniques (e.g., direct, striped, mirrored etc.). Logical storage blocks can map PSBs into a single logical grouping. Logical storage blocks can also map other LSBs together but should not combine PSBs and LSBs. Logical volumes (also known as storage consumers) include one or more LSBs.
9Logical Volume configurationObjects that could existSimple contiguous volume1 Physical Storage Block (PSB) thaton a single LUNpoints at the LUN1 LSB that points at the PSB withtype = “direct” and typecount = 1The storage consumer would pointat the LSB.Contiguous volume made upn PSBs that point at the appropriateof slices of multiple LUNsLUNs the slices reside upon1 LSB that points at the PSBs withtype = “direct” and typecount = nThe storage consumer would point atthe LSB.A logical volume striped4 PSBs that point at the appropriateacross slices of 4 LUNsLUNs the slices reside upon.1 LSB that points at the PSBs withtype = “stripe” and typecount = 4The storage consumer would point atthe LSB.A logical volume mirrored4 PSBs that point at the appropriateacross slices of 4 LUNsLUNs the slices reside upon.1 LSB that points at the PSBs withtype = “mirror” and typecount = 4The storage consumer would point atthe LSB.A logical volume striped8 PSBs that point at the appropriate(4) and mirrored (2) acrossLUNS the slices reside upon.slices of 8 LUNS (we will2 LSBs that each point at 4 PSBs withconsider striping as lowertype = “striped” and typelevel than mirroring incount = 4our model of the mapping -1 LSB that points at the 2 LSBs withthis shouldn't be an issuetype = “mirror” and typeas you end up with the samecount = 2lun usage whichever way youThe storage consumer would point atlook at the mapping i.e.the parent LSB.6 slices of data and 2The storage consumer would point atslices of parity) A logicalmultiple parent LSBs which would havevolume which has beenthe same structure of children i.e.extended after creation.the same number of LSBs and PSBs withthe same types and type counts.


[0060] Examples of JAVA documents corresponding to the DOs 402, 404, 406, 408 and 410 follow. Interspersed with the example JAVA documents are corresponding examples of templates (used with the tool that generates JAVA methods mentioned in the JAVA documents).


[0061] Immediately following is a JAVA document (referred to as class LogicalStoragePool) corresponding to the volume group DO 402 of FIG. 4. Again, the attributes portion 414 of the volume group DO 402 is elaborated upon, e.g., in the following Field Summary section and the Field Detail section. The JAVA methods portion 416 is elaborated upon, e.g., in the Methods Summary section, the Constructor Summary section, the Constructor Detail section and the Methods Detail section.


[0062] com.hp.sanmgr.model


[0063] Class LogicalStoragePool
1


[0064] Public Final class LogicalStoragePool Extends StorableObject


[0065] Abstraction of a group/pool of storage resources. This can be mapped to a VolumeGroup or some other entity depending on which logical file system package, such as LVM, VxVM, LDM, etc. is being used.
10Field Summarystatic StringDEFAULTThe name of the default logical storage pool forLUNs not associated with a typical volume group.static intDIRECT_FILE_SYSTEMprotectedhostLogicalUnitsStorableMapThe HostLogicalUnits that is associated withthis LogicalStoragePool.static intLDMstatic StringLOGICALSTORAGEPOOL_ID_FIELDConstant representing the name of theLogicalStoragePool field.static intLVMprotectednameStringName of the storage pool.static StringNAME_FIELDConstant representing the name of the name field.protectedsizeHostLogicalUnitsdoubleThe total size of all host logical units associatedwith this logical storage pool.static StringSIZEHOSTLOGICALUNITS_FIELDConstant representing the name of thesizeHostLogicalUnits field.protectedsizeStorageConsumersdoubleThe total size of all storage consumers associatedwith this logical storage pool.static StringSIZESTORAGECONSUMERS_FIELDConstant representing the name of thesizeStorageConsumers field.protectedstorageConsumersStorableMapThe StorageConsumers that is associated withthis LogicalStoragePool.protectedsystemDeviceSystemDeviceThe system device to which this logical storagepool is associated with.static StringSYSTEMDEVICE_FIELDConstant representing the name of the systemDevicefield.protected inttotalHostLogicalUnitsThe total number of host logical units associatedwith this logical storage pool.static StringTOTALHOSTLOGICALUNITS_FIELDConstant representing the name of thetotalHostLogicalUnits field.protected inttotalStorageConsumersThe total number of storage consumers associatedwith this logical storage pool.static StringTOTALSTORAGECONSUMERS_FIELDConstant representing the name of thetotalStorageConsumers field.protected inttypeThe type of this storage consumer.static StringTYPE_FIELDConstant representing the name of the type field.static intUNKNOWNUsed as a type designation when the actual type isunknown.static intUPMprotectedusedHostLogicalUnitsdoubleThe total size used by storage consumers on all hostlogical units associated with this logical storage pool.static StringUSEDHOSTLOGICALUNITS_FIELDConstant representing the name of theusedHostLogicalUnits field.protectedusedPercentHostLogicalUnitsdoubleThe total percent used space by storage consumerson host logical units associated with this logical storagepool.static StringUSEDPERCENTHOSTLOGICALUNITS_FIELDConstant representing the name of theusedPercentHostLogicalUnits field.static intVXVM


[0066]

11











Fields inherited from class com.hp.clay.StorableObject

















b1Writable, CACHED_OBJECTS,



NON_STORABLE_MASK,



NOT_STORED, PACKAGE_PREFIX,



ROOT_CLASS_NAME,



ROOT_CLASS_PREFIX, STORED_AS_BOOLEAN,



STORED_AS_COLLECTION, STORED_AS_DATE,



STORED_AS_DOUBLE,



STORED_AS_FLOAT, STORED_AS_INTEGER,



STORED_AS_LONG,



STORED_AS_REFERENCE, STORED_AS_STRING,



STORED_AS_TRANSIENT_COLLECTION,



STORED_OBJECTS,



XML_ATTRIBUTES_AS_ATTRIBUTES,



XML_EXPAND_AGGREGATE_REFERENCES,



XML_EXPAND_ATTRIBUTE_REFERENCES,



XML_EXPAND_SINGULAR_REFERENCES,



XML_ID_AS_ENTITIES,



XML_INCLUDE_REFERENCED_OBJECTS,



XML_SUPPRESS_ID_ATTRIBUTES,



XML_SUPPRESS_XREF_ATTRIBUTES,



XML_USE_TYPE_SPECIFIC_ENTITIES











[0067]

12











Constructor Summary

















LogicalStoragePool ( )



Default constructor.


protected
LogicalStoragePool (Dbid dbid)



Constructor used internally for loading.



LogicalStoragePool (String name, SystemDevice



systemDevice, int type)



Constructs a new infrastructure device with the given



parameters.










[0068]

13











Method Summary
















void
addHostLogicalUnit (HostLogicalUnit



hostLogicalUnit)



Adds the specified HostLogicalUnit to the



collection of HostLogicalUnit objects for



this LogicalStoragePool.


void
addStorageConsumer (StorageConsumer



storageConsumer)



Adds the specified StorageConsumer to the



collection of StorageConsumer objects for



this LogicalStoragePool.


void
clearHostLogicalUnits ( )



Clears the collection of HostLogicalUnit



objects for this LogicalStoragePool.


void
clearStorageConsumers ( )



Clears the collection of StorageConsumer



objects for this LogicalStoragePool.


static
getBySystemDevice (SystemDevice


StorableList
systemDevice)



Deprecated. Returns the LogicalStoragePool



which has the systemDevice of the



specified value.


HostLogicalUnit
getHostLogicalUnit (Dbid id)



Returns the HostLogicalUnit with the



specified ID in the collection of



HostLogicalUnit objects for this



LogicalStoragePool.


StorableMap
getHostLogicalUnits ( )



Returns the collection of HostLogicalUnit



objects for this LogicalStoragePool.


StorableIterator
getHostLogicalUnitsIterator ( )



Returns the collection of HostLogicalUnit



objects for this LogicalStoragePool.


StorableIterator
getHostLogicalUnitsIterator (String



sortFieldName, boolean isAscending)



Returns the collection of HostLogicalUnit



objects for this LogicalStoragePool.


static
getLogicalStoragePoolListBySystemDevice


StorableList
(SystemDevice systemDevice)



Returns a list, sorted in no particular



order, of LogicalStoragePool objects



which have the systemDevice of the



specified value.


String
getName ( )



Returns the value of the name property.


StorableList
getPhysicalStorageBlocks ( )



Gets all of the physical storage blocks



associated with this logical storage pool.


double
getSizeHostLogicalUnits ( )



Returns the value of the



sizeHostLogicalUnits property.


double
getSizePhysicalStorageBlocks ( )



Gets the total size of all physical



storage blocks associated with this



logical storage pool.


double
getSizeStorageConsumers ( )



Returns the value of the



sizeStorageConsumers property.


StorageConsumer
getStorageConsumer (Dbid id)



Returns the StorageConsumer with the



specified ID in the collection of



StorageConsumer objects for this



LogicalStoragePool.


StorableMap
getStorageConsumers ( )



Returns the collection of StorageConsumer



objects for this LogicalStoragePool.


StorableIterator
getStorageConsumersIterator ( )



Returns the collection of StorageConsumer



objects for this LogicalStoragePool.


StorableIterator
getStorageConsumersIterator (String



sortFieldName, boolean isAscending)



Returns the collection of StorageConsumer



objects for this LogicalStoragePool.


SystemDevice
getSystemDevice ( )



Returns the value of the systemDevice



property.


int
getTotalHostLogicalUnits ( )



Returns the value of the



totalHostLogicalUnits property.


int
getTotalStorageConsumers ( )



Returns the value of the



totalStorageConsumers property.


int
getType ( )



Returns the value of the type property.


double
getUsedHostLogicalUnits ( )



Returns the value of the



usedHostLogicalUnits property.


double
getUsedPercentHostLogicalUnits ( )



Returns the value of the



usedPercentHostLogicalUnits



property.


StorableMap
loadHostLogicalUnits ( )



Loads and returns the collection of



HostLogicalUnit objects for this



LogicalStoragePool.


StorableMap
loadStorageConsumers ( )



Loads and returns the collection of



StorageConsumer objects for this



LogicalStoragePool.


protected
prepareDelete (ConnectionContext


CachedPreparedStatement
context)



This method must be provided in order



for the LogicalStoragePool object to



become storable, i.e.


protected
prepareInsert (ConnectionContext


CachedPreparedStatement
context)



This method must be provided in order



for the LogicalStoragePool object to



become storable, i.e.


protected
prepareSelect (ConnectionContext


CachedPreparedStatement
context)



This method must be provided in order



for the LoogicalStoragePool object to



become storable, i.e.


void
removeHostLogicalUnit (HostLogicalUnit



hostLogicalUnit)



Removes the specified HostLogicalUnit



from the collection of HostLogicalUnit



objects for this LogicalStoragePool.


void
removeStorageConsumer (StorageConsumer



storageConsumer)



Removes the specified StorageConsumer



from the collection of StorageConsumer



objects for this



LogicalStoragePool.


void
setName (String name)



Sets the Name property to the specified



value.


void
setSizeHostLogicalUnits (double



sizeHostLogicalUnits)



Sets the SizeHostLogicalUnits property to



the specified value.


void
setSizeStorageConsumers (double



sizeStorageConsumers)



Sets the SizeStorageConsumers property to



the specified value.


void
setSystemDevice (SystemDevice



systemDevice)



Sets the SystemDevice property to the



specified value.


void
setTotalHostLogicalUnits (int



totalHostLogicalUnits)



Sets the TotalHostLogicalUnits property



to the specified value.


void
setTotalStorageConsumers (int



totalStorageConsumers)



Sets the TotalStorageConsumers property



to the specified value.


void
setType (int type)



Sets the Type property to the specified



value.


void
setUsedHostLogicalUnits (double



usedHostLogicalUnits)



Sets the UsedHostLogicalUnits property



to the specified value.


void
setUsedPercentHostLogicalUnits (double



usedPercentHostLogicalUnits)



Sets the UsedPercentHostLogicalUnits



property to the specified value.


String
toDebugString ( )



Returns a string image of the the



specified LogicalStoragePool.


String
toDebugString (String indent)



Returns the debug string image of the



object indented using the specified



indent string.


String
toDebugString (String indent, Vector



callTree)



Returns an indented string image of



the the specified LogicalStoragePool.


String
toString ( )



Returns the string image of this object.










[0069]

14











Methods inherited from class com.hp.clay.StorableObject

















http://srmlab.rose.hp.com/java-api/sanmgr/com/hp/clay/



StorableObject.html -



<clinit>( ), addAttribute, addDependentObjects,



attributesLoaded, cacheOnly, decode, delete, delete,



deleteDependentObjects, deleteObject,



deleteThisObjectFromCacheUnderPenaltyOfDeath,



enableZombieMonitor, encode, equals, error, error, error,



error, executeQuery, flushAttributes,



getAbstractModelClasses, getAttribute, getAttributeCount,



getAttributes, getAttributesLike, getByAttribute,



getByAttribute, getByAttribute, getClassLoader,



getConcreteModelClasses, getCount, getCount, getCount,



getDbid, getDirtyFields, getFindOrCreateLock,



getFromCache, getFromCache, getFromCache, getLock,



getLock, getModelClasses, getObjectClass,



getReferringObjectsIterator, getRelationshipIterator,



getResourceBundle, getSum, getSum, getSum, getSum,



getSum, getTransientAttributes, hashCode, isDirty,



isFieldDirty, isLoaded, isModelClass, isZombie, load.



load, load, load, load, loadAll, loadAll, loadAll,



loadAll, loadAllAttributes, loadAllIterator,



loadAllIterator, loadAttributes, loadModelClassCatalogue,



loadReferringObjects, loadRelationship, putIntoCache,



releaseFindOrCreateLock, releaseLock,



removeAllAttributes, removeAllTransientAttributes,



removeAttribute, removeAttribute, removeFromCache,



setAccessible, setAttributesDirty, setClassLoader,



setClean, setDirty, setFieldDirty, setFieldDirty,



setResourceBundle, settingDbidUnderPenaltyOfDeath,



setWasCreated, store, storeAttributes,



storeClassSpecifics, storeDirtyObjects, toString,



wasCreated, writeXML, writeXML, writeXML, writeXML











[0070]

15











Methods inherited from class java.lang.Object

















clone, finalize, getClass, notify, notifyAll, wait, wait,



wait











[0071] Field Detail


[0072] name


[0073] protected String name


[0074] Name of the storage pool.


[0075] DEFAULT


[0076] public static final String DEFAULT


[0077] The name of the default logical storage pool for LUNs not associated with a typical volume group. This is used for providing the association of LUN to volume for volumes that directly map to a LUN.


[0078] UNKNOWN


[0079] public static final int UNKNOWN


[0080] Used as a type designation when the actual type is unknown.


[0081] DIRECT_FILE_SYSTEM


[0082] public static final int DIRECT_FILE_SYSTEM


[0083] LVM public static final int LVM


[0084] VXVM public static final int VXVM


[0085] LDM public static final int LDM


[0086] UPM public static final int UPM


[0087] type protected int type The type of this storage consumer.


[0088] systemDevice protected SystemDevice systemDevice The system device to which this logical storage pool is associated with.


[0089] storageConsumers protected StorableMap storageConsumers The StorageConsumers that is associated with this LogicalStoragePool.


[0090] hostLogicalUnits protected StorableMap hostLogicalUnits The HostLogicalUnits that is associated with this LogicalStoragePool.


[0091] totalHostLogicalUnits protected int totalHostLogicalUnits The total number of host logical units associated with this logical storage pool.


[0092] totalStorageConsumers protected int totalStorageConsumers The total number of storage consumers associated with this logical storage pool.


[0093] sizeStorageConsumers protected double sizeStorageConsumers The total size of all storage consumers associated with this logical storage pool.


[0094] sizeHostLogicalUnits protected double sizeHostLogicalUnits The total size of all host logical units associated with this logical storage pool.


[0095] usedHostLogicalUnits protected double usedHostLogicalUnits The total size used by storage consumers on all host logical units associated with this logical storage pool.


[0096] usedPercentHostLogicalUnits protected double usedPercentHostLogicalUnits The total percent used space by storage consumers on host logical units associated with this logical storage pool.


[0097] LOGICALSTORAGEPOOL_ID_FIELD public static final String LOGICALSTORAGEPOOL_ID_FIELD Constant representing the name of the LogicalStoragePool field.


[0098] NAME_FIELD public static final String NAME_FIELD Constant representing the name of the name field.


[0099] TYPE_FIELD public static final String TYPE_FIELD Constant representing the name of the type field.


[0100] SYSTEMDEVICE_FIELD public static final String SYSTEMDEVICE_FIELD Constant representing the name of the systemDevice field.


[0101] TOTALHOSTLOGICALUNITS_FIELD public static final String TOTALHOSTLOGICALUNITS_FIELD Constant representing the name of the totalHostLogical Units field.


[0102] TOTALSTORAGECONSUMERS_FIELD public static final String TOTALSTORAGECONSUMERS_FIELD Constant representing the name of the totalStorageConsumers field.


[0103] SIZESTORAGECONSUMERS_FIELD public static final String SIZESTORAGECONSUMERS_FIELD Constant representing the name of the sizeStorageConsumers field.


[0104] SIZEHOSTLOGICALUNITS_FIELD public static final String SIZEHOSTLOGICALUNITS_FIELD Constant representing the name of the sizeHostLogicalUnits field.


[0105] USEDHOSTLOGICALUNITS_FIELD public static final String USEDHOSTLOGICALUNITS_FIELD Constant representing the name of the usedHostLogicalUnits field.


[0106] USEDPERCENTHOSTLOGICALUNITS_FIELD public static final String USEDPERCENTHOSTLOGICALUNITS_FIELD


[0107] Constant representing the name of the usedPercentHostLogical Units field.


[0108] LogicalStoragePool public LogicalStoragePool( ) Default constructor.


[0109] LogicalStoragePool protected LogicalStoragePool(Dbid dbid) Constructor used internally for loading.


[0110] LogicalStoragePool public LogicalStoragePool (String name, SystemDevice systemDevice, int type) Constructs a new infrastructure device with the given parameters. Method Detail


[0111] toString public String toString( ) Returns the string image of this object.


[0112] Overrides:


[0113] toString in class StorableObject


[0114] getPhysicalStorageBlocks public StorableList getPhysicalStorageBlocks( ) Gets all of the physical storage blocks associated with this logical storage pool.


[0115] Returns:


[0116] A list of PhysicalStorageBlock associated with this logical storage pool.


[0117] getSizePhysicalStorageBlocks public double getSizePhysicalStorageBlocks( ) Gets the total size of all physical storage blocks associated with this logical storage pool.


[0118] prepareInsert protected CachedPreparedStatement prepareInsert(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStoragePool object to become storable, i.e. so it can be added to the database.


[0119] Overrides:


[0120] prepareInsert in class StorableObject


[0121] prepareDelete protected CachedPreparedStatement prepareDelete(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStoragePool object to become storable, i.e. so it can be deleted from the database.


[0122] Overrides:


[0123] prepareDelete in class StorableObject


[0124] prepareSelect protected CachedPreparedStatement prepareSelect(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStoragePool object to become storable, i.e. so it can be retrieved from the database.


[0125] Overrides:


[0126] prepareSelect in class StorableObject


[0127] getName public String getName( ) Returns the value of the name property.


[0128] setName public void setName(String name) Sets the Name property to the specified value.


[0129] getType public int getType( ) Returns the value of the type property.


[0130] setType public void setType(int type) Sets the Type property to the specified value.


[0131] getSystemDevice public SystemDevice getSystemDevice( ) Returns the value of the systemDevice property.


[0132] setSystemDevice public void setSystemDevice(SystemDevice systemDevice) Sets the SystemDevice property to the specified value. Note that this should not be used as a means to add this object to the list of children of the SystemDevice parent. An appropriate call to addLogicalStoragePool, if available, should be made on the systemDevice parent object instead.


[0133] getTotalHostLogicalUnits public int getTotalHostLogicalUnits( ) Returns the value of the totalHostLogicalUnits property.


[0134] setTotalHostLogicalUnits public void setTotalHostLogicalUnits(int totalHostLogicalUnits) Sets the TotalHostLogicalUnits property to the specified value.


[0135] getTotalStorageConsumers public int getTotalStorageConsumers( ) Returns the value of the totalStorageConsumers property.


[0136] setTotalStorageConsumers public void setTotalStorageConsumers(int totalStorageConsumers) Sets the TotalStorageConsumers property to the specified value.


[0137] getSizeStorageConsumers public double getSizeStorageConsumers( ) Returns the value of the sizeStorageConsumers property.


[0138] setSizeStorageConsumers public void setSizeStorageConsumers (double sizeStorageConsumers) Sets the SizeStorageConsumers property to the specified value.


[0139] getSizeHostLogicalUnits public double getSizeHostLogicalUnits( ) Returns the value of the sizeHostLogicalUnits property.


[0140] setSizeHostLogicalUnits public void setSizeHostLogicalUnits (double sizeHostLogicalUnits) Sets the SizeHostLogicalUnits property to the specified value.


[0141] getUsedHostLogicalUnits public double getUsedHostLogicalUnits( ) Returns the value of the usedHostLogicalUnits property.


[0142] setUsedHostLogicalUnits public void setUsedHostLogicalUnits (double usedHostLogicalUnits) Sets the UsedHostLogicalUnits property to the specified value.


[0143] getUsedPercentHostLogicalUnits public double getUsedPercentHostLogicalUnits( ) Returns the value of the usedPercentHostLogicalUnits property. setUsedPercentHostLogicalUnits public void setUsedPercentHostLogicalUnits(double usedPercentHostLogicalUnits) Sets the UsedPercentHostLogicalUnits property to the specified value.


[0144] toDebugString public String toDebugString( ) Returns a string image of the the specified LogicalStoragePool.


[0145] Overrides:


[0146] toDebugString in class StorableObject


[0147] toDebugString public String toDebugString(String indent) Description copied from class: StorableObject Returns the debug string image of the object indented using the specified indent string.


[0148] Overrides:


[0149] toDebugString in class StorableObject


[0150] toDebugString public String toDebugString(String indent, Vector callTree) Returns an indented string image of the the specified LogicalStoragePool.


[0151] Overrides:


[0152] toDebugString in class StorableObject


[0153] loadStorageConsumers public StorableMap loadStorageConsumers( ) Loads and returns the collection of StorageConsumer objects for this LogicalStoragePool.


[0154] getStorageConsumers public StorableMap getStorageConsumers( ) Returns the collection of StorageConsumer objects for this LogicalStoragePool.


[0155] getStorageConsumersIterator public StorableIterator getStorageConsumersIterator( ) Returns the collection of StorageConsumer objects for this LogicalStoragePool. getStorageConsumersIterator public StorableIterator getStorageConsumersIterator(String sortFieldName, boolean isAscending) Returns the collection of StorageConsumer objects for this LogicalStoragePool.


[0156] clearStorageConsumers public void clearStorageConsumers( ) Clears the collection of StorageConsumer objects for this LogicalStoragePool.


[0157] Provided to allow applications to explicitely drop references to child StorageConsumer objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0158] addStorageConsumer public void addStorageConsumer(StorageConsumer storageConsumer) Adds the specified StorageConsumer to the collection of StorageConsumer objects for this LogicalStoragePool.


[0159] removeStorageConsumer public void removeStorageConsumer(StorageConsumer storageConsumer) Removes the specified StorageConsumer from the collection of StorageConsumer objects for this LogicalStoragePool.


[0160] getStorageConsumer public StorageConsumer getStorageConsumer(Dbid id) Returns the StorageConsumer with the specified ID in the collection of StorageConsumer objects for this LogicalStoragePool.


[0161] loadHostLogicalUnits public StorableMap loadHostLogicalUnits( ) Loads and returns the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0162] getHostLogicalUnits public StorableMap getHostLogicalUnits( ) Returns the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0163] getHostLogicalUnitsIterator public StorableIterator getHostLogicalUnitsIterator( ) Returns the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0164] getHostLogicalUnitsIterator public StorableIterator getHostLogicalUnitsIterator(String sortFieldName, boolean isAscending) Returns the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0165] clearHostLogicalUnits public void clearHostLogicalUnits( ) Clears the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0166] Provided to allow applications to explicitely drop references to child HostLogicalUnit objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0167] addHostLogicalUnit public void addHostLogicalUnit(HostLogicalUnit hostLogicalUnit) Adds the specified HostLogicalUnit to the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0168] removeHostLogicalUnit public void removeHostLogicalUnit(HostLogicalUnit hostLogicalUnit) Removes the specified HostLogicalUnit from the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0169] getHostLogicalUnit public HostLogicalUnit getHostLogicalUnit(Dbid id) Returns the HostLogicalUnit with the specified ID in the collection of HostLogicalUnit objects for this LogicalStoragePool.


[0170] getLogicalStoragePoolListBySystemDevice public static StorableList getLogicalStoragePoolListBySystemDevice(SystemDevice systemDevice) Returns a list, sorted in no particular order, of LogicalStoragePool objects which have the systemDevice of the specified value.


[0171] getBySystemDevice public static StorableList getBySystemDevice(SystemDevice systemDevice) Deprecated. Returns the LogicalStoragePool which has the systemDevice of the specified value.


[0172] Immediately following is a sample template related to the volume group DO 402 of FIG. 4, and corresponding to the immediately preceding JAVA document (class LogicalStoragePool).
16//------------------------------------------------------------------------------// Copyright 1999-2002 Hewlett-Packard Co., All Rights Reserved.//------------------------------------------------------------------------------/** * Abstraction of a group/pool of storage resources. This can bemapped to a * VolumeGroup or some other entity depending on which logical filesystem * package, such as LVM, VxVM, LDM, etc. is being used. */public final class LogicalStoragePool extends StorableObject {/** Name of the storage pool. */protected String name;/** * The name of the default logical storage pool for LUNs notassociated * with a typical volume group. This is used for providing theassociation * of LUN to volume for volumes that directly map to a LUN. */public static final String DEFAULT = “dEfAuLtVoLuMeGrOuP”;/** Used as a type designation when the actual type is unknown.*/public static final int UNKNOWN = 0;// Some well-known enumerations of storage pool types. */public static final int DIRECT_FILE_SYSTEM = 1;public static final int LVM = 2;public static final int VXVM = 3;public static final int LDM = 4;public static final int UPM = 5;/** The type of this storage consumer. */protected int type;/** * The system device to which this logical storage pool is associated * with. */// ::getBy unsorted systemDeviceprotected SystemDevice systemDevice;/** * The {@link StorageConsumer StorageConsumers} that isassociated * with this LogicalStoragePool. */// ::relate LogicalStoragePool StorageConsumers StorageConsumerlogicalStoragePoolsprotected StorableMap StorageConsumers;/** * The {@link HostLogicalUnit HostLogicalUnits} that is associated * with this LogicalStoragePool. */// ::relate LogicalStoragePool hostLogicalUnits HostLogicalUnitlogicalStoragePoolsprotected StorableMap hostLogicalUnits;/** * The total number of host logical units associated with this logical * storage pool. */protected int totalHostLogicalUnits;/** * The total number of storage consumers associated with thislogical * storage pool. */protected int totalStorageConsumers;/** * The total size of all storage consumers associated with this logical * storage pool. */protected double sizeStorageConsumers;/** * The total size of all host logical units associated with this * logical storage pool. */protected double sizeHostLogicalUnits;/** * The total size used by storage consumers on all host logical units * associated with this logical storage pool. */protected double usedHostLogicalUnits;/** * The total percent used space by storage consumers on hostlogical * units associated with this logical storage pool. */protected double usedPercentHostLogicalUnits;/** Constructs a new infrastructure device with thegivenparameters. */public LogicalStoragePool (String name, SystemDevicesystemDevice,int type) {super ( );this, name = name;this.systemDevice = systemDevice;this.type = type;this.totalHostLogicalUnits = 0;this.totalStorageConsumers = 0;this.sizeStorageConsumers = 0;this.sizeHostLogicalUnits = 0;this.usedHostLogicalUnits = 0;this.usedPercentHostLogicalUnits = 0;/* ::post-compileif (systemDevice != null) {systemDevice.addLogicalStoragePool(this);}::post-compile */} // LogicalStoragePool/** Returns the string image of this object. *//* ::post-compilepublic String toString ( ) {return “storage pool” + getName( );} // toString::post-compile *//** * Gets all of the physical storage blocks associated with this * logical storage pool. * * @return A list of {@link PhysicalStorageBlockPhysicalStorageBlock} * associated with this logical storage pool. *//* ::post-compilepublic StorableList getPhysicalStorageBlocks( ) {StorableList physicalBlocks = new StorableList( );Iterator hostLuns = loadHostLogicalUnits( ).iterator( );while(hostLuns.hasNext( )) {HostLogicalUnit hostLun =(HostLogicalUnit)hostLuns.next( );physicalBlocks.importCollection(hostLun.getPhysicalStorageBlocks( ));}return physicalBlocks;}::post-compile *//*** Gets the total size of all physical storage blocks associated* with this logical storage pool.*//* ::post-compilepublic doublegetSizePhysicalStorageBlocks( ) {double size = 0;Iterator iteration =getPhysicalStorageBlocks( ).iterator( );while(iteration.hasNext( )) {PhysicalStorageBlock physicalBlock =(PhysicalStorageBlock)iteration.next( );size += physicalBlock.getSize( );}return size;}::post-compile */


[0173] Immediately following is a JAVA document (referred to as class StorageConsumer) corresponding to the logical volume DO 404 of FIG. 4.


[0174] com.hp.sanmgr.model


[0175] Class StorageConsumer
2


[0176] public final class StorageConsumer extends StorableObject


[0177] Abstraction of a software layer (file-system) that utilizes the storage resources that were allocated to a system device, i.e a Host or a NASDevice. Besides of file systems, this can also represent swap-space, dump-space and any raw storage spaces allocated for use by database software, etc.
17Field SummaryprotectedavailableCapacitydoubleThe available capacity for this storageconsumer.staticAVAILABLECAPACITY_FIELDStringConstant representing the name of theavailableCapacity field.protectedconsumptionBlocksStorableMapList of all consumption blcoks within thispartition.protectedStringdeviceFileDevice file on which this storage consumerdraws for storage. Note that this is essentiallyredundant with the storageBlock, but provides aloose link to the underlying storage block.staticDEVICEFILE_FIELDStringConstant representing the name of the deviceFilefield.protectedhasFileSystembooleanIf this logical volume has a file system.staticHASFILESYSTEM_FIELDStringConstant representing the name of thehasFileSystem field.protectedlogicalStorageBlocksStorableMapLogical storage block from which this storageconsumer draws storage resources.protectedlogicalStoragePoolsStorableMapThe LogicalStoragePools that are associatedwith this StorageConsumer.protectedmanagedDirectoriesStorableMapList of all managed directories within thispartition.protectedmountPointStringHost-specific mount point, /usr, /home,/tmp, for example.staticMOUNTPOINT_FIELDStringConstant representing the name of themountPoint field.staticSTORAGECONSUMER_ID_FIELDStringConstant representing the name of theStorageConsumer field.staticSWAPStringValue used as a type of swap space.protectedsystemDeviceSystemDeviceSystem device, i.e Host or NASDevice, towhich this storage consumer belongs.staticSYSTEMDEVICE_FIELDStringConstant representing the name of thesystemDevice field.protectedtotalCapacitydoubleThe total capacity for this storage consumer.staticTOTALCAPACITY_FIELDStringConstant representing the name of thetotalCapacity field.protectedtotalSizedoubleThe total size of the logical volume.staticTOTALSIZE_FIELDStringConstant representing the name of thetotalSize field.protectedtypeStringThe type of this storage consumer asobtained from the native platform.staticTYPE_FIELDStringConstant representing the name of thetype field.staticUNKNOWNStringValue used as a type of an unknown storageconsumer/volume.protectedusedCapacitydoubleThe used capacity for this storage consumer.staticUSEDCAPACITY_FIELDStringConstant representing the name of theusedCapacity field.protectedusedPercentdoubleThe percentage of used capacity.staticUSEDPERCENT_FIELDStringConstant representing the name of theusedPercent field.


[0178]

18











Fields inherited from class com.hp.clay.StorableObject

















b1Writable, CACHED_OBJECTS,



NON_STORABLE_MASK,



NOT_STORED, PACKAGE_PREFIX,



ROOT_CLASS_NAME,



ROOT_CLASS_PREFIX, STORED_AS_BOOLEAN,



STORED_AS_COLLECTION, STORED_AS_DATE,



STORED_AS_DOUBLE,



STORED_AS_FLOAT, STORED_AS_INTEGER,



STORED_AS_LONG,



STORED_AS_REFERENCE, STORED_AS_STRING,



STORED_AS_TRANSIENT_COLLECTION,



STORED_OBJECTS,



XML_ATTRIBUTES_AS_ATTRIBUTES,



XML_EXPAND__AGGREGATE_REFERENCES,



XML_EXPAND_ATTRIBUTE_REFERENCES,



XML_EXPAND_SINGULAR_REFERENCES,



XML_ID_AS_ENTITIES,



XML_INCLUDE_REFERENCED_OBJECTS,



XML_SUPPRESS_ID_ATTRIBUTES,



XML_SUPPRESS_XREF_ATTRIBUTES,



XML_USE_TYPE_SPECIFIC_ENTITIES











[0179]

19











Constructor Summary



















StorageConsumer( )




Default constructor.



protected
StorageConsumer(Dbid dbid)




Constructor used internally for loading.




StorageConsumer(String mountPoint, String




deviceFile, String type, double totalCapacity,




double usedCapacity, double availableCapacity)




Constructs a new storage consumer as a local




file system on the that is not associated with




a system device.




StorageConsumer(SystemDevice systemDevice,




String type, String mountPoint, String




deviceFile, double totalCapacity, double




usedCapacity, double availableCapacity)




Constructs a new storage consumer as a local




file system on the specified system device.




StorageConsumer(SystemDevice systemDevice,




String type, String mountPoint, String




deviceFile, double totalSize, double




totalCapacity, double usedCapacity, double




availableCapacity)




Constructs a new storage consumer as a local




file system on the specified system device.











[0180]

20











Method Summary
















void
addConsumptionBlock(ConsumptionBlock



consumptionBlock)



Adds the specified ConsumptionBlock to



the collection of ConsumptionBlock objects



for this StorageConsumer.


void
addLogicalStorageBlock(LogicalStorageBlock



logicalStorageBlock)



Adds the specified LogicalStorageBlock to



the collection of LogicalStorageBlock objects



for this StorageConsumer.


void
addLogicalStoragePool(LogicalStoragePool



logicalStoragePool)



Adds the specified LogicalStoragePool to



the collection of LogicalStoragePool objects for



this StorageConsumer.


void
addManagedDirectory(ManagedDirectory



managedDirectory)



Adds the specified ManagedDirectory to the



collection of ManagedDirectory objects for this



StorageConsumer.


void
clearConsumptionBlocks( )



Clears the collection of ConsumptionBlock



objects for this StorageConsumer.


void
clearLogicalStorageBlocks( )



Clears the collection of



LogicalStorageBlock objects for this



StorageConsumer.


void
clearLogicalStoragePools( )



Clears the collection of LogicalStoragePool



objects for this StorageConsumer.


void
clearManagedDirectories( )



Clears the collection of ManagedDirectory



objects for this StorageConsumer.


double
getAvailableCapacity( )



Returns the value of the availableCapacity



property.


double
getAvailablePercent( )



Returns the percentage of available



capacity.


static
getBySystemDevice(SystemDevice


StorableList
systemDevice)



Deprecated. Returns the StorageConsumer



which has the systemDevice of the



specified value.


Consumption-
getConsumptionBlock(Dbid id)


Block
Returns the ConsumptionBlock with the



specified ID in the collection of



ConsumptionBlock objects for this



StorageConsumer.


StorableMap
getConsumptionBlocks( )



Returns the collection of



ConsumptionBlock objects for this



StorageConsumer.


Storable-
getConsumptionBlocksIterator( )


Iterator
Returns the collection of



ConsumptionBlock objects for this



StorageConsumer.


Storable-
getConsumptionBlocksIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of



ConsumptionBlock objects for this



StorageConsumer.


String
getDeviceFile( )



Returns the value of the deviceFile



property.


boolean
getHasFileSystem( )



Returns the value of the hasFileSystem



property.


Logical-
getLogicalStorageBlock(Dbid id)


Storage-
Returns the LogicalStorageBlock with the


Block
specified ID in the collection of



LogicalStorageBlock objects for this



StorageConsumer.


StorableMap
getLogicalStorageBlocks( )



Returns the collection of



LogicalStorageBlock objects for this



StorageConsumer.


Storable-
getLogicalStorageBlocksIterator( )


Iterator
Returns the collection of



LogicalStorageBlock objects for this



StorageConsumer.


Storable-
getLogicalStorageBlocksIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of



LogicalStorageBlock objects for this



StorageConsumer.


Logical-
getLogicalStoragePool(Dbid id)


StoragePool
Returns the LogicalStoragePool with the



specified ID in the collection of



LogicalStoragePool objects for this



StorageConsumer.


StorableMap
getLogicalStoragePools( )



Returns the collection of



LogicalStoragePool objects for this



StorageConsumer.


Storable-
getLogicalStoragePoolsIterator( )


Iterator
Returns the collection of



LogicalStoragePool objects for this



StorageConsumer.


Storable-
getLogicalStoragePoolsIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of



LogicalStoragePool objects for this



StorageConsumer.


StorableMap
getManagedDirectories( )



Returns the collection of ManagedDirectory



objects for this StorageConsumer.


Storable-
getManagedDirectoriesIterator( )


Iterator
Returns the collection of ManagedDirectory



objects for this StorageConsumer.


Storable-
getManagedDirectoriesIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of ManagedDirectory



objects for this StorageConsumer.


Managed-
getManagedDirectory(Dbid id)


Directory
Returns the ManagedDirectory with the



specified ID in the collection of ManagedDirectory



objects for this StorageConsumer.


String
getMountPoint( )



Returns the value of the mountPoint



property.


StorableMap
getPhysicalStorageBlocks( )



Retrieves all of the PhysicalStorageBlocks



associated with a particular StorageConsumer.


static
getStorageConsumerListBySystemDevice


Storable-
(SystemDevice systemDevice)


List
Returns a list, sorted in no particular order,



of StorageConsumer objects which have the



systemDevice of the specified value.


System-
getSystemDevice( )


Device
Returns the value of the systemDevice



property.


double
getTotalCapacity( )



Returns the value of the totalCapacity



property.


double
getTotalSize( )



Returns the value of the totalSize property.


String
getType( )



Returns the value of the type property.


double
getUsedCapacity( )



Returns the value of the usedCapacity



property.


double
getUsedPercent( )



Returns the value of the usedPercent



property.


StorableMap
loadConsumptionBlocks( )



Loads and returns the collection of



ConsumptionBlock objects for this



StorageConsumer.


StorableMap
loadLogicalStorageBlocks( )



Loads and returns the collection of



LogicalStorageBlock objects for this



StorageConsumer.


StorableMap
loadLogicalStoragePools( )



Loads and returns the collection of



LogicalStoragePool objects for this



StorageConsumer.


StorableMap
loadManagedDirectories( )



Loads and returns the collection of



ManagedDirectory objects for this



StorageConsumer.


protected
prepareDelete(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for


Statement
the StorageConsumer object to become storable,



i.e.


protected
prepareInsert(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for


Statement
the StorageConsumer object to become storable,



i.e.


protected
prepareSelect(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for


Statement
the StorageConsumer object to become storable,



i.e.


void
removeConsumptionBlock(ConsumptionBlock



consumptionBlock)



Removes the specified ConsumptionBlock



from the collection of ConsumptionBlock objects



for this StorageConsumer.


void
removeLogicalStorageBlock(LogicalStorageBlock



logicalStorageBlock)



Removes the specified



LogicalStorageBlock from the collection of



LogicalStorageBlock objects for this



StorageConsumer.


void
removeLogicalStoragePool(LogicalStoragePool



logicalStoragePool)



Removes the specified LogicalStoragePool



from the collection of LogicalStoragePool objects



for this StorageConsumer.


void
removeManagedDirectory(ManagedDirectory



managedDirectory)



Removes the specified ManagedDirectory



from the collection of ManagedDirectory objects



for this StorageConsumer.


void
setAvailableCapacity(double



availableCapacity)



Sets the AvailableCapacity property to the



specified value.


void
setDeviceFile(String deviceFile)



Sets the DeviceFile property to the



specified value.


void
setHasFileSystem(boolean



hasFileSystem)



Sets the HasFileSystem property to the



specified value.


void
setMountPoint(String mountPoint)



Sets the MountPoint property to the



specified value.


void
setSystemDevice(SystemDevice



systemDevice)



Sets the SystemDevice property to the



specified value.


void
setTotalCapacity(double



totalCapacity)



Sets the TotalCapacity property to the



specified value.


void
setTotalSize(double totalSize)



Sets the TotalSize property to the specified



value.


void
setType(String type)



Sets the Type property to the specified



value.


void
setUsedCapacity(double



usedCapacity)



Sets the UsedCapacity property to the



specified value.


void
setUsedPercent(double usedPercent)



Sets the UsedPercent property to the



specified value.


String
toDebugString( )



Returns a string image of the the specified



StorageConsumer.


String
toDebugString(String indent)



Returns the debug string image of the object



indented using the specified indent string.


String
toDebugString(String indent,



Vector callTree)



Returns an indented string image of the the



specified StorageConsumer.


String
toString( )



Returns the string image of this object.










[0181]

21











Methods inherited from class com.hp.clay.StprableObject

















http://srmlab.rose.hp.com/java-api/sanmgr/com/hp/clay/



StorableObject.html -



<clinit>( ), addAttribute, addDependentObjects,



attributesLoaded, cacheOnly, decode, delete, delete,



deleteDependentObjects, deleteObject,



deleteThisObjectFromCacheUnderPenaltyOfDeath,



enableZombieMonitor, encode, equals, error, error, error,



error, executeQuery, flushAttributes,



getAbstractModelClasses, getAttribute, getAttributeCount,



getAttributes, getAttributesLike, getByAttribute,



getByAttribute, getByAttribute, getClassLoader,



getConcreteModelClasses, getCount, getCount, getCount,



getDbid, getDirtyFields, getFindOrCreateLock,



getFromCache, getFromCache, getFromCache, getLock,



getLock, getModelClasses, getObjectClass,



getReferringObjectsIterator, getRelationshipIterator,



getResourceBundle, getSum, get Sum, getSum, getSum,



getSum, getTransientAttributes, hashCode, isDirty,



isFieldDirty, isLoaded, isModelClass, isZombie, load,



load, load, load, load, loadAll, loadAll, loadAll,



loadAll, loadAllAttributes, loadAllIterator,



loadAllIterator, loadAttributes, loadModelClassCatalogue,



loadReferringObjects, loadRelationship, putIntoCache,



releaseFindOrCreateLock, releaseLock,



removeAllAttributes, removeAllTransientAttributes,



removeAttribute, removeAttribute, removeFromCache,



setAccessible, setAttributesDirty, setClassLoader,



setClean, setDirty, setFieldDirty, setFieldDirty,



setResourceBundle, settingDbidUnderPenaltyOfDeath,



setWasCreated, store, storeAttributes,



storeClassSpecifics, storeDirtyObjects, toString,



wasCreated, writeXML, writeXML, writeXML, writeXML











[0182]

22











Methods inherited from class java.lang.Object

















clone, finalize, getClass, notify, notifyAll, wait, wait,



wait











[0183] Field Detail mountPoint protected String mountPoint Host-specific mount point, /usr, /home, /tmp, for example.


[0184] deviceFile protected String deviceFile Device file on which this storage consumer draws for storage. Note that this is essentially redundant with the storageBlock, but provides a loose link to the underlying storage block.


[0185] logicalStoragePools protected StorableMap logicalStoragePools The LogicalStoragePools that are associated with this StorageConsumer.


[0186] logicalStorageBlocks protected transient StorableMap logicalStorageBlocks Logical storage block from which this storage consumer draws storage resources.


[0187] managedDirectories protected transient StorableMap managedDirectories List of all managed directories within this partition.


[0188] consumptionBlocks protected transient StorableMap consumptionBlocks List of all consumption blcoks within this partition.


[0189] type protected String type The type of this storage consumer as obtained from the native platform.


[0190] UNKNOWN public static final String UNKNOWN Value used as a type of an unknown storage consumer/volume.


[0191] SWAP public static final String SWAP Value used as a type of swap space.


[0192] totalSize protected double totalSize The total size of the logical volume.


[0193] hasFileSystem protected boolean hasFileSystem If this logical volume has a file system.


[0194] totalCapacity protected double totalCapacity The total capacity for this storage consumer.


[0195] availableCapacity protected double availableCapacity The available capacity for this storage consumer.


[0196] usedCapacity protected double usedCapacity The used capacity for this storage consumer.


[0197] usedPercent protected double usedPercent The percentage of used capacity. The formula used to calculate the percentage is (used*100)/(used+available).


[0198] systemDevice protected SystemDevice systemDevice System device, i.e Host or NASDevice, to which this storage consumer belongs.


[0199] STORAGECONSUMER_ID_FIELD public static final String STORAGECONSUMER_ID_FIELD Constant representing the name of the StorageConsumer field.


[0200] MOUNTPOINT_FIELD public static final String MOUNTPOINT_FIELD Constant representing the name of the mountPoint field.


[0201] DEVICEFILE_FIELD public static final String DEVICEFILE_FIELD Constant representing the name of the deviceFile field.


[0202] TYPE_FIELD public static final String TYPE_FIELD Constant representing the name of the type field.


[0203] TOTALSIZE_FIELD public static final String TOTALSIZE_FIELD Constant representing the name of the totalSize field.


[0204] HASFILESYSTEM_FIELD public static final String HASFILESYSTEM_FIELD Constant representing the name of the hasFileSystem field.


[0205] TOTALCAPACITY_FIELD public static final String TOTALCAPACITY_FIELD Constant representing the name of the totalCapacity field.


[0206] AVAILABLECAPACITY_FIELD public static final String AVAILABLECAPACITY_FIELD Constant representing the name of the availableCapacity field.


[0207] USEDCAPACITY_FIELD public static final String USEDCAPACITY_FIELD Constant representing the name of the usedCapacity field.


[0208] USEDPERCENT_FIELD public static final String USEDPERCENT_FIELD Constant representing the name of the usedPercent field.


[0209] SYSTEMDEVICE_FIELD public static final String SYSTEMDEVICE_FIELD Constant representing the name of the systemDevice field.


[0210] Constructor Detail


[0211] StorageConsumer public StorageConsumer( ) Default constructor.


[0212] StorageConsumer protected StorageConsumer(Dbid dbid) Constructor used internally for loading.


[0213] StorageConsumer public StorageConsumer(String mountPoint, String deviceFile, String type, double totalCapacity, double usedCapacity, double availableCapacity) Constructs a new storage consumer as a local file system on the that is not associated with a system device.


[0214] Parameters:


[0215] systemDevice-The system device on which this storage consumer is located. type-The type of file system. mountPoint-The mount point of the file system. deviceFile-The device file of this file system. totalCapacity-The total capacity on this file system. This measurement is stored in bytes. usedCapacity-The used capacity on this file system. This measurement is stored in bytes. availableCapacity-The available capacity on this file system. This measurement is stored in bytes.


[0216] StorageConsumer public StorageConsumer(SystemDevice systemDevice, String type, String mountPoint, String deviceFile, double totalCapacity, double usedCapacity, double availableCapacity) Constructs a new storage consumer as a local file system on the specified system device. Note that this constructor adds the new instance to the list of device's storage consumers.


[0217] Parameters:


[0218] systemDevice-The system device on which this storage consumer is located. type-The type of file system. mountPoint-The mount point of the file system. deviceFile-The device file of this file system. totalCapacity-The total capacity on this file system. This measurement is stored in bytes. usedCapacity-The used capacity on this file system. This measurement is stored in bytes. availableCapacity-The available capacity on this file system. This measurement is stored in bytes.


[0219] StorageConsumer public StorageConsumer(SystemDevice systemDevice, String type, String mountPoint, String deviceFile, double totalSize, double totalCapacity, double usedCapacity, double availableCapacity) Constructs a new storage consumer as a local file system on the specified system device. Note that this constructor adds the new instance to the list of device's storage consumers.


[0220] Parameters:


[0221] systemDevice-The system device on which this storage consumer is located. type-The type of file system. mountPoint-The mount point of the file system. deviceFile-The device file of this file system. totalSize-The total size of the logical volume. This measurement is in bytes. totalCapacity-The total capacity on this file system. This measurement is stored in bytes. usedCapacity-The used capacity on this file system. This measurement is stored in bytes. availableCapacity-The available capacity on this file system. This measurement is stored in bytes.


[0222] Method Detail


[0223] getAvailablePercent public double getAvailablePercent( ) Returns the percentage of available capacity. The formula used to calculate the percentage is (used*100)/(used+available).


[0224] getPhysicalStorageBlocks public StorableMap getPhysicalStorageBlocks( ) Retrieves all of the PhysicalStorageBlocks associated with a particular StorageConsumer. This includes not only physical blocks directly associated with child LogicalStorageBlocks of the StorageConsumer, but also there child LogicalStorageBlocks's associated PhysicalStorageBlocks. Returns:


[0225] A map of all of the physical blocks associated with this logical block.


[0226] toString public String toString( ) Returns the string image of this object.


[0227] Overrides:


[0228] toString in class StorableObject


[0229] prepareInsert protected CachedPreparedStatement prepareInsert(ConnectionContext context) throws SQLException This method must be provided in order for the StorageConsumer object to become storable, i.e. so it can be added to the database.


[0230] Overrides:


[0231] prepareInsert in class StorableObject


[0232] prepareDelete protected CachedPreparedStatement prepareDelete(ConnectionContext context) throws SQLException This method must be provided in order for the StorageConsumer object to become storable, i.e. so it can be deleted from the database.


[0233] Overrides:


[0234] prepareDelete in class StorableObject


[0235] prepareSelect protected CachedPreparedStatement prepareSelect(ConnectionContext context) throws SQLException This method must be provided in order for the StorageConsumer object to become storable, i.e. so it can be retrieved from the database.


[0236] Overrides:


[0237] prepareSelect in class StorableObject


[0238] getMountPoint public String getMountPoint( ) Returns the value of the mountPoint property.


[0239] setMountPoint public void setMountPoint(String mountPoint) Sets the mountPoint property to the specified value.


[0240] getDeviceFile public String getDeviceFile( ) Returns the value of the deviceFile property.


[0241] setDeviceFile public void setDeviceFile(String deviceFile) Sets the DeviceFile property to the specified value.


[0242] getType public String getType( ) Returns the value of the type property.


[0243] setType public void setType(String type) Sets the Type property to the specified value.


[0244] getTotalSize public double getTotalSize( ) Returns the value of the totalSize property.


[0245] setTotalSize public void setTotalSize(double totalSize) Sets the TotalSize property to the specified value.


[0246] getHasFileSystem public boolean getHasFileSystem( ) Returns the value of the hasFileSystem property.


[0247] setHasFileSystem public void setHasFileSystem(boolean hasFileSystem) Sets the HasFileSystem property to the specified value.


[0248] getTotalCapacity public double getTotalCapacity( ) Returns the value of the totalCapacity property.


[0249] setTotalCapacity public void setTotalCapacity(double totalCapacity) Sets the totalCapacity property to the specified value.


[0250] getAvailableCapacity public double getAvailableCapacity( ) Returns the value of the availableCapacity property.


[0251] setAvailableCapacity public void setAvailableCapacity(double availableCapacity) Sets the AvailableCapacity property to the specified value.


[0252] getUsedCapacity public double getUsedCapacity( ) Returns the value of the usedCapacity property.


[0253] setUsedCapacity public void setUsedCapacity(double usedCapacity) Sets the UsedCapacity property to the specified value.


[0254] getUsedPercent public double getUsedPercent( ) Returns the value of the usedPercent property.


[0255] setUsedPercent public void setUsedPercent(double usedPercent) Sets the UsedPercent property to the specified value.


[0256] getSystemDevice public SystemDevice getSystemDevice( ) Returns the value of the systemDevice property.


[0257] setSystemDevice public void setSystemDevice(SystemDevice systemDevice) Sets the SystemDevice property to the specified value. Note that this should not be used as a means to add this object to the list of children of the SystemDevice parent. An appropriate call to addStorageConsumer, if available, should be made on the SystemDevice parent object instead.


[0258] toDebugString public String toDebugString( ) Returns a string image of the the specified StorageConsumer.


[0259] Overrides:


[0260] toDebugString in class StorableObject


[0261] toDebugString public String toDebugString(String indent) Description copied from class: StorableObject Returns the debug string image of the object indented using the specified indent string.


[0262] Overrides:


[0263] toDebugString in class StorableObject


[0264] toDebugString public String toDebugString(String indent, Vector callTree) Returns an indented string image of the the specified StorageConsumer.


[0265] Overrides:


[0266] toDebugString in class StorableObject


[0267] loadLogicalStoragePools public StorableMap loadLogicalStoragePools( ) Loads and returns the collection of LogicalStoragePool objects for this StorageConsumer.


[0268] getLogicalStoragePools public StorableMap getLogicalStoragePools( ) Returns the collection of LogicalStoragePool objects for this StorageConsumer.


[0269] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator( ) Returns the collection of LogicalStoragePool objects for this StorageConsumer.


[0270] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator(String sortFieldName, boolean isAscending) Returns the collection of LogicalStoragePool objects for this StorageConsumer.


[0271] clearLogicalStoragePools public void clearLogicalStoragePools( ) Clears the collection of LogicalStoragePool objects for this StorageConsumer.


[0272] Provided to allow applications to explicitely drop references to child LogicalStoragePool objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0273] addLogicalStoragePool public void addLogicalStoragePool(LogicalStoragePool logicalStoragePool) Adds the specified LogicalStoragePool to the collection of LogicalStoragePool objects for this StorageConsumer.


[0274] removeLogicalStoragePool public void removeLogicalStoragePool(LogicalStoragePool logicalStoragePool) Removes the specified LogicalStoragePool from the collection of LogicalStoragePool objects for this StorageConsumer.


[0275] getLogicalStoragePool public LogicalStoragePool getLogicalStoragePool(Dbid id) Returns the LogicalStoragePool with the specified ID in the collection of LogicalStoragePool objects for this StorageConsumer.


[0276] loadLogicalStorageBlocks public StorableMap loadLogicalStorageBlocks( ) Loads and returns the collection of LogicalStorageBlock objects for this StorageConsumer.


[0277] getLogicalStorageBlocks public StorableMap getLogicalStorageBlocks( ) Returns the collection of LogicalStorageBlock objects for this StorageConsumer.


[0278] getLogicalStoragePoolsIterator public StorableIterator getLogicalStorageBlocksIterator( ) Returns the collection of LogicalStorageBlock objects for this StorageConsumer.


[0279] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator(String sortFieldName, boolean isAscending) Returns the collection of LogicalStorageBlock objects for this StorageConsumer.


[0280] clearLogicalStorageBlocks public void clearLogicalStorageBlocks( ) Clears the collection of LogicalStorageBlock objects for this StorageConsumer. Provided to allow applications to explicitely drop references to child LogicalStorageBlock objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0281] addLogicalStorageBlock public void addLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Adds the specified LogicalStorageBlock to the collection of LogicalStorageBlock objects for this StorageConsumer.


[0282] removeLogicalStorageBlock public void removeLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Removes the specified LogicalStorageBlock from the collection of LogicalStorageBlock objects for this StorageConsumer.


[0283] getLogicalStorageBlock public LogicalStorageBlock getLogicalStorageBlock(Dbid id) Returns the LogicalStorageBlock with the specified ID in the collection of LogicalStorageBlock objects for this StorageConsumer.


[0284] loadManagedDirectories public StorableMap loadManagedDirectories( ) Loads and returns the collection of ManagedDirectory objects for this StorageConsumer.


[0285] getManagedDirectories public StorableMap getManagedDirectories( ) Returns the collection of ManagedDirectory objects for this StorageConsumer.


[0286] getManagedDirectoriesIterator public StorableIterator getManagedDirectoriesIterator( ) Returns the collection of ManagedDirectory objects for this StorageConsumer


[0287] getManagedDirectoriesIterator public StorableIterator


[0288] getManagedDirectoriesIterator (String sortFieldName, boolean isAscending) Returns the collection of ManagedDirectory objects for this StorageConsumer.


[0289] clearManagedDirectories public void clearManagedDirectories( ) Clears the collection of ManagedDirectory objects for this StorageConsumer.


[0290] Provided to allow applications to explicitely drop references to child ManagedDirectory objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0291] addManagedDirectory public void addManagedDirectory (ManagedDirectory managedDirectory) Adds the specified ManagedDirectory to the collection of ManagedDirectory objects for this StorageConsumer.


[0292] removeManagedDirectory public void removeManagedDirectory (ManagedDirectory managedDirectory) Removes the specified ManagedDirectory from the collection of ManagedDirectory objects for this StorageConsumer.


[0293] getManagedDirectory public ManagedDirectory getManagedDirectory (Dbid id) Returns the ManagedDirectory with the specified ID in the collection of ManagedDirectory objects for this StorageConsumer.


[0294] loadConsumptionBlocks public StorableMap loadConsumptionBlocks( ) Loads and returns the collection of ConsumptionBlock objects for this StorageConsumer.


[0295] getConsumptionBlocks public StorableMap getConsumptionBlocks( ) Returns the collection of ConsumptionBlock objects for this StorageConsumer.


[0296] getConsumptionBlocksIterator public StorableIterator getConsumptionBlocksIterator( ) Returns the collection of ConsumptionBlock objects for this StorageConsumer.


[0297] getConsumptionBlocksIterator public StorableIterator


[0298] getConsumptionBlocksIterator (String sortFieldName, boolean isAscending) Returns the collection of ConsumptionBlock objects for this StorageConsumer.


[0299] clearConsumptionBlocks public void clearConsumptionBlocks( ) Clears the collection of ConsumptionBlock objects for this StorageConsumer.


[0300] Provided to allow applications to explicitely drop references to child ConsumptionBlock objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0301] addConsumptionBlock public void addConsumptionBlock(ConsumptionBlock consumptionBlock) Adds the specified ConsumptionBlock to the collection of ConsumptionBlock objects for this StorageConsumer.


[0302] removeConsumptionBlock public void removeConsumptionBlock(ConsumptionBlock consumptionBlock) Removes the specified ConsumptionBlock from the collection of ConsumptionBlock objects for this StorageConsumer.


[0303] getConsumptionBlock public ConsumptionBlock getConsumptionBlock(Dbid id) Returns the ConsumptionBlock with the specified ID in the collection of ConsumptionBlock objects for this StorageConsumer.


[0304] getStorageConsumerListBySystemDevice public static StorableList


[0305] getStorageConsumerListBySystemDevice (SystemDevice systemDevice) Returns a list, sorted in no particular order, of StorageConsumer objects which have the systemDevice of the specified value.


[0306] getBySystemDevice public static StorableList getBySystemDevice(SystemDevice systemDevice) Deprecated. Returns the StorageConsumer which has the systemDevice of the specified value.


[0307] Immediately following is a sample template related to the logical volume DO 404 of FIG. 4, and corresponding to the immediately preceding JAVA document (class StorageConsumer).
23//--------------------------------------------------------------------------// Copyright 1999-2002 Hewlett-Packard Co., All Rights Reserved.//--------------------------------------------------------------------------/** * Abstraction of a software layer (file-system) that utilizes the storage * resources that were allocated to a system device, e.g., a {@link Host}or a * {@link NASDevice}. Besides file systems, this can also represent * swap-space, dump-space and any raw storage spaces allocated foruse by * database software, etc. */public final class StorageConsumer extends StorableObject { /** Host-specific mount point, /usr, /home, /tmp, for example. */ protected String mountPoint; /**  * Device file on which this storage consumer draws forstorage.&nbsp;  * Note that this is essentially redundant with the storageBlock,but  * provides a loose link to the underlying storage block.  */ protected String deviceFile; /**  * The {@link LogicalStoragePool LogicalStoragePools} that areassociated  * with this StorageConsumer.  */ // ::relate StorageConsumer logicalStoragePools LogicalStoragePoolstorageConsumers protected StorableMap logicalStoragePools; /**  * Logical storage block from which this storage consumer drawsstorage  * resources.  */ // ::relate StorageConsumer logicalStorageBlocksLogicalStorageBlock rootStorageConsumer protected transient StorableMap logicalStorageBlocks = null; /** List of all managed directories within this partition. */ // ::relate StorageConsumer managedDirectories ManagedDirectorystorageConsumer protected transient StorableMap managedDirectories = null; /** List of all consumption blocks within this partition. */ // ::relate StorageConsumer consumptionBlocksConsumptionBlock StorageConsumer protected transient StorableMap consumptionBlocks = null; /**  * The type of this storage consumer as obtained from the native  * platform.  */ protected String type; /** Value used as a type of an unknown storage consumer/volume.*/ public static final String UNKNOWN = “unknown”; /** Value used as a type of swap space. */ public static final String SWAP = “swap”; /** The total size of the logical volume. */ protected double totalSize; /** If this logical volume has a file system. */ protected boolean hasFileSystem; /** The total capacity for this storage consumer. */ protected double totalCapacity; /** The available capacity for this storage consumer. */ protected double availableCapacity; /** The used capacity for this storage consumer. */ protected double usedCapacity; /**  * The percentage of used capacity. The formula used to calculatethe  * percentage is (used * 100) / (used + available).  */ protected double usedPercent; /**  * System device, e.g., {@link Host} or {@link NASDevice}, to whichthis  * storage consumer belongs.  */ // ::getBy unsorted systemDevice protected SystemDevice systemDevice; /**  * Constructs a new storage consumer as a local file system on thethat is not  * associated with a system device.  *  * @param systemDevice The system device on which this storageconsumer is  * located.  * @param type The type of file system.  * @param mountPoint The mount point of the file system.  * @param deviceFile The device file of this file system.  * @param totalCapacity The total capacity on this file system. This  * measurement is stored in bytes.  * @param usedCapacity The used capacity on this file system. Thismeasurement  * is stored in bytes.  * @param availableCapacity The available capacity on this filesystem. This  * measurement is stored in bytes.  */ public StorageConsumer (String mountPoint, String deviceFile,String type,double totalCapacity,double usedCapacity, double availableCapacity) {super ( );this.type = type;this.mountPoint = mountPoint;this.deviceFile = deviceFile;this.totalCapacity = totalCapacity;this.usedCapacity = usedCapacity;this.availableCapacity = availableCapacity; } /**  * Constructs a new storage consumer as a local file system on the  * specified system device. Note that this constructor adds the new  * instance to the list of device's storage consumers.  *  * @param systemDevice The system device on which this storageconsumer is located.  * @param type The type of file system.  * @param mountPoint The mount point of the file system.  * @param deviceFile The device file of this file system.  * @param totalCapacity The total capacity on this file system. Thismeasurement  * is stored in bytes.  * @param usedCapacity The used capacity on this file system. Thismeasurement  * is stored in bytes.  * @param availableCapacity The available capacity on this filesystem. This measurement  * is stored in bytes.  */ public StorageConsumer (SystemDevice systemDevice, String type,String mountPoint, String deviceFile,double totalCapacity,double usedCapacity, double availableCapacity) {super ( );this.type = type;this.mountPoint = mountPoint;this.deviceFile = deviceFile;this.totalCapacity = totalCapacity;this.usedCapacity = usedCapacity;this.availableCapacity = availableCapacity;/* ::post-compileif (systemDevice != null) { systemDevice.addStorageConsumer (this);}::post-compile */ } /**  * Constructs a new storage consumer as a local file system on the  * specified system device. Note that this constructor adds the new  * instance to the list of device's storage consumers.  *  * @param systemDevice The system device on which this storageconsumer is located.  * @param type The type of file system.  * @param mountPoint The mount point of the file system.  * @param deviceFile The device file of this file system.  * @param totalSize The total size of the logical volume. This  * measurement is in bytes.  * @param totalCapacity The total capacity on this file system. Thismeasurement  * is stored in bytes.  * @param usedCapacity The used capacity on this file system. Thismeasurement  * is stored in bytes.  * @param availableCapacity The available capacity on this filesystem. This measurement  * is stored in bytes.  */ public StorageConsumer (SystemDevice systemDevice, String type,String mountPoint, String deviceFile,double totalSize, double totalCapacity,double usedCapacity, double availableCapacity) {super ( );this.type = type;this.mountPoint = mountPoint;this.deviceFile = deviceFile;this.totalSize = totalSize;this.totalCapacity = totalCapacity;this.usedCapacity = usedCapacity;this.availableCapacity = availableCapacity;/* ::post-compileif (systemDevice != null) { systemDevice.addStorageConsumer (this);}::post-compile */ } /**  * Returns the percentage of available capacity. The formula used tocalculate  * the percentage is (used * 100) / (used + available).  */ public double getAvailablePercent ( ) {return 0; /* ::post-compilereturn (getAvailableCapacity( ) * 100.0) /  (getUsedCapacity( ) + getAvailableCapacity( ));::post-compile */ } /**  * Retrieves all of the PhysicalStorageBlocks associated with aparticular  * StorageConsumer. This includes not only physical blocks directly  * associated with child LogicalStorageBlocks of theStorageConsumer,  * but also there child LogicalStorageBlocks's associated  * PhysicalStorageBlocks.  *  * @return A map of all of the physical blocks associated with this  * logical block.  */ /* ::post-compile public StorableMap getPhysicalStorageBlocks( ) {StorableMap physicalBlocks = new StorableMap( );Iterator logicalBlocks = getLogicalStorageBlocks( ).iterator( );while(logicalBlocks.hasNext( )) { StorableMap childPhysicalBlocks =getPhysicalBlocks((LogicalStorageBlock)logicalBlocks.next( )); physicalBlocks.importCollection(childPhysicalBlocks);}return physicalBlocks; } ::post-compile */ /**  * Recursive call that gets all of the PhysicalStorageBlocksassociated  * with a particular LogicalStorageBlock. This includes no onlyphysical  * blocks directly associated with the LogicalStorageBlock but also  * associated with any child logical storage blocks.  *  * @param logicalBlock The logical storage block for which allphysical  * storage blocks should be retreived. This must be a non-nullvalue.  *  * @return A map of all of the physical blocks associated with this  * logical block.  *  * @throws NullPointerException If the given logical block is a null.  */ /* ::post-compile private StorableMap getPhysicalBlocks (LogicalStorageBlocklogicalBlock) {StorableMap physicalBlocks = new StorableMap ( );Iterator childLogicalBlocks = logicalBlock.getLogicalStorageBlocks( ).iterator( );while(childLogicalBlocks.hasNext( )) { StorableMap childPhysicalBlocks =getPhysicalBlocks((LogicalStorageBlock)childLogicalBlocks.next( )); physicalBlocks.importCollection(childPhysicalBlocks);}physicalBlocks.importCollection(logicalBlock.getPhysicalStorageBlocks( ));return physicalBlocks; } ::post-compile */ /** Returns the string image of this object. */ /* ::post-compile public String toString( ) {return “volume ” + getDeviceFile( ) + “ mounted on ” +getMountPoint( ) +“ from ” + getSystemDevice( ); } ::post-compile */}


[0308] Immediately following is a JAVA document (referred to as class LogicalStorageBlock) corresponding to the LSB DO 406 of FIG. 4.


[0309] com.hp.sanmgr.model Class LogicalStorageBlock
3


[0310] public final class LogicalStorageBlock extends StorableObject


[0311] LogicalStorageBlocks are an OVSAM concept that represents the complex mapping performed by volume managers between the logical and physical volumes. An LogicalStorageBlock represents the aggregation of a number of storage blocks (physical or logical) with a particular relationship to create a logical piece of storage which can be used to create a storage consumer or to create another logical storage block. This representation facilitates modeling of different configurations that are possible under different logical volume managers, such as LVM, VxVM, LDM, etc.
24Field SummaryprotectedcapacitydoubleTotal storage capacity of this logical storageblock.staticCAPACITY_FIELDStringConstant representing the name of the capacityfield.static intDIRECTA logical storage block type that indicates theblock is neither mirrored or striped.staticLOGICALSTORAGEBLOCK_ID_FIELDStringConstant representing the name of theLogicalStorageBlock field.protectedlogicalStorageBlocksStorableMapLogical storage blocks that are contained withinthis storage block.static intMIRRORA logical storage block type that indicates theblock is mirrored.protectednameStringThe name associated with this logical storageblock by the volume manager.staticNAME_FIELDStringConstant representing the name of the namefield.protectedphysicalStorageBlocksStorableMapThe physical storage block's associated with thelogical storage block.static intRAID_5A logical storage block type that indicates theblock is RAID-5.protectedrootLogicalStorageBlockLogical-Parent LogicalStorageBlock.Storage-BlockstaticROOTLOGICALSTORAGEBLOCK_FIELDStringConstant representing the name of therootLogicalStorageBlock field.protectedrootStorageConsumerStorage-The StorageConsumer parent of thisConsumerLogicalStorageBlock.staticROOTSTORAGECONSUMER_FIELDStringConstant representing the name of therootStorageConsumer field.static intSTRIPEA logical storage block type that indicates theblock is striped.protectedtypeintThe method used to organize and store data onthe LogicalStorageBlock.staticTYPE_FIELDStringConstant representing the name of the type field.protectedtypeCountintAny count information associated with a type.staticTYPECOUNT_FIELDStringConstant representing the name of the typeCountfield.static intUNKNOWNA logical storage block type that indicates itexists in some ‘unknown’ state in regards to how data isstored.


[0312]

25











Fields inherited from class com.hp.clay.StorableObject

















blWritable, CACHED_OBJECTS,



NON_STORABLE_MASK,



NOT_STORED, PACKAGE_PREFIX,



ROOT_CLASS_NAME,



ROOT_CLASS_PREFIX, STORED_AS_BOOLEAN,



STORED_AS_COLLECTION, STORED_AS_DATE,



STORED_AS_DOUBLE,



STORED_AS_FLOAT, STORED_AS_INTEGER,



STORED_AS_LONG,



STORED_AS_REFERENCE, STORED_AS_STRING,



STORED_AS_TRANSIENT_COLLECTION,



STORED_OBJECTS,



XML_ATTRIBUTES_AS_ATTRIBUTES,



XML_EXPAND_AGGREGATE_REFERENCES,



XML_EXPAND_ATTRIBUTE_REFERENCES,



XML_EXPAND_SINGULAR_REFERENCES,



XML_ID_AS_ENTITIES,



XML_INCLUDE_REFERENCED_OBJECTS,



XML_SUPPRESS_ID_ATTRIBUTES,



XML_SUPPRESS_XREF_ATTRIBUTES,



XML_USE_TYPE_SPECIFIC_ENTITIES











[0313]

26











Constructor Summary



















LogicalStorageBlock( )




Default constructor.



protected
LogicalStorageBlock(Dbid dbid)




Constructor used internally for loading.




LogicalStorageBlock(String name, double




capacity, int type, int typeCount)




Creates a logical storage block that is not




associated with either a storage consumer or




a logical storage block.




LogicalStorageBlock(String name,




LogicalStorageBlock logicalStorageBlock, double




capacity, int type, int typeCount)




Creates a logical storage block which will




represent a leaf-node of a logical storage




block tree hierarchy.




LogicalStorageBlock(String name,




StorageConsumer storageConsumer, double




capacity, int type, int typeCount)




Creates a logical storage block which will




represent the root of a logical storage




block tree hierarchy.











[0314]

27











Method Summary


















void
addLogicalStorageBlock




(LogicalStorageBlock




logicalStorageBlock)




Adds the specified




LogicalStorageBlock




to the collection of




LogicalStorageBlock objects




for this LogicalStorageBlock.



void
addPhysicalStorageBlock




(PhysicalStorageBlock




physicalStorageBlock)




Adds the specified




PhysicalStorageBlock




to the collection of




PhysicalStorageBlock objects




for this LogicalStorageBlock.



void
clearLogicalStorageBlocks( )




Clears the collection of




LogicalStorageBlock objects




for this




LogicalStorageBlock.



void
clearPhysicalStorageBlocks( )




Clears the collection of




PhysicalStorageBlock objects




for this




LogicalStorageBlock.



StorableMap
getAllPhysicalStorageBlocks( )




Retrieves all of the




PhysicalStorageBlocks




associated with a




particular LogicalStorageBlock.



static StorableList
getByRootLogicalStorageBlock




(LogicalStorageBlock




rootLogicalStorageBlock)




Deprecated. Returns the




LogicalStorageBlock which has




the rootLogicalStorageBlock




of the specified value.



static StorableList
getByRootStorageConsumer




(StorageConsumer




rootStorageConsumer)




Deprecated. Returns the




LogicalStorageBlock which




has the rootStorageConsumer




of the specified value.



double
getCapacity( )




Returns the value of the




capacity property.



LogicalStorageBlock
getLogicalStorageBlock(Dbid id)




Returns the LogicalStorageBlock




with the specified ID in the




collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



static StorableList
getLogicalStorageBlockListBy-




RootLogicalStorageBlock




(LogicalStorageBlock




rootLogicalStorageBlock)




Returns a list, sorted in no




particular order, of




LogicalStorageBlock objects




which have the




rootLogicalStorageBlock of the




specified value.



static StorableList
getLogicalStorageBlockListBy-




RootStorageConsumer




(StorageConsumer




rootStorageConsumer)




Returns a list, sorted in no




particular order, of




LogicalStorageBlock objects




which have the




rootStorageConsumer of the




specified value.



StorableMap
getLogicalStorageBlocks( )




Returns the collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



StorableIterator
getLogicalStorageBlocks-




Iterator( )




Returns the collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



StorableIterator
getLogicalStorageBlocks-




Iterator(String




sortFieldName, boolean




isAscending)




Returns the collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



String
getName( )




Returns the value of the name




property.



PhysicalStorageBlock
getPhysicalStorageBlock




(Dbid id)




Returns the




PhysicalStorageBlock with




the specified ID in the




collection of




PhysicalStorageBlock objects




for this LogicalStorageBlock.



StorableMap
getPhysicalStorageBlocks( )




Returns the collection of




PhysicalStorageBlock objects for




this LogicalStorageBlock.



StorableIterator
getPhysicalStorageBlocks-




Iterator( )




Returns the collection of




PhysicalStorageBlock objects for




this LogicalStorageBlock.



StorableIterator
getPhysicalStorageBlocks-




Iterator(String




sortFieldName, boolean




isAscending)




Returns the collection of




PhysicalStorageBlock objects for




this LogicalStorageBlock.



LogicalStorageBlock
getRootLogicalStorageBlock( )




Returns the value of the




rootLogicalStorageBlock




property.



StorageConsumer
getRootStorageConsumer( )




Returns the value of the




rootStorageConsumer property.



int
getType( )




Returns the value of the




type property.



int
getTypeCount( )




Returns the value of the




typeCount property.



StorableMap
loadLogicalStorageBlocks( )




Loads and returns the




collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



StorableMap
loadPhysicalStorageBlocks( )




Loads and returns the




collection of




PhysicalStorageBlock objects for




this LogicalStorageBlock.



protected
prepareDelete



CachedPreparedStatement
(ConnectionContext context)




This method must be provided




in order for the




LogicalStorageBlock object to




become storable, i.e.



protected
prepareInsert



CachedPreparedStatement
(ConnectionContext context)




This method must be provided




in order for the




LogicalStorageBlock object to




become storable, i.e.



protected
prepareSelect



CachedPreparedStatement
(ConnectionContext context)




This method must be provided




in order for the




LogicalStorageBlock object to




become storable, i.e.



void
removeLogicalStorageBlock




(LogicalStorageBlock




logicalStorageBlock)




Removes the specified




LogicalStorageBlock from




the collection of




LogicalStorageBlock objects for




this LogicalStorageBlock.



void
removePhysicalStorageBlock




(PhysicalStorageBlock




physicalStorageBlock)




Removes the specified




PhysicalStorageBlock from




the collection of




PhysicalStorageBlock objects for




this LogicalStorageBlock.



void
setCapacity(double capacity)




Sets the Capacity property




to the specified value.



void
setName(String name)




Sets the Name property to




the specified value.



void
setRootLogicalStorageBlock




(LogicaiStorageBlock




rootLogicalStorageBlock)




Sets the RootLogicalStorageBlock




property to the specified value.



void
setRootStorageConsumer




(StorageConsumer




rootStorageConsumer)




Sets the RootStorageConsumer




property to the specified value.



void
setType(int type)




Sets the Type property to




the specified value.



void
setTypeCount(int typeCount)




Sets the TypeCount property




to the specified value.



String
toDebugString( )




Returns a string image




of the the specified




LogicalStorageBlock.



String
toDebugString(String indent)




Returns the debug string image




of the object indented using




the specified indent string.



String
toDebugString(String indent,




Vector callTree)




Returns an indented string




image of the the specified




LogicalStorageBlock.



String
toString( )




Returns the string image




of this object.











[0315]

28











Methods inherited from class com.hp.clay.StorableObject

















http://srmlab.rose.hp.com/java-api/sanmgr/com/hp/



clay/StorableObject.html -



<clinit>( ), addAttribute, addDependentObjects,



attributesLoaded, cacheOnly, decode, delete, delete,



deleteDependentObjects, deleteObject,



deleteThisObjectFromCacheUnderPenaltyOfDeath,



enableZombieMonitor, encode, equals, error, error, error,



error, executeQuery, flushAttributes,



getAbstractModelClasses, getAttribute, getAttributeCount,



getAttributes, getAttributesLike, getByAttribute,



getByAttribute, getByAttribute, getClassLoader,



getConcreteModelClasses, getCount, getCount, getCount,



getDbid, getDirtyFields, getFindOrCreateLock,



getFromCache, getFromCache, getFromCache, getLock,



getLock, getModelClasses, getObjectClass,



getReferringObjectsIterator, getRelationshipIterator,



getResourceBundle, getSum, getSum, getSum, getSum,



getSum, getTransientAttributes, hashCode, isDirty,



isFieldDirty, isLoaded, isModelClass, isZombie, load,



load, load, load, load, loadAll, loadAll, loadAll,



loadAll, loadAllAttributes, loadAllIterator,



loadAllIterator, loadAttributes, loadModelClassCatalogue,



loadReferringObjects, loadRelationship, putIntoCache,



releaseFindOrCreateLock, releaseLock,



removeAllAttributes, removeAllTransientAttributes,



removeAttribute, removeAttribute, removeFromCache,



setAccessible, setAttributesDirty, setClassLoader,



setClean, setDirty, setFieldDirty, setFieldDirty,



setResourceBundle, settingDbidUnderPenaltyOfDeath,



setWasCreated, store, storeAttributes,



storeClassSpecifics, storeDirtyObjects, toString,



wasCreated, writeXML, writeXML, writeXML, writeXML











[0316]

29











Methods inherited from class java.lang.Object

















clone, finalize, getClass, notify, notifyAll, wait, wait,



wait











[0317] Field Direct


[0318] DIRECT public static final int DIRECT A logical storage block type that indicates the block is neither mirrored or striped.


[0319] MIRROR public static final int MIRROR A logical storage block type that indicates the block is mirrored.


[0320] STRIPE public static final int STRIPE A logical storage block type that indicates the block is striped.


[0321] RAID_5 public static final int RAID_5 A logical storage block type that indicates the block is RAID-5.


[0322] UNKNOWN public static final int UNKNOWN A logical storage block type that indicates it exists in some ‘unknown’ state in regards to how data is stored.


[0323] type protected int type The method used to organize and store data on the LogicalStorageBlock. This may correspond to one of three values: DIRECT, MIRROR, AND DIRECT.


[0324] typeCount protected int typeCount Any count information associated with a type. Typically the number of mirrors or the level or RAID.


[0325] name protected String name The name associated with this logical storage block by the volume manager.


[0326] capacity protected double capacity Total storage capacity of this logical storage block. Note that this will be equal or less than the sum of the children logical storage blocks or physical storage blocks total storage capacity.


[0327] rootStorageConsumer protected StorageConsumer rootStorageConsumer The StorageConsumer parent of this LogicalStorageBlock. This will be null if the parent of this LogicalStorageBlock is another LogicalStorageBlock.


[0328] physicalStorageBlocks protected transient StorableMap physicalStorageBlocks The physical storage block's associated with the logical storage block.


[0329] logicalStorageBlocks protected transient StorableMap logicalStorageBlocks Logical storage blocks that are contained within this storage block.


[0330] rootLogicalStorageBlock protected LogicalStorageBlock rootLogicalStorageBlock Parent LogicalStorageBlock. Used when logical storage blocks comprised of several other logical storage blocks. This will be null if the parent of this LogicalStorageBlock is a StorageConsumer.


[0331] LOGICALSTORAGEBLOCK_ID_FIELD public static final String LOGICALSTORAGEBLOCK_ID_FIELD Constant representing the name of the LogicalStorageBlock field.


[0332] TYPE_FIELD public static final String TYPE_FIELD Constant representing the name of the type field.


[0333] TYPECOUNT_FIELD public static final String TYPECOUNT_FIELD Constant representing the name of the typeCount field.


[0334] NAME_FIELD public static final String NAME_FIELD Constant representing the name of the name field.


[0335] CAPACITY_FIELD public static final String CAPACITY_FIELD Constant representing the name of the capacity field.


[0336] ROOTSTORAGECONSUMER_FIELD public static final String ROOTSTORAGECONSUMER_FIELD Constant representing the name of the rootStorageConsumer field.


[0337] ROOTLOGICALSTORAGEBLOCK_FIELD public static final String ROOTLOGICALSTORAGEBLOCK_FIELD Constant representing the name of the rootLogicalStorageBlock field.


[0338] LogicalStorageBlock public LogicalStorageBlock( ) Default constructor.


[0339] LogicalStorageBlock protected LogicalStorageBlock(Dbid dbid) Constructor used internally for loading.


[0340] LogicalStorageBlock public LogicalStorageBlock(String name, double capacity, int type, int typeCount) Creates a logical storage block that is not associated with either a storage consumer or a logical storage block.


[0341] Parameters:


[0342] name-The name used by the volume manager to refer to this logical storage block. capacity-The capacity in bytes of this logical storage block. type-The type associated with this logical storage block corresponding to one of the type constants defined with this class. typeCount-The total number associated with the type. For example if the type is MIRROR the type count would correspond to the total number of mirrors, or if the type was RAID the type could would correspond to the RAID level.


[0343] LogicalStorageBlock public LogicalStorageBlock(String name, LogicalStorageBlock logicalStorageBlock, double capacity, int type, int typeCount) Creates a logical storage block which will represent a leaf-node of a logical storage block tree hierarchy.


[0344] Parameters: name-The name used by the volume manager to refer to this logical storage block. logicalStorageBlock-The parent of this logical storage block. capacity-The capacity in bytes of this logical storage block. type-The type associated with this logical storage block corresponding to one of the type constants defined with this class. typeCount-The total number associated with the type. For example if the type is MIRROR the type count would correspond to the total number of mirrors, or if the type was RAID the type could would correspond to the RAID level.


[0345] LogicalStorageBlock public LogicalStorageBlock(String name, StorageConsumer storageconsumer, double capacity, int type, int typeCount) Creates a logical storage block which will represent the root of a logical storage block tree hierarchy.


[0346] Parameters:


[0347] name-The name used by the volume manager to refer to this logical storage block. storageConsumer-The parent storage consumer for this logical storage block. capacity-The capacity in bytes of this logical storage block. type-The type associated with this logical storage block corresponding to one of the type constants defined with this class. typeCount-The total number associated with the type. For example if the type is MIRROR the type count would correspond to the total number of mirrors, or if the type was RAID the type could would correspond to the RAID level.


[0348] Method Detail .


[0349] getAllPhysicalStorageBlocks public StorableMap getAllPhysicalStorageBlocks( ) Retrieves all of the PhysicalStorageBlocks associated with a particular LogicalStorageBlock. This includes not only physical blocks directly associated with child LogicalStorageBlocks of the StorageConsumer, but also there child LogicalStorageBlocks's associated PhysicalStorageBlocks.


[0350] Returns:


[0351] A map of all of the physical blocks associated with this logical block.


[0352] toString public String toString( ) Returns the string image of this object.


[0353] Overrides:


[0354] toString in class StorableObject


[0355] prepareInsert protected CachedPreparedStatement prepareInsert(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStorageBlock object to become storable, i.e. so it can be added to the database.


[0356] Overrides:


[0357] prepareInsert in class StorableObject


[0358] prepareDelete protected CachedPreparedStatement prepareDelete(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStorageBlock object to become storable, i.e. so it can be deleted from the database.


[0359] Overrides:


[0360] prepareDelete in class StorableObject


[0361] prepareSelect protected CachedPreparedStatement prepareSelect(ConnectionContext context) throws SQLException This method must be provided in order for the LogicalStorageBlock object to become storable, i.e. so it can be retrieved from the database.


[0362] Overrides:


[0363] prepareSelect in class StorableObject


[0364] getType public int getType( ) Returns the value of the type property.


[0365] setType public void setType(int type) Sets the Type property to the specified value.


[0366] getTypeCount public int getTypeCount( ) Returns the value of the typeCount property.


[0367] setTypeCount public void setTypeCount(int typeCount) Sets the TypeCount property to the specified value.


[0368] getName public String getName( ) Returns the value of the name property.


[0369] setName public void setName(String name) Sets the Name property to the specified value.


[0370] getCapacity public double getCapacity( ) Returns the value of the capacity property.


[0371] setCapacity public void setCapacity(double capacity) Sets the Capacity property to the specified value.


[0372] getRootStorageConsumer public StorageConsumer getRootStorageConsumer( ) Returns the value of the rootStorageConsumer property.


[0373] setRootStorageConsumer public void setRootStorageConsumer(StorageConsumer rootStorageConsumer) Sets the RootStorageConsumer property to the specified value. Note that this should not be used as a means to add this object to the list of children of the RootStorageConsumer parent. An appropriate call to addLogicalStorageBlock , if available, should be made on the RootStorageConsumer parent object instead.


[0374] getRootLogicalStorageBlock public LogicalStorageBlock getRootLogicalStorageBlock( ) Returns the value of the rootLogicalStorageBlock property.


[0375] setRootLogicalStorageBlock public void setRootLogicalStorageBlock(LogicalStorageBlock rootLogicalStorageBlock) Sets the RootLogicalStorageBlock property to the specified value. Note that this should not be used as a means to add this object to the list of children of the RootLogicalStorageBlock parent. An appropriate call to addLogicalStorageBlock, if available, should be made on the RootLogicalStorageBlock parent object instead.


[0376] toDebugString public String toDebugString( ) Returns a string image of the the specified LogicalStorageBlock.


[0377] Overrides:


[0378] toDebugString in class StorableObject


[0379] toDebugString public String toDebugString(String indent) Description copied from class: StorableObject Returns the debug string image of the object indented using the specified indent string.


[0380] Overrides:


[0381] toDebugString in class StorableObject


[0382] toDebugString public String toDebugString(String indent, Vector callTree) Returns an indented string image of the the specified LogicalStorageBlock.


[0383] Overrides:


[0384] toDebugString in class StorableObject


[0385] loadPhysicalStorageBlocks public StorableMap loadPhysicalStorageBlocks( ) Loads and returns the collection of Physical StorageBlock objects for this LogicalStorageBlock.


[0386] getPhysicalStorageBlocks public StorableMap getPhysicalStorageBlocks( ) Returns the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0387] getPhysicalStorageBlocksIterator public StorableIterator getPhysicalStorageBlocksIterator( ) Returns the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0388] getPhysicalStorageBlocksIterator public StorableIterator getPhysicalStorageBlocksIterator(String sortFieldName, boolean isAscending) Returns the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0389] clearPhysicalStorageBlocks public void clearPhysicalStorageBlocks( ) Clears the collection of PhysicalStorageBlock objects for this LogicalStorageBlock. Provided to allow applications to explicitely drop references to child PhysicalStorageBlock objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0390] addPhysicalStorageBlock public void addPhysicalStorageBlock(PhysicalStorageBlock physicalStorageBlock) Adds the specified PhysicalStorageBlock to the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0391] removePhysicalStorageBlock public void removePhysicalStorageBlock(PhysicalStorageBlock physicalStorageBlock) Removes the specified PhysicalStorageBlock from the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0392] getPhysicalStorageBlock public PhysicalStorageBlock getPhysicalStorageBlock(Dbid id) Returns the PhysicalStorageBlock with the specified ID in the collection of PhysicalStorageBlock objects for this LogicalStorageBlock.


[0393] loadLogicalStorageBlocks public StorableMap loadLogicalStorageBlocks( ) Loads and returns the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0394] getLogicalStorageBlocks public StorableMap getLogicalStorageBlocks( ) Returns the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0395] getLogicalStoragePoolsIterator public StorableIterator getLogicalStorageBlocksIterator( ) Returns the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0396] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator(String sortFieldName, boolean isAscending) Returns the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0397] clearLogicalStorageBlocks public void clearLogicalStorageBlocks( ) Clears the collection of LogicalStorageBlock objects for this Logical StorageBlock. Provided to allow applications to explicitely drop references to child LogicalStorageBlock objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0398] addLogicalStorageBlock public void addLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Adds the specified LogicalStorageBlock to the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0399] removeLogicalStorageBlock public void removeLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Removes the specified LogicalStorageBlock from the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0400] getLogicalStorageBlock public LogicalStorageBlock getLogicalStorageBlock(Dbid id) Returns the LogicalStorageBlock with the specified ID in the collection of LogicalStorageBlock objects for this LogicalStorageBlock.


[0401] getLogicalStorageBlockListByRootStorageConsumer public static StorableList getLogicalStorageBlockListByRootStorageConsumer(StorageCo nsumer rootStorageConsumer) Returns a list, sorted in no particular order, of LogicalStorageBlock objects which have the rootStorageConsumer of the specified value.


[0402] getByRootStorageConsumer public static StorableList getByRootStorageConsumer(StorageConsumer rootStorageConsumer) Deprecated. Returns the LogicalStorageBlock which has the rootStorageConsumer of the specified value.


[0403] getLogicalStorageBlockListByRootLogicalStorageBlock public static StorableList getLogicalStorageBlockListByRootLogicalStorageBlock(Logic alStorageBlock rootLogicalStorageBlock) Returns a list, sorted in no particular order, of LogicalStorageBlock objects which have the rootLogicalStorageBlock of the specified value.


[0404] getByRootLogicalStorageBlock public static StorableList getByRootLogicalStorageBlock(LogicalStorageBlock rootLogicalStorageBlock) Deprecated. Returns the LogicalStorageBlock which has the rootLogicalStorageBlock of the specified value.


[0405] Immediately following is a sample template related to the LSB DO 406 of FIG. 4, and corresponding to the immediately preceding JAVA document (class LogicalStorageBlock).
30//--------------------------------------------------------------------------// Copyright 1999-2002 Hewlett-Packard Co., All Rights Reserved.//--------------------------------------------------------------------------/** * LogicalStorageBlocks are an OVSAM concept that represents thecomplex mapping * performed by volume managers between the logical and physicalvolumes. An * LogicalStorageBlock represents the aggregation of a number ofstorage blocks * (physical or logical) with a particular relationship to create a logicalpiece * of storage which can be used to create a storage consumer or tocreate another * logical storage block. This representation facilitates modeling ofdifferent * configurations that are possible under different logical volumemanagers, * such as LVM, VxVM, LDM, etc.*/public final class LogicalStorageBlock extends StorableObject { /**  * A logical storage block type that indicates the block is neithermirrored  * or striped.  */ public static final int DIRECT = 1; /** A logical storage block type that indicates the block is mirrored.*/ public static final int MIRROR = 2; /** A logical storage block type that indicates the block is striped.*/ public static final int STRIPE = 3; /**  * A logical storage block type that indicates the block is RAID-5.  */ public static final int RAID_5 = 4; /**  * A logical storage block type that indicates it exists in some‘unknown’  * state in regards to how data is stored.  */ public static final int UNKNOWN = 0; /**  * The method used to organize and store data on theLogicalStorageBlock.  * This may correspond to one of three values: DIRECT, MIRROR,AND DIRECT.  */ protected int type; /**  * Any count information associated with a type. Typically thenumber of mirrors  * or the level or RAID.  */ protected int typeCount; /**  * The name associated with this logical storage block by thevolume  * manager.   */ protected String name; /**  * Total storage capacity of this logical storage block. Note that this  * will be equal or less than the sum of the children logical storageblocks  * or physical storage blocks total storage capacity.  */ protected double capacity; /** The {@link StorageConsumer StorageConsumer} parent of thisLogicalStorageBlock.  * This will be null if the parent of this LogicalStorageBlock isanother  * LogicalStorageBlock.  */ // ::getBy unsorted rootStorageConsumer protected StorageConsumer rootStorageConsumer; /** The physical storage block's associated with the logical storageblock.*/ // ::relate LogicalStorageBlock physicalStorageBlocksPhysicalStorageBlock logicalStorageBlock protected transient StorableMap physicalStorageBlocks; /** Logical storage blocks that are contained within this storageblock. */ // ::relate LogicalStorageBlock logicalStorageBlocksLogicalStorageBlock rootLogicalStorageBlock protected transient StorableMap logicalStorageBlocks = null; /**  * Parent {@link LogicalStorageBlock LogicalStorageBlock}. Usedwhen logical storage  * blocks comprised of several other logical storage blocks. This willbe null if  * the parent of this LogicalStorageBlock is a  * {@link StorageConsumer StorageConsumer}.  */ // ::getBy unsorted rootLogicalStorageBlock protected LogicalStorageBlock rootLogicalStorageBlock; /**  * Creates a logical storage block that is not associated with either  * a storage consumer or a logical storage block.  *  * @param name The name used by the volume manager to refer tothis logical  * storage block.  * @param capacity The capacity in bytes of this logical storageblock.  * @param type The type associated with this logical storage blockcorresponding  * to one of the type constants defined with this class.  * @param typeCount The total number associated with the type.For example if  * the type is MIRROR the type count would correspond to the totalnumber of  * mirrors, or if the type was RAID the type could would correspondto the  * RAID level.  */ public LogicalStorageBlock(String name, double capacity, int type,int typeCount) {super( );this.name = name;this.rootLogicalStorageBlock = null;this.rootStorageConsumer = null;this.capacity = capacity;this.type = type;this.typeCount = typeCount; } /**  * Creates a logical storage block which will represent a leaf-node ofa  * logical storage block tree hierarchy.  *  * @param name The name used by the volume manager to refer tothis logical  * storage block.  * @param logicalStorageBlock The parent of this logical storageblock.  * @param capacity The capacity in bytes of this logical storageblock.  * @param type The type associated with this logical storage blockcorresponding  * to one of the type constants defined with this class.  * @param typeCount The total number associated with the type.For example if  * the type is MIRROR the type count would correspond to the totalnumber of  * mirrors, or if the type was RAID the type could would correspondto the  * RAID level.  */ public LogicalStorageBlock (String name, LogicalStorageBlocklogicalStorageBlock,double capacity, int type, int typeCount) {super( );this.name = name;this.rootLogicalStorageBlock = logicalStorageBlock;this.rootStorageConsumer = null;this.capacity = capacity;this.type = type;this.typeCount = typeCount;/* ::post-compileif (logicalStorageBlock != null) { logicalStorageBlock. addLogicalStorageBlock(this);}::post-compile */ } /**  * Creates a logical storage block which will represent the root of a  * logical storage block tree hierarchy.  *  * @param name The name used by the volume manager to refer tothis logical  * storage block.  * @param storageConsumer The parent storage consumer for thislogical storage  * block.  * @param capacity The capacity in bytes of this logical storageblock.  * @param type The type associated with this logical storage blockcorresponding  * to one of the type constants defined with this class.  * @param typeCount The total number associated with the type.For example if  * the type is MIRROR the type count would correspond to the totalnumber of  * mirrors, or if the type was RAID the type could would correspondto the  * RAID level.  */ public LogicalStorageBlock (String name, StorageConsumerstorageConsumer,double capacity, int type, int typeCount) {super( );this.name = name;this.rootLogicalStorageBlock = null;this.rootStorageConsumer = storageConsumer;this.capacity = capacity;this.type = type;this.typeCount = typeCount;/* ::post-compileif (storageConsumer != null) { storageConsumer.addLogicalStorageBlock(this);}::post-compile */ } /**  * Retrieves all of the PhysicalStorageBlocks associated with aparticular  * LogicalStorageBlock. This includes not only physical blocksdirectly  * associated with child LogicalStorageBlocks of theStorageConsumer,  * but also there child LogicalStorageBlocks's associated  * PhysicalStorageBlocks.  *  * @return A map of all of the physical blocks associated with this  * logical block.  */ /* ::post-compile public StorableMap getAllPhysicalStorageBlocks( ) {return getAllPhysicalBlocks(this); } ::post-compile */ /**  * Recursive call that gets all of the PhysicalStorageBlocksassociated  * with a particular LogicalStorageBlock. This includes no onlyphysical  * blocks directly associated with the LogicalStorageBlock but also  * associated with any child logical storage blocks.  *  * @param logicalBlock The logical storage block for which allphysical  * storage blocks should be retreived. This must be a non-nullvalue.  *  * @return A map of all of the physical blocks associated with this  * logical block.  *  * @throws NullPointerException If the given logical block is a null.  */ /* ::post-compile private StorableMap getAllPhysicalBlocks(LogicalStorageBlocklogicalBlock) {StorableMap physicalBlocks = new StorableMap( );Iterator childLogicalBlocks = logicalBlock.getLogicalStorageBlocks( ).iterator( );while(childLogicalBlocks.hasNext( )) { StorableMap childPhysicalBlocks =getAllPhysicalBlocks((LogicalStorageBlock)childLogicalBlocks.next( )); physicalBlocks.ImportCollection(childPhysicalBlocks);}physicalBlocks.importCollection(logicalBlock.getPhysicalStorageBlocks( ));return physicalBlocks; } ::post-compile */ /** Returns the string image of this object. */ /* ::post-compile public String toString( ) {return “logical storage block ” + getName( ); } // toString ::post-compile */} // LogicalStorageBlock


[0406] Immediately following is a JAVA document (referred to as class PhysicalStorageBlock) corresponding to the PSB DO 408 of FIG. 4.


[0407] com.hp.sanmgr.model Class PhysicalStorageBlock
4


[0408] public final class PhysicalStorageBlock extends StorableObject


[0409] The physical portion of a slice of storage on a LUN that is the physical component of a logical volume managed by a volume manager. Physical storage blocks are contiguous blocks of physical extents that reside on a HostLogicalUnit. PhysicalStorageBlocks comprise a LogicalStorageBlock which is a virtualization of storage makes up a StorageConsumer.
31Field SummaryprotectedhostLogicalUnitHostLogicalUnitThe host logical unit that this block is a part of.static StringHOSTLOGICALUNIT_FIELDConstant representing the name of thehostLogicalUnit field.protectedlogicalStorageBlockLogicalStorageBlockThe logical storage blockstatic StringLOGICALSTORAGEBLOCK_FIELDConstant representing the name of thelogicalStorageBlock field.protected StringnameThe name associated with this physical storageblock by the volume manager.static StringNAME_FIELDConstant representing the name of the namefield.static StringPHYSICALSTORAGEBLOCK_ID_FIELDConstant representing the name of thePhysicalStorageBlock field.protected doublesizeThe physical capacity of the slice on a LUN thatthis the storage block represents.static StringSIZE_FIELDConstant representing the name of the size field.


[0410]

32











Fields inherited from class com.hp.clay.StorableObject

















blWritable, CACHED_OBJECTS,



NON_STORABLE_MASK,



NOT_STORED, PACKAGE_PREFIX,



ROOT_CLASS_NAME,



ROOT_CLASS_PREFIX, STORED_AS_BOOLEAN,



STORED_AS_COLLECTION, STORED_AS_DATE,



STORED_AS_DOUBLE,



STORED_AS_FLOAT, STORED_AS_INTEGER,



STORED_AS_LONG,



STORED_AS_REFERENCE, STORED_AS_STRING,



STORED_AS_TRANSIENT_COLLECTION,



STORED_OBJECTS,



XML_ATTRIBUTES_AS_ATTRIBUTES,



XML_EXPAND_AGGREGATE_REFERENCES,



XML_EXPAND_ATTRIBUTE_REFERENCES,



XML_EXPAND_SINGULAR_REFERENCES,



XML_ID_AS_ENTITIES,



XML_INCLUDE_REFERENCED_OBJECTS,



XML_SUPPRESS_ID_ATTRIBUTES,



XML_SUPPRESS_XREF_ATTRIBUTES,



XML_USE_TYPE_SPECIFIC_ENTITIES











[0411]

33











Constructor Summary



















PhysicalStorageBlock( )




Default constructor.



protected
PhysicalStorageBlock(Dbid dbid)




Constructor used internally for loading.




PhysicalStorageBlock(HostLogicalUnit




hostLogicalUnit, double size)




Creates a new PhysicalStorageBlock that




is not associated with any logical storage




unit initially.




PhysicalStorageBlock(HostLogicalUnit




hostLogicalUnit, LogicalStorageBlock




logicalStorageBlock, String name, double size)




Creates a new PhysicalStorageBlock associated




with the given host logical unit and logical




storage block.











[0412]

34











Method Summary
















static
getByHostLogicalUnit(HostLogicalUnit


StorableList
hostLogicalUnit)



Deprecated. Returns the



PhysicalStorageBlock which has the hostLogicalUnit



of the specified value.


static
getByLogicalStorageBlock(LogicalStorageBlock


StorableList
logicalStorageBlock)



Deprecated. Returns the



PhysicalStorageBlock which has the



logicalStorageBlock of the specified value.


Host-
getHostLogicalUnit( )


LogicalUnit
Returns the value of the hostLogicalUnit



property.


Logical-
getLogicalStorageBlock( )


Storage-
Returns the value of the logicalStorageBlock


Block
property.


String
getName( )



Returns the value of the name property.


static
getPhysicalStorageBlockListByHostLogicalUnit


StorableList
(HostLogicalUnit hostLogicalUnit)



Returns a list, sorted in no particular order, of



PhysicalStorageBlock objects which have the



hostLogicalUnit of the specified value.


static
getPhysicalStorageBlockListByLogicalStorageBlock


StorableList
(LogicalStorageBlock logicalStorageBlock)



Returns a list, sorted in no particular order, of



PhysicalStorageBlock objects which have the



logicalStorageBlock of the specified value.


double
getSize( )



Returns the value of the size property.


protected
prepareDelete(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for the


Statement
PhysicalStorageBlock object to become storable, i.e.


protected
prepareInsert(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for the


Statement
PhysicalStorageBlock object to become storable, i.e.


protected
prepareSelect(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in order for the


Statement
PhysicalStorageBlock object to become storable, i.e.


void
setHostLogicalUnit(HostLogicalUnit



hostLogicalUnit)



Sets the HostLogicalUnit property to the



specified value.


void
setLogicalStorageBlock(LogicalStorageBlock



logicalStorageBlock)



Sets the LogicalStorageBlock property to the



specified value.


void
setName(String name)



Sets the Name property to the specified value.


void
setSize(double size)



Sets the Size property to the specified value.


String
toDebugString( )



Returns a string image of the the specified



PhysicalStorageBlock.


String
toDebugString(String indent)



Returns the debug string image of the object



indented using the specified indent string.


String
toDebugString(String indent, Vector



callTree)



Returns an indented string image of the the



specified PhysicalStorageBlock.


String
toString( )



Returns the string image of this object.










[0413]

35











Methods inherited from class com.hp.clay.StorableObject

















http://srmlab.rose.hp.com/java-api/sanmgr/com/hp/



clay/StorableObject.html -



<clinit>( ), addAttribute, addDependentObjects,



attributesLoaded, cacheOnly, decode, delete, delete,



deleteDependentObjects, deleteObject,



deleteThisObjectFromCacheUnderPenaltyOfDeath,



enableZombieMonitor, encode, equals, error, error, error,



error, executeQuery, flushAttributes,



getAbstractModelClasses, getAttribute, getAttributeCount,



getAttributes, getAttributesLike, getByAttribute,



getByAttribute, getByAttribute, getClassLoader,



getConcreteModelClasses, getCount, getCount, getCount,



getDbid, getDirtyFields, getFindOrCreateLock,



getFromCache, getFromCache, getFromCache, getLock,



getLock, getModelClasses, getObjectClass,



getReferringObjectsIterator, getRelationshipIterator,



getResourceBundle, getSum, getSum, getSum, getSum,



getSum, getTransientAttributes, hashCode, isDirty,



isFieldDirty, isLoaded, isModelClass, isZombie, load,



load, load, load, load, loadAll, loadAll, loadAll,



loadAll, loadAllAttributes, loadAllIterator,



loadAllIterator, loadAttributes, loadModelClassCatalogue,



loadReferringObjects, loadRelationship, putIntoCache,



releaseFindOrCreateLock, releaseLock,



removeAllAttributes, removeAllTransientAttributes,



removeAttribute, removeAttribute, removeFromCache,



setAccessible, setAttributesDirty, setClassLoader,



setClean, setDirty, setFieldDirty, setFieldDirty,



setResourceBundle, settingDbidUnderPenaltyOfDeath,



setWasCreated, store, storeAttributes,



storeClassSpecifics, storeDirtyObjects, toString,



wasCreated, writeXML, writeXML, writeXML, writeXML











[0414]

36











Methods inherited from class java.lang.Object

















clone, finalize, getClass, notify, notifyAll, wait, wait,



wait











[0415] Field Detail


[0416] name protected String name The name associated with this physical storage block by the volume manager.


[0417] hostLogicalUnit protected HostLogicalUnit hostLogicalUnit The host logical unit that this block is a part of.


[0418] logicalStorageBlock protected LogicalStorageBlock logicalStorageBlock The logical storage block


[0419] size protected double size The physical capacity of the slice on a LUN that this the storage block represents. This value is in bytes.


[0420] PHYSICALSTORAGEBLOCK_ID_FIELD public static final String PHYSICALSTORAGEBLOCK_ID_FIELD Constant representing the name of the PhysicalStorageBlock field.


[0421] NAME_FIELD public static final String NAME_FIELD Constant representing the name of the name field.


[0422] HOSTLOGICALUNIT_FIELD public static final String HOSTLOGICALUNIT_FIELD Constant representing the name of the hostLogicalUnit field.


[0423] LOGICALSTORAGEBLOCK_FIELD public static final String LOGICALSTORAGEBLOCK_FIELD Constant representing the name of the logicalStorageBlock field.


[0424] SIZE_FIELD public static final String SIZE_FIELD Constant representing the name of the size field.


[0425] -Constructor Detail PhysicalStorageBlock public PhysicalStorageBlock( ) Default constructor.


[0426] PhysicalStorageBlock protected PhysicalStorageBlock(Dbid dbid) Constructor used internally for loading.


[0427] PhysicalStorageBlock public PhysicalStorageBlock(HostLogicalUnit hostLogicalUnit, LogicalStorageBlock logicalStorageBlock, String name, double size) Creates a new PhysicalStorageBlock associated with the given host logical unit and logical storage block.


[0428] Parameters:


[0429] hostLogicalUnit-The host logical unit that this physical storage block is associated with. logicalStorageBlock-The logical storage block that this physical storage block is associated with. name-The name that the volume manager uses to refer to this physical storage block. size-The physical capacity of the slice on a LUN that this physical storage block represents. This is value is in bytes.


[0430] PhysicalStorageBlock public PhysicalStorageBlock(HostLogicalUnit hostLogicalUnit, double size) Creates a new PhysicalStorageBlock that is not associated with any logical storage unit initially. The physical storage block must be added to the appropriate logical storage unit should be aassociated with the given host logical unit and logical storage block.


[0431] Parameters: nostLogicalUnit-The host logical unit that this physical storage block is associated with. logicalStorageBlock-The logical storage block that this physical storage block is associated with. size-The physical capacity of the slice on a LUN that this physical storage block represents. This is value is in bytes. UniqueId-The unique id of this physical storage block.


[0432]


[0433] toString public String toString( ) Returns the string image of this object.


[0434] Overrides:


[0435] toString in class StorableObject


[0436] prepareInsert protected CachedPreparedStatement prepareInsert(ConnectionContext context) throws SQLException This method must be provided in order for the Physical StorageBlock object to become storable, i.e. so it can be added to the database.


[0437] Overrides:


[0438] prepareInsert in class StorableObject


[0439] prepareDelete protected CachedPreparedStatement prepareDelete(ConnectionContext context) throws SQLException This method must be provided in order for the PhysicalStorageBlock object to become storable, i.e. so it can be deleted from the database.


[0440] Overrides:


[0441] prepareDelete in class StorableObject


[0442] prepareSelect protected CachedPreparedStatement prepareSelect(ConnectionContext context) throws SQLException This method must be provided in order for the PhysicalStorageBlock object to become storable, i.e. so it can be retrieved from the database.


[0443] Overrides:


[0444] prepareSelect in class StorableObject


[0445] getName public String getName( ) Returns the value of the name property.


[0446] setName public void setName(String name) Sets the Name property to the specified value.


[0447] getHostLogicalUnit public HostLogicalUnit getHostLogicalUnit( ) Returns the value of the hostLogicalUnit property.


[0448] setHostLogicalUnit public void setHostLogicalUnit(HostLogicalUnit hostLogicalUnit) Sets the HostLogicalUnit property to the specified value. Note that this should not be used as a means to add this object to the list of children of the HostLogicalUnit parent. An appropriate call to addPhysicalStorageBlock, if available, should be made on the HostLogicalUnit parent object instead.


[0449] getLogicalStorageBlock public LogicalStorageBlock getLogicalStorageBlock( ) Returns the value of the logicalStorageBlock property.


[0450] setLogicalStorageBlock public void setLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Sets the LogicalStorageBlock property to the specified value. Note that this should not be used as a means to add this object to the list of children of the LogicalStorageBlock parent. An appropriate call to addPhysicalStorageBlock, if available, should be made on the LogicalStorageBlock parent object instead.


[0451] getSize public double getSize( ) Returns the value of the size property.


[0452] setSize public void setSize(double size) Sets the Size property to the specified value.


[0453] toDebugString public String toDebugString( ) Returns a string image of the the specified PhysicalStorageBlock.


[0454] Overrides:


[0455] toDebugString in class StorableObject


[0456] toDebugString public String toDebugString(String indent) Description copied from class: StorableObject Returns the debug string image of the object indented using the specified indent string.


[0457] Overrides:


[0458] toDebugString in class StorableObject


[0459] toDebugString public String toDebugString(String indent, Vector callTree) Returns an indented string image of the the specified PhysicalStorageBlock.


[0460] Overrides:


[0461] toDebugString in class StorableObject


[0462] getPhysicalStorageBlockListByHostLogicalUnit public static StorableList getPhysicalStorageBlockListByHostLogicalUnit(HostLogicalU nit hostLogicalUnit) Returns a list, sorted in no particular order, of Physical StorageBlock objects which have the hostLogicalUnit of the specified value.


[0463] getByHostLogicalUnit public static StorableList getByHostLogicalUnit(HostLogicalUnit hostLogicalUnit) Deprecated. Returns the PhysicalStorageBlock which has the hostLogical Unit of the specified value.


[0464] getPhysicalStorageBlockListByLogicalStorageBlock public static StorableList getPhysicalStorageBlockListByLogicalStorageBlock(LogicalS torageBlock logicalStorageBlock) Returns a list, sorted in no particular order, of PhysicalStorageBlock objects which have the logicalStorageBlock of the specified value.


[0465] getByLogicalStorageBlock public static StorableList getByLogicalStorageBlock(LogicalStorageBlock logicalStorageBlock) Deprecated. Returns the PhysicalStorageBlock which has the logicalStorageBlock of the specified value.


[0466] Immediately following is a sample template related to the PSB DO 408 of FIG. 4, and corresponding to the immediately preceding JAVA document (class PhysicalStorageBlock).
37//--------------------------------------------------------------------------// Copyright 2002 Hewlett-Packard Co., All Rights Reserved.//--------------------------------------------------------------------------/** * The physical portion of a slice of storage on a LUN that is thephysical * component of a logical volume managed by a volume manager.Physical * storage blocks are contiguous blocks of physical extents that reside * on a {@link HostLogicalUnit HostLogicalUnit}. PhysicalStorageBlocks * comprise a {@link LogicalStorageBlock LogicalStorageBlock} whichis * a virtualization of storage makes up a * {@link StorageConsumer StorageConsumer}.*/public final class PhysicalStorageBlock extends StorableObject { /**  * The name associated with this physical storage block by thevolume  * manager.  */  protected String name;  /** The host logical unit that this block is a part of. */  // ::getBy unsorted hostLogicalUnit  protected HostLogicalUnit hostLogicalUnit;  /** The logical storage block */  // ::getBy unsorted logicalStorageBlock  protected LogicalStorageBlock logicalStorageBlock;  /**  * The physical capacity of the slice on a LUN that this the storageblock  * represents. This value is in bytes.  */  protected double size;  /**  * Creates a new PhysicalStorageBlock associated with the  * given host logical unit and logical storage block.  *  * @param hostLogicalUnit The host logical unit that this  * physical storage block is associated with.  * @param logicalStorageBlock The logical storage block that  * this physical storage block is associated with.  * @param name The name that the volume manager uses to referto this  * physical storage block.  * @param size The physical capacity of the slice on a LUN that  * this physical storage block represents. This is value is in  * bytes.  */  public PhysicalStorageBlock(HostLogicalUnit hostLogicalUnit,LogicalStorageBlock logicalStorageBlock,String name,double size) {super( );this.hostLogicalUnit = hostLogicalUnit;this.logicalStorageBlock = logicalStorageBlock;this.name = name;this.size = size;/* ::post-compileif (logicalStorageBlock != null) {  logicalStorageBlock.addPhysicalStorageBlock(this);}::post-compile *//* ::post-compileif (hostLogicalUnit != null) {  hostLogicalUnit.addPhysicalStorageBlock(this);}::post-compile */  }  /**  * Creates a new PhysicalStorageBlock that is not associated with  * any logical storage unit initially. The physical storage block  * must be added to the appropriate logical storage unit  * should be associated with the  * given host logical unit and logical storage block.  *  * @param hostLogicalUnit The host logical unit that this  * physical storage block is associated with.  * @param logicalStorageBlock The logical storage block that  * this physical storage block is associated with.  * @param size The physical capacity of the slice on a LUN that  * this physical storage block represents. This is value is in  * bytes.  * @param uniqueId The unique id of this physical storage block.  */  public PhysicalStorageBlock(HostLogicalUnit hostLogicalUnit,double size) {super( );this.hostLogicalUnit = hostLogicalUnit;this.logicalStorageBlock = null;this.name = null;this.size = size;/* ::post-compileif(hostLogicalUnit != null) {  hostLogicalUnit.addPhysicalStorageBlock(this);}::post-compile */  }  /** Returns the string image of this object. */  /* ::post-compile  public String toString( ) {return “physical storage block ” + getName( );  } // toString  ::post-compile */}


[0467] Immediately following is a JAVA document (referred to as class HostLogicalUnit) corresponding to the PSB DO 410 of FIG. 4.


[0468] com.hp.sanmgr.model Class HostLogicalUnit
5


[0469] All Implemented Interfaces:


[0470] ManagementPathIF public final class HostLogicalUnit extends StorableObject implements ManagementPathIF


[0471] Class representing Host's view of a logical unit (LUN). It is associated with an actual logical unit and has properties which characterize how the host sees that LUN. Those properties include hardware path, device file, etc.
38Field Summarystatic intALLOCATER_LU_ASSIGNEDstatic intALLOCATER_LU_NOT_ASSIGNEDstatic intALLOCATER_LU_NOT_CONTROLLEDValues returned from allocaterLunStatus whichdescribes the allocater filtering state of thisparticular host-lu visibility relationshipstatic intALLOCATER_UNDEFINEDstatic intARRAY_CONTROLLERstatic intCDROM_DEVICEstatic intCOMM_DEVICEprotecteddeviceFileStringThe host-specific device file for this LUN.static StringDEVICEFILE_FIELDConstant representing the name of the deviceFilefield.static intDIRECT_ACCESS_DEVICEstatic intENCLOSURE_SERVICESstatic intFC_SCSI_MUXstatic intFC_SWITCHprotectedhbaNameStringThe hba name that this associated with this LUNstatic StringHBANAME_FIELDConstant representing the name of the hbaNamefield.static StringHOSTLOGICALUNIT_ID_FIELDConstant representing the name of theHostLogicalUnit field.protectedhwPathStringThe hardware-path (HBA, Port, etc) encoding.static StringHWPATH_FIELDConstant representing the name of the hwPathfield.protectedlinksStorableMapprotectedlogicalStoragePoolsStorableMapThe LogicalStoragePools that areassociated with this HostLogicalUnit.protectedlogicalUnitLogicalUnitThe logical unit with which this view isassociated.static StringLOGICALUNIT_FIELDConstant representing the name of thelogicalUnit field.protectedlogicalUnitProviderLogicalUnit-Providerstatic StringLOGICALUNITPROVIDER_FIELDConstant representing the name of thelogicalUnitProvider field.static intMEDIUM_CHANGER_DEVICEprotectednodeNodeThe node through which the HLU isassociated withstatic StringNODE_FIELDConstant representing the name of the node field.static intOPTICAL_MEMORY_DEVICEprotectedpathStringPath to hold non-standard formatted path string,ie other than: SCSI | hostname | devicefilestatic StringPATH_FIELDConstant representing the name of the path field.protected intpathStatusThe path statusstatic StringPATHSTATUS_FIELDConstant representing the name of the pathStatusfield.protectedphysicalStorageBlocksStorableMapThe physical storage block's associated with thehost logical unit.static intPRINTER_DEVICEprotected intpriorityThe path prioritystatic StringPRIORITY_FIELDConstant representing the name of the priorityfield.static intPROCESSOR_DEVICEstatic intSCANNER_DEVICEstatic intSEQUENTIAL_ACCESS_DEVICEprotecteduniqueIdStringThis is a unique IDstatic StringUNIQUEID_FIELDConstant representing the name of the uniqueIdfield.static intUNKNOWN_DEVICESome well-known enumerations of differentHost Logical Unit types.static intWRITE_ONCE_DEVICE


[0472]

39











Fields inherited from class com.hp.clay.StorableObject

















blWritable, CACHED_OBJECTS,



NON_STORABLE_MASK,



NOT_STORED, PACKAGE_PREFIX,



ROOT_CLASS_NAME,



ROOT_CLASS_PREFIX, STORED_AS_BOOLEAN,



STORED_AS_COLLECTION, STORED_AS_DATE,



STORED_AS_DOUBLE,



STORED_AS_FLOAT, STORED_AS_INTEGER,



STORED_AS_LONG,



STORED_AS_REFERENCE, STORED_AS_STRING,



STORED_AS_TRANSIENT_COLLECTION,



STORED_OBJECTS,



XML_ATTRIBUTES_AS_ATTRIBUTES,



XML_EXPAND_AGGREGATE_REFERENCES,



XML_EXPAND_ATTRIBUTE_REFERENCES,



XML_EXPAND_SINGULAR_REFERENCES,



XML_ID_AS_ENTITIES,



XML_INCLUDE_REFERENCED_OBJECTS,



XML_SUPPRESS_ID_ATTRIBUTES,



XML_SUPPRESS_XREF_ATTRIBUTES,



XML_USE_TYPE_SPECIFIC_ENTITIES











[0473]

40











Fields inherited from interface com.hp.sanmgr.model.ManagementPathIF

















DOWN, NOTAPPLICABLE, UNKNOWN, UP











[0474]

41











Constructor Summary



















HostLogicalUnit( )




Default constructor.



protected
HostLogicalUnit(Dbid dbid)




Constructor used internally for loading.




HostLogicalUnit(LogicalUnitProvider




logicalUnitProvider, LogicalUnit logicalUnit,




String deviceFile, String hwPath, Node node)




Creates a new view of the given logical unit




with the specified parameters.











[0475]

42











Method Summary
















void
addLink(Link link)



Adds the specified Link to the



collection of Link objects for this



HostLogicalUnit.


void
addLogicalStoragePool(LogicalStoragePool



logicalStoragePool)



Adds the specified



LogicalStoragePool to the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


void
addPhysicalStorageBlock(PhysicalStorageBlock



physicalStorageBlock)



Adds the specified



PhysicalStorageBlock to the collection



of PhysicalStorageBlock objects for this



HostLogicalUnit.


int
allocaterLunStatus( )



Provides the allocater filtering



status for this particular Host-LU



visibility relationship


void
clearLinks( )



Clears the collection of Link



objects for this HostLogicalUnit.


void
clearLogicalStoragePools( )



Clears the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


void
clearPhysicalStorageBlocks( )



Clears the collection of



PhysicalStorageBlock objects for this



HostLogicalUnit.


static
findOrCreate(String


Host-
uniqueId)


LogicalUnit
Deprecated. Returns an



instance of the HostLogicalUnit class.



The object is either found using either of



the specified unique parameters or is



created using all of those unique



parameters. This is performed as an



atomic operation within the bounds of



the same connection context.


static
findOrCreateHostLogicalUnit(String uniqueId)


Host-
Returns an instance of the


LogicalUnit
HostLogicalUnit class.


static
getByDeviceFile(String


StorableList
deviceFile)



Deprecated. Returns the



HostLogicalUnit which has the



deviceFile of the specified value.


static
getByHbaName(String


StorableList
hbaName)



Deprecated. Returns the



HostLogicalUnit which has the



hbaName of the specified value.


static
getByLogicalUnit(LogicalUnit


StorableList
logicalUnit)



Deprecated. Returns the



HostLogicalUnit which has the



logicalUnit of the specified value.


static
getByLogicalUnitProvider(LogicalUnitProvider


StorableList
logicalUnitProvider)



Deprecated. Returns the



HostLogicalUnit which has the



logicalUnitProvider of the specified



value.


static
getByUniqueId(String


Host-
uniqueId)


LogicalUnit
Deprecated. Returns the



HostLogicalUnit which has the



uniqueId of the specified value.


Device
getDevice( )



Helper method that will return



the Device referencing this


String
getDeviceFile( )



Returns the value of the



deviceFile property.


String
getHbaName( )



Returns the value of the



hbaName property.


Host
getHost( )



Helper method that will retrieve



the Host via the Node


static
getHostLogicalUnit(SystemDevice


Host-
device, String deviceFile)


LogicalUnit
Gets the HostLogicalUnit for the



given system device and device file.


static
getHostLogicalUnitByUniqueId(String


Host-
uniqueId)


LogicalUnit
Returns the HostLogicalUnit



which has the uniqueId of the specified



value.


static
getHostLogicalUnitListByDeviceFile


StorableList
(String deviceFile)



Returns a list, sorted in no



particular order, of HostLogicalUnit



objects which have the deviceFile of the



specified value.


static
getHostLogicalUnitListByHbaName


StorableList
(String hbaName)



Returns a list, sorted in no



particular order, of HostLogicalUnit



objects which have the hbaName of the



specified value.


static
getHostLogicalUnitListByLogicalUnit


StorableList
(LogicalUnit logicalUnit)



Returns a list, sorted in no



particular order, of HostLogicalUnit



objects which have the logicalUnit of



the specified value.


static
getHostLogicalUnitListByLogicalUnitProvider


StorableList
(LogicalUnitProvider logicalUnit Provider)



Returns a list, sorted in no



particular order, of HostLogicalUnit



objects which have the



logicalUnitProvider of the specified



value.


String
getHwPath( )



Returns the value of the hwPath



property.


Link
getLink(Dbid id)



Returns the Link with the



specified ID in the collection of Link



objects for this HostLogicalUnit.


StorableMap
getLinks( )



Returns the collection of Link



objects for this HostLogicalUnit.


Storable-
getLinksIterator( )


Iterator
Returns the collection of Link



objects for this HostLogicalUnit.


Storable-
getLinksIterator(String


Iterator
sortFieldName, boolean



isAscending)



Returns the collection of Link



objects for this HostLogicalUnit.


Logical-
getLogicalStoragePool(Dbid


StoragePool
id)



Returns the LogicalStoragePool



with the specified ID in the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


StorableMap
getLogicalStoragePools( )



Returns the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


Storable-
getLogicalStoragePoolsIterator( )


Iterator
Returns the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


Storable-
getLogicalStoragePoolsIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of



LogicalStoragePool objects for this



HostLogicalUnit.


LogicalUnit
getLogicalUnit( )



Returns the value of the



logicalUnit property.


LogicalUnit-
getLogicalUnitProvider( )


Provider
Returns the value of the



logicalUnitProvider property.


Node
getNode( )



Returns the value of the node



property.


String
getPath( )



Returns the value of the path



property.


int
getPathStatus( )



Returns the value of the



pathStatus property.


Physical-
getPhysicalStorageBlock(Dbid id)


Storage-
Returns the


Block
PhysicalStorageBlock with the specified



ID in the collection of



PhysicalStorageBlock objects for this



HostLogicalUnit.


StorableMap
getPhysicalStorageBlocks( )



Returns the collection of



PhysicalStorageBlock objects for this



HostLogicalUnit.


Storable-
getPhysicalStorageBlocksIterator( )


Iterator
Returns the collection of



PhysicalStorageBlock objects for this



HostLogicalUnit.


Storable-
getPhysicalStorageBlocksIterator(String


Iterator
sortFieldName, boolean isAscending)



Returns the collection of



PhysicalStorageBlock objects for this



HostLogicalUnit.


int
getPriority( )



Returns the value of the priority



property.


String
getUniqueId( )



Returns the value of the



uniqueId property.


StorableMap
loadLinks( )



Loads and returns the collection



of Link objects for this



HostLogicalUnit.


StorableMap
loadLogicalStoragePools( )



Loads and returns the collection



of LogicalStoragePool objects for this



HostLogicalUnit.


StorableMap
loadPhysicalStorageBlocks( )



Loads and returns the collection



of PhysicalStorageBlock objects for this



HostLogicalUnit.


protected
prepareDelete(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in


Statement
order for the HostLogicalUnit object to



become storable, i.e.


protected
prepareInsert(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in


Statement
order for the HostLogicalUnit object to



become storable, i.e.


protected
prepareSelect(ConnectionContext


Cached-
context)


Prepared-
This method must be provided in


Statement
order for the HostLogicalUnit object to



become storable, i.e.


void
removeLink(Link link)



Removes the specified Link



from the collection of Link objects for



this HostLogicalUnit.


void
removeLogicalStoragePool(LogicalStoragePool



logicalStoragePool)



Removes the specified



LogicalStoragePool from the collection



of LogicalStoragePool objects for this



HostLogicalUnit.


void
removePhysicalStorageBlock(PhysicalStorageBlock



PhysicalStorageBlock)



Removes the specified



PhysicalStorageBlock from the



collection of PhysicalStorageBlock



objects for this HostLogicalUnit.


void
setDeviceFile(String



deviceFile)



Sets the DeviceFile property to



the specified value.


void
setHbaName(String hbaName)



Sets the HbaName property to



the specified value.


void
setHwPath(String hwPath)



Sets the HwPath property to the



specified value.


void
setLogicalUnit(LogicalUnit



logicalUnit)



Sets the LogicalUnit property to



the specified value.


void
setLogicalUnitProvider(LogicalUnitProvider



logicalUnitProvider)



Sets the LogicalUnitProvider



property to the specified value.


void
setNode(Node node)



Sets the Node property to the



specified value.


void
setPath(String path)



Sets the Path property to the



specified value.


void
setPathStatus(int pathStatus)



Sets the PathStatus property to



the specified value.


void
setPriority(int priority)



Sets the Priority property to the



specified value.


void
setUniqueId(String



uniqueId)



Sets the UniqueId property to



the specified value.


String
toDebugString( )



Returns a string image of the the



specified HostLogicalUnit.


String
toDebugString(String



indent)



Returns the debug string image



of the object indented using the



specified indent string.


String
toDebugString(String



indent, Vector callTree)



Returns an indented string image



of the the specified HostLogicalUnit.


String
toString( )



Returns the string image of this



object.










[0476]

43











Methods inherited from class com.hp.clay.StorableObject

















http://srmlab.rose.hp.com/java-api/sanmgr/com/hp/clay/StorableObject.html -



<clinit>( ), addAttribute, addDependentObjects,



attributesLoaded, cacheOnly, decode, delete, delete,



deleteDependentObjects, deleteObject,



deleteThisObjectFromCacheUnderPenaltyOfDeath,



enableZombieMonitor, encode, equals, error, error, error,



error, executeQuery, flushAttributes,



getAbstractModelClasses, getAttribute, getAttributeCount,



getAttributes, getAttributesLike, getByAttribute,



getByAttribute, getByAttribute, getClassLoader,



getConcreteModelClasses, getCount, getCount, getCount,



getDbid, getDirtyFields, getFindOrCreateLock,



getFromCache, getFromCache, getFromCache, getLock,



getLock, getModelClasses, getObjectClass,



getReferringObjectsIterator, getRelationshipIterator,



getResourceBundle, getSum, getSum, getSum, getSum,



getSum, getTransientAttributes, hashCode, isDirty,



isFieldDirty, isLoaded, isModelClass, isZombie, load,



load, load, load, load, loadAll, loadAll, loadAll,



loadAll, loadAllAttributes, loadAllIterator,



loadAllIterator, loadAttributes, loadModelClassCatalogue,



loadReferringObjects, loadRelationship, putIntoCache,



releaseFindOrCreateLock, releaseLock,



removeAllAttributes, removeAllTransientAttributes,



removeAttribute, removeAttribute, removeFromCache,



setAccessible, setAttributesDirty, setClassLoader,



setClean, setDirty, setFieldDirty, setFieldDirty,



setResourceBundle, settingDbidUnderPenaltyOfDeath,



setWasCreated, store, storeAttributes,



storeClassSpecifics, storeDirtyObjects, toString,



wasCreated, writeXML, writeXML, writeXML, writeXML











[0477]

44











Methods inherited from class java.lang.Object

















clone, finalize, getClass, notify, notifyAll, wait, wait,



wait











[0478] Field Detail


[0479] UNKNOWN_DEVICE public static final int UNKNOWN_DEVICE Some well-known enumerations of different Host Logical Unit types. These names are taken from the Dial External Interface Doc for DeviceType setting of the LunEntity.


[0480] DIRECT_ACCESS_DEVICE public static final int DIRECT_ACCESS_DEVICE


[0481] SEQUENTIAL_ACCESS_DEVICE public static final int SEQUENTIAL_ACCESS_DEVICE


[0482] PRINTER_DEVICE public static final int PRINTER_DEVICE


[0483] PROCESSOR_DEVICE public static final int PROCESSOR_DEVICE


[0484] WRITE_ONCE_DEVICE public static final int WRITE_ONCE_DEVICE


[0485] CDROM_DEVICE public static final int CDROM_DEVICE


[0486] SCANNER_DEVICE public static final int SCANNER_DEVICE


[0487] OPTICAL_MEMORY_DEVICE public static final int OPTICAL_MEMORY_DEVICE


[0488] MEDIUM_CHANGER_DEVICE public static final int MEDIUM_CHANGER_DEVICE


[0489] COMM_DEVICE public static final int COMM_DEVICE


[0490] ARRAY_CONTROLLER public static final int ARRAY-CONTROLLER


[0491] ENCLOSURE_SERVICES public static final int ENCLOSURE_SERVICES


[0492] FC_SCSI_MUX public static final int FC_SCSI_NUX


[0493] FC_SWITCH public static final int FC_SWITCH


[0494] ALLOCATER_LU_NOT_CONTROLLED public static final int ALLOCATER_LU_NOT_CONTROLLED Values returned from allocaterLunStatus which describes the allocater filtering state of this particular host-lu visibility relationship


[0495] ALLOCATER_LU_ASSIGNED public static final int ALLOCATER_LU_ASSIGNED


[0496] ALLOCATER_LU_NOT_ASSIGNED public static final int ALLOCATER_LU_NOT_ASSIGNED


[0497] ALLOCATER_UNDEFINED public static final int ALLOCATER_UNDEFINED


[0498] logicalUnit protected LogicalUnit logicalUnit The logical unit with which this view is associated.


[0499] logicalUnitProvider protected LogicalUnitProvider logicalUnitProvider


[0500] links protected StorableMap links


[0501] uniqueId protected String UniqueId This is a unique ID


[0502] hbaName protected String hbaName The hba name that this associated with this LUN


[0503] deviceFile protected String deviceFile The host-specific device file for this LUN.


[0504] hwPath protected String hwPath The hardware-path (HBA, Port, etc) encoding.


[0505] node protected Node node The node through which the HLU is associated with


[0506] pathStatus protected int pathStatus The path status


[0507] priority protected int priority The path priority


[0508] path protected String path Path to hold non-standard formatted path string, ie other than: SCSI l hostname devicefile


[0509] logicalStoragePools protected StorableMap logicalStoragePools The LogicalStoragePools that are associated with this HostLogicalUnit.


[0510] physicalStorageBlocks protected transient StorableMap physicalStorageBlocks The physical storage block's associated with the host logical unit.


[0511] HOSTLOGICALUNIT_ID_FIELD public static final String HOSTLOGICALUNIT_ID_FIELD Constant representing the name of the HostLogical Unit field.


[0512] LOGICALUNIT_FIELD public static final String LOGICALUNIT_FIELD Constant representing the name of the logical Unit field.


[0513] LOGICALUNITPROVIDER_FIELD public static final String LOGICALUNITPROVIDER_FIELD Constant representing the name of the logicalUnitProvider field.


[0514] UNIQUEID_FIELD public static final String UNIQUEID_FIELD Constant representing the name of the uniqueId field.


[0515] HBANAME_FIELD public static final String HBANAME_FIELD Constant representing the name of the hbaName field.


[0516] DEVICEFILE_FIELD public static final String DEVICEFILE_FIELD Constant representing the name of the deviceFile field.


[0517] HWPATH_FIELD public static final String HWPATH_FIELD Constant representing the name of the hwPath field.


[0518] NODE_FIELD public static final String NODE_FIELD Constant representing the name of the node field.


[0519] PATHSTATUS_FIELD public static final String PATHSTATUS_FIELD Constant representing the name of the pathStatus field.


[0520] PRIORITY-FIELD public static final String PRIORITY_FIELD Constant representing the name of the priority field.


[0521] PATH_FIELD public static final String PATH_FIELD Constant representing the name of the path field.


[0522]


[0523] HostLogicalUnit public HostLogicalUnit( ) Default constructor.


[0524] HostLogicalUnit protected HostLogicalUnit(Dbid dbid) Constructor used internally for loading.


[0525] HostLogicalUnit public HostLogicalUnit(LogicalUnitProvider logicalUnitProvider, LogicalUnit logicalUnit, String deviceFile, String hwPath, Node node) Creates a new view of the given logical unit with the specified parameters.


[0526]


[0527] getHost public Host getHost( ) Helper method that will retrieve the Host via the Node


[0528] getDevice public Device getDevice( ) Helper method that will return the Device referencing this Specified by:


[0529] getDevice in interface ManagementPathIF


[0530] getHostLogicalUnit public static HostLogicalUnit getHostLogicalUnit(SystemDevice device, String deviceFile) Gets the HostLogicalUnit for the given system device and device file. If no such host logial unit exists it will return a null.


[0531] Parameters:


[0532] device-The system device for which a host logical unit should be retrieved. deviceFile-The device file for the host logical unit to retrieve.


[0533] Returns:


[0534] The host logical lun associated with the given system device and identified on that system device by the given device file. If no such host logical unit can be found anull will be returned.


[0535] toString public String toString( ) Returns the string image of this object.


[0536] Overrides:


[0537] toString in class StorableObject


[0538] allocaterLunStatus public int allocaterLunStatus( ) Provides the allocater filtering status for this particular Host-LU visibility relationship


[0539] getPath public String getPath( ) Returns the value of the path property.


[0540] Specified by:


[0541] getPath in interface ManagementPathIF


[0542] prepareInsert protected CachedPreparedStatement prepareInsert(ConnectionContext context) throws SQLException This method must be provided in order for the HostLogicalUnit object to become storable, i.e. so it can be added to the database.


[0543] Overrides:


[0544] prepareInsert in class StorableObject


[0545] prepareDelete protected CachedPreparedStatement prepareDelete(ConnectionContext context) throws SQLException This method must be provided in order for the HostLogicalUnit object to become storable, i.e. so it can be deleted from the database.


[0546] Overrides:


[0547] prepareDelete in class StorableObject


[0548] prepareSelect protected CachedPreparedStatement prepareSelect(ConnectionContext context) throws SQLException This method must be provided in order for the HostLogicalUnit object to become storable, i.e. so it can be retrieved from the database.


[0549] Overrides:


[0550] prepareSelect in class StorableObject


[0551] getLogicalUnit public LogicalUnit getLogicalUnit( ) Returns the value of the logicalunit property.


[0552] setLogicalUnit public void setLogicalUnit(LogicalUnit logicalUnit) Sets the LogicalUnit property to the specified value. Note that this should not be used as a means to add this object to the list of children of the LogicalUnit parent. An appropriate call to addHostLogicalUnit, if available, should be made on the LogicalUnit parent object instead.


[0553] getLogicalUnitProvider public LogicalUnitProvider getLogicalUnitProvider( ) Returns the value of the logicalUnitProvider property.


[0554] setLogicalUnitProvider public void setLogicalUnitProvider(LogicalUnitProvider logicalUnitProvider) Sets the LogicalUnitProvider property to the specified value. Note that this should not be used as a means to add this object to the list of children of the LogicalUnitProvider parent. An appropriate call to addHostLogicalUnit, if available, should be made on the LogicalUnitProvider parent object instead.


[0555] getUniqueId public String getUniqueId Returns the value of the uniqueId property.


[0556] setUniqueId public void setUniqueId(String UniqueId) Sets the UniqueId property to the specified value.


[0557] getHbaName public String getHbaName( ) Returns the value of the hbaName property.


[0558] setHbaName public void setHbaName(String hbaName) Sets the HbaName property to the specified value.


[0559] getDeviceFile public String getDeviceFile( ) Returns the value of the deviceFile property.


[0560] setDeviceFile public void setDeviceFile(String deviceFile) Sets the DeviceFile property to the specified value.


[0561] getHwPath public String getHwPath( ) Returns the value of the hwPath property.


[0562] setHwPath public void setHwPath(String hwpath) Sets the HwPath property to the specified value.


[0563] getNode public Node getNode( ) Returns the value of the node property.


[0564] setNode public void setNode(Node node) Sets the Node property to the specified value. Note that this should not be used as a means to add this object to the list of children of the Node parent. An appropriate call to addHostLogical Unit, if available, should be made on the Node parent object instead.


[0565] getPathStatus public int getPathStatus( ) Returns the value of the pathStatus property.


[0566] Specified by:


[0567] getPathStatus in interface ManagementPathIF


[0568] setPathStatus public void setPathStatus(int pathStatus) Sets the PathStatus property to the specified value.


[0569] Specified by:


[0570] setPathStatus in interface ManagementPathIF


[0571] getPriority public int getPriority( ) Returns the value of the priority property.


[0572] Specified by:


[0573] getPriority in interface ManagementPathIF


[0574] setPriority public void setPriority(int priority) Sets the Priority property to the specified value.


[0575] Specified by:


[0576] setPriority in interface ManagementPathIF


[0577] setPath public void setPath(String path) Sets the Path property to the specified value.


[0578] toDebugString public String toDebugString( ) Returns a string image of the the specified HostLogicalUnit.


[0579] Overrides:


[0580] toDebugString in class StorableObject


[0581] toDebugString public String toDebugString(String indent) Description copied from class: StorableObject Returns the debug string image of the object indented using the specified indent string.


[0582] Overrides:


[0583] toDebugString in class StorableObject


[0584] toDebugString public String toDebugString(String indent, Vector callTree) Returns an indented string image of the the specified HostLogicalUnit.


[0585] Overrides:


[0586] toDebugString in class StorableObject


[0587] loadLinks public StorableMap loadLinks( ) Loads and returns the collection of Link objects for this HostLogicalUnit.


[0588] getLinks public StorableMap getLinks( ) Returns the collection of Link objects for this HostLogicalUnit.


[0589] getLinksIterator public StorableIterator getLinksIterator( ) Returns the collection of Link objects for this HostLogicalUnit.


[0590] getLinksIterator public StorableIterator getLinksIterator(String sortFieldName, boolean isAscending) Returns the collection of Link objects for this HostLogicalUnit.


[0591] clearLinks public void clearLinks( ) Clears the collection of Link objects for this HostLogicalUnit. Provided to allow applications to explicitely drop references to child Link objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0592] addLink public void addLink(Link link) Adds the specified Link to the collection of Link objects for this HostLogicalUnit.


[0593] removeLink public void removeLink(Link link) Removes the specified Link from the collection of Link objects for this HostLogicalUnit.


[0594] getLink public Link getLink(Dbid id) Returns the Link with the specified ID in the collection of Link objects for this HostLogicalUnit.


[0595] loadLogicalStoragePools public StorableMap loadLogicalStoragePools( ) Loads and returns the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0596] getLogicalStoragePools public StorableMap getLogicalStoragePools( ) Returns the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0597] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator( ) Returns the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0598] getLogicalStoragePoolsIterator public StorableIterator getLogicalStoragePoolsIterator(String sortFieldName, boolean isAscending) Returns the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0599] clearLogicalStoragePools public void clearLogicalStoragePools( ) Clears the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0600] Provided to allow applications to explicitely drop references to child LogicalStoragePool objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0601] addLogicalStoragePool public void addLogicalStoragePool(LogicalStoragePool logicalStoragePool) Adds the specified LogicalStoragePool to the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0602] removeLogicalStoragePool public void removeLogicalStoragePool(LogicalStoragePool logicalStoragePool) Removes the specified LogicalStoragePool from the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0603] getLogicalStoragePool public LogicalStoragePool getLogicalStoragePool(Dbid id) Returns the LogicalStoragePool with the specified ID in the collection of LogicalStoragePool objects for this HostLogicalUnit.


[0604] loadPhysicalStorageBlocks public StorableMap loadPhysicalStorageBlocks( ) Loads and returns the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0605] getPhysicalStorageBlocks public StorableMap getPhysicalStorageBlocks( ) Returns the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0606] getPhysicalStorageBlocksIterator public StorableIterator getPhysicalStorageBlocksIterator( ) Returns the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0607] getPhysicalStorageBlocksIterator public StorableIterator getPhysicalStorageBlocksIterator(String sortFieldName, boolean isAscending) Returns the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0608] clearPhysicalStorageBlocks public void clearPhysicalStorageBlocks( ) Clears the collection of PhysicalStorageBlock objects for this HostLogicalUnit. Provided to allow applications to explicitely drop references to child PhysicalStorageBlock objects. Please note that subsequent invocations of get/load/add/remove methods will reload the collection.


[0609] addPhysicalStorageBlock public void addPhysicalStorageBlock(PhysicalStorageBlock physicalStorageBlock) Adds the specified PhysicalStorageBlock to the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0610] removePhysicalStorageBlock public void removePhysicalStorageBlock(PhysicalStorageBlock physicalStorageBlock) Removes the specified PhysicalStorageBlock from the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0611] getPhysicalStorageBlock public PhysicalStorageBlock getPhysicalStorageBlock(Dbid id) Returns the PhysicalStorageBlock with the specified ID in the collection of PhysicalStorageBlock objects for this HostLogicalUnit.


[0612] getHostLogicalUnitListByLogicalUnit public static StorableList getHostLogicalUnitListByLogicalUnit(LogicalUnit logicalUnit) Returns a list, sorted in no particular order, of HostLogicalUnit objects which have the logicalunit of the specified value.


[0613] getByLogicalUnit public static StorableList getByLogicalUnit(LogicalUnit logicalUnit) Deprecated. Returns the HostLogicalUnit which has the logical Unit of the specified value.


[0614] getHostLogicalUnitListByLogicalUnitProvider public static StorableList getHostLogicalUnitListByLogicalUnitProvider(LogicalUnitPr ovider logicalUnitProvider) Returns a list, sorted in no particular order, of HostLogicalUnit objects which have the logicalUnitProvider of the specified value.


[0615] getByLogicalUnitProvider public static StorableList getByLogicalUnitProvider(LogicalUnitProvider logicalUnitProvider) Deprecated. Returns the HostLogical Unit which has the logicalUnitProvider of the specified value.


[0616] getHostLogicalUnitByUniqueld public static HostLogicalUnit getHostLogicalUnitByUniqueId(String uniqueId) Returns the HostLogicalUnit which has the uniqueId of the specified value.


[0617] getByUniqueId public static HostLogicalUnit getByUniqueId(String UniqueId) Deprecated. Returns the HostLogicalUnit which has the uniqueId of the specified value.


[0618] getHostLogicalUnitListByHbaName public static StorableList getHostLogicalUnitListByHbaName(String hbaName) Returns a list, sorted in no particular order, of HostLogicalUnit objects which have the hbaName of the specified value.


[0619] getByHbaName public static StorableList getByHbaName(String hbaName) Deprecated. Returns the HostLogicalUnit which has the hbaName of the specified value.


[0620] getHostLogicalUnitListByDeviceFile public static StorableList getHostLogicalUnitListByDeviceFile(String deviceFile) Returns a list, sorted in no particular order, of HostLogicalUnit objects which have the deviceFile of the specified value.


[0621] getByDeviceFile public static StorableList getByDeviceFile(String deviceFile) Deprecated. Returns the HostLogicalUnit which has the deviceFile of the specified value.


[0622] findOrCreateHostLogicalUnit public static HostLogicalUnit findOrCreateHostLogicalUnit(String UniqueId) Returns an instance of the HostLogicalUnit class. The object is either found using either of the specified unique parameters or is created using all of those unique parameters. This is performed as an atomic operation within the bounds of the same connection context.


[0623] findOrCreate public static HostLogicalUnit findOrCreate(String UniqueId) Deprecated. Returns an instance of the HostLogical Unit class. The object is either found using either of the specified unique parameters or is created using all of those unique parameters. This is performed as an atomic operation within the bounds of the same connection context.


[0624] Immediately following is a sample template related to the LUN DO 410 of FIG. 4, and corresponding to the immediately preceding JAVA document.
45//------------------------------------------------------------------------------// Copyright 1999-2002 Hewlett-Packard Co., All Rights Reserved.//------------------------------------------------------------------------------/**Class representing Host's view of a logical unit (LUN). It isassociatedwith an actual logical unit and has properties which characterizehow thehost sees that LUN. Those properties include hardware path,device file,etc.*/public final class HostLogicalUnit extends StorableObject implementsManagementPathIF {/** Some well-known enumerations of different Host Logical Unittypes.These names are taken from the Dial External Interface Doc forDeviceType setting of the LunEntity. */public static final int UNKNOWN_DEVICE= 0;public static final int DIRECT_ACCESS_DEVICE= 1;public static final int SEQUENTIAL_ACCESS_DEVICE = 2;public static final int PRINTER_DEVICE = 3;public static final int PROCESSOR_DEVICE = 4;public static final int WRITE_ONCE_DEVICE= 5;public static final int CDROM_DEVICE= 6;public static final int SCANNER_DEVICE= 7;public static final int OPTICAL_MEMORY_DEVICE= 8;public static final int MEDIUM_CHANGER_DEVICE= 9;public static final int COMM_DEVICE= 10;public static final int ARRAY_CONTROLLER =11;public static final int ENCLOSURE_SERVICES= 12;public static final int FC_SCSI_MUX= 13;public static final int FC_SWITCH= 14;/**Values returned from allocaterLunStatus which describes theallocater filtering state of this particular host-lu visibilityrelationship*/public static final int ALLOCATER_LU_NOT_CONTROLLED = 0;public static final int ALLOCATER_LU_ASSIGNED = 1;public static final int ALLOCATER_LU_NOT_ASSIGNED = 2;public static final int ALLOCATER_UNDEFINED = 3; //set ifallocaterLunStatus encountered error/** The logical unit with which this view is associated. */// ::getBy unsorted logicalUnitprotected LogicalUnit logicalUnit;//** The LogicalUnitProvider associated with the LogicalUnits */// ::getBy unsorted logicalUnitProviderprotected LogicalUnitProvider logicalUnitProvider;//** The collection of links that this hostlogical unit is part of */// ::relate HostLogicalUnit links Link hostLogicalUnitsprotected StorableMap links;/** This is a unique ID ***/// ::getBy unique uniqueIdprotected String uniqueId;/** The hba name that this associated with this LUN */// ::getBy unsorted hbaNameprotected String hbaName;/** The host-specific device file for this LUN. */// ::getBy unsorted deviceFileprotected String deviceFile;/** The hardware-path (HBA, Port, etc) encoding. */protected String hwPath;/** The node through which the HLU is associated with */protected Node node;/** The path status */protected int pathStatus;/** The path priority */protected int priority;/** Path to hold non-standard formatted path string, i.e., otherthan:SCSI | hostname | devicefile */protected String path;/** * The {@link LogicalStoragePool LogicalStoragePools} that areassociated * with this HostLogicalUnit. */// ::relate HostLogicalUnit logicalStoragePools LogicalStoragePoolhostLogicalUnitsprotected StorableMap logicalStoragePools;/** The physical storage block's associated with the host logicalunit.*/// ::relate HostLogicalUnit physicalStorageBlocksPhysicalStorageBlock hostLogicalUnitprotected transient StorableMap physicalStorageBlocks;/** Creates a new view of the given logical unit with the specifiedparameters. */public HostLogicalUnit (LogicalUnitProvider logicalUnitProvider,LogicalUnit logicalUnit,String deviceFile, String hwPath, Node node) {super ( );this.logicalUnit = logicalUnit;this.deviceFile = deviceFile;this.hwPath = hwPath;this.logicalUnitProvider = logicalUnitProvider;this.node = node;this.physicalStorageBlocks = null;/* ::post-compileif( logicalUnit != null) {logicalUnit.setIsAssigned(true);}this.uniqueId = node.getDbid( ) + “:” + deviceFile;::post-compile */} // HostLogicalUnit/** Helper method that will retrieve the Host via the Node *//* ::post-compilepublic Host getHost( ) {Node node = getNode( );if (node != null)return (Host)node.getPlatformDevice( );return null;} // getHost::post-compile *//** Helper method that will return the Device referencing this */public Device getDevice ( ){/* ::post-compilereturn (getLogicalUnitProvider( ) != null) ? (Device)getLogicalUnitProvider( ) : null;::post-compile */ return null;}/** * Gets the HostLogicalUnit for the given system device and devicefile. * If no such host logical unit exists it will return a null.* * @param device The system device for which a host logical unitshould * be retrieved. * @param deviceFile The device file for the host logical unit toretrieve. * * @return The host logical lun associated with the given systemdevice and * identified on that system device by the given device file. If nosuch * host logical unit can be found a null will be returned. */public static HostLogicalUnit getHostLogicalUnit(SystemDevicedevice,String deviceFile) {/* ::post-compileStorableMap nodes = device.getNodes( );StorableCollection hostLogicalUnits =HostLogicalUnit.getHostLogicalUnitListByDeviceFile(deviceFile);Iterator iteration = hostLogicalUnits.iterator( );while(iteration.hasNext( )) {HostLogicalUnit hostLun = (HostLogicalUnit)iteration.next( );Node lunNode = hostLun.getNode( );// Test if found correct host lun, if so return immediately.if(nodes.contains(lunNode))return hostLun;}// if fail to find proper LUN for device file use *ugly* hack to// search for an alternative name.deviceFile = alternateDeviceFile(device, deviceFile);hostLogicalUnits =HostLogicalUnit.getHostLogicalUnitListByDeviceFile(deviceFile);iteration = hostLogicalUnits.iterator( );while(iteration.hasNext( )) {HostLogicalUnit hostLun = (HostLogicalUnit)iteration.next( );Node lunNode = hostLun.getNode( );// Test if found correct host lun, if so return immediately.if(nodes.contains(lunNode))return hostLun;}// If never found proper host lun return null.::post-compile */return null;}/** * Convenience method to determine the appropriate alternativedevice file * that may be in use if allocator is present. */private static String alternateDeviceFile(SystemDevice device,String deviceFile) {String altDeviceFile = null;/* ::post-compiletry {if(device.getOsType( ) = = Host.SOLARIS) {int index = deviceFile.lastIndexOf(‘:’);String baseDeviceFile = deviceFile.substring(0, index);altDeviceFile = baseDeviceFile + “:dummy”;}elsealtDeviceFile = deviceFile;}catch(IndexOutOfBoundsException exception) {altDeviceFile = deviceFile;}::post-compile */return altDeviceFile;}/** Returns the string image of this object. *//* ::post-compilepublic String toString ( ) {String class_string = super.toString( );return class_string + “ HLU: \nDBID”+super.getDbid( )+“\nLUID:”+(logicalUnit = = null ? 0 : logicalUnit.getDbid( ).longValue( )) +“\nLUPID:” +( logicalUnitProvider = = null ? 0 :logicalUnitProvider.getDbid( ).longValue( )) +“\nuniqueID”+uniqueId+“\nhbaName:”+hbaName+“ \ndeviceFile:” +getDeviceFile( ) +“\nhwPath”+hwPath+“\nnodeID:”+(node = = null ? 0 :node.getDbid( ).longValue( ))+“\npathStatus”+pathStatus+“\npriority:”+priority;} // toString::post-compile *//** Provides the allocater filtering status for this particular Host-LUvisibility relationship *//* ::post-compilepublic int allocaterLunStatus( ) {Host host = getHost( );if (host = = null) {return ALLOCATER_UNDEFINED;}LMHost lmHost = LMHost.getLMHostByRuid(host.getRuid( ));if (lmHost = = null) {return ALLOCATER_LU_NOT_CONTROLLED;}Iterator iter = lmHost.loadActiveAssignments( ).iterator( );LMInitiatorTargetAssignment assignment = null;LogicalUnit logicalUnit = getLogicalUnit( );if (logicalUnit = = null) {return ALLOCATER_UNDEFINED;}Ruid targetRuid = logicalUnit.getRuid( );if (targetRuid = = null) {return ALLOCATER_UNDEFINED;}while (iter.hasNext( )) {assignment = (LMInitiatorTargetAssignment)iter.next( );if (targetRuid.equals(assignment.getTarget( ).getRuid( ))) {return ALLOCATER_LU_ASSIGNED;}}return ALLOCATER_LU_NOT_ASSIGNED;} // allocaterLunStatus::post-compile *//** Returns the value of the path property. */public String getPath( ) {/* ::post-compileif( this.path != null)::post-compile */return this.path;/* ::post-compileelse {// path is SCSI | hostname | devicefileif( getNode( ) != null){PlatformDevice pdev = getNode( ).getPlatformDevice( );String hostname = “”;if( pdev instanceof Host ){hostname = ((Host) pdev).getPrimaryIp( );}return Target.TARGET_TYPE_SCSI +Target.PATH_SEPARATOR +(hostname != null ? hostname : “”)+Target.PATH_SEPARATOR +(getDeviceFile( ) != null ? getDeviceFile( ) : “”) ;}else{return “”;}}::post-compile */} // getPath} // HostLogicalUnit


[0625] The invention may be embodied in other forms without departing from its spirit and essential characteristics. The described embodiments are to be considered only non-limiting examples of the invention. The scope of the invention is to be measured by the appended claims. All changes which come within the meaning and equivalency of the claims are to be embraced within their scope.


Claims
  • 1. A method of data extraction for use with a host, connected to one or more logical units (LUNs), that is operable to host a volume manager that manages access to said one or more LUNs via the creation of one or more volume groups, the method comprising: providing one or more queries to said volume manager; and determining, for each volume group, which of said one or more LUNs are members of the volume group based upon results of said queries, respectively.
  • 2. The method of claim 1, wherein each volume group includes one or more logical volumes, the method further comprising identifying, for each logical volume, portions of said one or more LUNs that are allocated to said one or more logical volumes based upon said results of said queries, respectively.
  • 3. The method of claim 2, wherein each of said portions is represented by a mapping between the respective LUN and the respective logical volume (LV), and said mapping including a map from the respective LUN to a physical storage block (PSB), an at least indirect map from said PSB to a logical storage block (LSB), and a map from said LSB to the respective LV.
  • 4. The method of claim 3, wherein said LSB is a higher level LSB and said at least indirect map from said PSB to said higher level LSB includes a map from said PSB to a lower level LSB; and a map from said lower level LSB to said higher level LSB.
  • 5. The method of claim 3, wherein a plurality of LSBs can map to an LV; a plurality of PSBs can map to an LSB; and a LUN can map to a plurality of PSBs.
  • 6. The method of claim 3, wherein said mapping is represented in a standardized data set.
  • 7. The method of clam 6, wherein content of said standardized data set is independent of the type of volume manager to which said queries were made.
  • 8. The method of claim 6, wherein said standardized data set is written in XML.
  • 9. A code arrangement on a computer-readable medium for use for use with a host, connected to one or more logical units (LUNs), that is operable to host a volume manager that manages access to said one or more LUNs via the creation of one or more volume groups, execution of said code arrangement by one or more processors of the host causing data to be extracted from said volume manager, the code arrangement comprising: a query code segment to provide one or more queries to said volume manager; and a determination code segment to determine, for each volume group, which of said one or more LUNs are members of the volume group based upon results of said queries, respectively.
  • 10. The computer-readable code arrangement of claim 9, wherein each volume group includes one or more logical volumes, the computer-readable code arrangement further comprising an identification code segment to identify, for each logical volume, portions of said one or more LUNs that are allocated to said one or more logical volumes based upon said results of said queries, respectively.
  • 11. The computer-readable code arrangement of claim 10, wherein each of said portions is represented by a mapping between the respective LUN and the respective logical volume (LV), and said mapping including a map from the respective LUN to a physical storage block (PSB), an at least indirect map from said PSB to a logical storage block (LSB), and a map from said LSB to the respective LV.
  • 12. The computer-readable code arrangement of claim 11, wherein said LSB is a higher level LSB and said at least indirect map from said PSB to said higher level LSB includes a map from said PSB to a lower level LSB; and a map from said lower level LSB to said higher level LSB.
  • 13. The computer-readable code arrangement of claim 11, wherein a plurality of LSBs can map to an LV; a plurality of PSBs can map to an LSB; and a LUN can map to a plurality of PSBs.
  • 14. The computer-readable code arrangement of claim 11, wherein said mapping is represented in a standardized data set.
  • 15. The computer-readable code arrangement of clam 14, wherein content of said standardized data set is independent of the type of volume manager to which said queries were made.
  • 16. The computer-readable code arrangement of claim 14, wherein said standardized data set is written in XML.
  • 17. A host device, connected to one or more logical units (LUNs), that is operable to host a volume manager that manages access to said one or more LUNs via the creation of one or more volume groups, and that is operable to extract data from said volume manager by loading and executing a code arrangement according to claim 9.
  • 18. A data extraction apparatus, connected to one or more logical units (LUNs), operatively connected to host a volume manager that manages access to said one or more LUNs via the creation of one or more volume groups, for causing data to be extracted from said volume manager, the data extraction apparatus comprising: query means for providing one or more queries to said volume manager; and determination means for determining, for each volume group, which of said one or more LUNs are members of the volume group based upon results of said queries, respectively.