Skip to content

Instantly share code, notes, and snippets.

@fearthecowboy
Last active December 20, 2015 10:30
Show Gist options
  • Save fearthecowboy/6115377 to your computer and use it in GitHub Desktop.
Save fearthecowboy/6115377 to your computer and use it in GitHub Desktop.
// Copyright (c) 2009 DMTF. All rights reserved.
[Abstract, Version ( "2.23.0" ),
ClassConstraint {
"inv:self.IsLargeBuildNumber=true implies self.BuildNumber = null and self.LargeBuildNumber <> null",
"inv:self.IsLargeBuildNumber=false implies self.LargeBuildNumber=null" },
UMLPackagePath ( "CIM::Core::Software" ),
Description (
"SoftwareIdentity provides descriptive information about a "
"software component for asset tracking and/or installation "
"dependency management. When the IsEntity property has the "
"value TRUE, the instance of SoftwareIdentity represents an "
"individually identifiable entity similar to Physical Element. "
"SoftwareIdentity does NOT indicate whether the software is "
"installed, executing, etc. This extra information may be "
"provided through specialized associations to Software "
"Identity. For instance, both InstalledSoftwareIdentity and "
"ElementSoftwareIdentity may be used to indicate that the "
"software identified by this class is installed. "
"SoftwareIdentity is used when managing the software components "
"of a ManagedElement that is the management focus. Since "
"software may be acquired, SoftwareIdentity can be associated "
"with a Product using the ProductSoftwareComponent "
"relationship. The Application Model manages the deployment and "
"installation of software via the classes, SoftwareFeatures and "
"SoftwareElements. SoftwareFeature and SoftwareElement are used "
"when the software component is the management focus. The "
"deployment/installation concepts are related to the "
"asset/identity one. In fact, a SoftwareIdentity may correspond "
"to a Product, or to one or more SoftwareFeatures or "
"SoftwareElements - depending on the granularity of these "
"classes and the deployment model. The correspondence of "
"Software Identity to Product, SoftwareFeature or "
"SoftwareElement is indicated using the ConcreteIdentity "
"association. Note that there may not be sufficient detail or "
"instrumentation to instantiate ConcreteIdentity. And, if the "
"association is instantiated, some duplication of information "
"may result. For example, the Vendor described in the instances "
"of Product and SoftwareIdentity MAY be the same. However, this "
"is not necessarily true, and it is why vendor and similar "
"information are duplicated in this class. \n"
"Note that ConcreteIdentity can also be used to describe the "
"relationship of the software to any LogicalFiles that result "
"from installing it. As above, there may not be sufficient "
"detail or instrumentation to instantiate this association." )]
class CIM_SoftwareIdentity : CIM_LogicalElement {
[Key, Override ( "InstanceID" ),
Description (
"Within the scope of the instantiating Namespace, "
"InstanceID opaquely and uniquely identifies an instance "
"of this class. In order to ensure uniqueness within the "
"NameSpace, the value of InstanceID SHOULD be constructed "
"using the following \'preferred\' algorithm: \n"
"<OrgID>:<LocalID> \n"
"Where <OrgID> and <LocalID> are separated by a colon "
"\':\', and where <OrgID> MUST include a copyrighted, "
"trademarked or otherwise unique name that is owned by "
"the business entity creating/defining the InstanceID, or "
"is a registered ID that is assigned to the business "
"entity by a recognized global authority (This is similar "
"to the <Schema Name>_<Class Name> structure of Schema "
"class names.) In addition, to ensure uniqueness <OrgID> "
"MUST NOT contain a colon (\':\'). When using this "
"algorithm, the first colon to appear in InstanceID MUST "
"appear between <OrgID> and <LocalID>. \n"
"<LocalID> is chosen by the business entity and SHOULD "
"not be re-used to identify different underlying "
"(real-world) elements. If the above \'preferred\' "
"algorithm is not used, the defining entity MUST assure "
"that the resultant InstanceID is not re-used across any "
"InstanceIDs produced by this or other providers for this "
"instance\'s NameSpace. \n"
"For DMTF defined instances, the \'preferred\' algorithm "
"MUST be used with the <OrgID> set to \'CIM\'." )]
string InstanceID;
[Description (
"The major number component of the software\'s version "
"information - for example, \'12\' from version 12.1(3)T. "
"This property is defined as a numeric value to allow the "
"determination of \'newer\' vs. \'older\' releases. A "
"\'newer\' major release is indicated by a larger numeric "
"value." )]
uint16 MajorVersion;
[Description (
"The minor number component of the software\'s version "
"information - for example, \'1\' from version 12.1(3)T. "
"This property is defined as a numeric value to allow the "
"determination of \'newer\' vs. \'older\' releases. A "
"\'newer\' minor release is indicated by a larger numeric "
"value." )]
uint16 MinorVersion;
[Description (
"The revision or maintenance release component of the "
"software\'s version information - for example, \'3\' "
"from version 12.1(3)T. This property is defined as a "
"numeric value to allow the determination of \'newer\' "
"vs. \'older\' releases. A \'newer\' revision is "
"indicated by a larger numeric value." )]
uint16 RevisionNumber;
[Description ( "The build number of the software." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.LargeBuildNumber",
"CIM_SoftwareIdentity.IsLargeBuildNumber" }]
uint16 BuildNumber;
[Description (
"The build number of the software if IsLargeBuildNumber "
"is TRUE. TheLargeBuildNumber property should be used for "
"all future implementations." ),
ModelCorrespondence { "CIM_SoftwareIdentity.BuildNumber",
"CIM_SoftwareIdentity.IsLargeBuildNumber" }]
uint64 LargeBuildNumber;
[Description (
"The IsLargeBuildNumber property is used to indicate if "
"the BuildNumber of LargeBuildNumber property contains "
"the value of the software build. A value of TRUE shall "
"indicate that the build number is represented by the "
"LargeBuildNumber property. A value of FALSE shall "
"indicate that the build number is represented by the "
"BuildNumber property." ),
ModelCorrespondence { "CIM_SoftwareIdentityBuildNumber",
"CIM_SoftwareIdentity.LargeBuildNumber" }]
boolean IsLargeBuildNumber = false;
[Description (
"A string representing the complete software version "
"information - for example, \'12.1(3)T\'. This string and "
"the numeric major/minor/revision/build properties are "
"complementary. Since vastly different representations "
"and semantics exist for versions, it is not assumed that "
"one representation is sufficient to permit a client to "
"perform computations (i.e., the values are numeric) and "
"a user to recognize the software\'s version (i.e., the "
"values are understandable and readable). Hence, both "
"numeric and string representations of version are "
"provided." )]
string VersionString;
[Description (
"Specifies the target operating systems of the software. "
"This property should be used when a target operating "
"system is not listed in the TargetOSTypes array values." )]
string TargetOperatingSystems[];
[Description ( "Manufacturer of this software." )]
string Manufacturer;
[Description (
"The language editions supported by the software. The "
"language codes defined in ISO 639 should be used." )]
string Languages[];
[Description (
"An array of enumerated integers that classify this "
"software. For example, the software MAY be "
"instrumentation (value=5) or firmware and diagnostic "
"software (10 and 7). The use of value 6, Firmware/BIOS, "
"is being deprecated. Instead, either the value 10 "
"(Firmware) and/or 11 (BIOS/FCode) SHOULD be used. The "
"value 13, Software Bundle, identifies a software package "
"consisting of multiple discrete software instances that "
"can be installed individually or together.\n"
"Each contained software instance is represented by an "
"instance of SoftwareIdentity that is associated to this "
"instance of SoftwareIdentityinstance via a Component "
"association." ),
ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "11", "12", "13", "..", "0x8000..0xFFFF" },
Values { "Unknown", "Other", "Driver",
"Configuration Software", "Application Software",
"Instrumentation", "Firmware/BIOS", "Diagnostic Software",
"Operating System", "Middleware", "Firmware",
"BIOS/FCode", "Support/Service Pack", "Software Bundle",
"DMTF Reserved", "Vendor Reserved" },
ArrayType ( "Indexed" ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ClassificationDescriptions" }]
uint16 Classifications[];
[Description (
"An array of free-form strings providing more detailed "
"explanations for any of the entries in the "
"Classifications array. Note that each entry is related "
"to one in the Classifications array located at the same "
"index." ),
ArrayType ( "Indexed" ),
ModelCorrespondence { "CIM_SoftwareIdentity.Classifications" }]
string ClassificationDescriptions[];
[Description (
"A manufacturer-allocated number used to identify the software."
)]
string SerialNumber;
[Description (
"An array of strings that describes the compatible "
"installer(s). The purpose of the array elements is to "
"establish compatibility between a SoftwareIdentity and a "
"SoftwareInstallationService that can install the "
"SoftwareIdentity by comparing the values of the array "
"elements of this property to the values of "
"SoftwareInstallationServiceCapabilities.SupportedTargetTypes[] "
"property\'s array elements." ),
ModelCorrespondence {
"CIM_SoftwareInstallationServiceCapabilities.SupportedTargetTypes" }]
string TargetTypes[];
[Description (
"IdentityInfoValue captures additional information that "
"MAY be used by an organization to describe or identify a "
"software instance within the context of the "
"organization. For example, large organizations may have "
"several ways to address or identify a particular "
"instance of software depending on where it is stored; a "
"catalog, a web site, or for whom it is intended; "
"development, customer service, etc. The indexed array "
"property IdentityInfoValue contains 0 or more strings "
"that contain a specific identity info string value. "
"IdentityInfoValue is mapped and indexed to "
"IdentityInfoType. When the IdentityInfoValue property is "
"implemented, the IdentityInfoType property MUST be "
"implemented and shall be formatted using the algorithm "
"provided in the IdentityInfoType property Description." ),
ArrayType ( "Indexed" ),
MaxLen ( 256 ),
ModelCorrespondence { "CIM_SoftwareIdentity.IdentityInfoType" }]
string IdentityInfoValue[];
[Description (
"An indexed array of fixed-form strings that provide the "
"description of the type of information that is stored in "
"the corresponding component of the IdentityInfoValue "
"array. The elements of this property array describe the "
"type of the value in the corresponding elements of the "
"IndetityInfoValue array. When the IdentityInfoValue "
"property is implemented, the IdentityInfoType property "
"MUST be implemented. To insure uniqueness the "
"IdentityInfoType property SHOULD be formatted using the "
"following algorithm: < OrgID > : < LocalID > Where < "
"OrgID > and < LocalID > are separated by a colon (:), "
"and where < OrgID > MUST include a copyrighted, "
"trademarked, or otherwise unique name that is owned by "
"the business entity that is creating or defining the "
"IdentityInfoType or that is a registered ID assigned to "
"the business entity by a recognized global authority. "
"(This requirement is similar to the < Schema Name > _ < "
"Class Name > structure of Schema class names.) In "
"addition, to ensure uniqueness, < OrgID > MUST NOT "
"contain a colon (:). When using this algorithm, the "
"first colon to appear in IdentityInfoType MUST appear "
"between < OrgID > and < LocalID > . < LocalID > is "
"chosen by the business entity and SHOULD NOT be reused "
"to identify different underlying software elements." ),
ArrayType ( "Indexed" ),
MaxLen ( 256 ),
ModelCorrespondence { "CIM_SoftwareIdentity.IdentityInfoValue" }]
string IdentityInfoType[];
[Description ( "The date the software was released." )]
datetime ReleaseDate;
[Description (
"The IsEntity property is used to indicate whether the "
"SoftwareIdentity corresponds to a discrete copy of the "
"software component or is being used to convey "
"descriptive and identifying information about software "
"that is not present in the management domain.A value of "
"TRUE shall indicate that the SoftwareIdentity instance "
"corresponds to a discrete copy of the software "
"component. A value of FALSE shall indicate that the "
"SoftwareIdentity instance does not correspond to a "
"discrete copy of the Software." )]
boolean IsEntity = false;
[Description (
"The binary format type of the installation package of "
"the software. This property can be used to locate a "
"SoftwareInstallationService capable of installing this "
"software." ),
ValueMap { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
"10", "..", "0x8000.." },
Values { "Unknown", "Other", "Not Applicable", "Linux RPM",
"HP-UX Depot", "Windows MSI", "Solaris Package",
"Macintosh Disk Image", "Debian linux Package",
"VMware vSphere Installation Bundle",
"VMware Software Bulletin", "DMTF Reserved",
"Vendor Reserved" },
ModelCorrespondence {
"CIM_SoftwareIdentity.OtherExtendedResource",
"CIM_SoftwareIdentity.MinExtendedResourceTypeMajorVersion",
"CIM_SoftwareIdentity.MinExtendedResourceTypeMinorVersion",
"CIM_SoftwareIdentity.MinExtendedResourceTypeRevisionNumber",
"CIM_SoftwareIdentity.MinExtendedResourceTypeBuildNumber",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
uint16 ExtendedResourceType;
[Description (
"A string describing the binary format type of the "
"installation package of the software when the "
"ExtendedResourceType property has a value of 1 (Other)." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ExtendedResourceType",
"CIM_SoftwareIdentity.MinExtendedResourceTypeMajorVersion",
"CIM_SoftwareIdentity.MinExtendedResourceTypeMinorVersion",
"CIM_SoftwareIdentity.MinExtendedResourceTypeRevisionNumber",
"CIM_SoftwareIdentity.MinExtendedResourceTypeBuildNumber",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]" }]
string OtherExtendedResourceTypeDescription;
[Description (
"This property represents the major number component of "
"the minimum version of the installer, represented by the "
"ExtendedResourceType property, that is required to "
"install this software." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ExtendedResourceType",
"CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMajorVersions[]" }]
uint16 MinExtendedResourceTypeMajorVersion;
[Description (
"This property represents the minor number component of "
"the minimum version of the installer, represented by "
"theExtendedResourceType property, that is required to "
"install this software." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ExtendedResourceType",
"CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesMinorVersions[]" }]
uint16 MinExtendedResourceTypeMinorVersion;
[Description (
"This property represents the Revision number component "
"of the minimum version of the installer, represented by "
"theExtendedResourceType property, that is required to "
"install this software." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ExtendedResourceType",
"CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesRevisionNumbers[]" }]
uint16 MinExtendedResourceTypeRevisionNumber;
[Description (
"This property represents the Build number component of "
"the minimum version of the installer, represented by "
"theExtendedResourceType property, that is required to "
"install this software." ),
ModelCorrespondence {
"CIM_SoftwareIdentity.ExtendedResourceType",
"CIM_SoftwareIdentity.OtherExtendedResourceTypeDescription",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypes[]",
"CIM_SoftwareInstallationServiceCapabilities.SupportedExtendedResourceTypesBuildNumbers[]" }]
uint16 MinExtendedResourceTypeBuildNumber;
[Description (
"The TargetOSTypes property specifies the target "
"operating systems supported by the software. When the "
"target operating system of the software is not listed in "
"the enumeration values, TargetOperatingSystems[] "
"property should be used to specify the target operating "
"system." ),
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", "41", "42", "43", "44", "45",
"46", "47", "48", "49", "50", "51", "52", "53", "54",
"55", "56", "57", "58", "59", "60", "61", "62", "63",
"64", "65", "66", "67", "68", "69", "70", "71", "72",
"73", "74", "75", "76", "77", "78", "79", "80", "81",
"82", "83", "84", "85", "86", "87", "88", "89", "90",
"91", "92", "93", "94", "95", "96", "97", "98", "99",
"100", "101", "102", "103", "104", "105", "106", "107",
"108", "109", "110" },
Values { "Unknown", "Other", "MACOS", "ATTUNIX", "DGUX",
"DECNT", "Tru64 UNIX", "OpenVMS", "HPUX", "AIX",
//10
"MVS", "OS400", "OS/2", "JavaVM", "MSDOS",
"WIN3x", "WIN95", "WIN98", "WINNT", "WINCE",
//20
"NCR3000", "NetWare", "OSF", "DC/OS",
"Reliant UNIX", "SCO UnixWare", "SCO OpenServer",
"Sequent", "IRIX", "Solaris", //30
"SunOS",
"U6000", "ASERIES", "HP NonStop OS", "HP NonStop OSS",
"BS2000", "LINUX", "Lynx", "XENIX", "VM",
//40
"Interactive UNIX", "BSDUNIX", "FreeBSD",
"NetBSD", "GNU Hurd", "OS9", "MACH Kernel", "Inferno",
"QNX", "EPOC", //50
"IxWorks", "VxWorks",
"MiNT", "BeOS", "HP MPE", "NextStep", "PalmPilot",
"Rhapsody", "Windows 2000", "Dedicated",
//60
"OS/390", "VSE", "TPF", "Windows (R) Me",
"Caldera Open UNIX", "OpenBSD", "Not Applicable",
"Windows XP", "z/OS", "Microsoft Windows Server 2003",
//70
"Microsoft Windows Server 2003 64-Bit",
"Windows XP 64-Bit", "Windows XP Embedded",
"Windows Vista", "Windows Vista 64-Bit",
"Windows Embedded for Point of Service",
"Microsoft Windows Server 2008",
"Microsoft Windows Server 2008 64-Bit", "FreeBSD 64-Bit",
"RedHat Enterprise Linux",
//80
"RedHat Enterprise Linux 64-Bit",
"Solaris 64-Bit", "SUSE", "SUSE 64-Bit", "SLES",
"SLES 64-Bit", "Novell OES", "Novell Linux Desktop",
"Sun Java Desktop System", "Mandriva",
//90
"Mandriva 64-Bit", "TurboLinux",
"TurboLinux 64-Bit", "Ubuntu", "Ubuntu 64-Bit", "Debian",
"Debian 64-Bit", "Linux 2.4.x", "Linux 2.4.x 64-Bit",
"Linux 2.6.x", //100
"Linux 2.6.x 64-Bit",
"Linux 64-Bit", "Other 64-Bit",
"Microsoft Windows Server 2008 R2", "VMware ESXi",
"Microsoft Windows 7", "CentOS 32-bit", "CentOS 64-bit",
"Oracle Enterprise Linux 32-bit",
"Oracle Enterprise Linux 64-bit",
//110
"eComStation 32-bitx" },
ModelCorrespondence { "CIM_OperatingSystem.OSType" }]
uint16 TargetOSTypes[];
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment