@@ -96,6 +96,11 @@ def md5sum_file(path):
96
96
h .update (b )
97
97
return h .hexdigest ()
98
98
99
+ class RpmListType (IntEnum ):
100
+ COMMITMETA = 1
101
+ EXTENSIONS = 2
102
+ HOST = 3
103
+ META = 4
99
104
100
105
class Build (_Build ):
101
106
"""
@@ -113,12 +118,27 @@ class Build(_Build):
113
118
"require_commit" : True ,
114
119
"require_cosa" : True ,
115
120
})
116
- _Build .__init__ (self , ** kwargs )
117
- self .version , self .release = self .build_id .split ('-' )
118
- self .name = f"{ self .build_name } -{ self .basearch } "
119
- self .source = self .get_meta_key (
120
- "meta" , self .ckey ("container-config-git" ))
121
- self .host_rpms = self .get_rpm_list (RpmListType .HOST )
121
+ if kwargs .get ('node_image' ) is True :
122
+ self .version = kwargs ['build' ].replace ("-" ,"." )
123
+ self .release = "0"
124
+ self ._build_dir = self .buildroot
125
+ self ._basearch = kwargs ['arch' ]
126
+ self .name = f"rhcos-{ self .basearch } "
127
+ self .source = "https://github.com/openshift/os"
128
+ self .meta_file_path = f"{ kwargs ['buildroot' ]} /meta.json"
129
+ self ._found_files = {}
130
+ self ._build_json = {}
131
+ with open (self .meta_file_path ) as f :
132
+ self ._build_json ['meta' ] = json .load (f )
133
+ # We use podman build, there is no need for host rpms
134
+ self .host_rpms = ""
135
+ else :
136
+ _Build .__init__ (self , ** kwargs )
137
+ self .version , self .release = self .build_id .split ('-' )
138
+ self .name = f"{ self .build_name } -{ self .basearch } "
139
+ self .source = self .get_meta_key (
140
+ "meta" , self .ckey ("container-config-git" ))
141
+ self .host_rpms = self .get_rpm_list (RpmListType .HOST )
122
142
def __del__ (self ):
123
143
try :
124
144
shutil .rmtree (self ._tmpdir )
@@ -388,11 +408,6 @@ def kinit(keytab, principle):
388
408
except Exception as err :
389
409
raise Exception ("failed to auth: " , err )
390
410
391
- class RpmListType (IntEnum ):
392
- COMMITMETA = 1
393
- EXTENSIONS = 2
394
- HOST = 3
395
- META = 4
396
411
397
412
class _KojiBase ():
398
413
"""
@@ -561,7 +576,11 @@ class Reserve(_KojiBase):
561
576
'token' : koji_reservation ['token' ],
562
577
'release' : build .release
563
578
}
564
- build .meta_write ()
579
+ if hasattr (build , 'meta_file_path' ) and build .meta_file_path :
580
+ with open (build .meta_file_path , "w" ) as f :
581
+ json .dump (build .meta , f , indent = 2 )
582
+ else :
583
+ build .meta_write ()
565
584
566
585
567
586
class Upload (_KojiBase ):
@@ -745,9 +764,16 @@ class Upload(_KojiBase):
745
764
'public-url' : self ._s3_url
746
765
}
747
766
self .build .meta_write ()
767
+ if 'origin' in self .build .source :
768
+ source = self .build .source ['origin' ]
769
+ commit = self .build .source ['commit' ]
770
+ meta = False
771
+ else :
772
+ source = self .build .source
773
+ commit = ""
774
+ meta = True
748
775
749
-
750
- log .debug (f"Preparing manifest for { (len (self .image_files ))} files" )
776
+ log .debug (f"Preparing manifest for { (len (self .get_image_files (meta = meta )))} files" )
751
777
# The koji/brew NVR is constructed like so:
752
778
# Name = "rhcos-$arch", like `rhcos-x86_64`
753
779
# Version = Everything before `-` in RHCOS version
@@ -773,7 +799,7 @@ class Upload(_KojiBase):
773
799
"name" : self .build .name ,
774
800
"release" : self .build .release ,
775
801
"owner" : self ._owner ,
776
- "source" : self . build . source [ 'origin' ] ,
802
+ "source" : source ,
777
803
"start_time" : stamp ,
778
804
"version" : self .build .version
779
805
},
@@ -785,7 +811,7 @@ class Upload(_KojiBase):
785
811
},
786
812
"content_generator" : {
787
813
"name" : "coreos-assembler" ,
788
- "version" : self . build . source [ ' commit' ]
814
+ "version" : commit
789
815
},
790
816
"container" : {
791
817
"type" : "docker" ,
@@ -803,11 +829,11 @@ class Upload(_KojiBase):
803
829
"tools" : [
804
830
{
805
831
"name" : "coreos-assembler" ,
806
- "version" : self . build . source [ ' commit' ]
832
+ "version" : commit
807
833
}
808
834
]
809
835
}],
810
- "output" : self .image_files
836
+ "output" : self .get_image_files ( meta = meta )
811
837
}
812
838
813
839
return self ._manifest
@@ -960,7 +986,9 @@ Environment variables are supported:
960
986
help = "Do not upload, just parse the build" )
961
987
parent_parser .add_argument ("--arch" , default = get_basearch (),
962
988
help = "Set the build architecture" )
963
-
989
+ # Node image sytle update
990
+ parent_parser .add_argument ("--node-image" , action = 'store_true' , required = False ,
991
+ help = "Brew uploads for node image sytle" )
964
992
# Koji specific options
965
993
parent_parser .add_argument ("--no-auth" , action = 'store_false' , dest = "auth" ,
966
994
help = "Skip Kerberos auth, use if already auth'd" )
@@ -1043,7 +1071,8 @@ Environment variables are supported:
1043
1071
1044
1072
args = parser .parse_args (namespace = args )
1045
1073
1046
- build = Build (buildroot = args .buildroot , build = args .build , arch = args .arch )
1074
+ build = Build (buildroot = args .buildroot , build = args .build , arch = args .arch ,
1075
+ node_image = args .node_image )
1047
1076
1048
1077
if args .auth :
1049
1078
kinit (args .keytab , args .owner )
0 commit comments