@@ -112,12 +112,27 @@ class Build(_Build):
112112 "require_commit" : True ,
113113 "require_cosa" : True ,
114114 })
115- _Build .__init__ (self , ** kwargs )
116- self .version , self .release = self .build_id .split ('-' )
117- self .name = f"{ self .build_name } -{ self .basearch } "
118- self .source = self .get_meta_key (
119- "meta" , self .ckey ("container-config-git" ))
120- self .host_rpms = self .get_rpm_list (host = True )
115+ if kwargs .get ('node_image' ) is True :
116+ self .version = kwargs ['build' ].replace ("-" ,"." )
117+ self .release = "0"
118+ self ._build_dir = self .buildroot
119+ self ._basearch = kwargs ['arch' ]
120+ self .name = f"rhcos-{ self .basearch } "
121+ self .source = "https://github.com/openshift/os"
122+ self .meta_file_path = f"{ kwargs ['buildroot' ]} /meta.json"
123+ self ._found_files = {}
124+ self ._build_json = {}
125+ with open (self .meta_file_path ) as f :
126+ self ._build_json ['meta' ] = json .load (f )
127+ # We use podman build, there is no need for host rpms
128+ self .host_rpms = ""
129+ else :
130+ _Build .__init__ (self , ** kwargs )
131+ self .version , self .release = self .build_id .split ('-' )
132+ self .name = f"{ self .build_name } -{ self .basearch } "
133+ self .source = self .get_meta_key (
134+ "meta" , self .ckey ("container-config-git" ))
135+ self .host_rpms = self .get_rpm_list (host = True )
121136 def __del__ (self ):
122137 try :
123138 shutil .rmtree (self ._tmpdir )
@@ -555,7 +570,11 @@ class Reserve(_KojiBase):
555570 'token' : koji_reservation ['token' ],
556571 'release' : build .release
557572 }
558- build .meta_write ()
573+ if hasattr (build , 'meta_file_path' ) and build .meta_file_path :
574+ with open (build .meta_file_path , "w" ) as f :
575+ json .dump (build .meta , f , indent = 2 )
576+ else :
577+ build .meta_write ()
559578
560579
561580class Upload (_KojiBase ):
@@ -739,9 +758,16 @@ class Upload(_KojiBase):
739758 'public-url' : self ._s3_url
740759 }
741760 self .build .meta_write ()
761+ if 'origin' in self .build .source :
762+ source = self .build .source ['origin' ]
763+ commit = self .build .source ['commit' ]
764+ meta = False
765+ else :
766+ source = self .build .source
767+ commit = ""
768+ meta = True
742769
743-
744- log .debug (f"Preparing manifest for { (len (self .image_files ))} files" )
770+ log .debug (f"Preparing manifest for { (len (self .get_image_files (meta = meta )))} files" )
745771 # The koji/brew NVR is constructed like so:
746772 # Name = "rhcos-$arch", like `rhcos-x86_64`
747773 # Version = Everything before `-` in RHCOS version
@@ -767,7 +793,7 @@ class Upload(_KojiBase):
767793 "name" : self .build .name ,
768794 "release" : self .build .release ,
769795 "owner" : self ._owner ,
770- "source" : self . build . source [ 'origin' ] ,
796+ "source" : source ,
771797 "start_time" : stamp ,
772798 "version" : self .build .version
773799 },
@@ -779,7 +805,7 @@ class Upload(_KojiBase):
779805 },
780806 "content_generator" : {
781807 "name" : "coreos-assembler" ,
782- "version" : self . build . source [ ' commit' ]
808+ "version" : commit
783809 },
784810 "container" : {
785811 "type" : "docker" ,
@@ -797,11 +823,11 @@ class Upload(_KojiBase):
797823 "tools" : [
798824 {
799825 "name" : "coreos-assembler" ,
800- "version" : self . build . source [ ' commit' ]
826+ "version" : commit
801827 }
802828 ]
803829 }],
804- "output" : self .image_files
830+ "output" : self .get_image_files ( meta = meta )
805831 }
806832
807833 return self ._manifest
@@ -954,7 +980,9 @@ Environment variables are supported:
954980 help = "Do not upload, just parse the build" )
955981 parent_parser .add_argument ("--arch" , default = get_basearch (),
956982 help = "Set the build architecture" )
957-
983+ # Node image sytle uploads
984+ parent_parser .add_argument ("--node-image" , action = 'store_true' , required = False ,
985+ help = "Set the build architecture" )
958986 # Koji specific options
959987 parent_parser .add_argument ("--no-auth" , action = 'store_false' , dest = "auth" ,
960988 help = "Skip Kerberos auth, use if already auth'd" )
@@ -1037,7 +1065,8 @@ Environment variables are supported:
10371065
10381066 args = parser .parse_args (namespace = args )
10391067
1040- build = Build (buildroot = args .buildroot , build = args .build , arch = args .arch )
1068+ build = Build (buildroot = args .buildroot , build = args .build , arch = args .arch ,
1069+ node_image = args .node_image )
10411070
10421071 if args .auth :
10431072 kinit (args .keytab , args .owner )
0 commit comments