.. This work is licensed under a Creative Commons Attribution 3.0 Unported License. http://creativecommons.org/licenses/by/3.0/legalcode ========================================== Software Metadata Definitions ========================================== Include the URL of your launchpad blueprint: https://blueprints.launchpad.net/glance/+spec/software-metadefs The spec will provide a base library of metadata definitions for various common software products, components, and libraries that may exist on particular image (or volume or instance). These metadata definitions will make it easier for end users and admins to easily describe the software and its properties. This information will enable an improved and faster user experience for applying software metadata, searching based on software metadata, and viewing the software information about an image. Various improvements in horizon are underway to take advantage of this metadata. For example, a user launching an instance will be able to expand the image row to see addition information about the image. This will include providing the metadata definition for properties on the image. This same information will also be visible from the image and instance details page. The following blueprint is for launch instance: https://blueprints.launchpad.net/horizon/+spec/launch-instance-redesign The following screenshot mockup provides an example from the instance details: https://wiki.openstack.org/w/images/3/37/Instance-details-mock-january-2015.png The following blueprint is for instance details (see source tab): https://blueprints.launchpad.net/horizon/+spec/instance-details-redesign Additional horizon blueprints are being prepared that will display metadata, but are still undergoing collaborative UX design first. Problem description =================== In Juno, the metadata definitions catalog was introduced with a primary intent to improve collaboration on the metadata that can be applied to different resources such as images, flavors, host aggregates, and volumes. The primary development focus in Juno was on what is currently system metadata in OpenStack (properties that affect scheduling and driver behavior). The metadata fields on these same resources can also be used to provide additional, rich information that describes the resource for user understanding and search. This information can be leveraged to improve instance launching, application catalogs, and a variety of other user interaction points. Current methodologies present and proposed in OpenStack require repetitive descriptions, categorization, imagery, and attributes to be applied on each instance of a resource. For example, if multiple images contain Apache then each image will require the user to type in information about Apache, will require them to provide some sort of categorization tag, and will not have any common "template" like fields for the software which can be used for faceted search. This leads to redundancy, spelling mistakes, inconsistency as well as a general lack of ability to present a rich UI experience. In addition, there is no common set of base definitions for software that can be shared across deployments. Proposed change =============== The implementation of this spec will provide a base library of metadata definitions for various common software products, components, and libraries that may exist on particular image (or volume or instance). The following are examples of the type of commonly used software that will be included: * Databases such as MySQL, PostgreSQL, Oracle, MongoDB, etc. * Web servers such as Apache, nginx, IIS * Runtimes like php, java, python, etc. The review process of the actual proposed definitions will allow for the community to suggest additional software to include or to suggest removing certain definitions. These metadata definitions will make it easier for end users and admins to easily describe the software and its properties. This information will enable an improved and faster user experience for applying software metadata, searching based on software metadata, and viewing the software information about an image. Users of the glance client / cli will be able to lookup the available definitions just like they do today. So the below methodology that can be done to look up something like virtual CPU topology properties will work for the software definitions:: glance --os-image-api-version 2 md-namespace-list glance --os-image-api-version 2 md-namespace-show OS::Compute::VirtCPUTopology glance --os-image-api-version 2 md-property-show OS::Compute::VirtCPUTopology cpu_maxsockets The metadata definitions will be included as additional json files in the etc/metadefs directory just like the existing example system metadata definitions. Alternatives ------------ As every single image, artifact, or other type of resource is added to the system, the admin and users could be responsible for putting a good description that is consistent with other descriptions, could try to remember all the right tags to add, or could try to remember all the same properties to upload to it. This leads to redundancy, spelling mistakes, inconsistency as well as a general lack of ability to present a rich UI experience. It also doesn't enable predictable search facets for rich search experience. Data model impact ----------------- None REST API impact --------------- None Security impact --------------- None Notifications impact -------------------- None Other end user impact --------------------- No impacts glance client. Work is being done in horizon to take better advantage of these definitions. Performance Impact ------------------ None. Other deployer impact --------------------- This spec will provide deployers with a base set of metadata definitions for software similar to what they are provided for system metadata definitions. They can choose to either use or not use the base definitions provided in this spec. In Juno, example software definitions were not provided. To upgrade, they will need to deploy these files to etc/glance/metadefs and then call glance-manage db_load_metadefs. This call automatically loads new namespaces that aren't already loaded. Developer impact ---------------- None Implementation ============== Assignee(s) ----------- Primary assignee: travis-tripp Other contributors: lakshmi-sampath murali-sundar Reviewers --------- Core reviewer(s): nikhil-komawar Other reviewer(s): wayne-okuma murali-sundar Work Items ---------- Provide definition files for different categories of software. - Databases - Web servers - Runtime environments - More Dependencies ============ None Testing ======= Existing code ensures that metadata definitions are loaded properly. Documentation Impact ==================== Possibly update docs to talk about the base software definitions provided. References ========== http://docs.openstack.org/developer/glance/metadefs-concepts.html