text: # Copyright 2018 NEC Corporation.
  # All Rights Reserved.
  #
  #    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.
  
  from tempest.api.compute import base
  from tempest.common import waiters
  from tempest.lib.common.utils import data_utils
  from tempest.lib import decorators
  
  # NOTE(gmann): This file is to write the tests which mainly
  # tests newly added microversion schema related to servers APIs.
  # As per (https://docs.openstack.org/tempest/latest/microversion_testing.
  # html#tempest-scope-for-microversion-testing),
  # we need to fill the API response schema gaps which gets modified
  # during microversion change. To cover the testing of such schema
  # we need to have operation schema test which just test
  # the microversion schemas.
  # If you are adding server APIs microversion schema file without
  # their integration tests, you can add tests to cover those schema
  # in this file.
  
  
  class ServerShowV254Test(base.BaseV2ComputeTest):
      """Test servers API schema for compute microversion greater than 2.53"""
      min_microversion = '2.54'
      max_microversion = 'latest'
  
      @decorators.idempotent_id('09170a98-4940-4637-add7-1a35121f1a5a')
      def test_rebuild_server(self):
          """Test rebuilding server with microversion greater than 2.53"""
          server = self.create_test_server(wait_until='ACTIVE')
          keypair_name = data_utils.rand_name(
              self.__class__.__name__ + '-keypair')
          kwargs = {'name': keypair_name}
          self.keypairs_client.create_keypair(**kwargs)
          self.addCleanup(self.keypairs_client.delete_keypair,
                          keypair_name)
          # Checking rebuild API response schema
          self.servers_client.rebuild_server(server['id'], self.image_ref_alt,
                                             key_name=keypair_name)
          waiters.wait_for_server_status(self.servers_client,
                                         server['id'], 'ACTIVE')
  
  
  class ServerShowV257Test(base.BaseV2ComputeTest):
      """Test servers API schema for compute microversion greater than 2.56"""
      min_microversion = '2.57'
      max_microversion = 'latest'
  
      @decorators.idempotent_id('803df848-080a-4261-8f11-b020cd9b6f60')
      def test_rebuild_server(self):
          """Test rebuilding server with microversion greater than 2.56"""
          server = self.create_test_server(wait_until='ACTIVE')
          user_data = "ZWNobyAiaGVsbG8gd29ybGQi"
          # Checking rebuild API response schema
          self.servers_client.rebuild_server(server['id'], self.image_ref_alt,
                                             user_data=user_data)
          waiters.wait_for_server_status(self.servers_client,
                                         server['id'], 'ACTIVE')
  