From 32ce79536e9fec3cfea722b24a8b44db9d993ce7 Mon Sep 17 00:00:00 2001 From: Rob Hirschfeld Date: Mon, 9 Mar 2015 09:49:20 -0500 Subject: [PATCH] Initial draft of 2015.03 guideline Initial draft of 2015.03 guideline as passed by the board. We are condensing two steps into one here > format & content. After we accept this, we will create a new prelim guideline for the next review cycle (target at 2015.04!). I've also moved from files out of the root directory for cleanup. The RST and JSON files should match in content. Change-Id: I40623b38e80a7d4a65a66d7210f6dfad5835c371 --- .gitreview | 4 + 2015.03.json | 520 ++++++++++++++++++ 2015.03.rst | 118 ++++ README.rst | 89 ++- capabilities.html => legacy/capabilities.html | 0 havanacore.json => legacy/havanacore.json | 0 .../havanasections.json | 0 icehousecore.json => legacy/icehousecore.json | 0 junocore.json => legacy/junocore.json | 0 9 files changed, 681 insertions(+), 50 deletions(-) create mode 100644 .gitreview create mode 100644 2015.03.json create mode 100644 2015.03.rst rename capabilities.html => legacy/capabilities.html (100%) rename havanacore.json => legacy/havanacore.json (100%) rename havanasections.json => legacy/havanasections.json (100%) rename icehousecore.json => legacy/icehousecore.json (100%) rename junocore.json => legacy/junocore.json (100%) diff --git a/.gitreview b/.gitreview new file mode 100644 index 00000000..23134a07 --- /dev/null +++ b/.gitreview @@ -0,0 +1,4 @@ +[gerrit] +host=review.openstack.org +port=29418 +project=openstack/defcore diff --git a/2015.03.json b/2015.03.json new file mode 100644 index 00000000..c32059fe --- /dev/null +++ b/2015.03.json @@ -0,0 +1,520 @@ +{ + "id": "2015.03", + "schema": "1.1", + "status": "approved", + "replaces": "2014.07", + "releases": ["havana", "icehouse"], + "platform": { + "required": ["compute", "object"], + "advisory": [], + "deprecated": [], + "removed": [] + }, + "components": { + "compute": { + "required": [ + "compute-auth", + "compute-flavors", + "compute-images", + "compute-instance-actions", + "compute-keypairs", + "compute-quotas", + "compute-servers", + "compute-volume", + "images-v2"], + "advisory": [ + "auth-token", + "compute-servers-metadata"], + "deprecated": [], + "removed": [ + "compute-floating-ips", + "images-v1", + "volume"] + }, + "object": { + "required": ["objectstore-object"], + "advisory": [], + "deprecated": [], + "removed": [] + } + }, + "capabilities": { + "compute-images": { + "achievements": [ + "tools", + "clients", + "complete", + "stable", + "discover", + "doc", + "sticky", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Image operations within the Compute API", + "flagged": [], + "name": "compute-images", + "tests": [ + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_server_id", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_filter_by_changes_since", + "tempest.api.compute.images.test_images.ImagesTestJSON.test_delete_saving_image", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_filter_by_status", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_type", + "tempest.api.compute.images.test_list_images.ListImagesTestJSON.test_get_image", + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_server_ref", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_name", + "tempest.api.compute.images.test_list_images.ListImagesTestJSON.test_list_images_with_detail", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_filter_by_type", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_status", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_filter_by_server_ref", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_limit_results", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_filter_by_name", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_with_detail_limit_results", + "tempest.api.compute.images.test_list_images.ListImagesTestJSON.test_list_images", + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name", + "tempest.api.compute.images.test_list_image_filters.ListImageFiltersTestJSON.test_list_images_filter_by_changes_since" + ] + }, + "compute-flavors": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Flavor operations in the Compute API", + "flagged": [], + "name": "compute-flavors", + "tests": [] + }, + "compute-floating-ips": { + "achievements": [], + "admin": false, + "status": "removed", + "guidelines": ["2014.07"], + "description": "Manage floating IPs through the Compute API. Not consistently implemented between Nova net and Neutron", + "flagged": [], + "name": "Compute Floating IPs", + "tests": [] + }, + "compute-auth": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + + "complete", + "stable", + "discover", + "sticky", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Auth related tests using Compute API", + "flagged": [], + "name": "compute-auth", + "tests": [ + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_create_server_with_unauthorized_image", + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_get_metadata_of_alt_account_server_fails", + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_create_server_fails_when_tenant_incorrect", + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_set_metadata_of_alt_account_server_fails" + ] + }, + "compute-instance-actions": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "foundation", + "atomic" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Basic support Compute API for server actions such as reboot, rebuild, resize", + "flagged": [], + "name": "compute-instance-actions", + "tests": [ + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions", + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action" + ] + }, + "compute-keypairs": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "atomic" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Generate, import, and delete SSH keys within Compute services", + "flagged": [], + "name": "compute-keypairs", + "tests": [ + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair", + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_create_keypair_in_analt_user_tenant", + "tempest.api.compute.test_authorization.AuthorizationTestJSON.test_get_keypair_of_alt_account_fails" + ] + }, + "compute-quotas": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Quotas management in Compute API", + "flagged": [], + "name": "compute-quotas", + "tests": [ + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas", + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas" + ] + }, + "compute-servers": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Basic server operations in the Compute API", + "flagged": [ + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_ip_regex", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_change_server_password" + ], + "name": "compute-servers", + "tests": [ + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_a_server_of_another_tenant", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_reboot_deleted_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_resize_server_with_null_flavor", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_resize_server_with_non_existent_flavor", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_of_another_tenant", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_name_of_non_existent_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_name_length_exceeds_256", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_future_date", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_invalid_date", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_negative_value", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_string", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_flavor", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_image", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_server_name", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_detail_server_is_deleted", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_status_non_existing", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_greater_than_actual_count", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_ip_regex", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_name", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_status", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_name_wildcard", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_flavor", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_limit_results", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_limit", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_image", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_ip", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_image", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_name", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_resize_server_confirm", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_change_server_password", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_resize_server_revert", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_soft", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_get_console_output", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers_with_detail", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_update_server_metadata", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_list_server_metadata", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_delete_server_metadata_item", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_get_server_metadata_item", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata", + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata_item", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail" + ] + }, + "compute-volume": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Retrieve volume information through the Compute API", + "flagged": [], + "name": "compute-volume", + "tests": [ + "tempest.api.compute.volumes.test_volumes_list.VolumesTestJSON.test_volume_list", + "tempest.api.compute.volumes.test_volumes_list.VolumesTestJSON.test_volume_list_with_details", + "tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume", + "tempest.api.compute.volumes.test_volumes_negative.VolumesNegativeTest.test_get_volume_without_passing_volume_id", + "tempest.api.compute.volumes.test_volumes_negative.VolumesNegativeTest.test_get_invalid_volume_id" + ] + }, + "compute-servers-metadata": { + "achievements": [ + "deployed", + "tools", + "clients", + "future", + "complete", + "stable", + "discover", + "doc", + "sticky", + "foundation" + ], + "admin": false, + "status": "advisory", + "guidelines": [], + "description": "Manage the access to ip extended attribute for servers through the Compute API", + "flagged": [], + "name": "compute-servers-metadata", + "tests": [] + }, + "images-v1": { + "achievements": [], + "admin": false, + "status": "removed", + "guidelines": ["2014.07"], + "description": "Basic image management in the Images API v1", + "flagged": [], + "name": "images-v1", + "tests": [] + }, + "images-v2": { + "achievements": [ + "future", + "complete", + "stable", + "discover", + "doc", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "CRUD image operations in Images API v2", + "flagged": [], + "name": "images-v2", + "tests": [ + "tempest.api.image.v2.test_images.ListImagesTest.test_index_no_params" + ] + }, + "objectstore-object": { + "achievements": [ + "tools", + "clients", + "future", + "complete", + "stable", + "doc", + "foundation", + "atomic", + "proximity" + ], + "admin": false, + "status": "required", + "guidelines": ["2014.07", "2015.03"], + "description": "Basic object operations in Object Storage API", + "flagged": [], + "name": "objectstore-object", + "tests": [ + "tempest.api.object_storage.test_object_services.ObjectTest.test_copy_object_2d_way", + "tempest.api.object_storage.test_object_services.ObjectTest.test_copy_object_in_same_container", + "tempest.api.object_storage.test_object_services.ObjectTest.test_copy_object_across_containers", + "tempest.api.object_storage.test_object_services.ObjectTest.test_copy_object_to_itself", + "tempest.api.object_storage.test_object_services.ObjectTest.test_create_object", + "tempest.api.object_storage.test_object_services.ObjectTest.test_delete_object", + "tempest.api.object_storage.test_object_services.ObjectTest.test_get_object", + "tempest.api.object_storage.test_object_services.ObjectTest.test_get_object_if_different", + "tempest.api.object_storage.test_object_services.ObjectTest.test_object_upload_in_segments", + "tempest.api.object_storage.test_object_temp_url.ObjectTempUrlTest.test_put_object_using_temp_url", + "tempest.api.object_storage.test_object_temp_url.ObjectTempUrlTest.test_get_object_using_temp_url", + "tempest.api.object_storage.test_object_version.ContainerTest.test_versioned_container", + "tempest.api.object_storage.test_object_expiry.ObjectExpiryTest.test_get_object_after_expiry_time", + "tempest.api.object_storage.test_object_services.PublicObjectTest.test_access_public_object_with_another_user_creds", + "tempest.api.object_storage.test_object_services.PublicObjectTest.test_access_public_container_object_without_using_creds" + ] + }, + "auth-token": { + "achievements": [], + "admin": false, + "status": "advisory", + "guidelines": [], + "description": "Generate an auth token given an identity endpoint", + "flagged": [], + "name": "auth-token", + "tests": [] + } + }, + "volume": { + "achievements": [], + "admin": true, + "status": "removed", + "guidelines": ["2014.07"], + "description": "CRUD operations for volumes management in Block Storage API", + "flagged": [], + "name": "volume", + "tests": [] + }, + "criteria": { + "atomic": { + "Description": "Capabilities is unique and cannot be built out of other must-pass capabilities", + "name": "Atomic", + "weight": 8 + }, + "clients": { + "Description": "Candidates are widely used capabilities: Should be included if part of common libraries (Fog, Apache jclouds, etc)", + "name": "Used by Clients", + "weight": 8 + }, + "complete": { + "Description": "Where the code being tested has a designated area of alternate implementation (extension framework) as per the Core Principles, there should be parity in capability tested across extension implementations. This also implies that the capability test is not configuration specific or locked to non-open technology", + "name": "Complete", + "weight": 8 + }, + "deployed": { + "Description": "Candidates are widely deployed capabilities. We favor capabilities that are supported by multiple public cloud providers and private cloud products", + "name": "Widely Deployed", + "weight": 8 + }, + "discover": { + "Description": "Capability being tested is Service Discoverable (can be found in Keystone and via service introspection)", + "name": "Discoverable", + "weight": 8 + }, + "doc": { + "Description": "Should be well documented, particularly the expected behavior. This can be a very subjective measure and we expect to refine this definition over time", + "name": "Documented", + "weight": 8 + }, + "foundation": { + "Description": "Test capabilities that are required by other must-pass tests and/or depended on by many other capabilities", + "name": "Foundation", + "weight": 8 + }, + "future": { + "Description": "Should reflect future technical direction (from the project technical teams and the TC) and help manage deprecated capabilities", + "name": "Future Direction", + "weight": 9 + }, + "proximity": { + "Description": "Sometimes called a Test Cluster, selects for Capabilities that are related to Core Capabilities. This helps ensure that related capabilities are managed together", + "name": "Proximity", + "weight": 8 + }, + "stable": { + "Description": "Test is required stable for >2 releases because we don't want DefCore capabilities that do not have dependable APIs", + "name": "Stable", + "weight": 9 + }, + "sticky": { + "Description": "A test that is a must-pass test should stay a must-pass test. This makes DefCore capabilities sticky release per release. Leaving Core is disruptive to the ecosystem", + "name": "Core in Last Release", + "weight": 9 + }, + "tools": { + "Description": "Candidates are widely used capabilities:Should be included if supported by common tools (RightScale, Scalr, CloudForms, ...)", + "name": "Used by Tools", + "weight": 9 + } + } +} diff --git a/2015.03.rst b/2015.03.rst new file mode 100644 index 00000000..1f187391 --- /dev/null +++ b/2015.03.rst @@ -0,0 +1,118 @@ +================================= +OpenStack DefCore 2015.03 +================================= + +Status: Approved +Replaces: 2014.07 + +This document outlines the mandatory and advisory capabilities +required to exist in a software installation in order to be +eligible to use marks controlled by the OpenStack Foundation. + +This document supersedes the companion JSON version. + + +Releases Covered +============================== +Applies to Havana, Icehouse + + +Platform Components +============================== +Required: Compute and Object + +Advisory: None + +Deprecated: None + +Removed: None + +Compute Component Capabilities +============================== + +======================== ==================== +Capability Name Associated Project +------------------------ -------------------- +compute-auth Nova +compute-flavors Nova +compute-images Nova +compute-instance-actions Nova +compute-keypairs Nova +compute-quotas Nova +compute-servers Nova +compute-volume Nova +images-v2 Glance +======================== ==================== + +Advisory Capabilities +------------------------------ + +======================== ==================== +Capability Name Associated Project +------------------------ -------------------- +auth-token Keystone +compute-servers-metadata Nova +======================== ==================== + +Deprecated Capabilities +------------------------------ +None. + +Removed Capabilities +------------------------------ + +======================== ==================== +Capability Name Associated Project +------------------------ -------------------- +compute-floating-ips Nova +images-v1 Glance +volume Nova +======================== ==================== + + +Object Component Capabilities +============================== + +======================== ==================== +Capability Name Associated Project +------------------------ -------------------- +objectstore-object Swift +======================== ==================== + +Advisory Capabilities +------------------------------ +None. + +Deprecated Capabilities +------------------------------ +None. + +Removed Capabilities +------------------------------ +None. + + +Designated Sections +============================== + +The following designated sections apply to the same releases as +this specification. + +* Nova is by default designated except scheduler, filter, drivers, API + extensions and networking. +* Glance designated sections are the API implementation code and domain model. +* Swift designated sections are proxy server, object server, container server, + account server and select middleware (complete list provided by community in + linked json document). + + +Advisory Designated Sections +------------------------------------ + +None. + +Functional Information +====================== +Format: RestructuredText + +Layout: 1.0 diff --git a/README.rst b/README.rst index d4d40a7a..a675bd11 100644 --- a/README.rst +++ b/README.rst @@ -1,10 +1,8 @@ ================================================= -Understanding the DefCore JSON Schema +Understanding the DefCore Guidelines ================================================= -This folder contains DefCore committee managed files that provide trusted guidance for the OpenStack community. - -Assets for each release are tracked in dedicated subdirectories so JSON schema may change per release if needed. +This repository contains DefCore committee managed files that provide guidance for the OpenStack community. NOTE: Changes to file requires approval of the DefCore committee chair(s). @@ -12,68 +10,59 @@ NOTE: Changes to file requires approval of the DefCore committee chair(s). DefCore Process Flow ==================== -See: https://wiki.openstack.org/w/images/6/68/DefCoreProcessFlow.pdf +TBD Terminology ==================== -See: https://wiki.openstack.org/wiki/Governance/DefCoreLexicon +TBD + +JSON Schema +==================== The JSON files have a specific schema to support .. code-block:: json - { "release": "havana", - "schema": "1.0", - "criteria" : { + { "id": "2015.03", # Spec name (date based) + "schema": "1.1", # Schema version + "status": "approved", # can be draft, review or approved + "replaces": "2014.07", # previous spec + "releases": ["icehouse"], # array of releases, lower case + "platform": { # platform components + "required": ["compute", "object"], # array + "advisory": [], # incoming array + "depricated": [], # outgoing array + "removed": [] # removed array + }, + "components": { # components detail + "compute": { # component name + "required": [ # required array + "compute-auth"], + "advisory": [ # incoming array + "compute-servers-metadata"], + "deprecated": [], # outgoing array + "removed": [ # removed array + "volume"] + }, + }, + "criteria" : { # explains achievements "atomic" : { "Description" : "blah blah blah", "name" : "Atomic", "weight": 8 }, - "capabilities": { - "example-cap" : { "achievements" : [ "deployed", + "capabilities": { # capabilities listed in components + "example-cap" : # capability + { "achievements" : # array of criteria met + [ "deployed", "future", "complete"], - "admin" : true, - "core" : false, + "admin" : false, # is admin API + "status" : "required", # de-normalized from components "description" : "Helpful Description", - "flagged" : [ ], + "flagged" : [ ], # flagged tests array "name" : "Friendly Short Name", - "tests" : [ "tempest.api.project.file.class.test_name" ] + "tests" : # list of tests (please use UUIDs) + [ "tempest.api.project.file.class.test_name" ] }, -Schema Explanation: -------------------- - -* release: provides the release described in the JSON file -* schema: version of the schema -* criteria: block describing the scoring criteria for the release - * criteria/[id]: block for a specific criteria (using an ID) - * criteria/[id]/name: friendly name for the criteria - * criteria/[id]/description: longer description for the criteria - * criteria/[id]/weight: weight applied. All criteria together should = 100 -* capabilities: block describing all the capabilities identified for the release - * capabilities/[id]: block for a specific capability (using an ID) - * capabilities/[id]/name: friend name for the capability - * capabilities/[id]/description: longer description for the capability - * capabilities/[id]/core: boolean set by Board if capability is required - * capabilities/[id]/admin: boolean set by PTL if capability is for admin use - * capabilities/[id]/achievements: list of criteria passed for this capability (set by Board) - * capabilities/[id]/tests: list of tests included in the capability (set by PTL) - * capabilities/[id]/flagged: tests that have been excluded for this capability (set by Board) - -Ownership for Changes -===================== - -TC/PTL ---------------------- -1. Capabilities Description -1. Capabilities Test List - -DefCore ---------------------- -1. Flagged Tests -1. Capabilities "Score -1. Criteria Names and Descriptions - - diff --git a/capabilities.html b/legacy/capabilities.html similarity index 100% rename from capabilities.html rename to legacy/capabilities.html diff --git a/havanacore.json b/legacy/havanacore.json similarity index 100% rename from havanacore.json rename to legacy/havanacore.json diff --git a/havanasections.json b/legacy/havanasections.json similarity index 100% rename from havanasections.json rename to legacy/havanasections.json diff --git a/icehousecore.json b/legacy/icehousecore.json similarity index 100% rename from icehousecore.json rename to legacy/icehousecore.json diff --git a/junocore.json b/legacy/junocore.json similarity index 100% rename from junocore.json rename to legacy/junocore.json