
import copy

from tempest.api_schema.response.compute import hypervisors


hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail)

# Defining extra attributes for V3 show hypervisor schema
hypervisors_servers['response_body']['properties']['hypervisors']['items'][
    'properties']['servers'] = {
        'type': 'array',
        'items': {
            'type': 'object',
            'properties': {
                # NOTE: Now the type of 'id' is integer,
                # but here allows 'string' also because we
                # will be able to change it to 'uuid' in
                # the future.
                'id': {'type': ['integer', 'string']},
                'name': {'type': 'string'}
            }
        }
    }
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
# attribute will not be present in response body So it is not 'required'.


import copy

from tempest.api_schema.response.compute import hypervisors


hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail)

# Defining extra attributes for V3 show hypervisor schema
hypervisors_servers['response_body']['properties']['hypervisors']['items'][
    'properties']['servers'] = {
        'type': 'array',
        'items': {
            'type': 'object',
            'properties': {
                'uuid': {'type': 'string'},
                'name': {'type': 'string'}
            }
        }
    }
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
# attribute will not be present in response body So it is not 'required'.

Fix V2 hypervisor server schema attribute
Fix V2 hypervisor server schema attribute

Nova v2 hypervisor server API return attribute "uuid" in response's
server dict. Current response schema does not have this attribute instead
it contain "id" which is wrong.

This patch fix the above issue.

NOTE- "uuid" attribute in this API response is always a uuid.

Change-Id: I78c67834de930012b70874938f345524d69264ba

  
  import copy
  
  from tempest.api_schema.response.compute import hypervisors
  
  
  hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail)
  
  # Defining extra attributes for V3 show hypervisor schema
  hypervisors_servers['response_body']['properties']['hypervisors']['items'][
      'properties']['servers'] = {
          'type': 'array',
          'items': {
              'type': 'object',
              'properties': {
-                 # NOTE: Now the type of 'id' is integer,
-                 # but here allows 'string' also because we
-                 # will be able to change it to 'uuid' in
-                 # the future.
-                 'id': {'type': ['integer', 'string']},
+                 'uuid': {'type': 'string'},
                  'name': {'type': 'string'}
              }
          }
      }
  # In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
  # attribute will not be present in response body So it is not 'required'.
  
Fix V2 hypervisor server schema attribute
## Code Before:

import copy

from tempest.api_schema.response.compute import hypervisors


hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail)

# Defining extra attributes for V3 show hypervisor schema
hypervisors_servers['response_body']['properties']['hypervisors']['items'][
    'properties']['servers'] = {
        'type': 'array',
        'items': {
            'type': 'object',
            'properties': {
                # NOTE: Now the type of 'id' is integer,
                # but here allows 'string' also because we
                # will be able to change it to 'uuid' in
                # the future.
                'id': {'type': ['integer', 'string']},
                'name': {'type': 'string'}
            }
        }
    }
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
# attribute will not be present in response body So it is not 'required'.

## Instruction:
Fix V2 hypervisor server schema attribute
## Code After:

import copy

from tempest.api_schema.response.compute import hypervisors


hypervisors_servers = copy.deepcopy(hypervisors.common_hypervisors_detail)

# Defining extra attributes for V3 show hypervisor schema
hypervisors_servers['response_body']['properties']['hypervisors']['items'][
    'properties']['servers'] = {
        'type': 'array',
        'items': {
            'type': 'object',
            'properties': {
                'uuid': {'type': 'string'},
                'name': {'type': 'string'}
            }
        }
    }
# In V2 API, if there is no servers (VM) on the Hypervisor host then 'servers'
# attribute will not be present in response body So it is not 'required'.
