diff options
author | hongbo tian <hongbo.tianhongbo@huawei.com> | 2017-09-28 09:28:41 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@opnfv.org> | 2017-09-28 09:28:41 +0000 |
commit | 61820ee85c967d90021e4089c6a7907046685639 (patch) | |
tree | 0c3f23e2146f0855fb5be0ff55343d59e3a9c9ab /cvp/3rd_party/static/testapi-ui/components/guidelines | |
parent | 0cc2fdefa9e6e959e7c69beede736738f339f636 (diff) | |
parent | 0cf6b232ac9cf128ee9183a27c08f4f74ab2e2e6 (diff) |
Merge "add api&web services for cvp"
Diffstat (limited to 'cvp/3rd_party/static/testapi-ui/components/guidelines')
7 files changed, 1248 insertions, 0 deletions
diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/data/danube.json b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/danube.json new file mode 100644 index 00000000..99613b72 --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/danube.json @@ -0,0 +1,590 @@ +{ + "mandatory": { + "name": "Mandatory CVP Test Areas", + "value": [ + { + "area_name": "Test Area VIM Operations - Compute", + "value": [ + { + "api_name": "Image operations within the Compute API", + "value": [ + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image", + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name" + ] + }, + { + "api_name": "Basic support Compute API for server actions such as reboot, rebuild, resize", + "value": [ + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action", + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions" + ] + }, + { + "api_name": "Generate, import, and delete SSH keys within Compute services", + "value": [ + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair" + ] + }, + { + "api_name": "List supported versions of the Compute API", + "value": [ + "tempest.api.compute.test_versions.TestVersions.test_list_api_versions" + ] + }, + { + "api_name": "Quotas management in Compute API", + "value": [ + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas", + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas" + ] + }, + { + "api_name": "Basic server operations in the Compute API", + "value": [ + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name", + "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_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_image", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid", + "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_get_non_existent_server", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address", + "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.ServersTestManualDisk.test_list_servers", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail", + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor", + "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_detailed_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_detailed_limit_results", + "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_filter_by_image", + "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_filter_by_server_name", + "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_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_greater_than_actual_count", + "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_status_non_existing", + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server", + "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_list_server_metadata", + "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_server_metadata.ServerMetadataTestJSON.test_update_server_metadata", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server", + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address", + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name", + "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_name_length_exceeds_256", + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus", + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus", + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details" + ] + }, + { + "api_name": "Retrieve volume information through the Compute API", + "value": [ + "tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume", + "tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_list_get_volume_attachments" + ] + } + ] + }, + { + "area_name": "Test Area VIM Operations - Identity", + "value": [ + { + "api_name": "API discovery operations within the Identity v3 API", + "value": [ + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types", + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources", + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_statuses" + ] + }, + { + "api_name": "Auth operations within the Identity API", + "value": [ + "tempest.api.identity.v3.test_tokens.TokensV3Test.test_create_token" + ] + } + ] + }, + { + "area_name": "Test Area VIM Operations - Image", + "value": [ + { + "api_name": "Image deletion tests using the Glance v2 API", + "value": [ + "tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_delete_image", + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_image_null_id", + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_non_existing_image", + "tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_delete_non_existing_tag" + ] + }, + { + "api_name": "Image get tests using the Glance v2 API", + "value": [ + "tempest.api.image.v2.test_images.ListImagesTest.test_get_image_schema", + "tempest.api.image.v2.test_images.ListImagesTest.test_get_images_schema", + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_delete_deleted_image", + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_image_null_id", + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_non_existent_image" + ] + }, + { + "api_name": "CRUD image operations in Images API v2", + "value": [ + "tempest.api.image.v2.test_images.ListImagesTest.test_list_no_params" + ] + }, + { + "api_name": "Image list tests using the Glance v2 API", + "value": [ + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_container_format", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_disk_format", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_limit", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_min_max_size", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_size", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_status", + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_visibility" + ] + }, + { + "api_name": "Image update tests using the Glance v2 API", + "value": [ + "tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_update_image", + "tempest.api.image.v2.test_images_tags.ImagesTagsTest.test_update_delete_tags_for_image", + "tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_update_tags_for_non_existing_image" + ] + } + ] + }, + { + "area_name": "Test Area VIM Operations - Network", + "value": [ + { + "api_name": "Basic CRUD operations on L2 networks and L2 network ports", + "value": [ + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_all_attributes", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_allocation_pools", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_dhcp_enabled", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw_and_allocation_pools", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_host_routes_and_dns_nameservers", + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_without_gateway", + "tempest.api.network.test_networks.NetworksTest.test_create_update_delete_network_subnet", + "tempest.api.network.test_networks.NetworksTest.test_delete_network_with_subnet", + "tempest.api.network.test_networks.NetworksTest.test_list_networks", + "tempest.api.network.test_networks.NetworksTest.test_list_networks_fields", + "tempest.api.network.test_networks.NetworksTest.test_list_subnets", + "tempest.api.network.test_networks.NetworksTest.test_list_subnets_fields", + "tempest.api.network.test_networks.NetworksTest.test_show_network", + "tempest.api.network.test_networks.NetworksTest.test_show_network_fields", + "tempest.api.network.test_networks.NetworksTest.test_show_subnet", + "tempest.api.network.test_networks.NetworksTest.test_show_subnet_fields", + "tempest.api.network.test_networks.NetworksTest.test_update_subnet_gw_dns_host_routes_dhcp", + "tempest.api.network.test_ports.PortsTestJSON.test_create_bulk_port", + "tempest.api.network.test_ports.PortsTestJSON.test_create_port_in_allowed_allocation_pools", + "tempest.api.network.test_ports.PortsTestJSON.test_create_update_delete_port", + "tempest.api.network.test_ports.PortsTestJSON.test_list_ports", + "tempest.api.network.test_ports.PortsTestJSON.test_list_ports_fields", + "tempest.api.network.test_ports.PortsTestJSON.test_show_port", + "tempest.api.network.test_ports.PortsTestJSON.test_show_port_fields", + "tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_security_group_and_extra_attributes", + "tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_two_security_groups_and_extra_attributes" + ] + }, + { + "api_name": "Basic CRUD operations on security groups", + "value": [ + "tempest.api.network.test_security_groups.SecGroupTest.test_create_list_update_show_delete_security_group", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_additional_args", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_icmp_type_code", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_protocol_integer_value", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_group_id", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_ip_prefix", + "tempest.api.network.test_security_groups.SecGroupTest.test_create_show_delete_security_group_rule", + "tempest.api.network.test_security_groups.SecGroupTest.test_list_security_groups", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_additional_default_security_group_fails", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_duplicate_security_group_rule_fails", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_ethertype", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_protocol", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_remote_ip_prefix", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_invalid_ports", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_remote_groupid", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_security_group", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_delete_non_existent_security_group", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group", + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group_rule" + ] + } + ] + }, + { + "area_name": "Test Area VIM Operations - Volume", + "value": [ + { + "api_name": "Volume attach and detach operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_attach_detach_volume_to_instance", + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_get_volume_attachment", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_attach_volumes_with_nonexistent_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_detach_volumes_with_invalid_volume_id" + ] + }, + { + "api_name": "Volume service availability zone operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list" + ] + }, + { + "api_name": "Volume cloning operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone" + ] + }, + { + "api_name": "Image copy-to-volume operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable", + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image" + ] + }, + { + "api_name": "Volume creation and deletion operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero" + ] + }, + { + "api_name": "Volume service extension listing operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions" + ] + }, + { + "api_name": "Volume GET operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id" + ] + }, + { + "api_name": "Volume listing operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_by_name", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_by_name", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_param_display_name_and_status", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_display_name_and_status", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_metadata", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_details", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_param_metadata", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_availability_zone", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_status", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_availability_zone", + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_status", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_invalid_status", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_nonexistent_name", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_invalid_status", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_nonexistent_name", + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination", + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params", + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination" + ] + }, + { + "api_name": "Volume metadata operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata", + "tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item" + ] + }, + { + "api_name": "Verification of read-only status on volumes with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update" + ] + }, + { + "api_name": "Volume reservation operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id" + ] + }, + { + "api_name": "Volume snapshot creation/deletion operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata", + "tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_delete_nonexistent_volume_id", + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshot_create_get_list_update_delete", + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot", + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_details_with_params", + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params", + "tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id", + "tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id" + ] + }, + { + "api_name": "Volume update operations with the Cinder v2 API", + "value": [ + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id", + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id" + ] + } + ] + }, + { + "area_name": "Test Area High Availability", + "value": [ + { + "api_name": "Verify high availability of OpenStack controller services", + "value": [ + "opnfv.ha.tc001.nova-api_service_down", + "opnfv.ha.tc003.neutron-server_service_down", + "opnfv.ha.tc004.keystone_service_down", + "opnfv.ha.tc005.glance-api_service_down", + "opnfv.ha.tc006.cinder-api_service_down", + "opnfv.ha.tc009.cpu_overload", + "opnfv.ha.tc010.disk_I/O_block", + "opnfv.ha.tc011.load_balance_service_down" + ] + } + ] + }, + { + "area_name": "Test Area vPing - Basic VNF Connectivity", + "value": [ + { + "api_name": "Verify basic VNF connectivity with ICMP ping packets", + "value": [ + "opnfv.vping.userdata", + "opnfv.vping.ssh" + ] + } + ] + } + ] + }, + "optional": { + "name": "Optional CVP Test Areas", + "value": [ + { + "area_name": "Test Area BGP VPN", + "value": [ + { + "api_name": "Verify association and dissasocitation of node using route targets", + "value": [ + "opnfv.sdnvpn.subnet_connectivity", + "opnfv.sdnvpn.tenant separation", + "opnfv.sdnvpn.router_association", + "opnfv.sdnvpn.router_association_floating_ip" + ] + } + ] + }, + { + "area_name": "Test Area IPv6 Compliance Testing Methodology and Test Cases", + "value": [ + { + "api_name": "Test Case 1: Create and Delete an IPv6 Network, Port and Subnet", + "value": [ + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_network", + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_port", + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_subnet" + ] + }, + { + "api_name": "Test Case 2: Create, Update and Delete an IPv6 Network and Subnet", + "value": [ + "tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet" + ] + }, + { + "api_name": "Test Case 3: Check External Network Visibility", + "value": [ + "tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility" + ] + }, + { + "api_name": "Test Case 4: List IPv6 Networks and Subnets of a Tenant", + "value": [ + "tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks", + "tempest.api.network.test_networks.NetworksIpV6Test.test_list_subnets" + ] + }, + { + "api_name": "Test Case 5: Show Information of an IPv6 Network and Subnet", + "value": [ + "tempest.api.network.test_networks.NetworksIpV6Test.test_show_network", + "tempest.api.network.test_networks.NetworksIpV6Test.test_show_subnet" + ] + }, + { + "api_name": "Test Case 6: Create an IPv6 Port in Allowed Allocation Pools", + "value": [ + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_in_allowed_allocation_pools" + ] + }, + { + "api_name": "Test Case 7: Create an IPv6 Port without Security Groups", + "value": [ + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_with_no_securitygroups" + ] + }, + { + "api_name": "Test Case 8: Create, Update and Delete an IPv6 Port", + "value": [ + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_update_delete_port" + ] + }, + { + "api_name": "Test Case 9: List IPv6 Ports of a Tenant", + "value": [ + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_list_ports" + ] + }, + { + "api_name": "Test Case 10: Show Information of an IPv6 Port", + "value": [ + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_show_port" + ] + }, + { + "api_name": "Test Case 11: Add Multiple Interfaces for an IPv6 Router", + "value": [ + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces" + ] + }, + { + "api_name": "Test Case 12: Add and Remove an IPv6 Router Interface with port_id", + "value": [ + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_port_id" + ] + }, + { + "api_name": "Test Case 13: Add and Remove an IPv6 Router Interface with subnet_id", + "value": [ + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id" + ] + }, + { + "api_name": "Test Case 14: Create, Update, Delete, List and Show an IPv6 Router", + "value": [ + "tempest.api.network.test_routers.RoutersIpV6Test.test_create_show_list_update_delete_router" + ] + }, + { + "api_name": "Test Case 15: Create, Update, Delete, List and Show an IPv6 Security Group", + "value": [ + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_list_update_show_delete_security_group" + ] + }, + { + "api_name": "Test Case 16: Create, Delete and Show Security Group Rules", + "value": [ + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_show_delete_security_group_rule" + ] + }, + { + "api_name": "Test Case 17: List All Security Groups", + "value": [ + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_list_security_groups" + ] + }, + { + "api_name": "Test Case 18: IPv6 Address Assignment - Dual Stack, SLAAC, DHCPv6 Stateless", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os" + ] + }, + { + "api_name": "Test Case 19: IPv6 Address Assignment - Dual Net, Dual Stack, SLAAC, DHCPv6 Stateless", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os" + ] + }, + { + "api_name": "Test Case 20: IPv6 Address Assignment - Multiple Prefixes, Dual Stack, SLAAC, DHCPv6 Stateless", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_dhcpv6_stateless" + ] + }, + { + "api_name": "Test Case 21: IPv6 Address Assignment - Dual Net, Multiple Prefixes, Dual Stack, SLAAC, DHCPv6 Stateless", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_dhcpv6_stateless" + ] + }, + { + "api_name": "Test Case 22: IPv6 Address Assignment - Dual Stack, SLAAC", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os" + ] + }, + { + "api_name": "Test Case 23: IPv6 Address Assignment - Dual Net, Dual Stack, SLAAC", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os" + ] + }, + { + "api_name": "Test Case 24: IPv6 Address Assignment - Multiple Prefixes, Dual Stack, SLAAC", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_slaac" + ] + }, + { + "api_name": "Test Case 25: IPv6 Address Assignment - Dual Net, Dual Stack, Multiple Prefixes, SLAAC", + "value": [ + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac" + ] + } + ] + } + ] + } +} diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/data/gen.py b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/gen.py new file mode 100644 index 00000000..34fb6941 --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/gen.py @@ -0,0 +1,16 @@ +import json + +with open('danube.json') as f: + data = json.load(f) +mapping = {} +for i in data['mandatory']['value']: + for j in i['value']: + for k in j['value']: + mapping[k] = True +for i in data['optional']['value']: + for j in i['value']: + for k in j['value']: + mapping[k] = False + +with open('mandatory.json', 'w') as f: + f.write(json.dumps(mapping)) diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/data/mandatory.json b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/mandatory.json new file mode 100644 index 00000000..ce2ba857 --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/data/mandatory.json @@ -0,0 +1,248 @@ +{ + "opnfv.ha.tc001.nova-api_service_down": true, + "opnfv.ha.tc003.neutron-server_service_down": true, + "opnfv.ha.tc004.keystone_service_down": true, + "opnfv.ha.tc005.glance-api_service_down": true, + "opnfv.ha.tc006.cinder-api_service_down": true, + "opnfv.ha.tc009.cpu_overload": true, + "opnfv.ha.tc010.disk_I/O_block": true, + "opnfv.ha.tc011.load_balance_service_down": true, + "opnfv.sdnvpn.router_association": false, + "opnfv.sdnvpn.router_association_floating_ip": false, + "opnfv.sdnvpn.subnet_connectivity": false, + "opnfv.sdnvpn.tenant separation": false, + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_delete_image": true, + "tempest.api.compute.images.test_images_oneserver.ImagesOneServerTestJSON.test_create_image_specify_multibyte_character_image_name": true, + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_host_name_is_same_as_server_name": true, + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers": true, + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_list_servers_with_detail": true, + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_created_server_vcpus": true, + "tempest.api.compute.servers.test_create_server.ServersTestJSON.test_verify_server_details": true, + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_host_name_is_same_as_server_name": true, + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers": true, + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_list_servers_with_detail": true, + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_created_server_vcpus": true, + "tempest.api.compute.servers.test_create_server.ServersTestManualDisk.test_verify_server_details": true, + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_get_instance_action": true, + "tempest.api.compute.servers.test_instance_actions.InstanceActionsTestJSON.test_list_instance_actions": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_flavor": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_image": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_name": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_filter_by_server_status": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_detailed_limit_results": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_flavor": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_image": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_limit": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_name": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filter_by_server_status": true, + "tempest.api.compute.servers.test_list_server_filters.ListServerFiltersTestJSON.test_list_servers_filtered_by_name_wildcard": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_future_date": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_changes_since_invalid_date": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_greater_than_actual_count": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_negative_value": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_limits_pass_string": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_flavor": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_image": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_by_non_existing_server_name": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_detail_server_is_deleted": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_status_non_existing": true, + "tempest.api.compute.servers.test_list_servers_negative.ListServersNegativeTestJSON.test_list_servers_with_a_deleted_server": true, + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_lock_unlock_server": true, + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_reboot_server_hard": true, + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_rebuild_server": true, + "tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_delete_server_metadata_item": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_get_server_metadata_item": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_list_server_metadata": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_set_server_metadata_item": true, + "tempest.api.compute.servers.test_server_metadata.ServerMetadataTestJSON.test_update_server_metadata": true, + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_server_with_admin_password": true, + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_specify_keypair": true, + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_create_with_existing_server_name": true, + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_access_server_address": true, + "tempest.api.compute.servers.test_servers.ServersTestJSON.test_update_server_name": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_numeric_server_name": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_metadata_exceeds_length_limit": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_server_name_length_exceeds_256": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_flavor": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_image": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_create_with_invalid_network_uuid": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_id_exceeding_length_limit": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_delete_server_pass_negative_id": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_get_non_existent_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_invalid_ip_v6_address": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_reboot_non_existent_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_deleted_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_rebuild_non_existent_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_server_name_blank": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_stop_non_existent_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_name_of_non_existent_server": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_name_length_exceeds_256": true, + "tempest.api.compute.servers.test_servers_negative.ServersNegativeTestJSON.test_update_server_set_empty_name": true, + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_default_quotas": true, + "tempest.api.compute.test_quotas.QuotasTestJSON.test_get_quotas": true, + "tempest.api.compute.test_versions.TestVersions.test_list_api_versions": true, + "tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_attach_detach_volume": true, + "tempest.api.compute.volumes.test_attach_volume.AttachVolumeTestJSON.test_list_get_volume_attachments": true, + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_media_types": true, + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_resources": true, + "tempest.api.identity.v3.test_api_discovery.TestApiDiscovery.test_api_version_statuses": true, + "tempest.api.identity.v3.test_tokens.TokensV3Test.test_create_token": true, + "tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_delete_image": true, + "tempest.api.image.v2.test_images.BasicOperationsImagesTest.test_update_image": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_get_image_schema": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_get_images_schema": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_container_format": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_disk_format": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_limit": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_min_max_size": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_size": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_status": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_images_param_visibility": true, + "tempest.api.image.v2.test_images.ListImagesTest.test_list_no_params": true, + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_image_null_id": true, + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_delete_non_existing_image": true, + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_delete_deleted_image": true, + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_image_null_id": true, + "tempest.api.image.v2.test_images_negative.ImagesNegativeTest.test_get_non_existent_image": true, + "tempest.api.image.v2.test_images_tags.ImagesTagsTest.test_update_delete_tags_for_image": true, + "tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_delete_non_existing_tag": true, + "tempest.api.image.v2.test_images_tags_negative.ImagesTagsNegativeTest.test_update_tags_for_non_existing_image": true, + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_network": false, + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_port": false, + "tempest.api.network.test_networks.BulkNetworkOpsIpV6Test.test_bulk_create_delete_subnet": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_create_update_delete_network_subnet": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_external_network_visibility": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_list_networks": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_list_subnets": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_show_network": false, + "tempest.api.network.test_networks.NetworksIpV6Test.test_show_subnet": false, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_all_attributes": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_allocation_pools": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_dhcp_enabled": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_gw_and_allocation_pools": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_with_host_routes_and_dns_nameservers": true, + "tempest.api.network.test_networks.NetworksTest.test_create_delete_subnet_without_gateway": true, + "tempest.api.network.test_networks.NetworksTest.test_create_update_delete_network_subnet": true, + "tempest.api.network.test_networks.NetworksTest.test_delete_network_with_subnet": true, + "tempest.api.network.test_networks.NetworksTest.test_list_networks": true, + "tempest.api.network.test_networks.NetworksTest.test_list_networks_fields": true, + "tempest.api.network.test_networks.NetworksTest.test_list_subnets": true, + "tempest.api.network.test_networks.NetworksTest.test_list_subnets_fields": true, + "tempest.api.network.test_networks.NetworksTest.test_show_network": true, + "tempest.api.network.test_networks.NetworksTest.test_show_network_fields": true, + "tempest.api.network.test_networks.NetworksTest.test_show_subnet": true, + "tempest.api.network.test_networks.NetworksTest.test_show_subnet_fields": true, + "tempest.api.network.test_networks.NetworksTest.test_update_subnet_gw_dns_host_routes_dhcp": true, + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_in_allowed_allocation_pools": false, + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_port_with_no_securitygroups": false, + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_create_update_delete_port": false, + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_list_ports": false, + "tempest.api.network.test_ports.PortsIpV6TestJSON.test_show_port": false, + "tempest.api.network.test_ports.PortsTestJSON.test_create_bulk_port": true, + "tempest.api.network.test_ports.PortsTestJSON.test_create_port_in_allowed_allocation_pools": true, + "tempest.api.network.test_ports.PortsTestJSON.test_create_update_delete_port": true, + "tempest.api.network.test_ports.PortsTestJSON.test_list_ports": true, + "tempest.api.network.test_ports.PortsTestJSON.test_list_ports_fields": true, + "tempest.api.network.test_ports.PortsTestJSON.test_show_port": true, + "tempest.api.network.test_ports.PortsTestJSON.test_show_port_fields": true, + "tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_security_group_and_extra_attributes": true, + "tempest.api.network.test_ports.PortsTestJSON.test_update_port_with_two_security_groups_and_extra_attributes": true, + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_multiple_router_interfaces": false, + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_port_id": false, + "tempest.api.network.test_routers.RoutersIpV6Test.test_add_remove_router_interface_with_subnet_id": false, + "tempest.api.network.test_routers.RoutersIpV6Test.test_create_show_list_update_delete_router": false, + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_list_update_show_delete_security_group": false, + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_create_show_delete_security_group_rule": false, + "tempest.api.network.test_security_groups.SecGroupIPv6Test.test_list_security_groups": false, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_list_update_show_delete_security_group": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_additional_args": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_icmp_type_code": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_protocol_integer_value": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_group_id": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_security_group_rule_with_remote_ip_prefix": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_create_show_delete_security_group_rule": true, + "tempest.api.network.test_security_groups.SecGroupTest.test_list_security_groups": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_additional_default_security_group_fails": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_duplicate_security_group_rule_fails": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_ethertype": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_protocol": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_bad_remote_ip_prefix": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_invalid_ports": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_remote_groupid": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_create_security_group_rule_with_non_existent_security_group": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_delete_non_existent_security_group": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group": true, + "tempest.api.network.test_security_groups_negative.NegativeSecGroupTest.test_show_non_existent_security_group_rule": true, + "tempest.api.volume.test_availability_zone.AvailabilityZoneV2TestJSON.test_get_availability_zone_list": true, + "tempest.api.volume.test_extensions.ExtensionsV2TestJSON.test_list_extensions": true, + "tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_create_get_delete_snapshot_metadata": true, + "tempest.api.volume.test_snapshot_metadata.SnapshotV2MetadataTestJSON.test_update_snapshot_metadata_item": true, + "tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_create_get_delete_volume_metadata": true, + "tempest.api.volume.test_volume_metadata.VolumesV2MetadataTest.test_update_volume_metadata_item": true, + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_attach_detach_volume_to_instance": true, + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_get_volume_attachment": true, + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_reserve_unreserve_volume": true, + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_bootable": true, + "tempest.api.volume.test_volumes_actions.VolumesV2ActionsTest.test_volume_readonly_update": true, + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete": true, + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_as_clone": true, + "tempest.api.volume.test_volumes_get.VolumesV2GetTest.test_volume_create_get_update_delete_from_image": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_by_name": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_by_name": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_param_display_name_and_status": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_display_name_and_status": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_detail_param_metadata": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_details": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_with_param_metadata": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_availability_zone": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_by_status": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_availability_zone": true, + "tempest.api.volume.test_volumes_list.VolumesV2ListTestJSON.test_volumes_list_details_by_status": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_attach_volumes_with_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_invalid_size": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_snapshot_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_source_volid": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_nonexistent_volume_type": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_out_passing_size": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_negative": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_create_volume_with_size_zero": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_invalid_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_delete_volume_without_passing_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_detach_volumes_with_invalid_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_invalid_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_get_volume_without_passing_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_invalid_status": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_detail_with_nonexistent_name": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_invalid_status": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_list_volumes_with_nonexistent_name": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_negative_volume_status": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_reserve_volume_with_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_unreserve_volume_with_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_empty_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_invalid_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_update_volume_with_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_delete_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_negative.VolumesV2NegativeTest.test_volume_get_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshot_create_get_list_update_delete": true, + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_details_with_params": true, + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_snapshots_list_with_params": true, + "tempest.api.volume.test_volumes_snapshots.VolumesV2SnapshotTestJSON.test_volume_from_snapshot": true, + "tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_with_nonexistent_volume_id": true, + "tempest.api.volume.test_volumes_snapshots_negative.VolumesV2SnapshotNegativeTestJSON.test_create_snapshot_without_passing_volume_id": true, + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_pagination": true, + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_details_with_multiple_params": true, + "tempest.api.volume.v2.test_volumes_list.VolumesV2ListTestJSON.test_volume_list_pagination": true, + "tempest.scenario.test_network_v6.TestGettingAddress.test_dhcp6_stateless_from_os": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_dhcp6_stateless_from_os": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_dhcpv6_stateless": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_multi_prefix_slaac": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_dualnet_slaac_from_os": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_dhcpv6_stateless": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_multi_prefix_slaac": false, + "tempest.scenario.test_network_v6.TestGettingAddress.test_slaac_from_os": false +} diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelines.html b/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelines.html new file mode 100644 index 00000000..6e138b89 --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelines.html @@ -0,0 +1,70 @@ +<h3>OPNFV Ready™ Guidelines</h3> + +<!-- Guideline Filters --> +<div class="row"> + <div class="col-md-3"> + <strong>Version:</strong> + <!-- Slicing the version file name here gets rid of the '.json' file extension --> + <select ng-model="ctrl.version" + ng-change="ctrl.update()" + class="form-control" + ng-options="versionFile.slice(0,10) for versionFile in ctrl.versionList"> + </select> + </div> + <!-- + <div class="col-md-4"> + <strong>Target Program:</strong> + <span class="program-about"><a target="_blank" href="http://www.openstack.org/brand/interop/">About</a></span> + <select ng-model="ctrl.target" class="form-control" ng-change="ctrl.updateTargetCapabilities()"> + <option value="platform">OpenStack Powered Platform</option> + <option value="compute">OpenStack Powered Compute</option> + <option value="object">OpenStack Powered Object Storage</option> + </select> + </div> + --> +</div> + +<br /> +<!-- +<div ng-if="ctrl.guidelines"> + <strong>Guideline Status:</strong> + {{ctrl.guidelines.status | capitalize}} +</div> + +<div ng-show="ctrl.guidelines"> + <strong>Corresponding OpenStack Releases:</strong> + <ul class="list-inline"> + <li ng-repeat="release in ctrl.guidelines.releases"> + {{release | capitalize}} + </li> + </ul> +</div> +--> + +<strong>Capability Status:</strong> +<div class="checkbox"> + <label> + <input type="checkbox" ng-model="ctrl.showMandatory"> + <span class="mandatory">Mandatory</span> + </label> + <label> + <input type="checkbox" ng-model="ctrl.showOptional"> + <span class="optional">Optional</span> + </label> +</div> +<!-- End Capability Filters --> + +<!-- Loading animation divs --> +<div cg-busy="{promise:ctrl.versionsRequest,message:'Loading versions'}"></div> +<div cg-busy="{promise:ctrl.capsRequest,message:'Loading capabilities'}"></div> + +<!-- Get the version-specific template --> +<div nf-show="ctrl.data" ng-include src="ctrl.detailsTemplate"></div> + +<!-- +<div ng-show="ctrl.showError" class="alert alert-danger" role="alert"> + <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> + <span class="sr-only">Error:</span> + {{ctrl.error}} +</div> +--> diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelinesController.js b/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelinesController.js new file mode 100644 index 00000000..46d2042a --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/guidelinesController.js @@ -0,0 +1,188 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +(function () { + 'use strict'; + + angular + .module('testapiApp') + .controller('GuidelinesController', GuidelinesController); + + GuidelinesController.$inject = ['$http', '$uibModal', 'testapiApiUrl']; + + /** + * TestAPI Guidelines Controller + * This controller is for the '/guidelines' page where a user can browse + * through tests belonging to Interop WG defined capabilities. + */ + function GuidelinesController($http, $uibModal, testapiApiUrl) { + var ctrl = this; + + ctrl.getVersionList = getVersionList; + ctrl.update = update; + + ctrl.showMandatory = true; + ctrl.showOptional = false; + ctrl.version = ''; + ctrl.data = null; + + /** + * The template to load for displaying capability details. + */ + ctrl.detailsTemplate = 'testapi-ui/components/guidelines/partials/' + + 'guidelineDetails.html'; + + /** + * Retrieve an array of available guideline files from the TestAPI + * API server, sort this array reverse-alphabetically, and store it in + * a scoped variable. The scope's selected version is initialized to + * the latest (i.e. first) version here as well. After a successful API + * call, the function to update the capabilities is called. + * Sample API return array: ["2015.03.json", "2015.04.json"] + */ + function getVersionList() { + ctrl.versionList = ['danube']; + ctrl.update(); + } + + /** + * This will contact the TestAPI API server to retrieve the JSON + * content of the guideline file corresponding to the selected + * version. + */ + function update() { + if (ctrl.version != ''){ + var path = 'testapi-ui/components/guidelines/data/' + ctrl.version + '.json'; + $http.get(path).success(function(data){ + ctrl.data = data; + }).error(function(error){ + }); + } + } + + + ctrl.getVersionList(); + } + + + + + + angular + .module('testapiApp') + .controller('TestListModalController', TestListModalController); + + TestListModalController.$inject = [ + '$uibModalInstance', '$http', 'version', + 'target', 'status', 'testapiApiUrl' + ]; + + /** + * Test List Modal Controller + * This controller is for the modal that appears if a user wants to see the + * test list corresponding to Interop WG capabilities with the selected + * statuses. + */ + function TestListModalController($uibModalInstance, $http, version, + target, status, testapiApiUrl) { + + var ctrl = this; + + ctrl.version = version; + ctrl.target = target; + ctrl.status = status; + ctrl.close = close; + ctrl.updateTestListString = updateTestListString; + + ctrl.aliases = true; + ctrl.flagged = false; + + // Check if the API URL is absolute or relative. + if (testapiApiUrl.indexOf('http') > -1) { + ctrl.url = testapiApiUrl; + } + else { + ctrl.url = location.protocol + '//' + location.host + + testapiApiUrl; + } + + /** + * This function will close/dismiss the modal. + */ + function close() { + $uibModalInstance.dismiss('exit'); + } + + /** + * This function will return a list of statuses based on which ones + * are selected. + */ + function getStatusList() { + var statusList = []; + angular.forEach(ctrl.status, function(value, key) { + if (value) { + statusList.push(key); + } + }); + return statusList; + } + + /** + * This will get the list of tests from the API and update the + * controller's test list string variable. + */ + function updateTestListString() { + var statuses = getStatusList(); + if (!statuses.length) { + ctrl.error = 'No tests matching selected criteria.'; + return; + } + ctrl.testListUrl = [ + ctrl.url, '/guidelines/', ctrl.version, '/tests?', + 'target=', ctrl.target, '&', + 'type=', statuses.join(','), '&', + 'alias=', ctrl.aliases.toString(), '&', + 'flag=', ctrl.flagged.toString() + ].join(''); + ctrl.testListRequest = + $http.get(ctrl.testListUrl). + then(function successCallback(response) { + ctrl.error = null; + ctrl.testListString = response.data; + if (!ctrl.testListString) { + ctrl.testListCount = 0; + } + else { + ctrl.testListCount = + ctrl.testListString.split('\n').length; + } + }, function errorCallback(response) { + ctrl.testListString = null; + ctrl.testListCount = null; + if (angular.isObject(response.data) && + response.data.message) { + ctrl.error = 'Error retrieving test list: ' + + response.data.message; + } + else { + ctrl.error = 'Unknown error retrieving test list.'; + } + }); + } + + // updateTestListString(); + //getVersionList(); + update(); + } +})(); diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/guidelineDetails.html b/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/guidelineDetails.html new file mode 100644 index 00000000..05a1ef5c --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/guidelineDetails.html @@ -0,0 +1,90 @@ +<!-- +HTML for guidelines page for all OpenStack Powered (TM) guideline schemas +This expects the JSON data of the guidelines file to be stored in scope +variable 'guidelines'. +--> + +<h3 ng-show="ctrl.showMandatory">{{ctrl.data.mandatory.name}}</h3> +<div ng-repeat="area in ctrl.data.mandatory.value" ng-show="ctrl.showMandatory"> + <h4>{{area.area_name}}</h4> + <ol class="capabilities"> + <li class="capability-list-item" ng-repeat="api in area.value"> + <span class="capability-name">{{api.api_name}}</span><br /> + Area: <em>{{area.area_name}}</em><br /> + Status: <span>Mandatory</span><br /> + + <a ng-click="showTests = !showTests">Tests ({{api.value.length}})</a> + <ul uib-collapse="!showTests"> + <li ng-repeat="test in api.value"> + <span ng-class="{'glyphicon glyphicon-flag text-warning': capability.flagged.indexOf(test) > -1}"></span> + {{test}} + </li> + </ul> + </li> + </ol> +</div> + +<h3 ng-show="ctrl.showOptional">{{ctrl.data.optional.name}}</h3> +<div ng-repeat="area in ctrl.data.optional.value" ng-show="ctrl.showOptional"> + <h4>{{area.area_name}}</h4> + <ol class="capabilities"> + <li class="capability-list-item" ng-repeat="api in area.value"> + <span class="capability-name">{{api.api_name}}</span><br /> + Status: <span>Optional</span><br /> + + <a ng-click="showTests = !showTests">Tests ({{api.value.length}})</a> + <ul uib-collapse="!showTests"> + <li ng-repeat="test in api.value"> + <span ng-class="{'glyphicon glyphicon-flag text-warning': capability.flagged.indexOf(test) > -1}"></span> + {{test}} + </li> + </ul> + </li> + </ol> +</div> +<!-- +<ol ng-show="ctrl.data" class="capabilities"> + <li class="capability-list-item" ng-repeat="capability in ctrl.guidelines.capabilities | arrayConverter | filter:ctrl.filterStatus | orderBy:'id'"> + <span class="capability-name">{{capability.id}}</span><br /> + <em>{{capability.description}}</em><br /> + Status: <span class="{{ctrl.targetCapabilities[capability.id]}}">{{ctrl.targetCapabilities[capability.id]}}</span><br /> + <span ng-if="capability.project">Project: {{capability.project | capitalize}}<br /></span> + <a ng-click="showAchievements = !showAchievements">Achievements ({{capability.achievements.length}})</a><br /> + <ol uib-collapse="!showAchievements" class="list-inline"> + <li ng-repeat="achievement in capability.achievements"> + {{achievement}} + </li> + </ol> + + <a ng-click="showTests = !showTests">Tests ({{ctrl.getObjectLength(capability.tests)}})</a> + <ul uib-collapse="!showTests"> + <li ng-if="ctrl.guidelines.schema === '1.2'" ng-repeat="test in capability.tests"> + <span ng-class="{'glyphicon glyphicon-flag text-warning': capability.flagged.indexOf(test) > -1}"></span> + {{test}} + </li> + <li ng-if="ctrl.guidelines.schema > '1.2'" ng-repeat="(testName, testDetails) in capability.tests"> + <span ng-class="{'glyphicon glyphicon-flag text-warning': testDetails.flagged}" title="{{testDetails.flagged.reason}}"></span> + {{testName}} + <div class="test-detail" ng-if="testDetails.aliases"> + <strong>Aliases:</strong> + <ul><li ng-repeat="alias in testDetails.aliases">{{alias}}</li></ul> + </div> + </li> + </ul> + </li> +</ol> + +<div ng-show="ctrl.guidelines" class="criteria"> + <hr> + <h4><a ng-click="showCriteria = !showCriteria">Criteria</a></h4> + <div uib-collapse="showCriteria"> + <ul> + <li ng-repeat="(key, criterion) in ctrl.guidelines.criteria"> + <span class="criterion-name">{{criterion.name}}</span><br /> + <em>{{criterion.Description}}</em><br /> + Weight: {{criterion.weight}} + </li> + </ul> + </div> +</div> +--> diff --git a/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/testListModal.html b/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/testListModal.html new file mode 100644 index 00000000..5b1d698d --- /dev/null +++ b/cvp/3rd_party/static/testapi-ui/components/guidelines/partials/testListModal.html @@ -0,0 +1,46 @@ +<div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" aria-hidden="true" ng-click="modal.close()">×</button> + <h4>Test List ({{modal.testListCount}})</h4> + <p>Use this test list with <a title="testapi-client" target="_blank"href="https://github.com/openstack/testapi-client">testapi-client</a> + to run only tests in the {{modal.version}} OpenStack Powered™ guideline from capabilities with the following statuses: + </p> + <ul class="list-inline"> + <li class="required" ng-if="modal.status.required"> Required</li> + <li class="advisory" ng-if="modal.status.advisory"> Advisory</li> + <li class="deprecated" ng-if="modal.status.deprecated"> Deprecated</li> + <li class="removed" ng-if="modal.status.removed"> Removed</li> + </ul> + <div class="checkbox checkbox-test-list"> + <label><input type="checkbox" ng-model="modal.aliases" ng-change="modal.updateTestListString()">Aliases</label> + <span class="glyphicon glyphicon-info-sign info-hover" aria-hidden="true" + title="Include test aliases as tests may have been renamed over time. It does not hurt to include these."></span> + + <label><input type="checkbox" ng-model="modal.flagged" ng-change="modal.updateTestListString()">Flagged</label> + <span class="glyphicon glyphicon-info-sign info-hover" aria-hidden="true" + title="Include flagged tests."> + </span> + </div> + <p ng-hide="modal.error"> Alternatively, get the test list directly from the API on your CLI:</p> + <code ng-hide="modal.error">wget "{{modal.testListUrl}}" -O {{modal.version}}-test-list.txt</code> + </div> + <div class="modal-body tests-modal-content"> + <div cg-busy="{promise:modal.testListRequest,message:'Loading'}"></div> + <div ng-show="modal.error" class="alert alert-danger" role="alert"> + <span class="glyphicon glyphicon-exclamation-sign" aria-hidden="true"></span> + <span class="sr-only">Error:</span> + {{modal.error}} + </div> + <div class="form-group"> + <textarea class="form-control" rows="16" id="tests" wrap="off">{{modal.testListString}}</textarea> + </div> + </div> + <div class="modal-footer"> + <a target="_blank" href="{{modal.testListUrl}}" download="{{modal.version + '-test-list.txt'}}"> + <button class="btn btn-primary" ng-if="modal.testListCount > 0" type="button"> + Download + </button> + </a> + <button class="btn btn-primary" type="button" ng-click="modal.close()">Close</button> + </div> +</div> |