@@ -96,6 +96,11 @@ def md5sum_file(path):
9696 h .update (b )
9797 return h .hexdigest ()
9898
99+ class RpmListType (IntEnum ):
100+ COMMITMETA = 1
101+ EXTENSIONS = 2
102+ HOST = 3
103+ META = 4
99104
100105class Build (_Build ):
101106 """
@@ -113,12 +118,27 @@ class Build(_Build):
113118 "require_commit" : True ,
114119 "require_cosa" : True ,
115120 })
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 )
122142 def __del__ (self ):
123143 try :
124144 shutil .rmtree (self ._tmpdir )
@@ -388,11 +408,6 @@ def kinit(keytab, principle):
388408 except Exception as err :
389409 raise Exception ("failed to auth: " , err )
390410
391- class RpmListType (IntEnum ):
392- COMMITMETA = 1
393- EXTENSIONS = 2
394- HOST = 3
395- META = 4
396411
397412class _KojiBase ():
398413 """
@@ -561,7 +576,11 @@ class Reserve(_KojiBase):
561576 'token' : koji_reservation ['token' ],
562577 'release' : build .release
563578 }
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 ()
565584
566585
567586class Upload (_KojiBase ):
@@ -745,9 +764,16 @@ class Upload(_KojiBase):
745764 'public-url' : self ._s3_url
746765 }
747766 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
748775
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" )
751777 # The koji/brew NVR is constructed like so:
752778 # Name = "rhcos-$arch", like `rhcos-x86_64`
753779 # Version = Everything before `-` in RHCOS version
@@ -773,7 +799,7 @@ class Upload(_KojiBase):
773799 "name" : self .build .name ,
774800 "release" : self .build .release ,
775801 "owner" : self ._owner ,
776- "source" : self . build . source [ 'origin' ] ,
802+ "source" : source ,
777803 "start_time" : stamp ,
778804 "version" : self .build .version
779805 },
@@ -785,7 +811,7 @@ class Upload(_KojiBase):
785811 },
786812 "content_generator" : {
787813 "name" : "coreos-assembler" ,
788- "version" : self . build . source [ ' commit' ]
814+ "version" : commit
789815 },
790816 "container" : {
791817 "type" : "docker" ,
@@ -803,11 +829,11 @@ class Upload(_KojiBase):
803829 "tools" : [
804830 {
805831 "name" : "coreos-assembler" ,
806- "version" : self . build . source [ ' commit' ]
832+ "version" : commit
807833 }
808834 ]
809835 }],
810- "output" : self .image_files
836+ "output" : self .get_image_files ( meta = meta )
811837 }
812838
813839 return self ._manifest
@@ -960,7 +986,9 @@ Environment variables are supported:
960986 help = "Do not upload, just parse the build" )
961987 parent_parser .add_argument ("--arch" , default = get_basearch (),
962988 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" )
964992 # Koji specific options
965993 parent_parser .add_argument ("--no-auth" , action = 'store_false' , dest = "auth" ,
966994 help = "Skip Kerberos auth, use if already auth'd" )
@@ -1043,7 +1071,8 @@ Environment variables are supported:
10431071
10441072 args = parser .parse_args (namespace = args )
10451073
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 )
10471076
10481077 if args .auth :
10491078 kinit (args .keytab , args .owner )
0 commit comments