lib/hammer_cli_katello/command_extensions/kickstart_repository.rb
module HammerCLIKatello module CommandExtensions class KickstartRepository < HammerCLI::CommandExtensions option_family associate: 'kickstart_repository' do child '--kickstart-repository', 'REPOSITORY_NAME', _('Kickstart repository name'), attribute_name: :option_kickstart_repository end request_params do |params, cmd_obj| resource_name = cmd_obj.resource.singular_name if cmd_obj.option_kickstart_repository && !cmd_obj.option_kickstart_repository_id resource_hash = if resource_name == 'hostgroup' params[resource_name] else params[resource_name]['content_facet_attributes'] end resource_hash ||= {} env_id = resource_hash['lifecycle_environment_id'] cv_id = resource_hash['content_view_id'] raise _('Please provide --lifecycle-environment-id') unless env_id raise _('Please provide --content-view-id') unless cv_id resource_hash['kickstart_repository_id'] = HammerCLIKatello::CommandExtensions::KickstartRepository.fetch_repo_id( cv_id, env_id, cmd_obj.option_kickstart_repository ) end end def self.fetch_repo_id(cv_id, env_id, repo_name) repo_resource = HammerCLIForeman.foreman_resource(:repositories) index_options = { content_view_id: cv_id, environment_id: env_id, name: repo_name } repos = repo_resource.call(:index, index_options)['results'] if repos.empty? raise _("No such repository with name %{name}, in lifecycle environment"\ " %{environment_id} and content view %{content_view_id}") % index_options end repos.first['id'] end end end end