Class: LinuxAdmin::SubscriptionManager

Inherits:
RegistrationSystem show all
Defined in:
lib/linux_admin/registration_system/subscription_manager.rb

Constant Summary collapse

SATELLITE6_SERVER_CERT_PATH =
"pub/katello-ca-consumer-latest.noarch.rpm"

Instance Method Summary collapse

Methods inherited from RegistrationSystem

method_missing, registration_type

Methods included from Logging

#logger

Instance Method Details

#all_repos(options = nil) ⇒ Object



99
100
101
102
103
104
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 99

def all_repos(options = nil)
  cmd     = "subscription-manager repos"
  output  = run!(cmd).output

  parse_output(output)
end

#available_subscriptionsObject



78
79
80
81
82
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 78

def available_subscriptions
  cmd     = "subscription-manager list --all --available"
  output  = run!(cmd).output
  parse_output(output).each_with_object({}) { |i, h| h[i[:pool_id]] = i }
end

#disable_repo(repo, options = nil) ⇒ Object



92
93
94
95
96
97
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 92

def disable_repo(repo, options = nil)
  cmd     = "subscription-manager repos"
  params  = {"--disable=" => repo}

  run!(cmd, :params => params)
end

#enable_repo(repo, options = nil) ⇒ Object



84
85
86
87
88
89
90
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 84

def enable_repo(repo, options = nil)
  cmd     = "subscription-manager repos"
  params  = {"--enable=" => repo}

  logger.info("#{self.class.name}##{__method__} Enabling repository: #{repo}")
  run!(cmd, :params => params)
end

#enabled_reposObject



106
107
108
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 106

def enabled_repos
  all_repos.select { |i| i[:enabled] }.collect { |r| r[:repo_id] }
end

#organizations(options) ⇒ Object

Raises:

  • (ArgumentError)


28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 28

def organizations(options)
  raise ArgumentError, "username and password are required" unless options[:username] && options[:password]

  install_server_certificate(options[:server_url], SATELLITE6_SERVER_CERT_PATH) if options[:server_url]

  cmd = "subscription-manager orgs"

  params = {"--username=" => options[:username], "--password=" => options[:password]}
  params.merge!(proxy_params(options))

  result = run!(cmd, :params => params)
  parse_output(result.output).each_with_object({}) { |i, h| h[i[:name]] = i }
end

#refreshObject



24
25
26
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 24

def refresh
  run!("subscription-manager refresh")
end

#register(options) ⇒ Object

Raises:

  • (ArgumentError)


42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 42

def register(options)
  raise ArgumentError, "username and password are required" unless options[:username] && options[:password]

  install_server_certificate(options[:server_url], SATELLITE6_SERVER_CERT_PATH) if options[:server_url]

  cmd = "subscription-manager register"

  params = {"--username=" => options[:username], "--password=" => options[:password]}
  params.merge!(proxy_params(options))
  params["--environment="] = options[:environment] if options[:environment]
  params["--org="]         = options[:org]         if options[:server_url] && options[:org]

  run!(cmd, :params => params)
end

#registered?(options = nil) ⇒ Boolean

Returns:

  • (Boolean)


18
19
20
21
22
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 18

def registered?(options = nil)
  args = ["subscription-manager identity"]
  args << {:params => proxy_params(options)} if options
  Common.run(*args).exit_status.zero?
end

#run!(cmd, options = {}) ⇒ Object



5
6
7
8
9
10
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 5

def run!(cmd, options = {})
  Common.run!(cmd, options)
rescue AwesomeSpawn::CommandResultError => err
  raise CredentialError.new(err.result) if err.result.error.downcase.include?("invalid username or password")
  raise SubscriptionManagerError.new(err.message, err.result)
end

#subscribe(options) ⇒ Object



57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 57

def subscribe(options)
  cmd    = "subscription-manager attach"
  params = proxy_params(options)

  if options[:pools].blank?
    params.merge!({"--auto" => nil})
  else
    pools  = options[:pools].collect {|pool| ["--pool", pool]}
    params = params.to_a + pools
  end

  run!(cmd, :params => params)
end

#subscribed_productsObject



71
72
73
74
75
76
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 71

def subscribed_products
  cmd     = "subscription-manager list --installed"
  output  = run!(cmd).output

  parse_output(output).select {|p| p[:status].downcase == "subscribed"}.collect {|p| p[:product_id]}
end

#validate_credentials(options) ⇒ Object



14
15
16
# File 'lib/linux_admin/registration_system/subscription_manager.rb', line 14

def validate_credentials(options)
  !!organizations(options)
end