Class: HammerCLIKatello::ContentViewVersion::ImportCommand

Inherits:
HammerCLIForeman::Command
  • Object
show all
Includes:
HammerCLIForemanTasks::Async, ApipieHelper, HammerCLIKatello::CVImportExportHelper, LocalHelper
Defined in:
lib/hammer_cli_katello/content_view_version.rb

Constant Summary

Constants included from HammerCLIKatello::CVImportExportHelper

HammerCLIKatello::CVImportExportHelper::PUBLISHED_REPOS_DIR

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from HammerCLIKatello::CVImportExportHelper

#collect_packages, #export_json, #fetch_exportable_cvv_repositories, #find_local_component_id, #import_checks, #obtain_export_params, #read_json, #untar_export, #warn_repo_download_policy

Methods included from ApipieHelper

#call, #destroy, #index, #show, #update

Methods included from LocalHelper

#parse_subcommand

Instance Attribute Details

#export_tar_dirObject

Returns the value of attribute export_tar_dir.



431
432
433
# File 'lib/hammer_cli_katello/content_view_version.rb', line 431

def export_tar_dir
  @export_tar_dir
end

#export_tar_fileObject

Returns the value of attribute export_tar_file.



431
432
433
# File 'lib/hammer_cli_katello/content_view_version.rb', line 431

def export_tar_file
  @export_tar_file
end

#export_tar_prefixObject

Returns the value of attribute export_tar_prefix.



431
432
433
# File 'lib/hammer_cli_katello/content_view_version.rb', line 431

def export_tar_prefix
  @export_tar_prefix
end

Instance Method Details

#content_view(name, organization_id) ⇒ Object



527
528
529
# File 'lib/hammer_cli_katello/content_view_version.rb', line 527

def content_view(name, organization_id)
  index(:content_views, 'name' => name, 'organization_id' => organization_id).first
end

#executeObject

rubocop:disable Metrics/AbcSize



454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
# File 'lib/hammer_cli_katello/content_view_version.rb', line 454

def execute
  unless File.exist?(options['option_export_tar'])
    raise _("Export tar #{options['option_export_tar']} does not exist.")
  end

  import_tar_params = obtain_export_params(options['option_export_tar'])
  untar_export(import_tar_params)

  export_json = read_json(import_tar_params)
  cv = content_view(export_json['name'], options['option_organization_id'])
  major = export_json['major'].to_s
  minor = export_json['minor'].to_s
  import_checks(export_json, cv, major, minor)

  if export_json['composite_components']
    composite_version_ids = export_json['composite_components'].map do |component|
      find_local_component_id(component)
    end
    update(:content_views, 'id' => cv['id'], 'component_ids' => composite_version_ids)
    publish(cv['id'], export_json['major'], export_json['minor'])
  else
    sync_repositories(export_json['repositories'], options['option_organization_id'],
      import_tar_params)

    unless cv['default']
      publish(
        cv['id'], export_json['major'],
        export_json['minor'], repos_units(export_json['repositories'])
      )
    end
  end
  return HammerCLI::EX_OK
end

#publish(id, major, minor, repos_units = nil) ⇒ Object



535
536
537
538
539
# File 'lib/hammer_cli_katello/content_view_version.rb', line 535

def publish(id, major, minor, repos_units = nil)
  params = {'id' => id, 'major' => major, 'minor' => minor }
  params['repos_units'] = repos_units if repos_units
  task_progress(call(:publish, :content_views, params))
end

#repos_units(repositories) ⇒ Object



518
519
520
521
522
523
524
525
# File 'lib/hammer_cli_katello/content_view_version.rb', line 518

def repos_units(repositories)
  repositories.collect do |repo|
    {
      'label' => repo['label'],
      'rpm_filenames' => repo['rpm_filenames']
    }
  end
end

#sync_repositories(repositories, organization_id, options) ⇒ Object

rubocop:enable Metrics/AbcSize



489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
# File 'lib/hammer_cli_katello/content_view_version.rb', line 489

def sync_repositories(repositories, organization_id, options)
  export_tar_dir =  options[:dirname]
  export_tar_prefix = options[:prefix]

  repositories.each do |repo|
    library_repos = index(
      :repositories,
      'organization_id' => organization_id,
      'library' => true
    )

    library_repo = library_repos.select do |candidate_repo|
      candidate_repo['label'] == repo['label']
    end

    library_repo = library_repo.first

    if library_repo.nil?
      msg = _("Unable to sync repositories, no library repository found for %s")
      raise msg % repo['label']
    end

    synchronize(
      library_repo['id'],
      "file://#{export_tar_dir}/#{export_tar_prefix}/#{repo['relative_path']}"
    )
  end
end

#synchronize(id, source_url) ⇒ Object



531
532
533
# File 'lib/hammer_cli_katello/content_view_version.rb', line 531

def synchronize(id, source_url)
  task_progress(call(:sync, :repositories, 'id' => id, 'source_url' => source_url))
end