diff --git a/openstack/block_store/v2/snapshot.py b/openstack/block_store/v2/snapshot.py index 4dbf89113..b81f63756 100644 --- a/openstack/block_store/v2/snapshot.py +++ b/openstack/block_store/v2/snapshot.py @@ -39,8 +39,7 @@ class Snapshot(resource.Resource): #: Description of snapshot. Default is None. description = resource.prop("description") #: The timestamp of this snapshot creation. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop("created_at", type=format.ISO8601) + created_at = resource.prop("created_at") #: Metadata associated with this snapshot. metadata = resource.prop("metadata", type=dict) #: The ID of the volume this snapshot was taken of. diff --git a/openstack/block_store/v2/volume.py b/openstack/block_store/v2/volume.py index 194a82554..797d7a605 100644 --- a/openstack/block_store/v2/volume.py +++ b/openstack/block_store/v2/volume.py @@ -68,8 +68,7 @@ class Volume(resource.Resource): #: TODO(briancurtin): This is currently undocumented in the API. attachments = resource.prop("attachments") #: The timestamp of this volume creation. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop("created_at", type=format.ISO8601) + created_at = resource.prop("created_at") class VolumeDetail(Volume): diff --git a/openstack/cluster/v1/action.py b/openstack/cluster/v1/action.py index 1cea89ca1..44837f5a4 100644 --- a/openstack/cluster/v1/action.py +++ b/openstack/cluster/v1/action.py @@ -12,7 +12,6 @@ from openstack.cluster import cluster_service -from openstack import format from openstack import resource @@ -40,11 +39,9 @@ class Action(resource.Resource): #: Interval in seconds between two consecutive executions. interval = resource.prop('interval') #: The time the action was started. - #: *Type: datetime object parsed from a UNIX epoch* - start_at = resource.prop('start_time', type=format.UNIXEpoch) + start_at = resource.prop('start_time') #: The time the action completed execution. - #: *Type: datetime object parsed from a UNIX epoch* - end_at = resource.prop('end_time', type=format.UNIXEpoch) + end_at = resource.prop('end_time') #: The timeout in seconds. timeout = resource.prop('timeout') #: Current status of the action. @@ -61,8 +58,6 @@ class Action(resource.Resource): #: A list of actions that can start only after this action has finished. depended_by = resource.prop('depended_by', type=list) #: Timestamp when the action is created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Timestamp when the action was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/cluster/v1/policy.py b/openstack/cluster/v1/policy.py index f301d37e3..1d1e5a797 100644 --- a/openstack/cluster/v1/policy.py +++ b/openstack/cluster/v1/policy.py @@ -11,7 +11,6 @@ # under the License. from openstack.cluster import cluster_service -from openstack import format from openstack import resource @@ -36,11 +35,9 @@ class Policy(resource.Resource): #: The type name of the policy. type = resource.prop('type') #: The timestamp when the policy is created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The timestamp when the policy was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') #: The specification of the policy. spec = resource.prop('spec', type=dict) #: A dictionary containing runtime data of the policy. diff --git a/openstack/cluster/v1/profile.py b/openstack/cluster/v1/profile.py index e7604290e..7cdb4488b 100644 --- a/openstack/cluster/v1/profile.py +++ b/openstack/cluster/v1/profile.py @@ -11,7 +11,6 @@ # under the License. from openstack.cluster import cluster_service -from openstack import format from openstack import resource @@ -40,8 +39,6 @@ class Profile(resource.Resource): #: A collection of key-value pairs that are attached to the profile. metadata = resource.prop('metadata', type=dict) #: Timestamp of when the profile was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Timestamp of when the profile was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/cluster/v1/receiver.py b/openstack/cluster/v1/receiver.py index a55716c52..7383842a3 100644 --- a/openstack/cluster/v1/receiver.py +++ b/openstack/cluster/v1/receiver.py @@ -10,9 +10,7 @@ # License for the specific language governing permissions and limitations # under the License. - from openstack.cluster import cluster_service -from openstack import format from openstack import resource @@ -44,11 +42,9 @@ class Receiver(resource.Resource): #: The name of the targeted action. action = resource.prop('action') #: Timestamp of when the receiver was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Timestamp of when the receiver was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') #: The credential of the impersonated user. actor = resource.prop('actor', type=dict) #: A dictionary containing key-value pairs that are provided to the diff --git a/openstack/compute/v2/extension.py b/openstack/compute/v2/extension.py index 287490a5f..79c7e0852 100644 --- a/openstack/compute/v2/extension.py +++ b/openstack/compute/v2/extension.py @@ -11,7 +11,6 @@ # under the License. from openstack.compute import compute_service -from openstack import format from openstack import resource @@ -39,5 +38,4 @@ class Extension(resource.Resource): #: A URL pointing to the namespace for this extension. namespace = resource.prop('namespace') #: Timestamp when this extension was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') diff --git a/openstack/compute/v2/image.py b/openstack/compute/v2/image.py index 5bd5fc7e1..704455e90 100644 --- a/openstack/compute/v2/image.py +++ b/openstack/compute/v2/image.py @@ -12,7 +12,6 @@ from openstack.compute import compute_service from openstack.compute.v2 import metadata -from openstack import format from openstack import resource @@ -34,8 +33,7 @@ class Image(resource.Resource, metadata.MetadataMixin): #: The name of this image. name = resource.prop('name') #: Timestamp when the image was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created', type=format.ISO8601) + created_at = resource.prop('created') #: Metadata pertaining to this image. *Type: dict* metadata = resource.prop('metadata', type=dict) #: The mimimum disk size. *Type: int* @@ -48,8 +46,7 @@ class Image(resource.Resource, metadata.MetadataMixin): #: The status of this image. status = resource.prop('status') #: Timestamp when the image was updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') #: Size of the image in bytes. *Type: int* size = resource.prop('OS-EXT-IMG-SIZE:size', type=int) diff --git a/openstack/compute/v2/server.py b/openstack/compute/v2/server.py index c0d713554..5aecc8396 100644 --- a/openstack/compute/v2/server.py +++ b/openstack/compute/v2/server.py @@ -12,7 +12,6 @@ from openstack.compute import compute_service from openstack.compute.v2 import metadata -from openstack import format from openstack import resource from openstack import utils @@ -41,8 +40,7 @@ class Server(resource.Resource, metadata.MetadataMixin): #: of the IP address. *Type: dict* addresses = resource.prop('addresses', type=dict) #: Timestamp of when the server was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created', type=format.ISO8601) + created_at = resource.prop('created') #: The flavor reference, as a ID or full URL, for the flavor to use for #: this server. flavor_id = resource.prop('flavorRef') @@ -69,8 +67,7 @@ class Server(resource.Resource, metadata.MetadataMixin): #: ``SUSPENDED``, ``UNKNOWN``, or ``VERIFY_RESIZE``. status = resource.prop('status') #: Timestamp of when this server was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') #: The user ID associated with this server. user_id = resource.prop('user_id') diff --git a/openstack/format.py b/openstack/format.py index 9b3ef3d52..94fd310fe 100644 --- a/openstack/format.py +++ b/openstack/format.py @@ -10,15 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from datetime import datetime -import numbers -import time - -from iso8601 import iso8601 -import six - -from oslo_utils import timeutils - class Formatter(object): @@ -33,82 +24,6 @@ class Formatter(object): raise NotImplementedError -class ISO8601(Formatter): - - @classmethod - def serialize(cls, value): - """Convert a datetime to an ISO8601 string""" - if isinstance(value, datetime): - return value.isoformat() - elif isinstance(value, six.string_types): - # If we're already given a string, keep it as-is. - # This happens when a string comes back in a response body, - # as opposed to the datetime case above which happens when - # a user is setting a datetime for a request. - return value - else: - raise ValueError("Unable to serialize ISO8601: %s" % value) - - @classmethod - def deserialize(cls, value): - """Convert an ISO8601 string to a datetime object""" - if isinstance(value, six.string_types): - return timeutils.parse_isotime(value) - else: - raise ValueError("Unable to deserialize ISO8601: %s" % value) - - -class UNIXEpoch(Formatter): - - EPOCH = datetime(1970, 1, 1, tzinfo=iso8601.UTC) - - @classmethod - def serialize(cls, value): - """Convert a datetime to a UNIX epoch""" - if isinstance(value, datetime): - # Do not try to format using %s as it's platform dependent. - return (value - cls.EPOCH).total_seconds() - elif isinstance(value, numbers.Number): - return value - else: - raise ValueError("Unable to serialize UNIX epoch: %s" % value) - - @classmethod - def deserialize(cls, value): - """Convert a UNIX epoch into a datetime object""" - try: - value = float(value) - except ValueError: - raise ValueError("Unable to deserialize UNIX epoch: %s" % value) - - # gmtime doesn't respect microseconds so we need to parse them out - # if they're there and build the datetime appropriately with the - # proper precision. - # NOTES: - # 1. datetime.fromtimestamp sort of solves this but using localtime - # instead of UTC, which we need. - # 2. On Python 2 we can't just str(value) as it truncates digits - # that are significant to us. - parsed_value = "%000000f" % value - decimal = parsed_value.find(".") - - if decimal == -1: - microsecond = 0 - else: - # Some examples of these timestamps include less precision - # than the allowable 6 digits that can represent microseconds, - # so since we have a string we need to construct a real - # count of microseconds instead of just converting the - # stringified amount to an int. - fractional_second = float(parsed_value[decimal:]) * 1e6 - microsecond = int(fractional_second) - - gmt = time.gmtime(value) - - return datetime(*gmt[:6], microsecond=microsecond, - tzinfo=iso8601.UTC) - - class BoolStr(Formatter): @classmethod diff --git a/openstack/identity/v2/extension.py b/openstack/identity/v2/extension.py index 77fc40796..19c8ab448 100644 --- a/openstack/identity/v2/extension.py +++ b/openstack/identity/v2/extension.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.identity import identity_service from openstack import resource @@ -42,8 +41,7 @@ class Extension(resource.Resource): #: *Type: string* namespace = resource.prop('namespace') #: The last time the extension has been modified (update date). - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') @classmethod def list(cls, session, **params): diff --git a/openstack/identity/v3/trust.py b/openstack/identity/v3/trust.py index 750b37f13..3c697bd72 100644 --- a/openstack/identity/v3/trust.py +++ b/openstack/identity/v3/trust.py @@ -11,7 +11,6 @@ # under the License. -from openstack import format from openstack.identity import identity_service from openstack import resource @@ -35,8 +34,7 @@ class Trust(resource.Resource): #: Specifies the expiration time of the trust. A trust may be revoked #: ahead of expiration. If the value represents a time in the past, #: the trust is deactivated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - expires_at = resource.prop('expires_at', type=format.ISO8601) + expires_at = resource.prop('expires_at') #: ID of the trust object. *Type: string* id = resource.prop('id') #: If ``impersonation`` is set to true, then the ``user`` attribute diff --git a/openstack/image/v1/image.py b/openstack/image/v1/image.py index 36cf31374..bbe0f55df 100644 --- a/openstack/image/v1/image.py +++ b/openstack/image/v1/image.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.image import image_service from openstack import resource @@ -40,8 +39,7 @@ class Image(resource.Resource): #: A URL to copy an image from copy_from = resource.prop('copy_from') #: The timestamp when this image was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Valid values are: aki, ari, ami, raw, iso, vhd, vdi, qcow2, or vmdk. #: The disk format of a VM image is the format of the underlying #: disk image. Virtual appliance vendors have different formats for @@ -72,5 +70,4 @@ class Image(resource.Resource): #: The image status. status = resource.prop('status') #: The timestamp when this image was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/image/v2/image.py b/openstack/image/v2/image.py index 6fb68c47c..f7028f990 100644 --- a/openstack/image/v2/image.py +++ b/openstack/image/v2/image.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.image import image_service from openstack import resource from openstack import utils @@ -44,8 +43,7 @@ class Image(resource.Resource): #: the image is just a blob of unstructured data. container_format = resource.prop('container_format') #: The date and time when the image was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Valid values are: aki, ari, ami, raw, iso, vhd, vdi, qcow2, or vmdk. #: The disk format of a VM image is the format of the underlying #: disk image. Virtual appliance vendors have different formats @@ -75,8 +73,7 @@ class Image(resource.Resource): #: Tags, if any, that are associated with the image. tags = resource.prop('tags') #: The date and time when the image was updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') #: The virtual size of the image. virtual_size = resource.prop('virtual_size') #: The image visibility. diff --git a/openstack/image/v2/member.py b/openstack/image/v2/member.py index fa41a3f3b..c25291544 100644 --- a/openstack/image/v2/member.py +++ b/openstack/image/v2/member.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.image import image_service from openstack import resource @@ -30,12 +29,10 @@ class Member(resource.Resource): # Properties #: The date and time when the member was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: Image ID stored through the image API. Typically a UUID. image_id = resource.prop('image_id') #: The status of the image. status = resource.prop('status') #: The date and time when the member was updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/key_manager/v1/container.py b/openstack/key_manager/v1/container.py index 4d83447fd..a11074bf9 100644 --- a/openstack/key_manager/v1/container.py +++ b/openstack/key_manager/v1/container.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.key_manager import key_manager_service from openstack import resource @@ -32,8 +31,7 @@ class Container(resource.Resource): #: A URI for this container container_ref = resource.prop('container_ref') #: The timestamp when this container was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created', type=format.ISO8601) + created_at = resource.prop('created') #: The name of this container name = resource.prop('name') #: A list of references to secrets in this container @@ -43,5 +41,4 @@ class Container(resource.Resource): #: The type of this container type = resource.prop('type') #: The timestamp when this container was updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') diff --git a/openstack/key_manager/v1/secret.py b/openstack/key_manager/v1/secret.py index c7a5392c8..2d8a56857 100644 --- a/openstack/key_manager/v1/secret.py +++ b/openstack/key_manager/v1/secret.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.key_manager import key_manager_service from openstack import resource @@ -37,8 +36,7 @@ class Secret(resource.Resource): #: A list of content types content_types = resource.prop('content_types') #: Once this timestamp has past, the secret will no longer be available. - #: *Type: datetime object parsed from ISO 8601 formatted string* - expires_at = resource.prop('expiration', type=format.ISO8601) + expires_at = resource.prop('expiration') #: The type/mode of the algorithm associated with the secret information. mode = resource.prop('mode') #: The name of the secret set by the user @@ -48,5 +46,4 @@ class Secret(resource.Resource): #: The status of this secret status = resource.prop('status') #: A timestamp when this secret was updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') diff --git a/openstack/metric/v1/resource.py b/openstack/metric/v1/resource.py index 13dc49eb7..f6f8c8420 100644 --- a/openstack/metric/v1/resource.py +++ b/openstack/metric/v1/resource.py @@ -9,7 +9,7 @@ # 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 openstack import format + from openstack.metric import metric_service from openstack import resource @@ -37,13 +37,9 @@ class Generic(resource.Resource): #: The ID of the project project_id = resource.prop('project_id') #: Timestamp when this resource was started - #: *Type: datetime object parsed from ISO 8601 formatted string* - started_at = resource.prop('started_at', - type=format.ISO8601) + started_at = resource.prop('started_at') #: Timestamp when this resource was ended - #: *Type: datetime object parsed from ISO 8601 formatted string* - ended_at = resource.prop('ended_at', - type=format.ISO8601) + ended_at = resource.prop('ended_at') #: A dictionary of metrics collected on this resource metrics = resource.prop('metrics', type=dict) diff --git a/openstack/network/v2/agent.py b/openstack/network/v2/agent.py index 95ade0cad..9197e9ee7 100644 --- a/openstack/network/v2/agent.py +++ b/openstack/network/v2/agent.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -38,14 +37,11 @@ class Agent(resource.Resource): #: Network agent configuration data specific to the agent_type. configuration = resource.prop('configurations') #: Timestamp when the network agent was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The network agent description. description = resource.prop('description') #: Timestamp when the network agent's heartbeat was last seen. - #: *Type: datetime object parsed from ISO 8601 formatted string* - last_heartbeat_at = resource.prop('heartbeat_timestamp', - type=format.ISO8601) + last_heartbeat_at = resource.prop('heartbeat_timestamp') #: The host the agent is running on. host = resource.prop('host') #: The administrative state of the network agent, which is up @@ -55,7 +51,6 @@ class Agent(resource.Resource): #: *Type: bool* is_alive = resource.prop('alive', type=bool) #: Timestamp when the network agent was last started. - #: *Type: datetime object parsed from ISO 8601 formatted string* - started_at = resource.prop('started_at', type=format.ISO8601) + started_at = resource.prop('started_at') #: The messaging queue topic the network agent subscribes to. topic = resource.prop('topic') diff --git a/openstack/network/v2/extension.py b/openstack/network/v2/extension.py index 215634fd4..8096213f3 100644 --- a/openstack/network/v2/extension.py +++ b/openstack/network/v2/extension.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -38,5 +37,4 @@ class Extension(resource.Resource): #: A URL pointing to the namespace for this extension. namespace = resource.prop('namespace') #: Timestamp when the extension was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated', type=format.ISO8601) + updated_at = resource.prop('updated') diff --git a/openstack/network/v2/network.py b/openstack/network/v2/network.py index b24170a92..be9ff8160 100644 --- a/openstack/network/v2/network.py +++ b/openstack/network/v2/network.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -36,8 +35,7 @@ class Network(resource.Resource): #: *Type: list of availability zone names* availability_zones = resource.prop('availability_zones') #: Timestamp when the network was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The network description. description = resource.prop('description') #: The ID of the IPv4 address scope for the network. @@ -85,5 +83,4 @@ class Network(resource.Resource): #: *Type: list of strs of the subnet IDs* subnet_ids = resource.prop('subnets', type=list) #: Timestamp when the network was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/network/v2/port.py b/openstack/network/v2/port.py index 44320b785..788e3c3fc 100644 --- a/openstack/network/v2/port.py +++ b/openstack/network/v2/port.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -58,8 +57,7 @@ class Port(resource.Resource): #: visible to only port owners and administrative users. binding_vnic_type = resource.prop('binding:vnic_type') #: Timestamp when the port was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The port description. description = resource.prop('description') #: Device ID of this port. @@ -97,5 +95,4 @@ class Port(resource.Resource): #: The port status. Value is ``ACTIVE`` or ``DOWN``. status = resource.prop('status') #: Timestamp when the port was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/network/v2/subnet.py b/openstack/network/v2/subnet.py index ac3f2c9b0..5f6a330cc 100644 --- a/openstack/network/v2/subnet.py +++ b/openstack/network/v2/subnet.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -34,8 +33,7 @@ class Subnet(resource.Resource): #: The CIDR. cidr = resource.prop('cidr') #: Timestamp when the subnet was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The subnet description. description = resource.prop('description') #: A list of DNS nameservers. @@ -63,5 +61,4 @@ class Subnet(resource.Resource): #: The subnet pool ID from which to obtain a CIDR. subnet_pool_id = resource.prop('subnetpool_id') #: Timestamp when the subnet was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/network/v2/subnet_pool.py b/openstack/network/v2/subnet_pool.py index 4477ad982..e25e51ae0 100644 --- a/openstack/network/v2/subnet_pool.py +++ b/openstack/network/v2/subnet_pool.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.network import network_service from openstack import resource @@ -32,8 +31,7 @@ class SubnetPool(resource.Resource): #: The ID of the address scope associated with the subnet pool. address_scope_id = resource.prop('address_scope_id') #: Timestamp when the subnet pool was created. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('created_at', type=format.ISO8601) + created_at = resource.prop('created_at') #: The length of the prefix to allocate when the cidr or prefixlen #: attributes are omitted when creating a subnet. *Type: int* default_prefix_length = resource.prop('default_prefixlen', type=int) @@ -69,5 +67,4 @@ class SubnetPool(resource.Resource): #: *Type: list* prefixes = resource.prop('prefixes', type=list) #: Timestamp when the subnet pool was last updated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_at', type=format.ISO8601) + updated_at = resource.prop('updated_at') diff --git a/openstack/object_store/v1/account.py b/openstack/object_store/v1/account.py index a82e6e618..8857882d2 100644 --- a/openstack/object_store/v1/account.py +++ b/openstack/object_store/v1/account.py @@ -11,7 +11,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.object_store.v1 import _base from openstack import resource @@ -40,5 +39,4 @@ class Account(_base.BaseResource): #: this header is not returned by this operation. meta_temp_url_key_2 = resource.header("x-account-meta-temp-url-key-2") #: The timestamp of the transaction. - #: *Type: datetime object parsed from a UNIX epoch* - timestamp = resource.header("x-timestamp", type=format.UNIXEpoch) + timestamp = resource.header("x-timestamp") diff --git a/openstack/object_store/v1/container.py b/openstack/object_store/v1/container.py index 58e0dae71..678846d6e 100644 --- a/openstack/object_store/v1/container.py +++ b/openstack/object_store/v1/container.py @@ -11,7 +11,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.object_store.v1 import _base from openstack import resource @@ -53,8 +52,7 @@ class Container(_base.BaseResource): #: The count of bytes used in total. bytes_used = resource.header("x-container-bytes-used", type=int) #: The timestamp of the transaction. - #: *Type: datetime object parsed from a UNIX epoch* - timestamp = resource.header("x-timestamp", type=format.UNIXEpoch) + timestamp = resource.header("x-timestamp") # Request headers (when id=None) #: If set to True, Object Storage queries all replicas to return the diff --git a/openstack/object_store/v1/obj.py b/openstack/object_store/v1/obj.py index fea1eec31..1b93e8e84 100644 --- a/openstack/object_store/v1/obj.py +++ b/openstack/object_store/v1/obj.py @@ -13,7 +13,6 @@ import copy -from openstack import format from openstack.object_store import object_store_service from openstack.object_store.v1 import _base from openstack import resource @@ -82,8 +81,7 @@ class Object(_base.BaseResource): #: Used with temporary URLs to specify the expiry time of the #: signature. For more information about temporary URLs, see #: OpenStack Object Storage API v1 Reference. - #: *Type: datetime object parsed from ISO 8601 formatted string* - expires_at = resource.header("expires", type=format.ISO8601) + expires_at = resource.header("expires") #: If you include the multipart-manifest=get query parameter and #: the object is a large object, the object contents are not #: returned. Instead, the manifest is returned in the @@ -133,15 +131,13 @@ class Object(_base.BaseResource): #: If set, the time when the object will be deleted by the system #: in the format of a UNIX Epoch timestamp. #: If not set, this header is not returned by this operation. - #: *Type: datetime object parsed from a UNIX epoch* - delete_at = resource.header("x-delete-at", type=format.UNIXEpoch) + delete_at = resource.header("x-delete-at") #: If set, to this is a dynamic large object manifest object. #: The value is the container and object name prefix of the #: segment objects in the form container/prefix. object_manifest = resource.header("x-object-manifest") #: The timestamp of the transaction. - #: *Type: datetime object parsed from a UNIX epoch* - timestamp = resource.header("x-timestamp", type=format.UNIXEpoch) + timestamp = resource.header("x-timestamp") #: The date and time that the object was created or the last #: time that the metadata was changed. last_modified_at = resource.header("last_modified", alias="last-modified") diff --git a/openstack/orchestration/v1/resource.py b/openstack/orchestration/v1/resource.py index 4d86fa8d9..6e7c08f38 100644 --- a/openstack/orchestration/v1/resource.py +++ b/openstack/orchestration/v1/resource.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack.orchestration import orchestration_service from openstack import resource @@ -52,5 +51,4 @@ class Resource(resource.Resource): #: A string that explains why the resource is in its current status. status_reason = resource.prop('resource_status_reason') #: Timestamp of the last update made to the resource. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_time', type=format.ISO8601) + updated_at = resource.prop('updated_time') diff --git a/openstack/orchestration/v1/stack.py b/openstack/orchestration/v1/stack.py index 0bf45189e..ab05d3559 100644 --- a/openstack/orchestration/v1/stack.py +++ b/openstack/orchestration/v1/stack.py @@ -11,7 +11,6 @@ # under the License. from openstack import exceptions -from openstack import format from openstack.orchestration import orchestration_service from openstack import resource from openstack import utils @@ -37,8 +36,7 @@ class Stack(resource.Resource): #: required by the stack. capabilities = resource.prop('capabilities') #: Timestamp of the stack creation. - #: *Type: datetime object parsed from ISO 8601 formatted string* - created_at = resource.prop('creation_time', type=format.ISO8601) + created_at = resource.prop('creation_time') #: A text description of the stack. description = resource.prop('description') #: Whether the stack will support a rollback operation on stack @@ -67,8 +65,7 @@ class Stack(resource.Resource): #: Stack operation timeout in minutes. timeout_mins = resource.prop('timeout_mins') #: Timestamp of last update on the stack. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('updated_time', type=format.ISO8601) + updated_at = resource.prop('updated_time') def _action(self, session, body): """Perform stack actions""" diff --git a/openstack/telemetry/v2/alarm.py b/openstack/telemetry/v2/alarm.py index 1d1820165..253647169 100644 --- a/openstack/telemetry/v2/alarm.py +++ b/openstack/telemetry/v2/alarm.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack import resource from openstack.telemetry import telemetry_service from openstack import utils @@ -56,8 +55,7 @@ class Alarm(resource.Resource): #: The state off the alarm state = resource.prop('state') #: The timestamp of the last alarm state change. - #: *Type: datetime object parsed from ISO 8601 formatted string* - state_changed_at = resource.prop('state_timestamp', type=format.ISO8601) + state_changed_at = resource.prop('state_timestamp') # TODO(briancurtin): undocumented threshold_rule = resource.prop('threshold_rule', type=dict) #: Describe time constraints for the alarm @@ -65,8 +63,7 @@ class Alarm(resource.Resource): #: Explicit type specifier to select which rule to follow type = resource.prop('type') #: The timestamp of the last alarm definition update. - #: *Type: datetime object parsed from ISO 8601 formatted string* - updated_at = resource.prop('timestamp', type=format.ISO8601) + updated_at = resource.prop('timestamp') #: The ID of the user who created the alarm user_id = resource.prop('user_id') diff --git a/openstack/telemetry/v2/alarm_change.py b/openstack/telemetry/v2/alarm_change.py index d959fab03..42a561716 100644 --- a/openstack/telemetry/v2/alarm_change.py +++ b/openstack/telemetry/v2/alarm_change.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack import resource from openstack.telemetry import telemetry_service @@ -37,8 +36,7 @@ class AlarmChange(resource.Resource): #: The project ID of the initiating identity project_id = resource.prop('project_id') #: The time/date of the alarm change. - #: *Type: datetime object parsed from ISO 8601 formatted string* - triggered_at = resource.prop('timestamp', type=format.ISO8601) + triggered_at = resource.prop('timestamp') #: The type of change type = resource.prop('type') #: The user ID of the initiating identity diff --git a/openstack/telemetry/v2/resource.py b/openstack/telemetry/v2/resource.py index fe315660f..ed82fbb2f 100644 --- a/openstack/telemetry/v2/resource.py +++ b/openstack/telemetry/v2/resource.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack import resource from openstack.telemetry import telemetry_service @@ -28,14 +27,10 @@ class Resource(resource.Resource): # Properties #: UTC date & time not later than the first sample known #: for this resource. - #: *Type: datetime object parsed from ISO 8601 formatted string* - first_sample_at = resource.prop('first_sample_timestamp', - type=format.ISO8601) + first_sample_at = resource.prop('first_sample_timestamp') #: UTC date & time not earlier than the last sample known #: for this resource. - #: *Type: datetime object parsed from ISO 8601 formatted string* - last_sample_at = resource.prop('last_sample_timestamp', - type=format.ISO8601) + last_sample_at = resource.prop('last_sample_timestamp') #: A list containing a self link and associated meter links links = resource.prop('links') #: Arbitrary metadata associated with the resource diff --git a/openstack/telemetry/v2/sample.py b/openstack/telemetry/v2/sample.py index e6f0d1140..7da4443ea 100644 --- a/openstack/telemetry/v2/sample.py +++ b/openstack/telemetry/v2/sample.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack import resource from openstack.telemetry import telemetry_service @@ -29,15 +28,13 @@ class Sample(resource.Resource): #: The meter name this sample is for counter_name = resource.prop('meter', alias='counter_name') #: When the sample has been generated. - #: *Type: datetime object parsed from ISO 8601 formatted string* - generated_at = resource.prop('timestamp', type=format.ISO8601) + generated_at = resource.prop('timestamp') #: Arbitrary metadata associated with the sample metadata = resource.prop('metadata', alias='resource_metadata') #: The ID of the project this sample was taken for project_id = resource.prop('project_id') #: When the sample has been recorded. - #: *Type: datetime object parsed from ISO 8601 formatted string* - recorded_at = resource.prop('recorded_at', type=format.ISO8601) + recorded_at = resource.prop('recorded_at') #: The ID of the resource this sample was taken for resource_id = resource.prop('resource_id') #: The name of the source that identifies where the sample comes from diff --git a/openstack/telemetry/v2/statistics.py b/openstack/telemetry/v2/statistics.py index 4a6d3cd24..88a1613cb 100644 --- a/openstack/telemetry/v2/statistics.py +++ b/openstack/telemetry/v2/statistics.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from openstack import format from openstack import resource from openstack.telemetry import telemetry_service @@ -38,11 +37,9 @@ class Statistics(resource.Resource): #: The difference, in seconds, between the oldest and newest timestamp duration = resource.prop('duration') #: UTC date and time of the oldest timestamp, or the query end time. - #: *Type: datetime object parsed from ISO 8601 formatted string* - duration_end_at = resource.prop('duration_end', type=format.ISO8601) + duration_end_at = resource.prop('duration_end') #: UTC date and time of the earliest timestamp, or the query start time. - #: *Type: datetime object parsed from ISO 8601 formatted string* - duration_start_at = resource.prop('duration_start', type=format.ISO8601) + duration_start_at = resource.prop('duration_start') #: Dictionary of field names for group, if groupby statistics are requested group_by = resource.prop('groupby') #: The maximum volume seen in the data @@ -52,11 +49,9 @@ class Statistics(resource.Resource): #: The difference, in seconds, between the period start and end period = resource.prop('period') #: UTC date and time of the period end. - #: *Type: datetime object parsed from ISO 8601 formatted string* - period_end_at = resource.prop('period_end', type=format.ISO8601) + period_end_at = resource.prop('period_end') #: UTC date and time of the period start. - #: *Type: datetime object parsed from ISO 8601 formatted string* - period_start_at = resource.prop('period_start', type=format.ISO8601) + period_start_at = resource.prop('period_start') #: The total of all of the volume values seen in the data sum = resource.prop('sum') #: The unit type of the data set diff --git a/openstack/tests/functional/object_store/v1/test_obj.py b/openstack/tests/functional/object_store/v1/test_obj.py index 5de3f658c..a96a18eed 100644 --- a/openstack/tests/functional/object_store/v1/test_obj.py +++ b/openstack/tests/functional/object_store/v1/test_obj.py @@ -10,7 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime import uuid from openstack.tests.functional import base @@ -80,7 +79,6 @@ class TestObject(base.BaseFunctionalTest): self.assertEqual('v0', obj.metadata['k0']) self.assertEqual('attachment', obj.content_disposition) self.assertEqual('deflate', obj.content_encoding) - self.assertIsInstance(obj.delete_at, datetime.datetime) # unset system metadata self.conn.object_store.delete_object_metadata( diff --git a/openstack/tests/unit/block_store/v2/test_snapshot.py b/openstack/tests/unit/block_store/v2/test_snapshot.py index 69f15589f..55f40e517 100644 --- a/openstack/tests/unit/block_store/v2/test_snapshot.py +++ b/openstack/tests/unit/block_store/v2/test_snapshot.py @@ -9,7 +9,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import datetime import testtools @@ -58,9 +57,7 @@ class TestSnapshot(testtools.TestCase): sot = snapshot.Snapshot(SNAPSHOT) self.assertEqual(SNAPSHOT["id"], sot.id) self.assertEqual(SNAPSHOT["status"], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(SNAPSHOT["created_at"], sot.created_at) self.assertEqual(SNAPSHOT["metadata"], sot.metadata) self.assertEqual(SNAPSHOT["volume_id"], sot.volume_id) self.assertEqual(SNAPSHOT["size"], sot.size) diff --git a/openstack/tests/unit/block_store/v2/test_volume.py b/openstack/tests/unit/block_store/v2/test_volume.py index 5850e0b22..52b5e1ecd 100644 --- a/openstack/tests/unit/block_store/v2/test_volume.py +++ b/openstack/tests/unit/block_store/v2/test_volume.py @@ -11,7 +11,6 @@ # under the License. import copy -import datetime import testtools @@ -74,9 +73,7 @@ class TestVolume(testtools.TestCase): self.assertEqual(VOLUME["attachments"], sot.attachments) self.assertEqual(VOLUME["availability_zone"], sot.availability_zone) self.assertFalse(sot.is_bootable) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(VOLUME["created_at"], sot.created_at) self.assertEqual(VOLUME["description"], sot.description) self.assertEqual(VOLUME["volume_type"], sot.volume_type) self.assertEqual(VOLUME["snapshot_id"], sot.snapshot_id) diff --git a/openstack/tests/unit/cluster/v1/test_action.py b/openstack/tests/unit/cluster/v1/test_action.py index e96fb4643..c9f7a88a8 100644 --- a/openstack/tests/unit/cluster/v1/test_action.py +++ b/openstack/tests/unit/cluster/v1/test_action.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime -import iso8601 - import testtools from openstack.cluster.v1 import action @@ -65,12 +62,8 @@ class TestAction(testtools.TestCase): self.assertEqual(FAKE['cause'], sot.cause) self.assertEqual(FAKE['owner'], sot.owner_id) self.assertEqual(FAKE['interval'], sot.interval) - self.assertEqual(datetime.datetime(2016, 1, 21, 22, 7, 35, 486720, - tzinfo=iso8601.UTC), - sot.start_at) - self.assertEqual(datetime.datetime(2016, 1, 21, 22, 7, 35, 486720, - tzinfo=iso8601.UTC), - sot.end_at) + self.assertEqual(FAKE['start_time'], sot.start_at) + self.assertEqual(FAKE['end_time'], sot.end_at) self.assertEqual(FAKE['timeout'], sot.timeout) self.assertEqual(FAKE['status'], sot.status) self.assertEqual(FAKE['status_reason'], sot.status_reason) @@ -78,9 +71,5 @@ class TestAction(testtools.TestCase): self.assertEqual(FAKE['outputs'], sot.outputs) self.assertEqual(FAKE['depends_on'], sot.depends_on) self.assertEqual(FAKE['depended_by'], sot.depended_by) - dt = datetime.datetime(2015, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['created_at'], sot.created_at) + self.assertEqual(FAKE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/cluster/v1/test_policy.py b/openstack/tests/unit/cluster/v1/test_policy.py index 966e7e3a3..a589f48b6 100644 --- a/openstack/tests/unit/cluster/v1/test_policy.py +++ b/openstack/tests/unit/cluster/v1/test_policy.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.cluster.v1 import policy @@ -62,9 +60,5 @@ class TestPolicy(testtools.TestCase): self.assertEqual(FAKE['name'], sot.name) self.assertEqual(FAKE['spec'], sot.spec) self.assertEqual(FAKE['data'], sot.data) - dt = datetime.datetime(2015, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['created_at'], sot.created_at) + self.assertEqual(FAKE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/cluster/v1/test_profile.py b/openstack/tests/unit/cluster/v1/test_profile.py index 3570f7839..bab0c993c 100644 --- a/openstack/tests/unit/cluster/v1/test_profile.py +++ b/openstack/tests/unit/cluster/v1/test_profile.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.cluster.v1 import profile @@ -65,9 +63,5 @@ class TestProfile(testtools.TestCase): self.assertEqual(FAKE['metadata'], sot.metadata) self.assertEqual(FAKE['spec'], sot.spec) self.assertEqual(FAKE['type'], sot.type_name) - dt = datetime.datetime(2015, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['created_at'], sot.created_at) + self.assertEqual(FAKE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/cluster/v1/test_receiver.py b/openstack/tests/unit/cluster/v1/test_receiver.py index 1da31ac4f..585500d2c 100644 --- a/openstack/tests/unit/cluster/v1/test_receiver.py +++ b/openstack/tests/unit/cluster/v1/test_receiver.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.cluster.v1 import receiver @@ -66,12 +64,8 @@ class TestReceiver(testtools.TestCase): self.assertEqual(FAKE['cluster_id'], sot.cluster_id) self.assertEqual(FAKE['action'], sot.action) self.assertEqual(FAKE['params'], sot.params) - dt = datetime.datetime(2015, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 10, 10, 12, 46, 36, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['created_at'], sot.created_at) + self.assertEqual(FAKE['updated_at'], sot.updated_at) self.assertEqual(FAKE['user'], sot.user_id) self.assertEqual(FAKE['project'], sot.project_id) self.assertEqual(FAKE['domain'], sot.domain_id) diff --git a/openstack/tests/unit/compute/v2/test_extension.py b/openstack/tests/unit/compute/v2/test_extension.py index 43b330419..e94ca6fb1 100644 --- a/openstack/tests/unit/compute/v2/test_extension.py +++ b/openstack/tests/unit/compute/v2/test_extension.py @@ -9,7 +9,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import datetime import testtools @@ -48,6 +47,4 @@ class TestExtension(testtools.TestCase): self.assertEqual(EXAMPLE['links'], sot.links) self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['namespace'], sot.namespace) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) diff --git a/openstack/tests/unit/compute/v2/test_image.py b/openstack/tests/unit/compute/v2/test_image.py index e96834360..9015e03c1 100644 --- a/openstack/tests/unit/compute/v2/test_image.py +++ b/openstack/tests/unit/compute/v2/test_image.py @@ -9,7 +9,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import datetime import testtools @@ -71,9 +70,7 @@ class TestImage(testtools.TestCase): def test_make_detail(self): sot = image.ImageDetail(DETAIL_EXAMPLE) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(DETAIL_EXAMPLE['created'], sot.created_at) self.assertEqual(DETAIL_EXAMPLE['id'], sot.id) self.assertEqual(DETAIL_EXAMPLE['links'], sot.links) self.assertEqual(DETAIL_EXAMPLE['metadata'], sot.metadata) @@ -82,7 +79,5 @@ class TestImage(testtools.TestCase): self.assertEqual(DETAIL_EXAMPLE['name'], sot.name) self.assertEqual(DETAIL_EXAMPLE['progress'], sot.progress) self.assertEqual(DETAIL_EXAMPLE['status'], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(DETAIL_EXAMPLE['updated'], sot.updated_at) self.assertEqual(DETAIL_EXAMPLE['OS-EXT-IMG-SIZE:size'], sot.size) diff --git a/openstack/tests/unit/compute/v2/test_server.py b/openstack/tests/unit/compute/v2/test_server.py index 26e483048..1e663a46a 100644 --- a/openstack/tests/unit/compute/v2/test_server.py +++ b/openstack/tests/unit/compute/v2/test_server.py @@ -11,7 +11,6 @@ # under the License. import copy -import datetime import mock import testtools @@ -66,9 +65,7 @@ class TestServer(testtools.TestCase): self.assertEqual(EXAMPLE['accessIPv4'], sot.access_ipv4) self.assertEqual(EXAMPLE['accessIPv6'], sot.access_ipv6) self.assertEqual(EXAMPLE['addresses'], sot.addresses) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created'], sot.created_at) self.assertEqual(EXAMPLE['flavorRef'], sot.flavor_id) self.assertEqual(EXAMPLE['hostId'], sot.host_id) self.assertEqual(EXAMPLE['id'], sot.id) @@ -79,9 +76,7 @@ class TestServer(testtools.TestCase): self.assertEqual(EXAMPLE['progress'], sot.progress) self.assertEqual(EXAMPLE['tenant_id'], sot.project_id) self.assertEqual(EXAMPLE['status'], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) self.assertEqual(EXAMPLE['user_id'], sot.user_id) def test_detail(self): diff --git a/openstack/tests/unit/identity/v2/test_extension.py b/openstack/tests/unit/identity/v2/test_extension.py index 1eceba818..3c9471d5c 100644 --- a/openstack/tests/unit/identity/v2/test_extension.py +++ b/openstack/tests/unit/identity/v2/test_extension.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -49,9 +47,7 @@ class TestExtension(testtools.TestCase): self.assertEqual(EXAMPLE['links'], sot.links) self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['namespace'], sot.namespace) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) def test_list(self): resp = mock.Mock() diff --git a/openstack/tests/unit/identity/v3/test_trust.py b/openstack/tests/unit/identity/v3/test_trust.py index cafe41fb2..93d1d8992 100644 --- a/openstack/tests/unit/identity/v3/test_trust.py +++ b/openstack/tests/unit/identity/v3/test_trust.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.identity.v3 import trust @@ -46,9 +44,7 @@ class TestTrust(testtools.TestCase): sot = trust.Trust(EXAMPLE) self.assertEqual(EXAMPLE['project_id'], sot.project_id) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.expires_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['expires_at'], sot.expires_at) self.assertEqual(EXAMPLE['id'], sot.id) self.assertTrue(sot.is_impersonation) self.assertEqual(EXAMPLE['trustee_user_id'], sot.trustee_user_id) diff --git a/openstack/tests/unit/image/v1/test_image.py b/openstack/tests/unit/image/v1/test_image.py index 290046051..a9fb33257 100644 --- a/openstack/tests/unit/image/v1/test_image.py +++ b/openstack/tests/unit/image/v1/test_image.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.image.v1 import image @@ -69,9 +67,5 @@ class TestImage(testtools.TestCase): self.assertTrue(sot.is_protected) self.assertEqual(EXAMPLE['size'], sot.size) self.assertEqual(EXAMPLE['status'], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/image/v2/test_image.py b/openstack/tests/unit/image/v2/test_image.py index cd3fcd62e..a0b8d1d7c 100644 --- a/openstack/tests/unit/image/v2/test_image.py +++ b/openstack/tests/unit/image/v2/test_image.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -56,9 +54,7 @@ class TestImage(testtools.TestCase): self.assertEqual(IDENTIFIER, sot.id) self.assertEqual(EXAMPLE['checksum'], sot.checksum) self.assertEqual(EXAMPLE['container_format'], sot.container_format) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) self.assertEqual(EXAMPLE['disk_format'], sot.disk_format) self.assertEqual(EXAMPLE['min_disk'], sot.min_disk) self.assertEqual(EXAMPLE['name'], sot.name) @@ -67,9 +63,7 @@ class TestImage(testtools.TestCase): self.assertFalse(sot.is_protected) self.assertEqual(EXAMPLE['status'], sot.status) self.assertEqual(EXAMPLE['tags'], sot.tags) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) self.assertEqual(EXAMPLE['virtual_size'], sot.virtual_size) self.assertEqual(EXAMPLE['visibility'], sot.visibility) diff --git a/openstack/tests/unit/image/v2/test_member.py b/openstack/tests/unit/image/v2/test_member.py index 3fb2e457b..59dd884d7 100644 --- a/openstack/tests/unit/image/v2/test_member.py +++ b/openstack/tests/unit/image/v2/test_member.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.image.v2 import member @@ -43,11 +41,7 @@ class TestMember(testtools.TestCase): def test_make_it(self): sot = member.Member(EXAMPLE) self.assertEqual(IDENTIFIER, sot.id) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) self.assertEqual(EXAMPLE['image_id'], sot.image_id) self.assertEqual(EXAMPLE['status'], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/key_manager/v1/test_container.py b/openstack/tests/unit/key_manager/v1/test_container.py index 6aa7277ac..7ab60ca28 100644 --- a/openstack/tests/unit/key_manager/v1/test_container.py +++ b/openstack/tests/unit/key_manager/v1/test_container.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.key_manager.v1 import container @@ -45,14 +43,10 @@ class TestContainer(testtools.TestCase): def test_make_it(self): sot = container.Container(EXAMPLE) self.assertEqual(EXAMPLE['container_ref'], sot.container_ref) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created'], sot.created_at) self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['secret_refs'], sot.secret_refs) self.assertEqual(EXAMPLE['status'], sot.status) self.assertEqual(EXAMPLE['type'], sot.type) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) self.assertEqual(EXAMPLE['container_ref'], sot.id) diff --git a/openstack/tests/unit/key_manager/v1/test_secret.py b/openstack/tests/unit/key_manager/v1/test_secret.py index dd39cf91f..6b09aa2d5 100644 --- a/openstack/tests/unit/key_manager/v1/test_secret.py +++ b/openstack/tests/unit/key_manager/v1/test_secret.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.key_manager.v1 import secret @@ -49,14 +47,10 @@ class TestSecret(testtools.TestCase): self.assertEqual(EXAMPLE['algorithm'], sot.algorithm) self.assertEqual(EXAMPLE['bit_length'], sot.bit_length) self.assertEqual(EXAMPLE['content_types'], sot.content_types) - dt = datetime.datetime(2017, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.expires_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['expiration'], sot.expires_at) self.assertEqual(EXAMPLE['mode'], sot.mode) self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['secret_ref'], sot.secret_ref) self.assertEqual(EXAMPLE['status'], sot.status) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) self.assertEqual(EXAMPLE['secret_ref'], sot.id) diff --git a/openstack/tests/unit/metric/v1/test_resource.py b/openstack/tests/unit/metric/v1/test_resource.py index cd325d3ea..0a8617c0d 100644 --- a/openstack/tests/unit/metric/v1/test_resource.py +++ b/openstack/tests/unit/metric/v1/test_resource.py @@ -9,7 +9,6 @@ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. -import datetime import testtools @@ -53,7 +52,5 @@ class TestResource(testtools.TestCase): self.assertEqual(EXAMPLE_GENERIC['type'], r.type) self.assertEqual(EXAMPLE_GENERIC['id'], r.id) self.assertEqual(EXAMPLE_GENERIC['metrics'], r.metrics) - dt = datetime.datetime(2015, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, r.started_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE_GENERIC['started_at'], r.started_at) self.assertEqual(EXAMPLE_GENERIC['ended_at'], r.ended_at) diff --git a/openstack/tests/unit/network/v2/test_agent.py b/openstack/tests/unit/network/v2/test_agent.py index 28c582d75..ccefadd19 100644 --- a/openstack/tests/unit/network/v2/test_agent.py +++ b/openstack/tests/unit/network/v2/test_agent.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import agent @@ -57,17 +55,10 @@ class TestAgent(testtools.TestCase): sot.availability_zone) self.assertEqual(EXAMPLE['binary'], sot.binary) self.assertEqual(EXAMPLE['configurations'], sot.configuration) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) self.assertEqual(EXAMPLE['description'], sot.description) - dt = datetime.datetime(2016, 8, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, - sot.last_heartbeat_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['heartbeat_timestamp'], sot.last_heartbeat_at) self.assertEqual(EXAMPLE['host'], sot.host) self.assertEqual(EXAMPLE['id'], sot.id) - dt = datetime.datetime(2016, 7, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.started_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['started_at'], sot.started_at) self.assertEqual(EXAMPLE['topic'], sot.topic) diff --git a/openstack/tests/unit/network/v2/test_extension.py b/openstack/tests/unit/network/v2/test_extension.py index 053b4521e..e87293adb 100644 --- a/openstack/tests/unit/network/v2/test_extension.py +++ b/openstack/tests/unit/network/v2/test_extension.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import extension @@ -49,6 +47,4 @@ class TestExtension(testtools.TestCase): self.assertEqual(EXAMPLE['links'], sot.links) self.assertEqual(EXAMPLE['name'], sot.name) self.assertEqual(EXAMPLE['namespace'], sot.namespace) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['updated'], sot.updated_at) diff --git a/openstack/tests/unit/network/v2/test_network.py b/openstack/tests/unit/network/v2/test_network.py index 35480eec7..17692342c 100644 --- a/openstack/tests/unit/network/v2/test_network.py +++ b/openstack/tests/unit/network/v2/test_network.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import network @@ -85,10 +83,6 @@ class TestNetwork(testtools.TestCase): self.assertEqual(EXAMPLE['ipv6_address_scope'], sot.ipv6_address_scope_id) self.assertEqual(EXAMPLE['description'], sot.description) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 7, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) self.assertFalse(sot.is_default) diff --git a/openstack/tests/unit/network/v2/test_port.py b/openstack/tests/unit/network/v2/test_port.py index b33d48b6d..4c2774177 100644 --- a/openstack/tests/unit/network/v2/test_port.py +++ b/openstack/tests/unit/network/v2/test_port.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import port @@ -85,9 +83,5 @@ class TestPort(testtools.TestCase): self.assertEqual(EXAMPLE['dns_assignment'], sot.dns_assignment) self.assertEqual(EXAMPLE['dns_name'], sot.dns_name) self.assertEqual(EXAMPLE['description'], sot.description) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 7, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/network/v2/test_subnet.py b/openstack/tests/unit/network/v2/test_subnet.py index 56c60d856..407f158b1 100644 --- a/openstack/tests/unit/network/v2/test_subnet.py +++ b/openstack/tests/unit/network/v2/test_subnet.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import subnet @@ -69,9 +67,5 @@ class TestSubnet(testtools.TestCase): self.assertEqual(EXAMPLE['tenant_id'], sot.project_id) self.assertEqual(EXAMPLE['subnetpool_id'], sot.subnet_pool_id) self.assertEqual(EXAMPLE['description'], sot.description) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 7, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) diff --git a/openstack/tests/unit/network/v2/test_subnet_pool.py b/openstack/tests/unit/network/v2/test_subnet_pool.py index 1642f640d..cd1fd51d9 100644 --- a/openstack/tests/unit/network/v2/test_subnet_pool.py +++ b/openstack/tests/unit/network/v2/test_subnet_pool.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.network.v2 import subnet_pool @@ -67,10 +65,6 @@ class TestSubnetpool(testtools.TestCase): self.assertTrue(sot.is_shared) self.assertEqual(EXAMPLE['address_scope_id'], sot.address_scope_id) self.assertEqual(EXAMPLE['description'], sot.description) - dt = datetime.datetime(2016, 3, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) - dt = datetime.datetime(2016, 7, 9, 12, 14, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['created_at'], sot.created_at) + self.assertEqual(EXAMPLE['updated_at'], sot.updated_at) self.assertTrue(sot.is_default) diff --git a/openstack/tests/unit/object_store/v1/test_account.py b/openstack/tests/unit/object_store/v1/test_account.py index 21dfe0809..e0df5390a 100644 --- a/openstack/tests/unit/object_store/v1/test_account.py +++ b/openstack/tests/unit/object_store/v1/test_account.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from datetime import datetime -import iso8601 - import testtools from openstack.object_store.v1 import account @@ -56,6 +53,4 @@ class TestAccount(testtools.TestCase): sot.account_container_count) self.assertEqual(int(ACCOUNT_EXAMPLE['x-account-object-count']), sot.account_object_count) - self.assertEqual(datetime(2016, 1, 21, 21, 59, 15, 889370, - tzinfo=iso8601.UTC), - sot.timestamp) + self.assertEqual(ACCOUNT_EXAMPLE['x-timestamp'], sot.timestamp) diff --git a/openstack/tests/unit/object_store/v1/test_container.py b/openstack/tests/unit/object_store/v1/test_container.py index 4d51f0586..587c7e470 100644 --- a/openstack/tests/unit/object_store/v1/test_container.py +++ b/openstack/tests/unit/object_store/v1/test_container.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from datetime import datetime -import iso8601 - import mock import testtools @@ -116,9 +113,7 @@ class TestContainer(testtools.TestCase): sot.sync_key) self.assertEqual(HEAD_EXAMPLE['x-versions-location'], sot.versions_location) - self.assertEqual(datetime(2016, 1, 21, 22, 7, 35, 486720, - tzinfo=iso8601.UTC), - sot.timestamp) + self.assertEqual(HEAD_EXAMPLE['x-timestamp'], sot.timestamp) @mock.patch("openstack.resource.Resource.list") def test_list(self, fake_list): diff --git a/openstack/tests/unit/object_store/v1/test_obj.py b/openstack/tests/unit/object_store/v1/test_obj.py index 903138b6c..47a3b95ad 100644 --- a/openstack/tests/unit/object_store/v1/test_obj.py +++ b/openstack/tests/unit/object_store/v1/test_obj.py @@ -10,9 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from datetime import datetime -import iso8601 - import mock import testtools @@ -98,13 +95,9 @@ class TestObject(testtools.TestCase): self.assertEqual(headers['accept-ranges'], sot.accept_ranges) self.assertEqual(headers['last-modified'], sot.last_modified_at) self.assertEqual(headers['etag'], sot.etag) - self.assertEqual(datetime(2016, 1, 21, 22, 10, 56, 281120, - tzinfo=iso8601.UTC), - sot.timestamp) + self.assertEqual(headers['x-timestamp'], sot.timestamp) self.assertEqual(headers['content-type'], sot.content_type) - self.assertEqual(datetime(2016, 1, 21, 22, 43, 46, 167440, - tzinfo=iso8601.UTC), - sot.delete_at) + self.assertEqual(headers['x-delete-at'], sot.delete_at) def test_get(self): sot = obj.Object.new(container=CONTAINER_NAME, name=OBJECT_NAME) diff --git a/openstack/tests/unit/orchestration/v1/test_resource.py b/openstack/tests/unit/orchestration/v1/test_resource.py index 86d0afbcf..9a7371bbe 100644 --- a/openstack/tests/unit/orchestration/v1/test_resource.py +++ b/openstack/tests/unit/orchestration/v1/test_resource.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.orchestration.v1 import resource @@ -64,6 +62,4 @@ class TestResource(testtools.TestCase): self.assertEqual(FAKE['resource_type'], sot.resource_type) self.assertEqual(FAKE['status'], sot.status) self.assertEqual(FAKE['status_reason'], sot.status_reason) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['updated_time'], sot.updated_at) diff --git a/openstack/tests/unit/orchestration/v1/test_stack.py b/openstack/tests/unit/orchestration/v1/test_stack.py index 5e99bffac..e0e82bef6 100644 --- a/openstack/tests/unit/orchestration/v1/test_stack.py +++ b/openstack/tests/unit/orchestration/v1/test_stack.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import six import testtools @@ -69,9 +67,7 @@ class TestStack(testtools.TestCase): def test_make_it(self): sot = stack.Stack(FAKE) self.assertEqual(FAKE['capabilities'], sot.capabilities) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.created_at.replace(tzinfo=None)) + self.assertEqual(FAKE['creation_time'], sot.created_at) self.assertEqual(FAKE['description'], sot.description) self.assertTrue(sot.is_rollback_disabled) self.assertEqual(FAKE['id'], sot.id) @@ -89,9 +85,7 @@ class TestStack(testtools.TestCase): self.assertEqual(FAKE['template_url'], sot.template_url) self.assertEqual(FAKE['timeout_mins'], sot.timeout_mins) - dt = datetime.datetime(2015, 3, 9, 12, 30, 00, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(FAKE['updated_time'], sot.updated_at) def test_create(self): resp = mock.Mock() diff --git a/openstack/tests/unit/telemetry/v2/test_alarm.py b/openstack/tests/unit/telemetry/v2/test_alarm.py index 5b81111c6..08a92b98e 100644 --- a/openstack/tests/unit/telemetry/v2/test_alarm.py +++ b/openstack/tests/unit/telemetry/v2/test_alarm.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -84,12 +82,8 @@ class TestAlarm(testtools.TestCase): self.assertFalse(sot.is_repeat_actions) self.assertEqual(EXAMPLE['severity'], sot.severity) self.assertEqual(EXAMPLE['state'], sot.state) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.state_changed_at.replace(tzinfo=None)) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.updated_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['state_timestamp'], sot.state_changed_at) + self.assertEqual(EXAMPLE['timestamp'], sot.updated_at) self.assertEqual(EXAMPLE['threshold_rule'], sot.threshold_rule) self.assertEqual(EXAMPLE['time_constraints'], sot.time_constraints) self.assertEqual(EXAMPLE['type'], sot.type) diff --git a/openstack/tests/unit/telemetry/v2/test_alarm_change.py b/openstack/tests/unit/telemetry/v2/test_alarm_change.py index 6f7a80431..94c9f3b07 100644 --- a/openstack/tests/unit/telemetry/v2/test_alarm_change.py +++ b/openstack/tests/unit/telemetry/v2/test_alarm_change.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -52,9 +50,7 @@ class TestAlarmChange(testtools.TestCase): self.assertEqual(IDENTIFIER, sot.event_id) self.assertEqual(EXAMPLE['on_behalf_of'], sot.on_behalf_of_id) self.assertEqual(EXAMPLE['project_id'], sot.project_id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.triggered_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['timestamp'], sot.triggered_at) self.assertEqual(EXAMPLE['type'], sot.type) self.assertEqual(EXAMPLE['user_id'], sot.user_id) @@ -73,8 +69,6 @@ class TestAlarmChange(testtools.TestCase): self.assertEqual(IDENTIFIER, first.event_id) self.assertEqual(EXAMPLE['on_behalf_of'], first.on_behalf_of_id) self.assertEqual(EXAMPLE['project_id'], first.project_id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, first.triggered_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['timestamp'], first.triggered_at) self.assertEqual(EXAMPLE['type'], first.type) self.assertEqual(EXAMPLE['user_id'], first.user_id) diff --git a/openstack/tests/unit/telemetry/v2/test_resource.py b/openstack/tests/unit/telemetry/v2/test_resource.py index 522d62ff1..6c574dea6 100644 --- a/openstack/tests/unit/telemetry/v2/test_resource.py +++ b/openstack/tests/unit/telemetry/v2/test_resource.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import testtools from openstack.telemetry.v2 import resource @@ -48,12 +46,10 @@ class TestResource(testtools.TestCase): def test_make_it(self): sot = resource.Resource(EXAMPLE) self.assertEqual(EXAMPLE['resource_id'], sot.id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.first_sample_at.replace(tzinfo=None)) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.last_sample_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['first_sample_timestamp'], + sot.first_sample_at) + self.assertEqual(EXAMPLE['last_sample_timestamp'], + sot.last_sample_at) self.assertEqual(EXAMPLE['links'], sot.links) self.assertEqual(EXAMPLE['metadata'], sot.metadata) self.assertEqual(EXAMPLE['project_id'], sot.project_id) diff --git a/openstack/tests/unit/telemetry/v2/test_sample.py b/openstack/tests/unit/telemetry/v2/test_sample.py index c830e7a84..07b06de4f 100644 --- a/openstack/tests/unit/telemetry/v2/test_sample.py +++ b/openstack/tests/unit/telemetry/v2/test_sample.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -68,14 +66,10 @@ class TestSample(testtools.TestCase): self.assertEqual(SAMPLE['metadata'], sot.metadata) self.assertEqual(SAMPLE['counter_name'], sot.counter_name) self.assertEqual(SAMPLE['project_id'], sot.project_id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.recorded_at.replace(tzinfo=None)) + self.assertEqual(SAMPLE['recorded_at'], sot.recorded_at) self.assertEqual(SAMPLE['resource_id'], sot.resource_id) self.assertEqual(SAMPLE['source'], sot.source) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.generated_at.replace(tzinfo=None)) + self.assertEqual(SAMPLE['timestamp'], sot.generated_at) self.assertEqual(SAMPLE['type'], sot.type) self.assertEqual(SAMPLE['unit'], sot.unit) self.assertEqual(SAMPLE['user_id'], sot.user_id) @@ -89,15 +83,11 @@ class TestSample(testtools.TestCase): self.assertEqual(OLD_SAMPLE['counter_unit'], sot.unit) self.assertEqual(OLD_SAMPLE['counter_volume'], sot.volume) self.assertEqual(OLD_SAMPLE['project_id'], sot.project_id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.recorded_at.replace(tzinfo=None)) + self.assertEqual(OLD_SAMPLE['recorded_at'], sot.recorded_at) self.assertEqual(OLD_SAMPLE['resource_id'], sot.resource_id) self.assertEqual(OLD_SAMPLE['resource_metadata'], sot.metadata) self.assertEqual(OLD_SAMPLE['source'], sot.source) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, sot.generated_at.replace(tzinfo=None)) + self.assertEqual(OLD_SAMPLE['timestamp'], sot.generated_at) self.assertEqual(OLD_SAMPLE['user_id'], sot.user_id) def test_list(self): @@ -113,14 +103,10 @@ class TestSample(testtools.TestCase): self.assertEqual(SAMPLE['metadata'], first.metadata) self.assertEqual(SAMPLE['counter_name'], first.counter_name) self.assertEqual(SAMPLE['project_id'], first.project_id) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, first.recorded_at.replace(tzinfo=None)) + self.assertEqual(SAMPLE['recorded_at'], first.recorded_at) self.assertEqual(SAMPLE['resource_id'], first.resource_id) self.assertEqual(SAMPLE['source'], first.source) - dt = datetime.datetime(2015, 3, 9, 12, 15, 57, 233772).replace( - tzinfo=None) - self.assertEqual(dt, first.generated_at.replace(tzinfo=None)) + self.assertEqual(SAMPLE['timestamp'], first.generated_at) self.assertEqual(SAMPLE['type'], first.type) self.assertEqual(SAMPLE['unit'], first.unit) self.assertEqual(SAMPLE['user_id'], first.user_id) diff --git a/openstack/tests/unit/telemetry/v2/test_statistics.py b/openstack/tests/unit/telemetry/v2/test_statistics.py index 2f8683473..2717c022b 100644 --- a/openstack/tests/unit/telemetry/v2/test_statistics.py +++ b/openstack/tests/unit/telemetry/v2/test_statistics.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -import datetime - import mock import testtools @@ -56,22 +54,14 @@ class TestStatistics(testtools.TestCase): self.assertEqual(EXAMPLE['avg'], sot.avg) self.assertEqual(EXAMPLE['count'], sot.count) self.assertEqual(EXAMPLE['duration'], sot.duration) - dt = datetime.datetime(2015, 3, 9, 12, 45, 00, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.duration_end_at.replace(tzinfo=None)) - dt = datetime.datetime(2015, 3, 9, 12, 15, 00, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.duration_start_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['duration_end'], sot.duration_end_at) + self.assertEqual(EXAMPLE['duration_start'], sot.duration_start_at) self.assertEqual(EXAMPLE['groupby'], sot.group_by) self.assertEqual(EXAMPLE['max'], sot.max) self.assertEqual(EXAMPLE['min'], sot.min) self.assertEqual(EXAMPLE['period'], sot.period) - dt = datetime.datetime(2015, 3, 9, 12, 45, 00, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.period_end_at.replace(tzinfo=None)) - dt = datetime.datetime(2015, 3, 9, 12, 15, 00, 000000).replace( - tzinfo=None) - self.assertEqual(dt, sot.period_start_at.replace(tzinfo=None)) + self.assertEqual(EXAMPLE['period_end'], sot.period_end_at) + self.assertEqual(EXAMPLE['period_start'], sot.period_start_at) self.assertEqual(EXAMPLE['sum'], sot.sum) self.assertEqual(EXAMPLE['unit'], sot.unit) diff --git a/openstack/tests/unit/test_format.py b/openstack/tests/unit/test_format.py index c3d8f2ed4..f78454dd5 100644 --- a/openstack/tests/unit/test_format.py +++ b/openstack/tests/unit/test_format.py @@ -10,8 +10,6 @@ # License for the specific language governing permissions and limitations # under the License. -from datetime import datetime -from iso8601 import iso8601 import testtools from openstack import format @@ -38,69 +36,3 @@ class TestBoolStrFormatter(testtools.TestCase): self.assertRaises(ValueError, format.BoolStr.serialize, None) self.assertRaises(ValueError, format.BoolStr.serialize, '') self.assertRaises(ValueError, format.BoolStr.serialize, 'True') - - -class TestISO8601Formatter(testtools.TestCase): - - def test_deserialize(self): - self.assertEqual( - format.ISO8601.deserialize("2015-06-27T05:09:43"), - datetime(2015, 6, 27, 5, 9, 43, tzinfo=iso8601.UTC)) - self.assertEqual( - format.ISO8601.deserialize("2012-03-28T21:31:02Z"), - datetime(2012, 3, 28, 21, 31, 2, tzinfo=iso8601.UTC)) - self.assertEqual( - format.ISO8601.deserialize("2013-09-23T13:53:12.774549"), - datetime(2013, 9, 23, 13, 53, 12, 774549, tzinfo=iso8601.UTC)) - self.assertEqual( - format.ISO8601.deserialize("2015-08-27T09:49:58-05:00"), - datetime(2015, 8, 27, 9, 49, 58, - tzinfo=iso8601.FixedOffset(-5, 0, "-05:00"))) - - def test_serialize(self): - self.assertEqual( - format.ISO8601.serialize( - datetime(2015, 6, 27, 5, 9, 43, tzinfo=iso8601.UTC)), - "2015-06-27T05:09:43+00:00") - self.assertEqual( - format.ISO8601.serialize( - datetime(2012, 3, 28, 21, 31, 2, tzinfo=iso8601.UTC)), - "2012-03-28T21:31:02+00:00") - self.assertEqual( - format.ISO8601.serialize( - datetime(2013, 9, 23, 13, 53, 12, 774549, tzinfo=iso8601.UTC)), - "2013-09-23T13:53:12.774549+00:00") - self.assertEqual( - format.ISO8601.serialize( - datetime(2015, 8, 27, 9, 49, 58, - tzinfo=iso8601.FixedOffset(-5, 0, "-05:00"))), - "2015-08-27T09:49:58-05:00") - - -class TestUNIXEpochFormatter(testtools.TestCase): - - def test_deserialize(self): - self.assertEqual(format.UNIXEpoch.deserialize(1453412616.02406), - datetime(2016, 1, 21, 21, 43, 36, 24060, - tzinfo=iso8601.UTC)) - self.assertEqual(format.UNIXEpoch.deserialize(1389453423.35964), - datetime(2014, 1, 11, 15, 17, 3, 359640, - tzinfo=iso8601.UTC)) - self.assertEqual(format.UNIXEpoch.deserialize(1389453423), - datetime(2014, 1, 11, 15, 17, 3, tzinfo=iso8601.UTC)) - self.assertRaises(ValueError, format.UNIXEpoch.deserialize, "lol") - - def test_serialize(self): - self.assertEqual( - format.UNIXEpoch.serialize( - datetime(2016, 1, 21, 21, 43, 36, 24060, tzinfo=iso8601.UTC)), - 1453412616.02406) - self.assertEqual( - format.UNIXEpoch.serialize( - datetime(2014, 1, 11, 15, 17, 3, 359640, tzinfo=iso8601.UTC)), - 1389453423.35964) - self.assertEqual( - format.UNIXEpoch.serialize( - datetime(2014, 1, 11, 15, 17, 3, tzinfo=iso8601.UTC)), - 1389453423) - self.assertRaises(ValueError, format.UNIXEpoch.serialize, "lol") diff --git a/requirements.txt b/requirements.txt index 4e9d27914..0cd25684d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,7 +4,5 @@ pbr>=1.6 # Apache-2.0 six>=1.9.0 # MIT stevedore>=1.10.0 # Apache-2.0 -oslo.utils>=3.11.0 # Apache-2.0 os-client-config>=1.13.1 # Apache-2.0 keystoneauth1>=2.1.0 # Apache-2.0 -iso8601>=0.1.11 # MIT