55import jsonschema
66
77from pubtools .pulplib ._impl import compat_attr as attr
8+ from .attr import pulp_attrib
9+ from .convert import read_timestamp , write_timestamp
810from ..schema import load_schema
911from .frozenlist import FrozenList
1012from .common import InvalidDataException
1719HOSTNAME = os .environ .get ("HOSTNAME" )
1820
1921
20- def iso_time_now ():
21- return datetime .datetime .utcnow ().strftime ("%Y-%m-%dT%H:%M:%SZ" )
22-
23-
2422@attr .s (kw_only = True , frozen = True )
2523class MaintenanceEntry (object ):
2624 """Details about the maintenance status of a specific repository.
2725
2826 .. versionadded:: 1.4.0
2927 """
3028
31- repo_id = attr . ib (type = str )
29+ repo_id = pulp_attrib (type = str )
3230 """ID of repository in maintenance.
3331
3432 Note: there is no guarantee that a repository of this ID currently exists
3533 in the Pulp server."""
36- message = attr . ib (default = None , type = str )
34+ message = pulp_attrib (default = None , type = str )
3735 """Why this repository is in maintenance."""
38- owner = attr . ib (default = None , type = str )
36+ owner = pulp_attrib (default = None , type = str )
3937 """Who set this repository in maintenance mode."""
40- started = attr . ib (default = None , type = datetime .datetime )
38+ started = pulp_attrib (default = None , type = datetime .datetime )
4139 """:class:`~datetime.datetime` in UTC at when the maintenance started."""
4240
4341
@@ -58,14 +56,16 @@ class MaintenanceReport(object):
5856
5957 _SCHEMA = load_schema ("maintenance" )
6058
61- last_updated = attr . ib (default = None , type = datetime .datetime )
59+ last_updated = pulp_attrib (default = None , type = datetime .datetime )
6260 """:class:`~datetime.datetime` in UTC when this report was last updated,
6361 if it's the first time the report is created, current time is used."""
6462
65- last_updated_by = attr . ib (default = None , type = str )
63+ last_updated_by = pulp_attrib (default = None , type = str )
6664 """Person/party who updated the report last time."""
6765
68- entries = attr .ib (default = attr .Factory (FrozenList ), type = list , converter = FrozenList )
66+ entries = pulp_attrib (
67+ default = attr .Factory (FrozenList ), type = list , converter = FrozenList
68+ )
6969 """A list of :class:`MaintenanceEntry` objects, indicating
7070 which repositories are in maintenance mode and details.
7171 If empty, then it means no repositories are in maintenance mode.
@@ -101,10 +101,17 @@ def _from_data(cls, data):
101101
102102 entries = []
103103 for repo_id , details in data ["repos" ].items ():
104- entries .append (MaintenanceEntry (repo_id = repo_id , ** details ))
104+ entries .append (
105+ MaintenanceEntry (
106+ repo_id = repo_id ,
107+ message = details ["message" ],
108+ owner = details ["owner" ],
109+ started = read_timestamp (details ["started" ]),
110+ )
111+ )
105112
106113 maintenance = cls (
107- last_updated = data ["last_updated" ],
114+ last_updated = read_timestamp ( data ["last_updated" ]) ,
108115 last_updated_by = data ["last_updated_by" ],
109116 entries = entries ,
110117 )
@@ -114,7 +121,7 @@ def _from_data(cls, data):
114121 def _export_dict (self ):
115122 """export a raw dictionary of maintenance report"""
116123 report = {
117- "last_updated" : self .last_updated ,
124+ "last_updated" : write_timestamp ( self .last_updated ) ,
118125 "last_updated_by" : self .last_updated_by ,
119126 "repos" : {},
120127 }
@@ -125,7 +132,7 @@ def _export_dict(self):
125132 entry .repo_id : {
126133 "message" : entry .message ,
127134 "owner" : entry .owner ,
128- "started" : entry .started ,
135+ "started" : write_timestamp ( entry .started ) ,
129136 }
130137 }
131138 )
@@ -162,7 +169,10 @@ def add(self, repo_ids, **kwargs):
162169 for repo in repo_ids :
163170 to_add .append (
164171 MaintenanceEntry (
165- repo_id = repo , owner = owner , message = message , started = iso_time_now ()
172+ repo_id = repo ,
173+ owner = owner ,
174+ message = message ,
175+ started = datetime .datetime .utcnow (),
166176 )
167177 )
168178 entries = list (self .entries )
@@ -181,7 +191,7 @@ def add(self, repo_ids, **kwargs):
181191 self ,
182192 entries = filtered_entries ,
183193 last_updated_by = owner ,
184- last_updated = iso_time_now (),
194+ last_updated = datetime . datetime . utcnow (),
185195 )
186196
187197 def remove (self , repo_ids , ** kwargs ):
0 commit comments