Use str type instead of wsme.types.text

wsme.type.text maps to six.text_type, which for py3 is str.

Ironic is py3 only, and wsme is being removed, so this change
replaces all wsme.types.text uses with str.

Change-Id: Ie39f049840980d0595be3620f35f14eb4b0198af
Story: 1651346
This commit is contained in:
Steve Baker 2020-01-22 16:46:47 +13:00
parent 443e0b1093
commit cc7a9c29c2
20 changed files with 185 additions and 194 deletions

View File

@ -34,13 +34,13 @@ def build_url(resource, resource_args, bookmark=False, base_url=None):
class Link(base.APIBase):
"""A link representation."""
href = wtypes.text
href = str
"""The url of a link."""
rel = wtypes.text
rel = str
"""The name of a link."""
type = wtypes.text
type = str
"""Indicates the type of document/link."""
@staticmethod

View File

@ -16,7 +16,6 @@
import pecan
from pecan import rest
from wsme import types as wtypes
from ironic.api.controllers import base
from ironic.api.controllers import v1
@ -26,10 +25,10 @@ from ironic.api import expose
class Root(base.APIBase):
name = wtypes.text
name = str
"""The name of the API"""
description = wtypes.text
description = str
"""Some information about this API"""
versions = [version.Version]

View File

@ -21,7 +21,6 @@ Specification can be found at doc/source/webapi/v1.rst
import pecan
from pecan import rest
from webob import exc
from wsme import types as wtypes
from ironic import api
from ironic.api.controllers import base
@ -61,8 +60,8 @@ def max_version():
class MediaType(base.APIBase):
"""A media type representation."""
base = wtypes.text
type = wtypes.text
base = str
type = str
def __init__(self, base, type):
self.base = base
@ -72,7 +71,7 @@ class MediaType(base.APIBase):
class V1(base.APIBase):
"""The representation of the version 1 of the API."""
id = wtypes.text
id = str
"""The ID of the version, also acts as the release number"""
media_types = [MediaType]

View File

@ -54,39 +54,39 @@ class Allocation(base.APIBase):
uuid = types.uuid
"""Unique UUID for this allocation"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""This allocation's meta data"""
node_uuid = wsme.wsattr(types.uuid, readonly=True)
"""The UUID of the node this allocation belongs to"""
node = wsme.wsattr(wtypes.text)
node = wsme.wsattr(str)
"""The node to backfill the allocation for (POST only)"""
name = wsme.wsattr(wtypes.text)
name = wsme.wsattr(str)
"""The logical name for this allocation"""
links = wsme.wsattr([link.Link], readonly=True)
"""A list containing a self link and associated allocation links"""
state = wsme.wsattr(wtypes.text, readonly=True)
state = wsme.wsattr(str, readonly=True)
"""The current state of the allocation"""
last_error = wsme.wsattr(wtypes.text, readonly=True)
last_error = wsme.wsattr(str, readonly=True)
"""Last error that happened to this allocation"""
resource_class = wsme.wsattr(wtypes.StringType(max_length=80))
"""Requested resource class for this allocation"""
owner = wsme.wsattr(wtypes.text)
owner = wsme.wsattr(str)
"""Owner of allocation"""
# NOTE(dtantsur): candidate_nodes is a list of UUIDs on the database level,
# but the API level also accept names, converting them on fly.
candidate_nodes = wsme.wsattr([wtypes.text])
candidate_nodes = wsme.wsattr([str])
"""Candidate nodes for this allocation"""
traits = wsme.wsattr([wtypes.text])
traits = wsme.wsattr([str])
"""Requested traits for the allocation"""
def __init__(self, **kwargs):
@ -311,9 +311,9 @@ class AllocationsController(pecan.rest.RestController):
raise exception.NotAcceptable()
@METRICS.timer('AllocationsController.get_all')
@expose.expose(AllocationCollection, types.uuid_or_name, wtypes.text,
wtypes.text, types.uuid, int, wtypes.text, wtypes.text,
types.listtype, wtypes.text)
@expose.expose(AllocationCollection, types.uuid_or_name, str,
str, types.uuid, int, str, str,
types.listtype, str)
def get_all(self, node=None, resource_class=None, state=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', fields=None,
owner=None):

View File

@ -34,9 +34,9 @@ METRICS = metrics_utils.get_metrics_logger(__name__)
class BIOSSetting(base.APIBase):
"""API representation of a BIOS setting."""
name = wsme.wsattr(wtypes.text)
name = wsme.wsattr(str)
value = wsme.wsattr(wtypes.text)
value = wsme.wsattr(str)
links = wsme.wsattr([link.Link], readonly=True)
@ -106,7 +106,7 @@ class NodeBiosController(rest.RestController):
settings)
@METRICS.timer('NodeBiosController.get_one')
@expose.expose({wtypes.text: BIOSSetting}, types.name)
@expose.expose({str: BIOSSetting}, types.name)
def get_one(self, setting_name):
"""Retrieve information about the given bios setting.

View File

@ -56,7 +56,7 @@ class Chassis(base.APIBase):
description = wtypes.StringType(max_length=255)
"""The description of the chassis"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""The metadata of the chassis"""
links = wsme.wsattr([link.Link], readonly=True)
@ -219,7 +219,7 @@ class ChassisController(rest.RestController):
@METRICS.timer('ChassisController.get_all')
@expose.expose(ChassisCollection, types.uuid, int,
wtypes.text, wtypes.text, types.listtype, types.boolean)
str, str, types.listtype, types.boolean)
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc',
fields=None, detail=None):
"""Retrieve a list of chassis.
@ -247,7 +247,7 @@ class ChassisController(rest.RestController):
@METRICS.timer('ChassisController.detail')
@expose.expose(ChassisCollection, types.uuid, int,
wtypes.text, wtypes.text)
str, str)
def detail(self, marker=None, limit=None, sort_key='id', sort_dir='asc'):
"""Retrieve a list of chassis with detail.

View File

@ -22,7 +22,7 @@ from ironic.api.controllers import link
class Collection(base.APIBase):
next = wtypes.text
next = str
"""A link to retrieve the next subset of the collection"""
@property

View File

@ -42,16 +42,16 @@ _DEFAULT_RETURN_FIELDS = ('hostname', 'conductor_group', 'alive')
class Conductor(base.APIBase):
"""API representation of a bare metal conductor."""
hostname = wsme.wsattr(wtypes.text)
hostname = wsme.wsattr(str)
"""The hostname for this conductor"""
conductor_group = wsme.wsattr(wtypes.text)
conductor_group = wsme.wsattr(str)
"""The conductor group this conductor belongs to"""
alive = types.boolean
"""Indicates whether this conductor is considered alive"""
drivers = wsme.wsattr([wtypes.text])
drivers = wsme.wsattr([str])
"""The drivers enabled on this conductor"""
links = wsme.wsattr([link.Link])
@ -194,8 +194,8 @@ class ConductorsController(rest.RestController):
**parameters)
@METRICS.timer('ConductorsController.get_all')
@expose.expose(ConductorCollection, types.name, int, wtypes.text,
wtypes.text, types.listtype, types.boolean)
@expose.expose(ConductorCollection, types.name, int, str,
str, types.listtype, types.boolean)
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc',
fields=None, detail=None):
"""Retrieve a list of conductors.

View File

@ -45,7 +45,7 @@ METRICS = metrics_utils.get_metrics_logger(__name__)
_DEFAULT_RETURN_FIELDS = ('uuid', 'name')
_DEPLOY_INTERFACE_TYPE = wtypes.Enum(
wtypes.text, *conductor_steps.DEPLOYING_INTERFACE_PRIORITY)
str, *conductor_steps.DEPLOYING_INTERFACE_PRIORITY)
class DeployStepType(wtypes.Base, base.AsDictMixin):
@ -53,9 +53,9 @@ class DeployStepType(wtypes.Base, base.AsDictMixin):
interface = wsme.wsattr(_DEPLOY_INTERFACE_TYPE, mandatory=True)
step = wsme.wsattr(wtypes.text, mandatory=True)
step = wsme.wsattr(str, mandatory=True)
args = wsme.wsattr({wtypes.text: types.jsontype}, mandatory=True)
args = wsme.wsattr({str: types.jsontype}, mandatory=True)
priority = wsme.wsattr(wtypes.IntegerType(0), mandatory=True)
@ -77,7 +77,7 @@ class DeployTemplate(base.APIBase):
uuid = types.uuid
"""Unique UUID for this deploy template."""
name = wsme.wsattr(wtypes.text, mandatory=True)
name = wsme.wsattr(str, mandatory=True)
"""The logical name for this deploy template."""
steps = wsme.wsattr([DeployStepType], mandatory=True)
@ -86,7 +86,7 @@ class DeployTemplate(base.APIBase):
links = wsme.wsattr([link.Link])
"""A list containing a self link and associated deploy template links."""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""This deploy template's meta data"""
def __init__(self, **kwargs):
@ -285,8 +285,8 @@ class DeployTemplatesController(rest.RestController):
rpc_template[field] = patch_val
@METRICS.timer('DeployTemplatesController.get_all')
@expose.expose(DeployTemplateCollection, types.name, int, wtypes.text,
wtypes.text, types.listtype, types.boolean)
@expose.expose(DeployTemplateCollection, types.name, int, str,
str, types.listtype, types.boolean)
def get_all(self, marker=None, limit=None, sort_key='id', sort_dir='asc',
fields=None, detail=None):
"""Retrieve a list of deploy templates.

View File

@ -18,7 +18,6 @@ from http import client as http_client
from ironic_lib import metrics_utils
from pecan import rest
import wsme
from wsme import types as wtypes
from ironic import api
from ironic.api.controllers import base
@ -88,13 +87,13 @@ def hide_fields_in_newer_versions(obj):
class Driver(base.APIBase):
"""API representation of a driver."""
name = wtypes.text
name = str
"""The name of the driver"""
hosts = [wtypes.text]
hosts = [str]
"""A list of active conductors that support this driver"""
type = wtypes.text
type = str
"""Whether the driver is classic or dynamic (hardware type)"""
links = wsme.wsattr([link.Link], readonly=True)
@ -104,32 +103,32 @@ class Driver(base.APIBase):
"""A list containing links to driver properties"""
"""Default interface for a hardware type"""
default_bios_interface = wtypes.text
default_boot_interface = wtypes.text
default_console_interface = wtypes.text
default_deploy_interface = wtypes.text
default_inspect_interface = wtypes.text
default_management_interface = wtypes.text
default_network_interface = wtypes.text
default_power_interface = wtypes.text
default_raid_interface = wtypes.text
default_rescue_interface = wtypes.text
default_storage_interface = wtypes.text
default_vendor_interface = wtypes.text
default_bios_interface = str
default_boot_interface = str
default_console_interface = str
default_deploy_interface = str
default_inspect_interface = str
default_management_interface = str
default_network_interface = str
default_power_interface = str
default_raid_interface = str
default_rescue_interface = str
default_storage_interface = str
default_vendor_interface = str
"""A list of enabled interfaces for a hardware type"""
enabled_bios_interfaces = [wtypes.text]
enabled_boot_interfaces = [wtypes.text]
enabled_console_interfaces = [wtypes.text]
enabled_deploy_interfaces = [wtypes.text]
enabled_inspect_interfaces = [wtypes.text]
enabled_management_interfaces = [wtypes.text]
enabled_network_interfaces = [wtypes.text]
enabled_power_interfaces = [wtypes.text]
enabled_raid_interfaces = [wtypes.text]
enabled_rescue_interfaces = [wtypes.text]
enabled_storage_interfaces = [wtypes.text]
enabled_vendor_interfaces = [wtypes.text]
enabled_bios_interfaces = [str]
enabled_boot_interfaces = [str]
enabled_console_interfaces = [str]
enabled_deploy_interfaces = [str]
enabled_inspect_interfaces = [str]
enabled_management_interfaces = [str]
enabled_network_interfaces = [str]
enabled_power_interfaces = [str]
enabled_raid_interfaces = [str]
enabled_rescue_interfaces = [str]
enabled_storage_interfaces = [str]
enabled_vendor_interfaces = [str]
@staticmethod
def convert_with_links(name, hosts, detail=False, interface_info=None):
@ -269,7 +268,7 @@ class DriverPassthruController(rest.RestController):
}
@METRICS.timer('DriverPassthruController.methods')
@expose.expose(wtypes.text, wtypes.text)
@expose.expose(str, str)
def methods(self, driver_name):
"""Retrieve information about vendor methods of the given driver.
@ -291,8 +290,8 @@ class DriverPassthruController(rest.RestController):
return _VENDOR_METHODS[driver_name]
@METRICS.timer('DriverPassthruController._default')
@expose.expose(wtypes.text, wtypes.text, wtypes.text,
body=wtypes.text)
@expose.expose(str, str, str,
body=str)
def _default(self, driver_name, method, data=None):
"""Call a driver API extension.
@ -316,7 +315,7 @@ class DriverRaidController(rest.RestController):
}
@METRICS.timer('DriverRaidController.logical_disk_properties')
@expose.expose(types.jsontype, wtypes.text)
@expose.expose(types.jsontype, str)
def logical_disk_properties(self, driver_name):
"""Returns the logical disk properties for the driver.
@ -365,7 +364,7 @@ class DriversController(rest.RestController):
}
@METRICS.timer('DriversController.get_all')
@expose.expose(DriverList, wtypes.text, types.boolean)
@expose.expose(DriverList, str, types.boolean)
def get_all(self, type=None, detail=None):
"""Retrieve a list of drivers."""
# FIXME(deva): formatting of the auto-generated REST API docs
@ -391,7 +390,7 @@ class DriversController(rest.RestController):
return DriverList.convert_with_links(hw_type_dict, detail=detail)
@METRICS.timer('DriversController.get_one')
@expose.expose(Driver, wtypes.text)
@expose.expose(Driver, str)
def get_one(self, driver_name):
"""Retrieve a single driver."""
# NOTE(russell_h): There is no way to make this more efficient than
@ -410,7 +409,7 @@ class DriversController(rest.RestController):
raise exception.DriverNotFound(driver_name=driver_name)
@METRICS.timer('DriversController.properties')
@expose.expose(wtypes.text, wtypes.text)
@expose.expose(str, str)
def properties(self, driver_name):
"""Retrieve property information of the given driver.

View File

@ -205,7 +205,7 @@ class BootDeviceController(rest.RestController):
rpc_node.uuid, topic)
@METRICS.timer('BootDeviceController.put')
@expose.expose(None, types.uuid_or_name, wtypes.text, types.boolean,
@expose.expose(None, types.uuid_or_name, str, types.boolean,
status_code=http_client.NO_CONTENT)
def put(self, node_ident, boot_device, persistent=False):
"""Set the boot device for a node.
@ -231,7 +231,7 @@ class BootDeviceController(rest.RestController):
topic=topic)
@METRICS.timer('BootDeviceController.get')
@expose.expose(wtypes.text, types.uuid_or_name)
@expose.expose(str, types.uuid_or_name)
def get(self, node_ident):
"""Get the current boot device for a node.
@ -250,7 +250,7 @@ class BootDeviceController(rest.RestController):
return self._get_boot_device(rpc_node)
@METRICS.timer('BootDeviceController.supported')
@expose.expose(wtypes.text, types.uuid_or_name)
@expose.expose(str, types.uuid_or_name)
def supported(self, node_ident):
"""Get a list of the supported boot devices.
@ -315,7 +315,7 @@ class ConsoleInfo(base.APIBase):
console_enabled = types.boolean
"""The console state: if the console is enabled or not."""
console_info = {wtypes.text: types.jsontype}
console_info = {str: types.jsontype}
"""The console information. It typically includes the url to access the
console and the type of the application that hosts the console."""
@ -376,29 +376,29 @@ class NodeStates(base.APIBase):
"""Indicates whether the console access is enabled or disabled on
the node."""
power_state = wtypes.text
power_state = str
"""Represent the current (not transition) power state of the node"""
provision_state = wtypes.text
provision_state = str
"""Represent the current (not transition) provision state of the node"""
provision_updated_at = datetime.datetime
"""The UTC date and time of the last provision state change"""
target_power_state = wtypes.text
target_power_state = str
"""The user modified desired power state of the node."""
target_provision_state = wtypes.text
target_provision_state = str
"""The user modified desired provision state of the node."""
last_error = wtypes.text
last_error = str
"""Any error from the most recent (last) asynchronous transaction that
started but failed to finish."""
raid_config = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
raid_config = wsme.wsattr({str: types.jsontype}, readonly=True)
"""Represents the RAID configuration that the node is configured with."""
target_raid_config = wsme.wsattr({wtypes.text: types.jsontype},
target_raid_config = wsme.wsattr({str: types.jsontype},
readonly=True)
"""The desired RAID configuration, to be used the next time the node
is configured."""
@ -488,7 +488,7 @@ class NodeStatesController(rest.RestController):
raise
@METRICS.timer('NodeStatesController.power')
@expose.expose(None, types.uuid_or_name, wtypes.text,
@expose.expose(None, types.uuid_or_name, str,
wtypes.IntegerType(minimum=1),
status_code=http_client.ACCEPTED)
def power(self, node_ident, target, timeout=None):
@ -592,8 +592,8 @@ class NodeStatesController(rest.RestController):
raise exception.InvalidStateRequested(message=msg)
@METRICS.timer('NodeStatesController.provision')
@expose.expose(None, types.uuid_or_name, wtypes.text,
types.jsontype, types.jsontype, wtypes.text,
@expose.expose(None, types.uuid_or_name, str,
types.jsontype, types.jsontype, str,
status_code=http_client.ACCEPTED)
def provision(self, node_ident, target, configdrive=None,
clean_steps=None, rescue_password=None):
@ -775,7 +775,7 @@ class NodeTraitsController(rest.RestController):
return Traits(traits=traits.get_trait_names())
@METRICS.timer('NodeTraitsController.put')
@expose.expose(None, wtypes.text, wtypes.ArrayType(str),
@expose.expose(None, str, wtypes.ArrayType(str),
status_code=http_client.NO_CONTENT)
def put(self, trait=None, traits=None):
"""Add a trait to a node.
@ -834,7 +834,7 @@ class NodeTraitsController(rest.RestController):
api.response.location = link.build_url('nodes', url_args)
@METRICS.timer('NodeTraitsController.delete')
@expose.expose(None, wtypes.text,
@expose.expose(None, str,
status_code=http_client.NO_CONTENT)
def delete(self, trait=None):
"""Remove one or all traits from a node.
@ -908,23 +908,23 @@ class Node(base.APIBase):
instance_uuid = types.uuid
"""The UUID of the instance in nova-compute"""
name = wsme.wsattr(wtypes.text)
name = wsme.wsattr(str)
"""The logical name for this node"""
power_state = wsme.wsattr(wtypes.text, readonly=True)
power_state = wsme.wsattr(str, readonly=True)
"""Represent the current (not transition) power state of the node"""
target_power_state = wsme.wsattr(wtypes.text, readonly=True)
target_power_state = wsme.wsattr(str, readonly=True)
"""The user modified desired power state of the node."""
last_error = wsme.wsattr(wtypes.text, readonly=True)
last_error = wsme.wsattr(str, readonly=True)
"""Any error from the most recent (last) asynchronous transaction that
started but failed to finish."""
provision_state = wsme.wsattr(wtypes.text, readonly=True)
provision_state = wsme.wsattr(str, readonly=True)
"""Represent the current (not transition) provision state of the node"""
reservation = wsme.wsattr(wtypes.text, readonly=True)
reservation = wsme.wsattr(str, readonly=True)
"""The hostname of the conductor that holds an exclusive lock on
the node."""
@ -941,46 +941,46 @@ class Node(base.APIBase):
maintenance = types.boolean
"""Indicates whether the node is in maintenance mode."""
maintenance_reason = wsme.wsattr(wtypes.text, readonly=True)
maintenance_reason = wsme.wsattr(str, readonly=True)
"""Indicates reason for putting a node in maintenance mode."""
fault = wsme.wsattr(wtypes.text, readonly=True)
fault = wsme.wsattr(str, readonly=True)
"""Indicates the active fault of a node."""
target_provision_state = wsme.wsattr(wtypes.text, readonly=True)
target_provision_state = wsme.wsattr(str, readonly=True)
"""The user modified desired provision state of the node."""
console_enabled = types.boolean
"""Indicates whether the console access is enabled or disabled on
the node."""
instance_info = {wtypes.text: types.jsontype}
instance_info = {str: types.jsontype}
"""This node's instance info."""
driver = wsme.wsattr(wtypes.text, mandatory=True)
driver = wsme.wsattr(str, mandatory=True)
"""The driver responsible for controlling the node"""
driver_info = {wtypes.text: types.jsontype}
driver_info = {str: types.jsontype}
"""This node's driver configuration"""
driver_internal_info = wsme.wsattr({wtypes.text: types.jsontype},
driver_internal_info = wsme.wsattr({str: types.jsontype},
readonly=True)
"""This driver's internal configuration"""
clean_step = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
clean_step = wsme.wsattr({str: types.jsontype}, readonly=True)
"""The current clean step"""
deploy_step = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
deploy_step = wsme.wsattr({str: types.jsontype}, readonly=True)
"""The current deploy step"""
raid_config = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
raid_config = wsme.wsattr({str: types.jsontype}, readonly=True)
"""Represents the current RAID configuration of the node """
target_raid_config = wsme.wsattr({wtypes.text: types.jsontype},
target_raid_config = wsme.wsattr({str: types.jsontype},
readonly=True)
"""The user modified RAID configuration of the node """
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""This node's meta data"""
resource_class = wsme.wsattr(wtypes.StringType(max_length=80))
@ -990,7 +990,7 @@ class Node(base.APIBase):
# NOTE: properties should use a class to enforce required properties
# current list: arch, cpus, disk, ram, image
properties = {wtypes.text: types.jsontype}
properties = {str: types.jsontype}
"""The physical characteristics of this node"""
chassis_uuid = wsme.wsproperty(types.uuid, _get_chassis_uuid,
@ -1012,46 +1012,46 @@ class Node(base.APIBase):
states = wsme.wsattr([link.Link], readonly=True)
"""Links to endpoint for retrieving and setting node states"""
boot_interface = wsme.wsattr(wtypes.text)
boot_interface = wsme.wsattr(str)
"""The boot interface to be used for this node"""
console_interface = wsme.wsattr(wtypes.text)
console_interface = wsme.wsattr(str)
"""The console interface to be used for this node"""
deploy_interface = wsme.wsattr(wtypes.text)
deploy_interface = wsme.wsattr(str)
"""The deploy interface to be used for this node"""
inspect_interface = wsme.wsattr(wtypes.text)
inspect_interface = wsme.wsattr(str)
"""The inspect interface to be used for this node"""
management_interface = wsme.wsattr(wtypes.text)
management_interface = wsme.wsattr(str)
"""The management interface to be used for this node"""
network_interface = wsme.wsattr(wtypes.text)
network_interface = wsme.wsattr(str)
"""The network interface to be used for this node"""
power_interface = wsme.wsattr(wtypes.text)
power_interface = wsme.wsattr(str)
"""The power interface to be used for this node"""
raid_interface = wsme.wsattr(wtypes.text)
raid_interface = wsme.wsattr(str)
"""The raid interface to be used for this node"""
rescue_interface = wsme.wsattr(wtypes.text)
rescue_interface = wsme.wsattr(str)
"""The rescue interface to be used for this node"""
storage_interface = wsme.wsattr(wtypes.text)
storage_interface = wsme.wsattr(str)
"""The storage interface to be used for this node"""
vendor_interface = wsme.wsattr(wtypes.text)
vendor_interface = wsme.wsattr(str)
"""The vendor interface to be used for this node"""
traits = wtypes.ArrayType(str)
"""The traits associated with this node"""
bios_interface = wsme.wsattr(wtypes.text)
bios_interface = wsme.wsattr(str)
"""The bios interface to be used for this node"""
conductor_group = wsme.wsattr(wtypes.text)
conductor_group = wsme.wsattr(str)
"""The conductor group to manage this node"""
automated_clean = types.boolean
@ -1060,16 +1060,16 @@ class Node(base.APIBase):
protected = types.boolean
"""Indicates whether the node is protected from undeploying/rebuilding."""
protected_reason = wsme.wsattr(wtypes.text)
protected_reason = wsme.wsattr(str)
"""Indicates reason for protecting the node."""
conductor = wsme.wsattr(wtypes.text, readonly=True)
conductor = wsme.wsattr(str, readonly=True)
"""Represent the conductor currently serving the node"""
owner = wsme.wsattr(wtypes.text)
owner = wsme.wsattr(str)
"""Field for storage of physical node owner"""
description = wsme.wsattr(wtypes.text)
description = wsme.wsattr(str)
"""Field for node description"""
allocation_uuid = wsme.wsattr(types.uuid, readonly=True)
@ -1364,7 +1364,7 @@ class NodeVendorPassthruController(rest.RestController):
}
@METRICS.timer('NodeVendorPassthruController.methods')
@expose.expose(wtypes.text, types.uuid_or_name)
@expose.expose(str, types.uuid_or_name)
def methods(self, node_ident):
"""Retrieve information about vendor methods of the given node.
@ -1386,8 +1386,8 @@ class NodeVendorPassthruController(rest.RestController):
return _VENDOR_METHODS[rpc_node.driver]
@METRICS.timer('NodeVendorPassthruController._default')
@expose.expose(wtypes.text, types.uuid_or_name, wtypes.text,
body=wtypes.text)
@expose.expose(str, types.uuid_or_name, str,
body=str)
def _default(self, node_ident, method, data=None):
"""Call a vendor extension.
@ -1424,7 +1424,7 @@ class NodeMaintenanceController(rest.RestController):
notify.emit_end_notification(context, new_node, 'maintenance_set')
@METRICS.timer('NodeMaintenanceController.put')
@expose.expose(None, types.uuid_or_name, wtypes.text,
@expose.expose(None, types.uuid_or_name, str,
status_code=http_client.ACCEPTED)
def put(self, node_ident, reason=None):
"""Put the node in maintenance mode.
@ -1773,10 +1773,10 @@ class NodesController(rest.RestController):
@METRICS.timer('NodesController.get_all')
@expose.expose(NodeCollection, types.uuid, types.uuid, types.boolean,
types.boolean, wtypes.text, types.uuid, int, wtypes.text,
wtypes.text, wtypes.text, types.listtype, wtypes.text,
wtypes.text, wtypes.text, types.boolean, wtypes.text,
wtypes.text, wtypes.text)
types.boolean, str, types.uuid, int, str,
str, str, types.listtype, str,
str, str, types.boolean, str,
str, str)
def get_all(self, chassis_uuid=None, instance_uuid=None, associated=None,
maintenance=None, provision_state=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', driver=None,
@ -1853,9 +1853,9 @@ class NodesController(rest.RestController):
@METRICS.timer('NodesController.detail')
@expose.expose(NodeCollection, types.uuid, types.uuid, types.boolean,
types.boolean, wtypes.text, types.uuid, int, wtypes.text,
wtypes.text, wtypes.text, wtypes.text, wtypes.text,
wtypes.text, wtypes.text, wtypes.text, wtypes.text)
types.boolean, str, types.uuid, int, str,
str, str, str, str,
str, str, str, str)
def detail(self, chassis_uuid=None, instance_uuid=None, associated=None,
maintenance=None, provision_state=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', driver=None,
@ -1927,7 +1927,7 @@ class NodesController(rest.RestController):
**extra_args)
@METRICS.timer('NodesController.validate')
@expose.expose(wtypes.text, types.uuid_or_name, types.uuid)
@expose.expose(str, types.uuid_or_name, types.uuid)
def validate(self, node=None, node_uuid=None):
"""Validate the driver interfaces, using the node's UUID or name.

View File

@ -133,10 +133,10 @@ class Port(base.APIBase):
address = wsme.wsattr(types.macaddress, mandatory=True)
"""MAC Address for this port"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""This port's meta data"""
internal_info = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
internal_info = wsme.wsattr({str: types.jsontype}, readonly=True)
"""This port's internal information maintained by ironic"""
node_uuid = wsme.wsproperty(types.uuid, _get_node_uuid, _set_node_uuid,
@ -439,8 +439,8 @@ class PortsController(rest.RestController):
@METRICS.timer('PortsController.get_all')
@expose.expose(PortCollection, types.uuid_or_name, types.uuid,
types.macaddress, types.uuid, int, wtypes.text,
wtypes.text, types.listtype, types.uuid_or_name,
types.macaddress, types.uuid, int, str,
str, types.listtype, types.uuid_or_name,
types.boolean)
def get_all(self, node=None, node_uuid=None, address=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', fields=None,
@ -497,8 +497,8 @@ class PortsController(rest.RestController):
@METRICS.timer('PortsController.detail')
@expose.expose(PortCollection, types.uuid_or_name, types.uuid,
types.macaddress, types.uuid, int, wtypes.text,
wtypes.text, types.uuid_or_name)
types.macaddress, types.uuid, int, str,
str, types.uuid_or_name)
def detail(self, node=None, node_uuid=None, address=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', portgroup=None):
"""Retrieve a list of ports with detail.

View File

@ -78,17 +78,17 @@ class Portgroup(base.APIBase):
address = wsme.wsattr(types.macaddress)
"""MAC Address for this portgroup"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""This portgroup's meta data"""
internal_info = wsme.wsattr({wtypes.text: types.jsontype}, readonly=True)
internal_info = wsme.wsattr({str: types.jsontype}, readonly=True)
"""This portgroup's internal info"""
node_uuid = wsme.wsproperty(types.uuid, _get_node_uuid, _set_node_uuid,
mandatory=True)
"""The UUID of the node this portgroup belongs to"""
name = wsme.wsattr(wtypes.text)
name = wsme.wsattr(str)
"""The logical name for this portgroup"""
links = wsme.wsattr([link.Link], readonly=True)
@ -98,12 +98,12 @@ class Portgroup(base.APIBase):
"""Indicates whether ports of this portgroup may be used as
single NIC ports"""
mode = wsme.wsattr(wtypes.text)
mode = wsme.wsattr(str)
"""The mode for this portgroup. See linux bonding
documentation for details:
https://www.kernel.org/doc/Documentation/networking/bonding.txt"""
properties = {wtypes.text: types.jsontype}
properties = {str: types.jsontype}
"""This portgroup's properties"""
ports = wsme.wsattr([link.Link], readonly=True)
@ -359,7 +359,7 @@ class PortgroupsController(pecan.rest.RestController):
@METRICS.timer('PortgroupsController.get_all')
@expose.expose(PortgroupCollection, types.uuid_or_name, types.macaddress,
types.uuid, int, wtypes.text, wtypes.text, types.listtype,
types.uuid, int, str, str, types.listtype,
types.boolean)
def get_all(self, node=None, address=None, marker=None,
limit=None, sort_key='id', sort_dir='asc', fields=None,
@ -400,7 +400,7 @@ class PortgroupsController(pecan.rest.RestController):
@METRICS.timer('PortgroupsController.detail')
@expose.expose(PortgroupCollection, types.uuid_or_name, types.macaddress,
types.uuid, int, wtypes.text, wtypes.text)
types.uuid, int, str, str)
def detail(self, node=None, address=None, marker=None,
limit=None, sort_key='id', sort_dir='asc'):
"""Retrieve a list of portgroups with detail.

View File

@ -17,7 +17,6 @@ from http import client as http_client
from oslo_config import cfg
from oslo_log import log
from pecan import rest
from wsme import types as wtypes
from ironic import api
from ironic.api.controllers import base
@ -63,7 +62,7 @@ class LookupResult(base.APIBase):
node = node_ctl.Node
"""The short node representation."""
config = {wtypes.text: types.jsontype}
config = {str: types.jsontype}
"""The configuration to pass to the ramdisk."""
@classmethod
@ -156,8 +155,8 @@ class LookupController(rest.RestController):
class HeartbeatController(rest.RestController):
"""Controller handling heartbeats from deploy ramdisk."""
@expose.expose(None, types.uuid_or_name, wtypes.text,
wtypes.text, status_code=http_client.ACCEPTED)
@expose.expose(None, types.uuid_or_name, str,
str, status_code=http_client.ACCEPTED)
def post(self, node_ident, callback_url, agent_version=None):
"""Process a heartbeat from the deploy ramdisk.

View File

@ -13,21 +13,19 @@
# License for the specific language governing permissions and limitations
# under the License.
from wsme import types as wtypes
from ironic.api.controllers import base
from ironic.api.controllers import link
class State(base.APIBase):
current = wtypes.text
current = str
"""The current state"""
target = wtypes.text
target = str
"""The user modified desired state"""
available = [wtypes.text]
available = [str]
"""A list of available states it is able to transition to"""
links = [link.Link]

View File

@ -36,7 +36,7 @@ LOG = log.getLogger(__name__)
class MacAddressType(wtypes.UserType):
"""A simple MAC address type."""
basetype = wtypes.text
basetype = str
name = 'macaddress'
@staticmethod
@ -53,7 +53,7 @@ class MacAddressType(wtypes.UserType):
class UuidOrNameType(wtypes.UserType):
"""A simple UUID or logical name type."""
basetype = wtypes.text
basetype = str
name = 'uuid_or_name'
@staticmethod
@ -73,7 +73,7 @@ class UuidOrNameType(wtypes.UserType):
class NameType(wtypes.UserType):
"""A simple logical name type."""
basetype = wtypes.text
basetype = str
name = 'name'
@staticmethod
@ -92,7 +92,7 @@ class NameType(wtypes.UserType):
class UuidType(wtypes.UserType):
"""A simple UUID type."""
basetype = wtypes.text
basetype = str
name = 'uuid'
@staticmethod
@ -111,7 +111,7 @@ class UuidType(wtypes.UserType):
class BooleanType(wtypes.UserType):
"""A simple boolean type."""
basetype = wtypes.text
basetype = str
name = 'boolean'
@staticmethod
@ -132,12 +132,12 @@ class BooleanType(wtypes.UserType):
class JsonType(wtypes.UserType):
"""A simple JSON type."""
basetype = wtypes.text
basetype = str
name = 'json'
def __str__(self):
# These are the json serializable native types
return ' | '.join(map(str, (wtypes.text, int, float,
return ' | '.join(map(str, (str, int, float,
BooleanType, list, dict, None)))
@staticmethod
@ -157,7 +157,7 @@ class JsonType(wtypes.UserType):
class ListType(wtypes.UserType):
"""A simple list type."""
basetype = wtypes.text
basetype = str
name = 'list'
@staticmethod
@ -303,7 +303,7 @@ class LocalLinkConnectionType(wtypes.UserType):
:raises: Invalid if some of the keys in the dictionary being validated
are unknown, invalid, or some required ones are missing.
"""
wtypes.DictType(wtypes.text, wtypes.text).validate(value)
wtypes.DictType(str, str).validate(value)
keys = set(value)
@ -364,7 +364,7 @@ class LocalLinkConnectionType(wtypes.UserType):
:return: True if both fields 'port_id' and 'hostname' are present
in 'value', False otherwise.
"""
wtypes.DictType(wtypes.text, wtypes.text).validate(value)
wtypes.DictType(str, str).validate(value)
keys = set(value)
if LocalLinkConnectionType.smart_nic_mandatory_fields <= keys:
@ -377,7 +377,7 @@ locallinkconnectiontype = LocalLinkConnectionType()
class VifType(JsonType):
basetype = wtypes.text
basetype = str
name = 'viftype'
mandatory_fields = {'id'}
@ -422,10 +422,10 @@ class EventType(wtypes.UserType):
validators = {
'port_id': UuidType.validate,
'mac_address': MacAddressType.validate,
'status': wtypes.text,
'status': str,
'device_id': UuidType.validate,
'binding:host_id': UuidType.validate,
'binding:vnic_type': wtypes.text
'binding:vnic_type': str
}
keys = set(value)
@ -473,7 +473,7 @@ class EventType(wtypes.UserType):
:raises: Invalid if event not in proper format
"""
wtypes.DictType(wtypes.text, wtypes.text).validate(value)
wtypes.DictType(str, str).validate(value)
keys = set(value)
# Check all mandatory fields are present

View File

@ -75,13 +75,13 @@ class VolumeConnector(base.APIBase):
uuid = types.uuid
"""Unique UUID for this volume connector"""
type = wsme.wsattr(wtypes.text, mandatory=True)
type = wsme.wsattr(str, mandatory=True)
"""The type of volume connector"""
connector_id = wsme.wsattr(wtypes.text, mandatory=True)
connector_id = wsme.wsattr(str, mandatory=True)
"""The connector_id for this volume connector"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""The metadata for this volume connector"""
node_uuid = wsme.wsproperty(types.uuid, _get_node_uuid,
@ -265,7 +265,7 @@ class VolumeConnectorsController(rest.RestController):
@METRICS.timer('VolumeConnectorsController.get_all')
@expose.expose(VolumeConnectorCollection, types.uuid_or_name, types.uuid,
int, wtypes.text, wtypes.text, types.listtype,
int, str, str, types.listtype,
types.boolean)
def get_all(self, node=None, marker=None, limit=None, sort_key='id',
sort_dir='asc', fields=None, detail=None):

View File

@ -76,19 +76,19 @@ class VolumeTarget(base.APIBase):
uuid = types.uuid
"""Unique UUID for this volume target"""
volume_type = wsme.wsattr(wtypes.text, mandatory=True)
volume_type = wsme.wsattr(str, mandatory=True)
"""The volume_type of volume target"""
properties = {wtypes.text: types.jsontype}
properties = {str: types.jsontype}
"""The properties for this volume target"""
boot_index = wsme.wsattr(int, mandatory=True)
"""The boot_index of volume target"""
volume_id = wsme.wsattr(wtypes.text, mandatory=True)
volume_id = wsme.wsattr(str, mandatory=True)
"""The volume_id for this volume target"""
extra = {wtypes.text: types.jsontype}
extra = {str: types.jsontype}
"""The metadata for this volume target"""
node_uuid = wsme.wsproperty(types.uuid, _get_node_uuid,
@ -279,7 +279,7 @@ class VolumeTargetsController(rest.RestController):
@METRICS.timer('VolumeTargetsController.get_all')
@expose.expose(VolumeTargetCollection, types.uuid_or_name, types.uuid,
int, wtypes.text, wtypes.text, types.listtype,
int, str, str, types.listtype,
types.boolean)
def get_all(self, node=None, marker=None, limit=None, sort_key='id',
sort_dir='asc', fields=None, detail=None):

View File

@ -10,8 +10,6 @@
# License for the specific language governing permissions and limitations
# under the License.
from wsme import types as wtypes
from ironic import api
from ironic.api.controllers import base
from ironic.api.controllers import link
@ -26,13 +24,13 @@ class Version(base.APIBase):
maximum minor versions that are supported within the major version.
"""
id = wtypes.text
id = str
"""The ID of the (major) version, also acts as the release number"""
links = [link.Link]
"""A Link that point to a specific version of the API"""
status = wtypes.text
status = str
"""Status of the version.
One of:
@ -41,10 +39,10 @@ class Version(base.APIBase):
* DEPRECATED - supported, but deprecated, version of API.
"""
version = wtypes.text
version = str
"""The current, maximum supported (major.minor) version of API."""
min_version = wtypes.text
min_version = str
"""Minimum supported (major.minor) version of API."""
def __init__(self, id, min_version, version, status='CURRENT'):

View File

@ -21,7 +21,6 @@ import platform
import mock
import webtest
import wsme
from wsme import types as wtypes
from ironic.api.controllers.v1 import types
from ironic.common import exception
@ -89,7 +88,7 @@ class TestUuidOrNameType(base.TestCase):
class MyBaseType(object):
"""Helper class, patched by objects of type MyPatchType"""
mandatory = wsme.wsattr(wtypes.text, mandatory=True)
mandatory = wsme.wsattr(str, mandatory=True)
class MyPatchType(types.JsonPatchType):
@ -105,7 +104,7 @@ class MyPatchType(types.JsonPatchType):
class MyRoot(wsme.WSRoot):
"""Helper class for TestJsonPatchType tests."""
@wsme.expose([wsme.types.text], body=[MyPatchType])
@wsme.expose([str], body=[MyPatchType])
@wsme.validate([MyPatchType])
def test(self, patch):
return patch
@ -263,7 +262,7 @@ class TestJsonType(base.TestCase):
def test_apimultitype_tostring(self):
vts = str(types.jsontype)
self.assertIn(str(wtypes.text), vts)
self.assertIn(str(str), vts)
self.assertIn(str(int), vts)
self.assertIn(str(float), vts)
self.assertIn(str(types.BooleanType), vts)