2
2
import os
3
3
import yaml
4
4
5
+ from datetime import datetime , timezone
6
+
5
7
from .staged_base import StagedBaseMixin , handles_type
6
- from ...model import VHDPushItem , AmiPushItem , AmiRelease , BootMode , KojiBuildInfo
8
+ from ...model import VHDPushItem , VMIRelease , AmiPushItem , AmiRelease , BootMode , KojiBuildInfo
7
9
8
10
LOG = logging .getLogger ("pushsource" )
9
11
10
12
11
13
class StagedCloudMixin (StagedBaseMixin ):
14
+ def __get_product_name (self , base_name ):
15
+ splitted_name = base_name .split ("-" )
16
+ if len (splitted_name ) > 1 :
17
+ product = "-" .join (splitted_name [:- 1 ])
18
+ else :
19
+ product = splitted_name [0 ]
20
+ return product
21
+
22
+
12
23
def __build_ami_push_item (self , resources , origin , image , dest ):
13
24
build_resources = resources .get ("build" )
14
25
release_resources = resources .get ("release" ) or {}
@@ -38,24 +49,23 @@ def __build_ami_push_item(self, resources, origin, image, dest):
38
49
}
39
50
)
40
51
41
- release_required = ["product" , "date" , "arch" , "respin" ]
42
- if all (x in release_resources .keys () for x in release_required ):
43
- release_attrs = [
44
- "product" ,
45
- "date" ,
46
- "arch" ,
47
- "respin" ,
48
- "version" ,
49
- "base_product" ,
50
- "base_version" ,
51
- "variant" ,
52
- "type" ,
53
- ]
54
- release_kwargs = {}
55
- for key in release_attrs :
56
- release_kwargs [key ] = release_resources .get (key )
57
-
58
- image_kwargs ["release" ] = AmiRelease (** release_kwargs )
52
+ release_kwargs = {
53
+ "product" : self .__get_product_name (build_resources .get ("name" )),
54
+ "date" : datetime .now (timezone .utc ).strftime ("%Y%m%d" ),
55
+ "arch" : image .get ("architecture" ),
56
+ "respin" : int (build_resources .get ("respin" )) or 0
57
+ }
58
+ release_attrs = [
59
+ "version" ,
60
+ "base_product" ,
61
+ "base_version" ,
62
+ "variant" ,
63
+ "type" ,
64
+ ]
65
+ for key in release_attrs :
66
+ release_kwargs [key ] = release_resources .get (key )
67
+
68
+ image_kwargs ["release" ] = AmiRelease (** release_kwargs )
59
69
60
70
image_attrs = [
61
71
"type" ,
@@ -95,6 +105,14 @@ def __build_azure_push_item(self, resources, origin, image, dest):
95
105
version = build_resources .get ("version" ),
96
106
release = build_resources .get ("respin" ),
97
107
)
108
+
109
+ release_kwargs = {
110
+ "product" : self .__get_product_name (build_resources .get ("name" )),
111
+ "date" : datetime .now (timezone .utc ).strftime ("%Y%m%d" ),
112
+ "arch" : image .get ("architecture" ),
113
+ "respin" : int (build_resources .get ("respin" )) or 0
114
+ }
115
+
98
116
image_kwargs = {
99
117
"name" : name ,
100
118
"src" : src ,
@@ -103,6 +121,7 @@ def __build_azure_push_item(self, resources, origin, image, dest):
103
121
"origin" : origin ,
104
122
"dest" : [dest ],
105
123
"sha256sum" : image .get ("sha256sum" ),
124
+ "release" : VMIRelease (** release_kwargs )
106
125
}
107
126
return VHDPushItem (** image_kwargs )
108
127
@@ -127,14 +146,10 @@ def __cloud_push_item(self, leafdir, _, entry):
127
146
return
128
147
if image_type == "AMI" :
129
148
out .append (
130
- self .__build_ami_push_item (
131
- raw , entry .path , image , leafdir .dest
132
- )
149
+ self .__build_ami_push_item (raw , entry .path , image , leafdir .dest )
133
150
)
134
151
elif image_type == "VHD" :
135
152
out .append (
136
- self .__build_azure_push_item (
137
- raw , entry .path , image , leafdir .dest
138
- )
153
+ self .__build_azure_push_item (raw , entry .path , image , leafdir .dest )
139
154
)
140
155
return out
0 commit comments