{
    "Resources": [
        {
            "Uri": "/snmp/1.3.6.1.4.1.{{SnmpOemIdentifier}}.39.50/diskArrayDescriptionTable/Readwrite",
            "Sequence": [
                {
                    "Name": "diskArrayRAIDControllerIndex",
                    "Type": "integer",
                    "Access": "Readonly",
                    "Primary": true
                },
                {
                    "Name": "diskArrayIndex",
                    "Type": "integer",
                    "Access": "Readonly",
                    "Primary": true
                },
                {
                    "Name": "diskArrayUsedSpaceInMB",
                    "Type": "integer",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayFreeSpaceInMB",
                    "Type": "integer",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayLDCount",
                    "Type": "integer",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayLDId",
                    "Type": "string",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayPDCount",
                    "Type": "integer",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayPDId",
                    "Type": "string",
                    "Access": "Readonly"
                },
                {
                    "Name": "diskArrayFreeBlocksSpaceInMB",
                    "Type": "string",
                    "Access": "Readonly"
                }
            ],
            "Interfaces": [
                {
                    "Type": "GET",
                    "RspBody": {
                        "Sequence": "${Statements/GetDiskArrayInfo()}"
                    },
                    "Statements": {
                        "GetDiskArrayInfo": {
                            "Input": "${ProcessingFlow[1]/Destination/Members}",
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "get_real_disk_array_path.lua"
                                },
                                {
                                    "Type": "Expand"
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "List",
                            "Path": "/bmc/kepler/Systems/1/Storage/Controllers",
                            "Interface": "bmc.kepler.Systems.Storage.DiskArray",
                            "Params": [
                                3
                            ],
                            "Destination": {
                                "Members": "Members"
                            }
                        }
                    ]
                }
            ]
        },
        {
            "Uri": "/bmc/kepler/Systems/:systemid/Storage/Controllers/:controller_id/DiskArrays/:id",
            "Interfaces": [
                {
                    "Type": "GET",
                    "RspBody": {
                        "diskArrayRAIDControllerIndex": "${Statements/GetDiskArrayRAIDControllerIndex()}",
                        "diskArrayIndex": "${Statements/GetDiskArrayIndex()}",
                        "diskArrayUsedSpaceInMB": "${ProcessingFlow[1]/Destination/UsedSpaceMiB}",
                        "diskArrayFreeSpaceInMB": "${ProcessingFlow[1]/Destination/TotalFreeSpaceMiB}",
                        "diskArrayLDCount": "${Statements/GetDiskArrayLDCount()}",
                        "diskArrayLDId": "${Statements/GetDiskArrayLDId()}",
                        "diskArrayPDCount": "${Statements/GetDiskArrayPDCount()}",
                        "diskArrayPDId": "${Statements/GetDiskArrayPDId()}",
                        "diskArrayFreeBlocksSpaceInMB": "${Statements/GetDiskArrayFreeBlocksSpaceInMB()}"
                    },
                    "Statements": {
                        "GetDiskArrayIndex": {
                            "Input": "${ProcessingFlow[1]/Destination/Id}",
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "return Input + 1"
                                }
                            ]
                        },
                        "GetDiskArrayRAIDControllerIndex": {
                            "Input": "${ProcessingFlow[1]/Destination/RefControllerId}",
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "return Input + 1"
                                }
                            ]
                        },
                        "GetDiskArrayLDCount": {
                            "Input": "${ProcessingFlow[1]/Destination/RefVolumes}",
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "if (#Input == 1 and Input[1] == 0xffff) then return 0xff end return #Input"
                                }
                            ]
                        },
                        "GetDiskArrayLDId": {
                            "Input": "${ProcessingFlow[1]/Destination/RefVolumes}",
                            "Steps": [
                                {
                                    "Type": "Plugin",
                                    "Formula": "orchestrator.storage.get_ref_logiacl_ids(Input)"
                                }
                            ]
                        },
                        "GetDiskArrayPDCount": {
                            "Input": "${ProcessingFlow[1]/Destination/RefDrives}",
                            "Steps": [
                                {
                                    "Type": "Script",
                                    "Formula": "if #Input == 0 then return 255 end return #Input"
                                }
                            ]
                        },
                        "GetDiskArrayPDId": {
                            "Input": "${ProcessingFlow[1]/Destination/RefDrives}",
                            "Steps": [
                                {
                                    "Type": "Plugin",
                                    "Formula": "orchestrator.storage.get_pd_id_list(Input)"
                                }
                            ]
                        },
                        "GetDiskArrayFreeBlocksSpaceInMB": {
                            "Input": "${ProcessingFlow[1]/Destination/FreeBlocksSpaceMiB}",
                            "Steps": [
                                {
                                    "Type": "Plugin",
                                    "Formula": "orchestrator.storage.get_free_block_string(Input)"
                                }
                            ]
                        }
                    },
                    "ProcessingFlow": [
                        {
                            "Type": "Property",
                            "Path": "/bmc/kepler/Systems/${Uri/systemid}/Storage/Controllers/${Uri/controller_id}/DiskArrays/${Uri/id}",
                            "Interface": "bmc.kepler.Systems.Storage.DiskArray",
                            "Destination": {
                                "Id": "Id",
                                "RefControllerId": "RefControllerId",
                                "UsedSpaceMiB": "UsedSpaceMiB",
                                "TotalFreeSpaceMiB": "TotalFreeSpaceMiB",
                                "RefVolumes": "RefVolumes",
                                "RefDrives": "RefDrives",
                                "FreeBlocksSpaceMiB": "FreeBlocksSpaceMiB"
                            }
                        }
                    ]
                }
            ]
        }
    ]
}