/* * Copyright (C) 2012 Michal Minar * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, see . */ #pragma locale ("en_US") //#pragma namespace ("root/cimv2") [ Description ( "RPM package installed on particular computer system with" " YUM (The Yellowdog Updated, Modified) package manager.") ] class LMI_YumPackage : CIM_SoftwareElement { [ Description ( "The release number (referred to in some older documentation as a" " \"vepoch\") is how the maintainer marks build revisions, starting" " from 1. When a minor change (spec file changed, patch added/removed)" " occurs, or a package is rebuilt to use newer headers or libraries," " the release number should be incremented. If a major change" " (new version of the software being packaged) occurs, the version" " number should be changed to reflect the new software version," " and the release number should be reset to 1.") ] String Release; [ Description ( "It is important to be careful with the version of post-release" " scheme, to ensure that package ordering is correct. It may be" " necessary to use Epoch to ensure that the current package is" " considered newer than the previous package.") ] uint16 Epoch; [ Description ( "Architecture name, that package is compiled for. In case of no" "architecture dependency, this will contain \"noarch\"."), ValueMap { "0" , "1" , "2" , "3" , "4" , "5" , "6" , "7" , "8" , "10", "11", "12", "13", "15", "16", "17", "20", "21", "22", "23", "24", "30", "31", "35", "36", "40", "41", "42", "45", "46", "50", "51", "55", "60", "61", "62", "63", "64", "70", "71", "72", "73", "74" }, Values { // 0 "noarch", "other", "unknown", "x86", "i386", // 5 "i586", "i686", "x86_64", "Athlon", // 10 "IA32e", "IA64", "PowerPC", "PowerPC 64", // 15 "SPARC", "SPARC V9", "SPARC 64", // 20 "ARM", "ARMv6", "ARMv7", "ARMv8", "ARMv9", // 30 "StrongARM", "XScale", // 35 "PA-RISC", "PA-RISC 11", // 40 "MIPS", "MIPS 32", "MIPS 64", // 45 "MIPS NEC VR 4xxx", "MIPS RM7000", // 50 "MIPS TX 39", "MIPS TX 49", // 55 "V850", // 60 "Alpha", "Alpha EV6", "Alpha EV7", "Alpha EV8", "Alpha EV9", // 70 "SuperH", "SuperH 2", "SuperH 3", "SuperH 4", "SuperH 5" } ] uint16 Architecture; [ Description ( "A software license is a legal instrument (usually by way of contract" " law) governing the usage or redistribution of software." " All software is copyright protected, except material in the public" " domain. Contractual confidentiality is another way of protecting" " software. A typical software license grants an end-user permission" " to use one or more copies of software in ways where such a use would" " otherwise potentially constitute copyright infringement of the" " software owner's exclusive rights under copyright law. List of" " possible values is based on list of licences approved by the" " Free Software Foundation and OSI. Values contain only most common" " Licences, so not every package's license will match. Moreover" " lot of software is distributed under more licenses. In these cases" " property will hold \"Other\" and LicenseString will contain precise" " value." ), ValueMap { "0" , "1" , "2" , "5" , "6" , "7" , "10" , "11" , "15" , "16" , "17" , "18" , "19", "25" , "26" , "30" , "31" , "32" , "33" , "35" , "36" , "40" , "41" , "42" , "43" , "44", "45" , "46" , "47" , "48" , "50" , "51" , "52" , "53" , "55" , "56" , "57" , "65" , "66" , "67" , "68" , "70" , "71" , "72" , "73" , "75" , "76" , "77" , "80" , "81" , "82" , "83" , "84", "85" , "86" , "87" , "88" , "89", "90" , "91", "100", "101", "102", "110", "111", "112", "113", "114", "115", "116", "117", "118", "119", "125", "126", "127", "130", "131", "132", "133", "135", "136", "137", "138", "139", "140", "141", "142", "145", "146", "150", "151", "152", "153", "154", "155", "156", "157", "158", "159", "160", "161", "162", "163", "164", "165", "166", "167", "168", "169", "170", "171", "172", "173", "174", "175", "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "215", "216", "217", "220", "221", "222", "223", "224", "225", "226", "227", "228", "229", "230", "231", "232", "233", "235", "236", "237", "238", "239", "240", "241", "242", "243", "244", "245", "246", "247", "248", "249", "250", "251", "252", "253", "254", "255", "256", "257", "258", "259", "260", "261", "262", "263", "264", "265", "266", "270", "271", "275", "276", "277", "280", "281", "400", "401", "402", "403", "404", "405", "406", "407", "408", "409", "410", "411", "412", "413", "414", "415", "416", "417", "418", "419" "420", "421", "422", "423", "424", "425", "426", "427", "428", "429", "430", "431", "432", "433", "434", "435", "436", "437", "438", "439", "440" }, Values { // 0 "Other", "Unknown", "Freely redistributable without restriction", // 5 "Glide", "AFL", "Adobe", // 10 "MIT", "MIT with advertising", // 15 "AGPL", "AGPLv1", "AGPLv3", "AGPLv3+", "AGPLv3 with exceptions", // 25 "ADSL", "AMDPLPA", // 30 "ASL", "ASL 1.0", "ASL 1.1", "ASL 2.0", // 35 "Artistic clarified", "Artistic 2.0", // 40 "ARL", "AAL", "Bahyph", "Barr", "Beerware", // 45 "BeOpen", "Bibtex", "Boost", "Borceux", // 50 "BSD", "BSD with advertising", "BSD with attribution", "BSD Protection", // 55 "AMPAS BSD", "LBNL BSD", "RiceBSD", // 65 "CATOSL", "CeCILL", "CeCILL-B", "CeCILL-C", // 70 "Netscape", "CNRI", "CDDL", "CPL", // 75 "Condor", "Copyright only", "CPAL", // 80 "GPL", "GPL+", "GPL+ with exceptions", "GPLv1", "GPLv2", // 85 "GPLv2 with exceptions", "GPLv2+", "GPLv2+ with exceptions", "GPLv3", "GPLv3 with exceptions", // 90 "GPLv3+", "GPLv3+ with exceptions", // 100 "GPL+ or Artistic", "GPLv2 or Artistic", "GPLv2+ or Artistic", // 110 "LGPL", "LGPLV2", "LGPLv2 with exceptions", "LGPLV2+", "LGPLV2+ with exceptions", // 115 "LGPLv3", "LGPLv3 with exceptions", "LGPLv3+", "LGPLv3+ with exceptions", "LLGPL", // 125 "CC0", "Crossword", "Crystal Stacker", // 130 "MPL", "MPLv1.0", "MPLv1.1", "MPLv2.0", // 135 "diffmark", "WTFPL", "DOC", "Dotseqn", "DSDP", // 140 "dvipdfm", "EPL", "eCos", // 145 "ECL 1.0", "ECL 2.0", // 150 "eGenix", "EFL 2.0", "Entessa", "ERPL", "EU Datagrid", // 155 "EUPL 1.1", "Eurosym", "Fair", "FTL", "Gitware", // 160 "GL2PS", "Glulxe", "gnuplot", "HaskellReport", "IBM", // 165 "iMatrix", "ImageMagick", "Imlib2", "IJG", "Intel ACPI", // 170 "Interbase", "ISC", "Jabber", "JasPer", "JPython", // 175 "Julius", "Knuth", "LPPL", "Latex2e", "Leptonica", // 180 "Lhcyr", "libtiff", "Logica", "MakeIndex", "mecab-ipadic", // 185 "MS-PL", "MS-RL", "midnight", "MirOS", "mod_macro", // 190 "Motosoto", "Naumen", "NCSA", "NetCDF", "NGPL", // 195 "NOSL", "Newmat", "Newsletr", "Nokia", // 200 "NLPL", "Noweb", "OpenLDAP", "OML", "OpenPBS", // 205 "OSL 1.0", "OSL 1.1", "OSL 2.0", "OSL 2.1", "OSL 3.0", // 215 "OpenSSL", "OReilly", "Par", // 220 "Phorum", "PHP", "PlainTeX", "Plexus", "PostgreSQL", // 225 "psfrag", "psutils", "Public Domain", "Python", "Qhull", // 230 "QPL", "Rdisc", "RPSL", "Romio", // 235 "Rsfs", "Ruby", "Saxpath", "SCEA", "SCRIP", // 240 "Sendmail", "Sleepycat", "SLIB", "SNIA", "SISSL", // 245 "SPL", "TCL", "Teeworlds", "TPL", "Threeparttable", // 250 "TMate", "TORQUEv1.1", "TOSL", "UCD", "Vim", // 255 "VNLSL", "VOSTROM", "VSL", "W3C", "Webmin", // 260 "Wsuipa", "wxWidgets", "xinetd", "Xerox", "xpp", // 265 "XSkat", "YPLv1.1", // 270 "Zed", "Zend", // 275 "ZPLv1.0", "ZPLv2.0", "ZPLv2.1", // 280 "zlib", "zlib with acknowledgement", // 400 (Good documentation/content/font licenses) "CDL", "CC-BY", "CC-BY-SA", "CC-BY-ND", // 405 "DSL", "DMTF", "OAL", "FBSDDL", "GFDL", // 410 "IEEE", "LDPL", "OFSFDL", "Open Publication", "Public Use", // 415 "EFML", "Free Art", "GeoTratis", "Green OpenMusic", "OFL", // 420 "Utopia", "AMS", "Arphic", "Baekmuk", "Bitstream Vera", // 425 "Charter", "DoubleStroke", "ec", "elvish", "LPPL", // 430 "Hershey", "IPA", "Liberation", "Lucida", "MgOpen", // 435 "mplus", "PTFL", "Punknova", "STIX", "Wadalab", // 440 "XANO" } ] uint16 License; [ Description ( "Provides the same information as License property, but" " contains the exact string obtained from RPM package.")] String LicenseString; [ Description ( "Denotes the package group, in which the package belongs. Values" " contain only the most common groups. That means, that not every" " package belongs to any of them. In such case value \"Other\" is" " returned. For precise value contained in RPM package, check out" " GroupString property."), ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10","11","12","13","14", "15","16","17","18","19", "20","21","22","23","24", "25","26","27","28","29", "30","31","32","33","34", "35","36","37","38","39", "40" }, Values { // 0 "Other", "Unknown", "Unspecified", "Amusements/Games", "Amusements/Graphics", // 5 "Applications/Archiving", "Applications/Communications", "Applications/Databases", "Applications/Editors", "Applications/Emulators", // 10 "Applications/Engineering", "Applications/File", "Applications/Internet", "Applications/Multimedia", "Applications/Productivity", // 15 "Applications/Publishing", "Applications/System", "Applications/Text", "Development/Build Tools", "Development/Debug", // 20 "Development/Debuggers", "Development/Documentation", "Development/Java", "Development/Languages", "Development/Libraries", // 25 "Development/Libraries/Java", "Development/System", "Development/Tools", "Documentation", "Internet/WWW/Dynamic Content", // 30 "System/Libraries", "System Environment/Base", "System Environment/Daemons", "System Environment/Kernel", "System Environment/Libraries", // 35 "System Environment/Shells", "Text Processing/Markup/XML", "User Interface/Desktops", "User Interface/X", "User Interface/X Hardware Support", // 40 "Utilities" } ] uint16 Group; [ Description ( "Provides the same information as Group, but contains precise string" " contained in package. Lot of packages define their own custom" " group name, which results in \"Other\" value returned by Group" " property.") ] String GroupString; [ Description ( "Size of RPM package in Bytes" ) ] uint64 Size; [ Description ( "Updates the package to latest version." " When any of \"epoch\", \"version\" or \"release\" argument is given" ", install only matching available package. Otherwise try" " to update to newest package available." " If the \"epoch\", \"version\" and \"release\" of package is" " already installed, or no newer package is available," " \"Already newest\" value is returned."), ValueMap { "0", "1", "2" }, Values { "Already newest", "Successful installation", "Failed" } ] uint16 Update( [ IN(true), Description ( "Specify particular epoch of package to update to." " Update to newest, when empty.") ] String Epoch, [ IN(true), Description ( "Specify particular version of package to update to." " Update to newest, when empty") ] String Version, [ IN(true), Description ( "Specify particular release of package to update to." " Update to newest, when empty.") ] String Release, [ IN(false), OUT, Description ( "The reference to newly installed package, if installation was" " successful. Otherwise reference to current package.") ] LMI_YumPackage REF Installed ); [ Description ( "Verify existence and attributes of files installed from" " RPM package. If all files installed exist and their attributes" " matches, method returns \"Pass\". \"Not passed\" is returned when" " arbitrary file differs in its attributes. And \"Error\" if" " verification could not be done."), ValueMap { "0", "1", "2" }, Values { "Pass", "Not passed", "Error" } ] uint32 CheckIntegrity( [ IN(false), OUT, Description ( "Array of references to LMI_YumFileCheck, that did not pass" " verification.") ] LMI_YumFileCheck REF Failed[] ); }; [ Description ( "Identifies a file contained by RPM package. It's located" " in directory identified in FileName. The Invoke methods" " check for file existence and whether its attributes match" " those given by RPM package.") ] class LMI_YumFileCheck : CIM_FileSpecification { [ Key, Description ( "Absolute path of file being checked.") ] String Name; [ Key, Description ( "Composition of RPM's name and absolute file path." " It's format is \"rpm_name#path\"") ] String CheckID; [ Key, MaxLen(256), Description ( "RPM's nevra. This means: " "\"name-epoch:version-release.architecture\".") ] String SoftwareElementID; [ Key, MaxLen(256), Description ( "Version of packaged software as listed by RPM package.") ] String Version; [ Description ( "True, if file is present in file system.")] Boolean FileExists; [ Description("Size of installed file in Bytes.") ] uint64 FileSize; [ Description("File size in Bytes from RPM database.") ] uint64 ExpectedFileSize; [ Description("File mode of installed file as a number.") ] uint32 FileMode; [ Description("File mode as a number given by RPM database.") ] uint32 ExpectedFileMode; [ Description ( "File mode of installed file as an array of permissions." " Each value represents a bit position in file mode."), ValueMap { "0", "1", "2" //XWR Other , "3", "4", "5" //XWR Group , "6", "7", "8" //XWR User , "9","10","11" //Sticky, SGID, SUID }, Values { "Execute Other", "Write Other", "Read Other" , "Execute Group", "Write Group", "Read Group" , "Execute User" , "Write User" , "Read User" , "Sticky", "SGID", "SUID" } ] Uint8 FileModeFlags[]; [ Description ( "File mode as an array of permissions of file from RPM database." " Each value represents a bit position in file mode."), ValueMap { "0", "1", "2" //XWR Other , "3", "4", "5" //XWR Group , "6", "7", "8" //XWR User , "9","10","11" //Sticky, SGID, SUID }, Values { "Execute Other", "Write Other", "Read Other" , "Execute Group", "Write Group", "Read Group" , "Execute User" , "Write User" , "Read User" , "Sticky", "SGID", "SUID" } ] Uint8 ExpectedFileModeFlags[]; [ Description("MD5 checksum of installed file.") ] String MD5Checksum; [ Description("Checksum of installed file." " Hash algorithm used can be obtained with ChecksumType property.") ] String Checksum; [ Description("Checksum of file from RPM database." " Hash algorithm used can be obtained with ChecksumType property.") ] String ExpectedChecksum; [ Description("Number of hash algorithm according to RFC4880." " This algorithm is used for making checksums of RPM files and" " packages. This algorithm is same for the whole RPM database."), ValueMap { "0", "1", "2", "3" , "8", "9","10","11" }, Values { "UNKNOWN", "MD5", "SHA-1", "RIPE-MD/160" , "SHA256", "SHA384", "SHA512", "SHA224" } ] uint16 ChecksumType; [ Description("User ID of installed file.") ] uint32 FileUserID; [ Description("User ID of file from RPM database.") ] uint32 ExpectedFileUserID; [ Description("Group ID of installed file.") ] uint32 FileGroupID; [ Description("Group ID of file from RPM database.") ] uint32 ExpectedFileGroupID; [ Description("Time of last modification of installed file as number a" " of secodns since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).") ] uint64 LastModificationTime; [ Description("Time of last modification of file from RPM database as" " a number of secodns since the Epoch," " 1970-01-01 00:00:00 +0000 (UTC).") ] uint64 ExpectedLastModificationTime; [ Description("Target destination of symbolic link as returned by" " readline. If file is not a symbolic link, NULL is returned.") ] String LinkTarget; [ Description("Target destination of symbolic link from RPM database" " as returned by readline. If file is not a symbolic link," " NULL is returned.") ] String ExpectedLinkTarget; [ Description("File type."), ValueMap { "0", "1", "2", "3", "4", "5", "6" }, Values { "Unknown", "File", "Directory", "Symlink" , "FIFO", "Character Device", "Block Device" } ] uint16 FileType; [ Description("File type of file in RPM database."), ValueMap { "0", "1", "2", "3", "4", "5", "6" }, Values { "Unknown", "File", "Directory", "Symlink" , "FIFO", "Character Device", "Block Device" } ] uint16 ExpectedFileType; [ Description ( "Returns array of booleans for verification checks. Each value" " is either true or false, whether file passed the check or not." " True is present also if the check does not apply to the file" " (file implicitly passes the check, if check can not be" " performed)." " PassedFlagsDescriptions returns a description for each field in" " this array saying, what it means.") ] Boolean PassedFlags[]; [ Description ( "Returns array of descriptions of checks corresponding to PassedFlags" " array.")] String PassedFlagsDescriptions[]; }; // =================================================================== // Associations // =================================================================== [ Association ] class LMI_YumInstalledPackage : CIM_InstalledSoftwareElement { [ Key, Description ( "Reference to the installed RPM package.")] LMI_YumPackage REF Software; [ Key, Max(1), Description ( "Reference to the ComputerSystem hosting a particular" " RPM package.")] LMI_ComputerSystem REF System; };