-
Notifications
You must be signed in to change notification settings - Fork 19
/
registration.rb
119 lines (91 loc) · 3.3 KB
/
registration.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
# encoding: utf-8
# ------------------------------------------------------------------------------
# Copyright (c) 2014 SUSE LLC
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of version 2 of the GNU General Public License as published by the
# Free Software Foundation.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, contact Novell, Inc.
#
# To contact Novell about this file by physical or electronic mail, you may find
# current contact information at www.novell.com.
# ------------------------------------------------------------------------------
#
require "yast"
require "suse/connect"
require "registration/helpers"
require "registration/sw_mgmt"
require "registration/storage"
module Registration
class Registration
include Yast::Logger
SCC_CREDENTIALS = SUSE::Connect::Credentials::GLOBAL_CREDENTIALS_FILE
attr_accessor :url
def initialize(url = nil)
@url = url
end
def register(email, reg_code)
settings = default_connect_params.merge({
:token => reg_code,
# TODO FIXME: how to pass email?: "email" => email
})
login, password = SUSE::Connect::YaST.announce_system(settings)
@credentials = SUSE::Connect::Credentials.new(login, password, SCC_CREDENTIALS)
log.info "Global SCC credentials: #{@credentials}"
# ensure the zypp config directories are writable in inst-sys
::Registration::SwMgmt.zypp_config_writable!
# write the global credentials
@credentials.write
end
def register_products(products)
product_services = products.map do |product|
log.info("Registering product: #{product["name"]}")
params = default_connect_params.merge({
:product_ident => {
:arch => product["arch"],
:product_ident => product["name"],
:product_version => product["version"],
:release_type => product["release_type"]
}
})
# use product specific reg. key (e.g. for addons)
params[:token] = product["reg_key"] if product["reg_key"]
SUSE::Connect::YaST.activate_product(params)
end
log.info "registered product_services: #{product_services.inspect}"
if !product_services.empty?
::Registration::SwMgmt.add_services(product_services, @credentials)
end
product_services
end
def get_addon_list
# extensions for base product
base_product = ::Registration::Storage::BaseProduct.instance.product
params = default_connect_params.merge({
:product_ident => base_product["name"]
})
SUSE::Connect::YaST.list_products(params)
end
def self.is_registered?
SUSE::Connect::System.registered?
end
private
def default_connect_params
ret = {
:language => ::Registration::Helpers.language,
:verbose => ENV["Y2DEBUG"] == "1"
}
if @url
log.info "Using custom registration URL: #{@url.inspect}"
ret[:url] = @url
end
ret
end
end
end