package org.zstack.header.zone; import org.zstack.header.cluster.ClusterInventory; import org.zstack.header.configuration.PythonClassInventory; import org.zstack.header.host.HostInventory; import org.zstack.header.network.l2.L2NetworkInventory; import org.zstack.header.network.l3.L3NetworkInventory; import org.zstack.header.query.ExpandedQueries; import org.zstack.header.query.ExpandedQuery; import org.zstack.header.query.ExpandedQueryAlias; import org.zstack.header.query.ExpandedQueryAliases; import org.zstack.header.search.Inventory; import org.zstack.header.storage.backup.BackupStorageZoneRefInventory; import org.zstack.header.storage.primary.PrimaryStorageInventory; import org.zstack.header.vm.VmInstanceInventory; import java.io.Serializable; import java.sql.Timestamp; import java.util.ArrayList; import java.util.Collection; import java.util.List; /** * @inventory inventory for zone * @example { * "uuid": "b729da71b1c7412781d5de22229d5e17", * "name": "TestZone", * "description": "Test", * "state": "Enabled", * "type": "zstack", * "createDate": "Apr 25, 2014 6:04:52 PM", * "lastOpDate": "Apr 25, 2014 6:04:52 PM" * } * @since 0.1.0 */ @Inventory(mappingVOClass = ZoneVO.class) @PythonClassInventory @ExpandedQueries({ @ExpandedQuery(expandedField = "vmInstance", inventoryClass = VmInstanceInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "cluster", inventoryClass = ClusterInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "host", inventoryClass = HostInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "primaryStorage", inventoryClass = PrimaryStorageInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "l2Network", inventoryClass = L2NetworkInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "l3Network", inventoryClass = L3NetworkInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid"), @ExpandedQuery(expandedField = "backupStorageRef", inventoryClass = BackupStorageZoneRefInventory.class, foreignKey = "uuid", expandedInventoryKey = "zoneUuid", hidden = true), }) @ExpandedQueryAliases({ @ExpandedQueryAlias(alias = "backupStorage", expandedField = "backupStorageRef.backupStorage") }) public class ZoneInventory implements Serializable { /** * @desc resource uuid */ private String uuid; /** * @desc max length of 255 characters */ private String name; /** * @desc max length of 2048 characters * @nullable */ private String description; /** * @desc when state is Disabled, no vm can be created, unless descendant resource cluster/host has different state Enabled * @choices - Enabled * - Disabled */ private String state; /** * @desc for now, the only zone type is 'zstack' */ private String type; /** * @desc the time this resource gets created */ private Timestamp createDate; /** * @desc last time this resource gets operated */ private Timestamp lastOpDate; public static ZoneInventory valueOf(ZoneVO vo) { ZoneInventory inv = new ZoneInventory(); inv.setName(vo.getName()); inv.setDescription(vo.getDescription()); inv.setUuid(vo.getUuid()); inv.setState(vo.getState().toString()); inv.setType(vo.getType()); inv.setCreateDate(vo.getCreateDate()); inv.setLastOpDate(vo.getLastOpDate()); return inv; } public static List<ZoneInventory> valueOf(Collection<ZoneVO> vos) { List<ZoneInventory> invs = new ArrayList<ZoneInventory>(vos.size()); for (ZoneVO vo : vos) { invs.add(ZoneInventory.valueOf(vo)); } return invs; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getUuid() { return uuid; } public void setUuid(String uuid) { this.uuid = uuid; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getState() { return state; } public void setState(String state) { this.state = state; } public String getType() { return type; } public void setType(String type) { this.type = type; } public Timestamp getCreateDate() { return createDate; } public void setCreateDate(Timestamp createDate) { this.createDate = createDate; } public Timestamp getLastOpDate() { return lastOpDate; } public void setLastOpDate(Timestamp lastOpDate) { this.lastOpDate = lastOpDate; } }