Jump to: navigation, search

Difference between revisions of "Governance/Foundation/3Mar2015BoardMinutes"

(Created page with "<center>MINUTES OF A MEETING OF</center> <center>THE BOARD OF DIRECTORS OF</center> <center>OPENSTACK FOUNDATION</center> <center>March 3, 20159:27 am, Eastern Standard Tim...")
 
Line 109: Line 109:
 
<center><u>Exhibit C</u></center>
 
<center><u>Exhibit C</u></center>
  
<center><u>1503 Guidelines </u></center>
+
<center><u>2015.03 Guidelines </u></center>
 +
OpenStack DefCore Release 2015.03
 +
<nowiki>=================================
 +
</nowiki>
 +
 +
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.
 +
 +
 +
2015.03 Mandatory Capabilities
 +
<nowiki>------------------------------
 +
</nowiki>
 +
 +
Platform Requires: Compute, Image, and Object Components
 +
 +
<nowiki>### Compute Component Capabilities
 +
</nowiki>
 +
 +
<nowiki>======================== </nowiki> <nowiki>==================== </nowiki>
 +
Capability Name            Associated Project 
 +
<nowiki>------------------------ </nowiki> <nowiki>-------------------- </nowiki>     
 +
compute-servers              Nova
 +
compute-volume                Nova
 +
compute-quotas                Nova
 +
compute-flavors              Nova
 +
compute-auth                  Nova
 +
compute-keypairs              Nova
 +
compute-images                Nova
 +
compute-instance-actions      Nova
 +
images-v2                    Glance
 +
 +
 +
<nowiki>### Object Component Capabilities
 +
</nowiki>
 +
 +
<nowiki>======================== </nowiki> <nowiki>==================== </nowiki>
 +
Capability Name            Associated Project 
 +
<nowiki>------------------------ </nowiki> <nowiki>-------------------- </nowiki>     
 +
objectstore-object        Swift
 +
<nowiki>======================== </nowiki> <nowiki>====================
 +
</nowiki>
 +
 +
 +
Releases Covered for DefCore 2015.03
 +
<nowiki>---------------__-------------------
 +
</nowiki>
 +
Applies to Havana, Icehouse, or later.
 +
 +
 +
2015.03  Sections Deprecated from 2014.07
 +
 +
<nowiki>======================== </nowiki> <nowiki>==================== </nowiki>
 +
Capability Name            Associated Project 
 +
<nowiki>------------------------ </nowiki> <nowiki>-------------------- </nowiki> 
 +
volume                      Nova
 +
images-v1                  Glance
 +
compute-floating-ips        Nova
 +
<nowiki>======================== </nowiki> <nowiki>====================
 +
</nowiki>
 +
 +
 +
2015.03 Mandatory Designated Sections
 +
<nowiki>-------------------------------------
 +
</nowiki>
 +
 +
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).
 +
 +
 +
2015.03 Advisory Capabilities
 +
<nowiki>------------------------------
 +
</nowiki>
 +
 +
<nowiki>======================== </nowiki> <nowiki>==================== </nowiki>
 +
Capability Name              Associated Project 
 +
<nowiki>------------------------ </nowiki> <nowiki>--------------------
 +
</nowiki>
 +
compute-servers-metadata  Nova     
 +
auth-token                Keystone
 +
<nowiki>======================== </nowiki> <nowiki>====================
 +
</nowiki>
 +
 +
 +
2015.03 Advisory Designated Sections
 +
<nowiki>------------------------------------
 +
</nowiki>
 +
 +
None [To come later]
 +
 +
2015.03 JSON spec
 +
{
 +
        "release": "2015.03",
 +
        "schema": "1.1",
 +
        "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 core 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 core 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
 +
            }
 +
        },
 +
        "capabilities": {
 +
            "compute-images": {
 +
                "achievements": [
 +
                    "tools",
 +
                    "clients",
 +
                    "complete",
 +
                    "stable",
 +
                    "discover",
 +
                    "doc",
 +
                    "sticky",
 +
                    "atomic",
 +
                    "proximity"
 +
                ],
 +
                "admin": false,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "description": "Flavor operations in the Compute API",
 +
                "flagged": [],
 +
                "name": "compute-flavors",
 +
                "tests": []
 +
            },
 +
            "compute-auth": {
 +
                "achievements": [
 +
                    "deployed",
 +
                    "tools",
 +
                    "clients",
 +
                    "future",
 +
                    "complete",
 +
                    "stable",
 +
                    "discover",
 +
                    "sticky",
 +
                    "foundation",
 +
                    "atomic",
 +
                    "proximity"
 +
                ],
 +
                "admin": false,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "description": "Basic server operations in the Compute API",
 +
                "flagged": [],
 +
                "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,
 +
                "core": true,
 +
                "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,
 +
                "advisory": true,
 +
                "core": false,
 +
                "description": "Manage the access to ip extended attribute for servers through the Compute API",
 +
                "flagged": [],
 +
                "name": "compute-servers-metadata",
 +
                "tests": []
 +
            },
 +
            "images-v2": {
 +
                "achievements": [
 +
                    "future",
 +
                    "complete",
 +
                    "stable",
 +
                    "discover",
 +
                    "doc",
 +
                    "foundation",
 +
                    "atomic",
 +
                    "proximity"
 +
                ],
 +
                "admin": false,
 +
                "advisory": true,
 +
                "core": true,
 +
                "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,
 +
                "core": true,
 +
                "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,
 +
                "advisory": true,
 +
                "core": false,
 +
                "description": "Generate an auth token given an identity endpoint",
 +
                "flagged": [],
 +
                "name": "auth-token",
 +
                "tests": []
 +
            }
 +
        }
 +
}
  
 
<center><u>Exhibit d</u></center>
 
<center><u>Exhibit d</u></center>
  
 
<center><u>[[Governance/Foundation/18Dec2014BoardMinutes|December 18, 2014 Minutes]] </u></center>
 
<center><u>[[Governance/Foundation/18Dec2014BoardMinutes|December 18, 2014 Minutes]] </u></center>

Revision as of 19:36, 3 April 2015

MINUTES OF A MEETING OF
THE BOARD OF DIRECTORS OF
OPENSTACK FOUNDATION
March 3, 20159:27 am, Eastern Standard Time

The following are the minutes of a meeting of the Board of Directors (the “Board”) of OpenStack Foundation, a Delaware corporation (the “Foundation”), at DLA Piper, 1251 Avenue of the Americas, New York, New York at the above time pursuant to notice duly given to all directors. The following directors were present for all or part of the meeting:

  • Alan Clark
  • Alex Freedland (by telephone)
  • Chris Kemp
  • Egle Sigler
  • Eileen Evans
  • Imad Sousou
  • Kavit Munshi (by telephone)
  • Lew Tucker
  • Mark McLoughlin
  • Monty Taylor
  • Rob Hirschfeld
  • Robert Esker
  • Russell Bryant
  • Sean Roberts
  • Simon Anderson
  • Steve Hallet
  • Tim Bell
  • Toby Ford
  • Todd Moore
  • Tristan Goode (by telephone)
  • Van Lindberg
  • Vishvananda Ishaya


Also present for some or all of the meeting were Jonathan Bryce, Mark Collier, Lauren Sell, Heidi Bretz and Mark Radcliffe of DLA Piper. Mr. Clark called the meeting to order and provided an overview of the agenda. He also served as Chairman. Mr. Radcliffe served as Secretary of the meeting and recorded the minutes.

Approval of Board Minutes.

Mr. Clark presented the minutes from the January 28, 2015 Board meeting. After a discussion, upon a motion duly made and seconded the following resolution was unanimously approved by the Board:

RESOLVED, that minutes of the Board meeting on January 28, 2015 attached as Exhibit A is approved.

Appointment of Members of the Legal Affairs Committee.

The Bylaws have been amended to eliminate the number of members on the Legal Affairs Committee under Section 4.15 of the Bylaws. The amendments to the Bylaws still require approval by the Gold Members and Platinum Members. Upon motion duly made and seconded, the Board adopted the following resolution:

RESOLVED, subject to the approval of the amendments to the Bylaws by the required vote of the Gold Members and Platinum Members, the Board believes that it is in the best interests of the Foundation to appoint members to the Legal Affairs Committee to make recommendations to the Board.

RESOLVED FURTHER, that the Board appoints the following members to serve at the pleasure of the Board: Nissa Strottman (HP), Van Lindberg (Rackspace), Andrew Sinclair (Canonical), Brad Haque (Attachmate), Steve Pentlicki (AT&T), Rob Tiller (Red Hat), Eileen Evans (HP), Richard Fontana (HP), Ted McCullough (EMC), Dale Mohlenhoff (Cisco), Feb Cabrasawan (IBM) and George Simion (NetApp).

RESOLVED FURTHER, that the Board appoints Nissa Strottman to act as Chair of the Legal Affairs Committee to serve at the pleasure of the Board.

RESOLVED FURTHER, that the Board appoints Eileen Evans to act as liaison from the Board to the Legal Affairs to serve at the pleasure of the Board.

Strategy Discussion

Mr. Collier provided an overview of the strategy for the Foundation for the next five years. The Board formed four discussion groups. After a discussion, each discussion summarized their discussions and conclusions to the Board.

Approval of DefCore Principles

The Bylaws have been amended to modify the method of determining how the OpenStack trademarks will be licensed. The amendments to the Bylaws still require approval by the Gold Members and Platinum Members. Upon motion duly made and seconded, the Board adopted the following resolution (Robert Esker abstaining):

RESOLVED, subject to the approval of the amendments to the Bylaws by the required vote of the Gold Members and Platinum Members, the Board believes that it is in the best interests of the Foundation to approve the DefCore process summarized in Exhibit B (“DefCore Process”).

RESOLVED FURTHER, that the Board approves the guidelines designated 2015.03 set forth in Exhibit C to the Havana and Icehouse releases provided that these changes will only apply to the licensees of the OpenStack trademark who have executed new trademark licenses which reference these new requirements.

Discussion of Transparency and Diversity

Kavit Munshi reported on the concerns on transparency and diversity by the community.

Discussion of Other Matters

There being no further business before the Board and upon motion duly made and seconded, the meeting was then adjourned at 5:00 pm EST.


Respectfully submitted,


Mark Radcliffe

Secretary of the Meeting

APPROVED:


Alan Clark

Chairman of the Meeting


Exhibit A
January 28, 2015 Minutes


Exhibit B
DefCore Process


Exhibit C
2015.03 Guidelines
OpenStack DefCore Release 2015.03
=================================


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.


2015.03 Mandatory Capabilities
------------------------------


Platform Requires: Compute, Image, and Object Components

### Compute Component Capabilities


========================  ====================  
Capability Name            Associated Project   
------------------------  --------------------        
compute-servers               Nova
compute-volume                Nova
compute-quotas                Nova
compute-flavors               Nova
compute-auth                  Nova
compute-keypairs              Nova
compute-images                Nova
compute-instance-actions      Nova
images-v2                     Glance


### Object Component Capabilities


========================  ====================  
Capability Name            Associated Project   
------------------------  --------------------        
objectstore-object         Swift
========================  ====================



Releases Covered for DefCore 2015.03
---------------__-------------------

Applies to Havana, Icehouse, or later.


2015.03  Sections Deprecated from 2014.07

========================  ====================  
Capability Name            Associated Project   
------------------------  --------------------   
volume                      Nova
images-v1                   Glance
compute-floating-ips        Nova
========================  ====================



2015.03 Mandatory 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).


2015.03 Advisory Capabilities
------------------------------


========================  ====================  
Capability Name               Associated Project   
------------------------  -------------------- 

compute-servers-metadata  Nova       
auth-token                Keystone
========================  ====================



2015.03 Advisory Designated Sections
------------------------------------


None [To come later]

2015.03 JSON spec {

       "release": "2015.03",
       "schema": "1.1",
       "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 core 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 core 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
           }
       },
       "capabilities": {
           "compute-images": {
               "achievements": [
                   "tools",
                   "clients",
                   "complete",
                   "stable",
                   "discover",
                   "doc",
                   "sticky",
                   "atomic",
                   "proximity"
               ],
               "admin": false,
               "core": true,
               "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,
               "core": true,
               "description": "Flavor operations in the Compute API",
               "flagged": [],
               "name": "compute-flavors",
               "tests": []
           },
           "compute-auth": {
               "achievements": [
                   "deployed",
                   "tools",
                   "clients",
                   "future",
                   "complete",
                   "stable",
                   "discover",
                   "sticky",
                   "foundation",
                   "atomic",
                   "proximity"
               ],
               "admin": false,
               "core": true,
               "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,
               "core": true,
               "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,
               "core": true,
               "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,
               "core": true,
               "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,
               "core": true,
               "description": "Basic server operations in the Compute API",
               "flagged": [],
               "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,
               "core": true,
               "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,
               "advisory": true,
               "core": false,
               "description": "Manage the access to ip extended attribute for servers through the Compute API",
               "flagged": [],
               "name": "compute-servers-metadata",
               "tests": []
           },
           "images-v2": {
               "achievements": [
                   "future",
                   "complete",
                   "stable",
                   "discover",
                   "doc",
                   "foundation",
                   "atomic",
                   "proximity"
               ],
               "admin": false,
               "advisory": true,
               "core": true,
               "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,
               "core": true,
               "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,
               "advisory": true,
               "core": false,
               "description": "Generate an auth token given an identity endpoint",
               "flagged": [],
               "name": "auth-token",
               "tests": []
           }
       }

}

Exhibit d
December 18, 2014 Minutes