def run(self): try: build_json = json.loads(os.environ["BUILD"]) except KeyError: self.log.error("No $BUILD env variable. " "Probably not running in build container.") raise osbs_conf = Configuration(conf_file=None, openshift_uri=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl) osbs = OSBS(osbs_conf, osbs_conf) metadata = build_json.get("metadata", {}) kwargs = {} if 'namespace' in metadata: kwargs['namespace'] = metadata['namespace'] labels = metadata.get("labels", {}) try: imagestream = labels["imagestream"] except KeyError: self.log.error("No imagestream label set for this Build") raise self.log.info("Importing tags for %s", imagestream) osbs.import_image(imagestream, **kwargs)
def run(self): try: build_json = json.loads(os.environ["BUILD"]) except KeyError: self.log.error("No $BUILD env variable. " "Probably not running in build container.") raise metadata = build_json.get("metadata", {}) kwargs = {} if 'namespace' in metadata: kwargs['namespace'] = metadata['namespace'] osbs_conf = Configuration(openshift_uri=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl) osbs = OSBS(osbs_conf, osbs_conf) try: osbs.get_image_stream(self.imagestream, **kwargs) except OsbsResponseException: self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) # Tags are imported automatically on creation osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) else: self.log.info("Importing tags for %s", self.imagestream) osbs.import_image(self.imagestream, **kwargs)
def run(self): metadata = get_build_json().get("metadata", {}) kwargs = {} # FIXME: remove `openshift_uri` once osbs-client is released osbs_conf = Configuration(conf_file=None, openshift_uri=self.url, openshift_url=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl, build_json_dir=self.build_json_dir, namespace=metadata.get('namespace', None)) osbs = OSBS(osbs_conf, osbs_conf) imagestream = None try: imagestream = osbs.get_image_stream(self.imagestream) except OsbsResponseException: if self.insecure_registry is not None: kwargs['insecure_registry'] = self.insecure_registry self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) imagestream = osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) self.log.info("Importing new tags for %s", self.imagestream) primaries = None try: primaries = self.workflow.build_result.annotations['repositories'][ 'primary'] except (TypeError, KeyError): self.log.exception( 'Unable to read primary repositories annotations') if not primaries: raise RuntimeError('Could not find primary images in workflow') failures = False for s in primaries: tag_image_name = ImageName.parse(s) tag = tag_image_name.tag try: osbs.ensure_image_stream_tag(imagestream.json(), tag) self.log.info("Imported ImageStreamTag: (%s)", tag) except OsbsResponseException: failures = True self.log.info("Could not import ImageStreamTag: (%s)", tag) if failures: raise RuntimeError( "Failed to import ImageStreamTag(s). Check logs") osbs.import_image(self.imagestream)
def run(self): try: build_json = json.loads(os.environ["BUILD"]) except KeyError: self.log.error("No $BUILD env variable. " "Probably not running in build container.") raise metadata = build_json.get("metadata", {}) kwargs = {} if 'namespace' in metadata: kwargs['namespace'] = metadata['namespace'] # FIXME: remove `openshift_uri` once osbs-client is released osbs_conf = Configuration(openshift_uri=self.url, openshift_url=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl, build_json_dir=self.build_json_dir) osbs = OSBS(osbs_conf, osbs_conf) try: osbs.get_image_stream(self.imagestream, **kwargs) except OsbsResponseException: if self.insecure_registry is not None: kwargs['insecure_registry'] = self.insecure_registry self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) # Tags are imported automatically on creation osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) else: self.log.info("Importing tags for %s", self.imagestream) osbs.import_image(self.imagestream, **kwargs)
def run(self): try: build_json = json.loads(os.environ["BUILD"]) except KeyError: self.log.error("No $BUILD env variable. " "Probably not running in build container.") raise metadata = build_json.get("metadata", {}) kwargs = {} if 'namespace' in metadata: kwargs['namespace'] = metadata['namespace'] # FIXME: remove `openshift_uri` once osbs-client is released osbs_conf = Configuration(openshift_uri=self.url, openshift_url=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl, build_json_dir=self.build_json_dir) osbs = OSBS(osbs_conf, osbs_conf) try: osbs.get_image_stream(self.imagestream, **kwargs) except OsbsResponseException: if self.insecure_registry is not None: kwargs['insecure_registry'] = self.insecure_registry self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) # Tags are imported automatically on creation osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) else: self.log.info("Importing tags for %s", self.imagestream) retry_attempts = 3 while True: result = osbs.import_image(self.imagestream, **kwargs) if result != False: break if retry_attempts > 0: retry_attempts -= 1 self.log.info("no new tags, will retry after %d seconds", self.retry_delay) sleep(self.retry_delay)
def run(self): metadata = get_build_json().get("metadata", {}) kwargs = {} # FIXME: remove `openshift_uri` once osbs-client is released osbs_conf = Configuration(conf_file=None, openshift_uri=self.url, openshift_url=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl, build_json_dir=self.build_json_dir, namespace=metadata.get('namespace', None)) osbs = OSBS(osbs_conf, osbs_conf) try: osbs.get_image_stream(self.imagestream) except OsbsResponseException: if self.insecure_registry is not None: kwargs['insecure_registry'] = self.insecure_registry self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) # Tags are imported automatically on creation osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) else: self.log.info("Importing new tags for %s", self.imagestream) attempts = 0 while not osbs.import_image(self.imagestream): attempts += 1 if attempts >= self.import_attempts: msg = "Failed to import new tags for %s" raise RuntimeError(msg % self.imagestream) self.log.info( "no new tags, will retry after %d seconds (%d/%d)", self.retry_delay, attempts, self.import_attempts) sleep(self.retry_delay)
def run(self): metadata = get_build_json().get("metadata", {}) kwargs = {} # FIXME: remove `openshift_uri` once osbs-client is released osbs_conf = Configuration(openshift_uri=self.url, openshift_url=self.url, use_auth=self.use_auth, verify_ssl=self.verify_ssl, build_json_dir=self.build_json_dir, namespace=metadata.get('namespace', None)) osbs = OSBS(osbs_conf, osbs_conf) try: osbs.get_image_stream(self.imagestream) except OsbsResponseException: if self.insecure_registry is not None: kwargs['insecure_registry'] = self.insecure_registry self.log.info("Creating ImageStream %s for %s", self.imagestream, self.docker_image_repo) # Tags are imported automatically on creation osbs.create_image_stream(self.imagestream, self.docker_image_repo, **kwargs) else: self.log.info("Importing tags for %s", self.imagestream) retry_attempts = 3 while True: result = osbs.import_image(self.imagestream, **kwargs) if result: break if retry_attempts > 0: retry_attempts -= 1 self.log.info("no new tags, will retry after %d seconds", self.retry_delay) sleep(self.retry_delay)