def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if not parsed_args.yes: confirm = utils.prompt_user_for_confirmation( message=_("Are you sure you want to delete this image " "[y/N]? "), logger=self.log) if not confirm: raise oscexc.CommandError("Action not confirmed, exiting.") lock = processlock.ProcessLock() manager = image_uploader.ImageUploadManager(lock=lock) uploader = manager.uploader('python') registry_url_arg = parsed_args.registry_url if registry_url_arg is None: registry_url_arg = image_uploader.get_undercloud_registry() url = uploader._image_to_url(registry_url_arg) session = uploader.authenticate(url, parsed_args.username, parsed_args.password) try: uploader.delete(parsed_args.image_to_delete, session=session) except OSError as e: self.log.error("Unable to remove due to permissions. " "Please prefix command with sudo.") raise oscexc.CommandError(e)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.cleanup not in image_uploader.CLEANUP: raise oscexc.CommandError('--cleanup must be one of: %s' % ', '.join(image_uploader.CLEANUP)) roles_data = utils.fetch_roles_file(parsed_args.roles_file) env = utils.build_prepare_env( parsed_args.environment_files, parsed_args.environment_directories ) lock = processlock.ProcessLock() params = kolla_builder.container_images_prepare_multi( env, roles_data, dry_run=parsed_args.dry_run, cleanup=parsed_args.cleanup, lock=lock) env_data = build_env_file(params, self.app.command_options) if parsed_args.output_env_file: if os.path.exists(parsed_args.output_env_file): self.log.warning("Output env file exists, " "moving it to backup.") shutil.move(parsed_args.output_env_file, parsed_args.output_env_file + ".backup") utils.safe_write(parsed_args.output_env_file, env_data) else: self.app.stdout.write(env_data)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) if parsed_args.cleanup not in image_uploader.CLEANUP: raise oscexc.CommandError('--cleanup must be one of: %s' % ', '.join(image_uploader.CLEANUP)) lock = processlock.ProcessLock() uploader = image_uploader.ImageUploadManager( parsed_args.config_files, cleanup=parsed_args.cleanup, lock=lock) try: uploader.upload() except KeyboardInterrupt: # ctrl-c self.log.warning('Upload was interrupted by ctrl-c.')
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) self.log.warning("[DEPRECATED] This command has been deprecated and " "replaced by the 'openstack tripleo container image " "prepare' command.") lock = processlock.ProcessLock() uploader = image_uploader.ImageUploadManager([], lock=lock) print(uploader.discover_image_tag( image=parsed_args.image, tag_from_label=parsed_args.tag_from_label ))
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) lock = processlock.ProcessLock() manager = image_uploader.ImageUploadManager(lock=lock) uploader = manager.uploader('python') url = uploader._image_to_url(parsed_args.image_to_inspect) session = uploader.authenticate(url, parsed_args.username, parsed_args.password) image_inspect_result = uploader.inspect(parsed_args.image_to_inspect, session=session) return self.format_image_inspect(image_inspect_result)
def run_module(): result = dict(success=False, changed=False, error="", params={}) argument_spec = openstack_full_argument_spec( **yaml.safe_load(DOCUMENTATION)['options']) module = AnsibleModule(argument_spec, supports_check_mode=False, **openstack_module_kwargs()) log_file = module.params.get('log_file') debug = module.params.get('debug') if not module.no_log: log = setup_logging(log_file, debug) cleanup = module.params.get('cleanup') dry_run = module.params.get('dry_run') if cleanup not in image_uploader.CLEANUP: raise RuntimeError('--cleanup must be one of: %s' % ', '.join(image_uploader.CLEANUP)) roles_data = module.params.get('roles_data') env = module.params.get('environment') try: lock = processlock.ProcessLock() params = kolla_builder.container_images_prepare_multi(env, roles_data, cleanup=cleanup, dry_run=dry_run, lock=lock) if not module.no_log: output = yaml.safe_dump(params, default_flow_style=False) log.info(output) result['success'] = True result['changed'] = True result['params'] = {"parameter_defaults": params} except Exception as err: result['error'] = str(err) result['msg'] = ("Error running container image prepare: %s" % (err)) module.fail_json(**result) # in the event of a successful module execution, you will want to # simple AnsibleModule.exit_json(), passing the key/value results module.exit_json(**result)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) lock = processlock.ProcessLock() manager = image_uploader.ImageUploadManager(lock=lock) uploader = manager.uploader('python') registry_url_arg = parsed_args.registry_url if registry_url_arg is None: registry_url_arg = image_uploader.get_undercloud_registry() url = uploader._image_to_url(registry_url_arg) session = uploader.authenticate(url, parsed_args.username, parsed_args.password) results = uploader.list(url.geturl(), session=session) cliff_results = [] for r in results: cliff_results.append((r,)) return (("Image Name",), cliff_results)
def take_action(self, parsed_args): self.log.debug("take_action(%s)" % parsed_args) lock = processlock.ProcessLock() manager = image_uploader.ImageUploadManager(lock=lock) uploader = manager.uploader('python') source_image = parsed_args.image_to_push if parsed_args.local or source_image.startswith('containers-storage:'): storage = 'containers-storage:' if not source_image.startswith(storage): source_image = storage + source_image.replace('docker://', '') elif not parsed_args.local: self.log.warning('Assuming local container based on provided ' 'container path. (e.g. starts with ' 'containers-storage:)') source_url = parse.urlparse(source_image) image_name = source_url.geturl() image_source = None if parsed_args.source_username or parsed_args.source_password: self.log.warning('Source credentials ignored for local images') else: storage = 'docker://' if not source_image.startswith(storage): source_image = storage + source_image source_url = parse.urlparse(source_image) image_source = source_url.netloc image_name = source_url.path[1:] if len(image_name.split('/')) != 2: raise exceptions.DownloadError('Invalid container. Provided ' 'container image should be ' '<registry>/<namespace>/<name>:' '<tag>') if parsed_args.source_username or parsed_args.source_password: if not parsed_args.source_username: self.log.warning('Skipping authentication - missing source' ' username') elif not parsed_args.source_password: self.log.warning('Skipping authentication - missing source' ' password') else: uploader.authenticate(source_url, parsed_args.source_username, parsed_args.source_password) registry_url_arg = parsed_args.registry_url if registry_url_arg is None: registry_url_arg = image_uploader.get_undercloud_registry() if not registry_url_arg.startswith('docker://'): registry_url = 'docker://%s' % registry_url_arg else: registry_url = registry_url_arg reg_url = parse.urlparse(registry_url) uploader.authenticate(reg_url, parsed_args.username, parsed_args.password) task = image_uploader.UploadTask( image_name=image_name, pull_source=image_source, push_destination=registry_url_arg, append_tag=parsed_args.append_tag, modify_role=None, modify_vars=None, dry_run=parsed_args.dry_run, cleanup=parsed_args.cleanup, multi_arch=parsed_args.multi_arch) try: uploader.add_upload_task(task) uploader.run_tasks() except OSError as e: self.log.error("Unable to upload due to permissions. " "Please prefix command with sudo.") raise oscexc.CommandError(e)