openSUSE Commits
Threads by month
- ----- 2025 -----
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
February 2019
- 1 participants
- 2210 discussions
Hello community,
here is the log from the commit of package yast2-auth-client for openSUSE:Factory checked in at 2019-02-28 21:48:59
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-auth-client (Old)
and /work/SRC/openSUSE:Factory/.yast2-auth-client.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-auth-client"
Thu Feb 28 21:48:59 2019 rev:34 rq:680193 version:4.1.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-auth-client/yast2-auth-client.changes 2018-12-31 09:40:21.754512594 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-auth-client.new.28833/yast2-auth-client.changes 2019-02-28 21:49:00.601381443 +0100
@@ -1,0 +2,6 @@
+Fri Feb 15 17:47:05 UTC 2019 - David Mulder <dmulder(a)suse.com>
+
+- yast auth-client and krb5.conf wrong domain_realm entry; (bsc#1122026)
+- 4.1.1
+
+-------------------------------------------------------------------
Old:
----
yast2-auth-client-4.1.0.tar.bz2
New:
----
yast2-auth-client-4.1.1.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-auth-client.spec ++++++
--- /var/tmp/diff_new_pack.Ys6tb4/_old 2019-02-28 21:49:01.149381209 +0100
+++ /var/tmp/diff_new_pack.Ys6tb4/_new 2019-02-28 21:49:01.153381207 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-auth-client
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-auth-client
-Version: 4.1.0
+Version: 4.1.1
Release: 0
Url: https://github.com/yast/yast-auth-client
Summary: YaST2 - Centralised System Authentication Configuration
++++++ yast2-auth-client-4.1.0.tar.bz2 -> yast2-auth-client-4.1.1.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/package/yast2-auth-client.changes new/yast2-auth-client-4.1.1/package/yast2-auth-client.changes
--- old/yast2-auth-client-4.1.0/package/yast2-auth-client.changes 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/package/yast2-auth-client.changes 2019-02-28 18:57:28.000000000 +0100
@@ -1,4 +1,10 @@
-------------------------------------------------------------------
+Fri Feb 15 17:47:05 UTC 2019 - David Mulder <dmulder(a)suse.com>
+
+- yast auth-client and krb5.conf wrong domain_realm entry; (bsc#1122026)
+- 4.1.1
+
+-------------------------------------------------------------------
Fri Nov 23 21:46:44 UTC 2018 - Stasiek Michalski <hellcp(a)mailbox.org>
- Provide icon with module (boo#1109310)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/package/yast2-auth-client.spec new/yast2-auth-client-4.1.1/package/yast2-auth-client.spec
--- old/yast2-auth-client-4.1.0/package/yast2-auth-client.spec 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/package/yast2-auth-client.spec 2019-02-28 18:57:28.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-auth-client
-Version: 4.1.0
+Version: 4.1.1
Release: 0
Url: https://github.com/yast/yast-auth-client
Summary: YaST2 - Centralised System Authentication Configuration
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/src/lib/auth/authconf.rb new/yast2-auth-client-4.1.1/src/lib/auth/authconf.rb
--- old/yast2-auth-client-4.1.0/src/lib/auth/authconf.rb 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/src/lib/auth/authconf.rb 2019-02-28 18:57:28.000000000 +0100
@@ -41,7 +41,7 @@
# Clear all configuration objects.
def clear
# Kerberos configuration
- @krb_conf = {'include' => [], 'libdefaults' => {}, 'realms' => {}, 'domain_realms' => {}, 'logging' => {}}
+ @krb_conf = {'include' => [], 'libdefaults' => {}, 'realms' => {}, 'domain_realm' => {}, 'logging' => {}}
@krb_pam = false
# LDAP configuration (/etc/ldap.conf)
@ldap_conf = {}
@@ -524,14 +524,14 @@
end
# Write LDAP config file and correct its permission and ownerships
ldap_conf = File.new('/etc/ldap.conf', 'w')
- ldap_conf.chmod(644)
+ ldap_conf.chmod(0644)
ldap_conf.chown(0, 0)
ldap_conf.write(ldap_make_conf)
ldap_conf.close
# If automount is enabled, overwrite openldap's ldap.conf as well.
if @ldap_nss.include?('automount')
ldap_conf = File.new('/etc/openldap/ldap.conf', 'w')
- ldap_conf.chmod(644)
+ ldap_conf.chmod(0644)
ldap_conf.chown(0, 0)
ldap_conf.write(ldap_make_conf)
ldap_conf.close
@@ -674,7 +674,7 @@
# Make sure the Kerberos configuration has all the necessary keys.
def krb_lint_conf
- ['libdefaults', 'realms', 'domain_realms', 'logging'].each { |key|
+ ['libdefaults', 'realms', 'domain_realm', 'logging'].each { |key|
@krb_conf[key] = {} if @krb_conf[key].nil?
}
@krb_conf['include'] = [] if @krb_conf['include'].nil?
@@ -794,10 +794,10 @@
end
@krb_conf['realms'][realm_name].merge!("kdc" => kdc_addr, "admin_server" => admin_addr)
if make_domain_realms
- @krb_conf['domain_realms'].merge!(".#{realm_name.downcase}" => realm_name, "#{realm_name.downcase}" => realm_name)
+ @krb_conf['domain_realm'].merge!(".#{realm_name.downcase}" => realm_name, "#{realm_name.downcase}" => realm_name)
else
- @krb_conf['domain_realms'].delete(".#{realm_name.downcase}")
- @krb_conf['domain_realms'].delete("#{realm_name.downcase}")
+ @krb_conf['domain_realm'].delete(".#{realm_name.downcase}")
+ @krb_conf['domain_realm'].delete("#{realm_name.downcase}")
end
if make_default || @krb_conf['libdefaults']['default_realm'].to_s == ''
@krb_conf['libdefaults']['default_realm'] = realm_name
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/src/lib/auth/krbparse.rb new/yast2-auth-client-4.1.1/src/lib/auth/krbparse.rb
--- old/yast2-auth-client-4.1.0/src/lib/auth/krbparse.rb 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/src/lib/auth/krbparse.rb 2019-02-28 18:57:28.000000000 +0100
@@ -26,7 +26,7 @@
long_attr1 = ''
long_attr2 = ''
sect = ''
- new_krb_conf = {'include' => [], 'libdefaults' => {}, 'realms' => {}, 'domain_realms' => {}, 'logging' => {}}
+ new_krb_conf = {'include' => [], 'libdefaults' => {}, 'realms' => {}, 'domain_realm' => {}, 'logging' => {}}
# Break down sections and key-value pairs
krb_conf_text.split(/\n/).each{ |line|
# Throw away comment
@@ -45,6 +45,16 @@
if sect_match
# remember current section
sect = sect_match[1]
+ # Bug 1122026: krb5.conf sections can have a variable amount
+ # of characters appended to the name, and still be valid.
+ # domain_realm for example could have an 's' appended, but
+ # is not the documented section title.
+ new_krb_conf.each { |k, v|
+ if sect_match[1].start_with?(k)
+ sect = k
+ break
+ end
+ }
next
end
# Remember expanded attribute
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/src/lib/authui/ldapkrb/edit_realm_dialog.rb new/yast2-auth-client-4.1.1/src/lib/authui/ldapkrb/edit_realm_dialog.rb
--- old/yast2-auth-client-4.1.0/src/lib/authui/ldapkrb/edit_realm_dialog.rb 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/src/lib/authui/ldapkrb/edit_realm_dialog.rb 2019-02-28 18:57:28.000000000 +0100
@@ -51,9 +51,9 @@
VBox(
InputField(Id(:realm_name), Opt(:hstretch), _('Realm name'), @realm_name.to_s),
CheckBox(Id(:map_domain), Opt(:hstretch), _('Map Domain Name to the Realm (example.com -> EXAMPLE.COM)'),
- !(a)realm_name.nil? && !AuthConfInst.krb_conf_get(['domain_realms', @realm_name.downcase], nil).nil?),
+ !(a)realm_name.nil? && !AuthConfInst.krb_conf_get(['domain_realm', @realm_name.downcase], nil).nil?),
CheckBox(Id(:map_wildcard_domain), Opt(:hstretch), _('Map Wild Card Domain Name to the Realm (*.example.com -> EXAMPLE.COM)'),
- !(a)realm_name.nil? && !AuthConfInst.krb_conf_get(['domain_realms', ".#{(a)realm_name.downcase}"], nil).nil?),
+ !(a)realm_name.nil? && !AuthConfInst.krb_conf_get(['domain_realm', ".#{(a)realm_name.downcase}"], nil).nil?),
VSpacing(1.0),
InputField(Id(:admin_server), Opt(:hstretch), _('Host Name of Administration Server (Optional)'),
AuthConfInst.krb_conf_get(['realms', @realm_name, 'admin_server'], '')),
@@ -142,9 +142,9 @@
if AuthConfInst.krb_conf['libdefaults']['default_realm'] == @realm_name
AuthConfInst.krb_conf['libdefaults']['default_realm'] = input_realm_name
end
- domains = AuthConfInst.krb_conf['domain_realms'].select{ |_, realm| realm == @realm_name}.keys
- domains.each {|domain| AuthConfInst.krb_conf['domain_realms'].delete(domain)}
- domains.each {|domain| AuthConfInst.krb_conf['domain_realms'][domain] = input_realm_name}
+ domains = AuthConfInst.krb_conf['domain_realm'].select{ |_, realm| realm == @realm_name}.keys
+ domains.each {|domain| AuthConfInst.krb_conf['domain_realm'].delete(domain)}
+ domains.each {|domain| AuthConfInst.krb_conf['domain_realm'][domain] = input_realm_name}
end
# Create new realm
if !AuthConfInst.krb_conf['realms'].include?(input_realm_name)
@@ -156,14 +156,14 @@
realm_conf['master_kdc'] = UI.QueryWidget(Id(:master_kdc), :Value)
realm_conf['kdc'] = UI.QueryWidget(Id(:kdc), :Items).map{|item| item[1]}
if UI.QueryWidget(Id(:map_domain), :Value)
- AuthConfInst.krb_conf['domain_realms'][input_realm_name.downcase] = input_realm_name
+ AuthConfInst.krb_conf['domain_realm'][input_realm_name.downcase] = input_realm_name
else
- AuthConfInst.krb_conf['domain_realms'].delete(input_realm_name.downcase)
+ AuthConfInst.krb_conf['domain_realm'].delete(input_realm_name.downcase)
end
if UI.QueryWidget(Id(:map_wildcard_domain), :Value)
- AuthConfInst.krb_conf['domain_realms'][".#{input_realm_name.downcase}"] = input_realm_name
+ AuthConfInst.krb_conf['domain_realm'][".#{input_realm_name.downcase}"] = input_realm_name
else
- AuthConfInst.krb_conf['domain_realms'].delete(".#{input_realm_name.downcase}")
+ AuthConfInst.krb_conf['domain_realm'].delete(".#{input_realm_name.downcase}")
end
realm_conf['auth_to_local'] = UI.QueryWidget(Id(:auth_to_local), :Items).map{|item| item[1]}
realm_conf['auth_to_local_names'] = Hash[*UI.QueryWidget(Id(:auth_to_local_names), :Items).map{|item| [item[1], item[2]]}.flatten]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/src/lib/authui/ldapkrb/main_dialog.rb new/yast2-auth-client-4.1.1/src/lib/authui/ldapkrb/main_dialog.rb
--- old/yast2-auth-client-4.1.0/src/lib/authui/ldapkrb/main_dialog.rb 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/src/lib/authui/ldapkrb/main_dialog.rb 2019-02-28 18:57:28.000000000 +0100
@@ -200,7 +200,7 @@
redo
end
if Popup.YesNo(_('Are you sure to delete realm %s?') % [realm_name])
- AuthConfInst.krb_conf['domain_realms'].delete_if{ |_, domain_realm| domain_realm == realm_name}
+ AuthConfInst.krb_conf['domain_realm'].delete_if{ |_, domain_realm| domain_realm == realm_name}
if UI.QueryWidget(Id(:krb_default_realm), :Value) == realm_name
UI.ChangeWidget(Id(:krb_default_realm), :Value, _('(not specified)'))
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-auth-client-4.1.0/test/authconf_test.rb new/yast2-auth-client-4.1.1/test/authconf_test.rb
--- old/yast2-auth-client-4.1.0/test/authconf_test.rb 2018-11-28 12:10:38.000000000 +0100
+++ new/yast2-auth-client-4.1.1/test/authconf_test.rb 2019-02-28 18:57:28.000000000 +0100
@@ -183,9 +183,33 @@
"auth_to_local"=>["RULE:[2:$1](johndoe)s/^.*$/guest/"]
},
},
- "domain_realms"=>{}, "logging"=>{}
+ "domain_realm"=>{}, "logging"=>{}
}, "pam"=>false)
- # The second example is very comprehensive
+ # The second tests for cruft in the section names
+ authconf.krb_parse_set('
+[libdefaultsXXXXXXXXX]
+ default_realm = ABC.ZZZ
+
+[realmsYYYZZZZXXXXX]
+ ABC.ZZZ = {
+ kdc = howie.suse.de
+ admin_server = howie.suse.de
+ auth_to_local = RULE:[2:$1](johndoe)s/^.*$/guest/
+ }
+')
+ expect(authconf.krb_export).to eq("conf"=>{
+ "include"=>[],
+ "libdefaults"=>{"default_realm"=>"ABC.ZZZ"},
+ "realms"=>{
+ "ABC.ZZZ"=>{
+ "kdc"=>["howie.suse.de"],
+ "admin_server"=>"howie.suse.de",
+ "auth_to_local"=>["RULE:[2:$1](johndoe)s/^.*$/guest/"]
+ },
+ },
+ "domain_realm"=>{}, "logging"=>{}
+ }, "pam"=>false)
+ # The third example is very comprehensive
authconf.krb_parse_set('include a/b/c.d
includedir e/f/g.h
module i/j/k.l:RESIDUAL
@@ -223,7 +247,7 @@
EMPTY.NET = {
}
-[domain_realms]
+[domain_realm]
.suse.de = ABC.ZZZ
suse.de = ABC.ZZZ
@@ -263,7 +287,7 @@
},
"EMPTY.NET"=> {},
},
- "domain_realms"=>{".suse.de"=>"ABC.ZZZ", "suse.de"=>"ABC.ZZZ"},
+ "domain_realm"=>{".suse.de"=>"ABC.ZZZ", "suse.de"=>"ABC.ZZZ"},
"logging"=>{"kdc"=>"FILE:/var/log/krb5/krb5kdc.log", "admin_server"=>"FILE:/var/log/krb5/kadmind.log", "default"=>"SYSLOG:NOTICE:DAEMON"},
"dbmodules"=>{
"openldap_ldapconf"=>{
@@ -289,7 +313,7 @@
forwardable = true
default_ccache_name = FILE:/tmp/krb5cc_%{uid}
-[domain_realms]
+[domain_realm]
.suse.de = ABC.ZZZ
suse.de = ABC.ZZZ
@@ -338,7 +362,7 @@
{"ABC.ZZZ"=>{"kdc"=>["howie.suse.de"], "admin_server"=>"howie.suse.de"},
"ABD.ZZZ"=>{"kdc"=>["howie2.suse.de"], "admin_server"=>"howie2.suse.de"}},
"libdefaults"=>{"default_realm"=>"ABC.ZZZ", "forwardable"=>"true"},
- "domain_realms"=>{".suse.de"=>"ABC.ZZZ", "suse.de"=>"ABC.ZZZ"},
+ "domain_realm"=>{".suse.de"=>"ABC.ZZZ", "suse.de"=>"ABC.ZZZ"},
"logging"=>
{"kdc"=>"FILE:/var/log/krb5/krb5kdc.log",
"admin_server"=>"FILE:/var/log/krb5/kadmind.log",
@@ -351,7 +375,7 @@
conf = {"conf"=>
{"realms"=>{},
"libdefaults"=>{},
- "domain_realms"=>{},
+ "domain_realm"=>{},
"logging"=>
{"kdc"=>"FILE:/var/log/krb5/krb5kdc.log",
"admin_server"=>"FILE:/var/log/krb5/kadmind.log",
@@ -363,7 +387,7 @@
{"realms"=>
{"ABC.ZZZ"=>{"kdc"=>"howie.suse.de", "admin_server"=>"howie2.suse.de"}},
"libdefaults"=>{"default_realm"=>"ABC.ZZZ"},
- "domain_realms"=>{".abc.zzz"=>"ABC.ZZZ", "abc.zzz"=>"ABC.ZZZ"},
+ "domain_realm"=>{".abc.zzz"=>"ABC.ZZZ", "abc.zzz"=>"ABC.ZZZ"},
"logging"=>
{"kdc"=>"FILE:/var/log/krb5/krb5kdc.log",
"admin_server"=>"FILE:/var/log/krb5/kadmind.log",
@@ -374,7 +398,7 @@
{"realms"=>
{"ABC.ZZZ"=>{"kdc"=>"3.suse.de", "admin_server"=>"4.suse.de"}},
"libdefaults"=>{"default_realm"=>"ABC.ZZZ"},
- "domain_realms"=>{},
+ "domain_realm"=>{},
"logging"=>
{"kdc"=>"FILE:/var/log/krb5/krb5kdc.log",
"admin_server"=>"FILE:/var/log/krb5/kadmind.log",
1
0
Hello community,
here is the log from the commit of package yast2-network for openSUSE:Factory checked in at 2019-02-28 21:48:52
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-network (Old)
and /work/SRC/openSUSE:Factory/.yast2-network.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-network"
Thu Feb 28 21:48:52 2019 rev:403 rq:680177 version:4.1.42
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-network/yast2-network.changes 2019-02-15 09:53:27.607796768 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-network.new.28833/yast2-network.changes 2019-02-28 21:48:54.929383865 +0100
@@ -1,0 +2,33 @@
+Wed Feb 27 15:08:09 UTC 2019 - knut.anderssen(a)suse.com
+
+- Installation proposal (bsc#1127228, bsc#1124478, bsc#1124498):
+ - Fixed issue refreshing the list of packages needed for the
+ default backend the first time the proposal is called.
+ - Do not cache the default network backend but only the current
+ one when modified by the user in the proposal
+ - Fallback to :wicked when saving the network if NetworkManager
+ is selected as the service to be used but not installed.
+- 4.1.42
+
+-------------------------------------------------------------------
+Thu Feb 21 17:50:32 UTC 2019 - knut.anderssen(a)suse.com
+
+- When renaming an interface (bsc#1060207):
+ - Offer to the user the option to update device routes that
+ belongs to the previous interface name.
+ - Update the Routing devices list with the new one when needed.
+- Do not drop configured elements from the list when canceling
+ an edition (bsc#998540)
+- 4.1.41
+
+-------------------------------------------------------------------
+Tue Feb 19 09:31:26 UTC 2019 - knut.anderssen(a)suse.com
+
+- Installation proposal (bsc#1124478, bsc#1124498):
+ - Do not offer NetworkManager when the package is not available
+ - Respect the network backend selected in the proposal at the end
+ of the installation
+ - Removed the hostname write (127.0.0.2) from the summary
+- 4.1.40
+
+-------------------------------------------------------------------
Old:
----
yast2-network-4.1.39.tar.bz2
New:
----
yast2-network-4.1.42.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-network.spec ++++++
--- /var/tmp/diff_new_pack.lkjlMu/_old 2019-02-28 21:48:55.525383610 +0100
+++ /var/tmp/diff_new_pack.lkjlMu/_new 2019-02-28 21:48:55.529383609 +0100
@@ -17,7 +17,7 @@
Name: yast2-network
-Version: 4.1.39
+Version: 4.1.42
Release: 0
BuildArch: noarch
++++++ yast2-network-4.1.39.tar.bz2 -> yast2-network-4.1.42.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/package/yast2-network.changes new/yast2-network-4.1.42/package/yast2-network.changes
--- old/yast2-network-4.1.39/package/yast2-network.changes 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/package/yast2-network.changes 2019-02-28 17:21:23.000000000 +0100
@@ -1,4 +1,37 @@
-------------------------------------------------------------------
+Wed Feb 27 15:08:09 UTC 2019 - knut.anderssen(a)suse.com
+
+- Installation proposal (bsc#1127228, bsc#1124478, bsc#1124498):
+ - Fixed issue refreshing the list of packages needed for the
+ default backend the first time the proposal is called.
+ - Do not cache the default network backend but only the current
+ one when modified by the user in the proposal
+ - Fallback to :wicked when saving the network if NetworkManager
+ is selected as the service to be used but not installed.
+- 4.1.42
+
+-------------------------------------------------------------------
+Thu Feb 21 17:50:32 UTC 2019 - knut.anderssen(a)suse.com
+
+- When renaming an interface (bsc#1060207):
+ - Offer to the user the option to update device routes that
+ belongs to the previous interface name.
+ - Update the Routing devices list with the new one when needed.
+- Do not drop configured elements from the list when canceling
+ an edition (bsc#998540)
+- 4.1.41
+
+-------------------------------------------------------------------
+Tue Feb 19 09:31:26 UTC 2019 - knut.anderssen(a)suse.com
+
+- Installation proposal (bsc#1124478, bsc#1124498):
+ - Do not offer NetworkManager when the package is not available
+ - Respect the network backend selected in the proposal at the end
+ of the installation
+ - Removed the hostname write (127.0.0.2) from the summary
+- 4.1.40
+
+-------------------------------------------------------------------
Tue Feb 12 13:21:39 CET 2019 - schubi(a)suse.de
- AutoYaST in running system: Do not reset /etc/hosts (bsc#1122658)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/package/yast2-network.spec new/yast2-network-4.1.42/package/yast2-network.spec
--- old/yast2-network-4.1.39/package/yast2-network.spec 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/package/yast2-network.spec 2019-02-28 17:21:23.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-network
-Version: 4.1.39
+Version: 4.1.42
Release: 0
BuildArch: noarch
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/include/network/lan/address.rb new/yast2-network-4.1.42/src/include/network/lan/address.rb
--- old/yast2-network-4.1.39/src/include/network/lan/address.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/include/network/lan/address.rb 2019-02-28 17:21:23.000000000 +0100
@@ -34,6 +34,7 @@
module NetworkLanAddressInclude
include Y2Firewall::Helpers::Interfaces
include Yast::Logger
+ include Yast::I18n
include ::UI::TextHelpers
def initialize_network_lan_address(include_target)
@@ -1264,6 +1265,8 @@
end
@settings["IFCFG"] = LanItems.device if LanItems.operation != :add
+
+ # Firewall config
firewall_zone = Y2Network::Widgets::FirewallZone.new(LanItems.device)
wd["FWZONE"] = firewall_zone.cwm_definition
firewall_zone.value = @settings["FWZONE"] if firewalld.installed?
@@ -1367,6 +1370,10 @@
Routing.RemoveDefaultGw
end
end
+
+ # When virtual interfaces are added the list of routing devices needs
+ # to be updated to offer them
+ LanItems.update_routing_devices! if LanItems.update_routing_devices?
end
if LanItems.type == "vlan"
@@ -1390,8 +1397,6 @@
# proceed with WLAN settings if appropriate, #42420
ret = :wire if ret == :next && LanItems.type == "wlan"
- Routing.SetDevices(NetworkInterfaces.List("")) if ret == :routing
-
deep_copy(ret)
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/include/network/lan/complex.rb new/yast2-network-4.1.42/src/include/network/lan/complex.rb
--- old/yast2-network-4.1.39/src/include/network/lan/complex.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/include/network/lan/complex.rb 2019-02-28 17:21:23.000000000 +0100
@@ -454,6 +454,7 @@
end
LanItems.DeleteItem
+ LanItems.update_routing_devices!
initOverview("")
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/lib/network/clients/network_proposal.rb new/yast2-network-4.1.42/src/lib/network/clients/network_proposal.rb
--- old/yast2-network-4.1.39/src/lib/network/clients/network_proposal.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/lib/network/clients/network_proposal.rb 2019-02-28 17:21:23.000000000 +0100
@@ -1,5 +1,6 @@
require "cgi"
require "installation/proposal_client"
+require "y2network/proposal_settings"
module Yast
# Proposal client for Network configuration
@@ -18,6 +19,8 @@
Yast.import "LanItems"
textdomain "installation"
+
+ settings.refresh_packages
end
def description
@@ -53,8 +56,10 @@
private
def preformatted_proposal
+ return lan_summary unless settings.network_manager_available?
+
proposal_text = switch_backend_link
- proposal_text.prepend(Yast::Lan.Summary("proposal")) if wicked_backend?
+ proposal_text.prepend(lan_summary) if wicked_backend?
proposal_text
end
@@ -88,17 +93,17 @@
end
def switch_to_wicked
- Yast::NetworkService.use_wicked
+ settings.enable_wicked!
:next
end
def switch_to_network_manager
- Yast::NetworkService.use_network_manager
+ settings.enable_network_manager!
:next
end
def wicked_backend?
- Yast::NetworkService.wicked?
+ settings.current_backend != :network_manager
end
# TODO: move to HTML.ycp
@@ -106,4 +111,12 @@
Builtins.sformat("<a href=\"%1\">%2</a>", href, CGI.escapeHTML(text))
end
end
+
+ def lan_summary
+ Yast::Lan.Summary("proposal")
+ end
+
+ def settings
+ Y2Network::ProposalSettings.instance
+ end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/lib/network/clients/save_network.rb new/yast2-network-4.1.42/src/lib/network/clients/save_network.rb
--- old/yast2-network-4.1.39/src/lib/network/clients/save_network.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/lib/network/clients/save_network.rb 2019-02-28 17:21:23.000000000 +0100
@@ -2,6 +2,7 @@
require "network/install_inf_convertor"
require "network/network_autoconfiguration"
require "network/network_autoyast"
+require "y2network/proposal_settings"
require "cfa/generic_sysconfig"
@@ -296,7 +297,8 @@
log.info("Setting network service according to product preferences")
- if Lan.UseNetworkManager
+ case Y2Network::ProposalSettings.instance.network_service
+ when :network_manager
log.info("- using NetworkManager")
NetworkService.use_network_manager
else
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/lib/network/edit_nic_name.rb new/yast2-network-4.1.42/src/lib/network/edit_nic_name.rb
--- old/yast2-network-4.1.39/src/lib/network/edit_nic_name.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/lib/network/edit_nic_name.rb 2019-02-28 17:21:23.000000000 +0100
@@ -6,6 +6,7 @@
Yast.import "UI"
Yast.import "LanItems"
Yast.import "Popup"
+ Yast.import "Routing"
# The class represents a simple dialog which allows user to input new NIC
# name. It also allows to select a device attribute (MAC, Bus id, ...) which will
@@ -14,6 +15,11 @@
include UIShortcuts
include I18n
+ # @return [String] current udev name before modifying it
+ attr_accessor :old_name
+ # @return [String] current udev match criteria
+ attr_accessor :old_key
+
# udev rule attribute for MAC address
MAC_UDEV_ATTR = "ATTR{address}".freeze
@@ -68,11 +74,16 @@
# FIXME: it changes udev key used for device identification
# and / or its value only, name is changed elsewhere
LanItems.update_item_udev_rule!(udev_type)
+
+ if new_name != old_name
+ LanItems.update_routing_devices!
+ LanItems.update_routes!(old_name) if update_routes?(old_name)
+ end
end
close
- new_name || @old_name
+ new_name || old_name
end
private
@@ -84,7 +95,7 @@
Left(
HBox(
Label(_("Device Name:")),
- InputField(Id(:dev_name), Opt(:hstretch), "", @old_name)
+ InputField(Id(:dev_name), Opt(:hstretch), "", old_name)
)
),
VSpacing(0.5),
@@ -118,7 +129,7 @@
)
)
- case @old_key
+ case old_key
when MAC_UDEV_ATTR
UI.ChangeWidget(Id(:udev_type), :CurrentButton, :mac)
when BUSID_UDEV_ATTR
@@ -151,5 +162,24 @@
true
end
+
+ # When an interface name has changed, it returns whether the user wants to
+ # update the interface name in the related routes or not.
+ #
+ # return [Boolean] whether the routes have to be updated or not
+ def update_routes?(previous_name)
+ return false unless Routing.device_routes?(previous_name)
+
+ Popup.YesNoHeadline(
+ Label.WarningMsg,
+ # TRANSLATORS: Ask for fixing a possible conflict after renaming
+ # an interface, %s are the previous and current interface names
+ format(_("The interface %s has been renamed to %s. There are \n" \
+ "some routes that still use the previous name.\n\n" \
+ "Would you like to update them now?\n"),
+ "'#{previous_name}'",
+ "'#{LanItems.current_name}'")
+ )
+ end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/lib/network/network_autoyast.rb new/yast2-network-4.1.42/src/lib/network/network_autoyast.rb
--- old/yast2-network-4.1.39/src/lib/network/network_autoyast.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/lib/network/network_autoyast.rb 2019-02-28 17:21:23.000000000 +0100
@@ -334,20 +334,20 @@
key.downcase!
# find item which matches to the given rule definition
- item, matching_item = LanItems.Items.find do |_, i|
+ item_id, matching_item = LanItems.Items.find do |_, i|
i["hwinfo"] &&
(i["hwinfo"]["busid"].downcase == key || i["hwinfo"]["mac"].downcase == key)
end
next if !matching_item
- name_from = item_name(item)
+ name_from = LanItems.current_name_for(item_id)
log.info("Matching device found - renaming <#{name_from}> -> <#{name_to}>")
# rename item in collision
- rename_lan_item(colliding_item(name_to), name_from)
+ rename_lan_item(LanItems.colliding_item(name_to), name_from)
# rename matching item
- rename_lan_item(item, name_to, attr, key)
+ rename_lan_item(item_id, name_to, attr, key)
end
end
@@ -375,24 +375,5 @@
true
end
-
- # Returns items id, taking into account that item could be renamed
- #
- # @return [String] device name
- def item_name(item_id)
- LanItems.renamed?(item_id) ? LanItems.renamed_to(item_id) : LanItems.GetDeviceName(item_id)
- end
-
- # Finds a LanItem which name is in collision to the provided name
- #
- # @param name [String] a device name (eth0, ...)
- # @return [Integer] item id (see LanItems::Items)
- def colliding_item(name)
- colliding_item, _item_map = LanItems.Items.find do |i, _|
- name == item_name(i)
- end
-
- colliding_item
- end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/lib/y2network/proposal_settings.rb new/yast2-network-4.1.42/src/lib/y2network/proposal_settings.rb
--- old/yast2-network-4.1.39/src/lib/y2network/proposal_settings.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-network-4.1.42/src/lib/y2network/proposal_settings.rb 2019-02-28 17:21:23.000000000 +0100
@@ -0,0 +1,164 @@
+# encoding: utf-8
+#
+# Copyright (c) [2019] SUSE LLC
+#
+# All Rights Reserved.
+#
+# 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 SUSE LLC.
+#
+# To contact SUSE LLC about this file by physical or electronic mail, you may
+# find current contact information at www.suse.com.
+
+require "yast"
+require "y2packager/package"
+
+module Y2Network
+ # Class that stores the proposal settings for network during installation.
+ class ProposalSettings
+ include Yast::Logger
+ include Yast::I18n
+
+ # @return [Boolean] network service to be used after the installation
+ attr_accessor :selected_backend
+
+ # Constructor
+ def initialize
+ Yast.import "Arch"
+ Yast.import "ProductFeatures"
+ Yast.import "Package"
+ Yast.import "PackagesProposal"
+
+ @selected_backend = nil
+ end
+
+ def current_backend
+ selected_backend || default_backend
+ end
+
+ def default_backend
+ default = use_network_manager? ? :network_manager : :wicked
+ log.info "The default backend is: #{default}"
+ default
+ end
+
+ # Adds the NetworkManager package to the {Yast::PackagesProposal} and sets
+ # NetworkManager as the backend to be used
+ def enable_network_manager!
+ log.info "Enabling NetworkManager"
+ self.selected_backend = :network_manager
+ refresh_packages
+
+ selected_backend
+ end
+
+ # Add the wicked package to the {Yast::PackagesProposal} and sets wicked
+ # as the backend to be used
+ def enable_wicked!
+ log.info "Enabling Wicked"
+ self.selected_backend = :wicked
+ refresh_packages
+
+ selected_backend
+ end
+
+ def refresh_packages
+ if current_backend == :network_manager
+ Yast::PackagesProposal.AddResolvables("network", :package, ["NetworkManager"])
+ Yast::PackagesProposal.RemoveResolvables("network", :package, ["wicked"])
+ else
+ Yast::PackagesProposal.AddResolvables("network", :package, ["wicked"])
+ Yast::PackagesProposal.RemoveResolvables("network", :package, ["NetworkManager"])
+ end
+ end
+
+ # Convenience method to obtain whether the NetworkManager package is
+ # available or not.
+ #
+ # @return [Boolean] false if no package available, true otherwise
+ def network_manager_available?
+ p = Y2Packager::Package.find("NetworkManager").first
+ if p.nil?
+ log.info("The NetworkManager package is not available")
+ return false
+ end
+ log.info("The NetworkManager package status: #{p.status}")
+ true
+ end
+
+ # Propose the network service to be use at the end of the installation
+ # depending on the backend selected during the proposal and the packages
+ # installed
+ def network_service
+ case current_backend
+ when :network_manager
+ network_manager_installed? ? :network_manager : :wicked
+ else
+ :wicked
+ end
+ end
+
+ class << self
+ # Singleton instance
+ def instance
+ @instance ||= create_instance
+ end
+
+ # Enforce a new clean instance
+ def create_instance
+ @instance = new
+ end
+
+ # Make sure only .instance and .create_instance can be used to
+ # create objects
+ private :new, :allocate
+ end
+
+ private
+
+ # Convenienve method that verify if Network Manager should be used or not
+ # according to the control file defaults and package availability.
+ #
+ # @return [Boolean] true if should be used; false otherwise
+ def use_network_manager?
+ return false unless network_manager_available?
+
+ network_manager_default?
+ end
+
+ # Convenience method to determine if the NM package is installed or not
+ #
+ # @return [Boolean] true if NetworkManager is installed; false otherwise
+ def network_manager_installed?
+ Yast::Package.Installed("NetworkManager")
+ end
+
+ # Determine whether NetworkManager should be selected by default according
+ # to the product control file
+ #
+ # @return [Boolean] true if NM should be enabled; false otherwise
+ def network_manager_default?
+ case Yast::ProductFeatures.GetStringFeature("network", "network_manager")
+ when ""
+ # compatibility: use the boolean feature
+ # (defaults to false)
+ Yast::ProductFeatures.GetBooleanFeature("network", "network_manager_is_default")
+ when "always"
+ true
+ when "laptop"
+ laptop = Yast::Arch.is_laptop
+ log.info("Is a laptop: #{laptop}")
+ laptop
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/modules/DNS.rb new/yast2-network-4.1.42/src/modules/DNS.rb
--- old/yast2-network-4.1.39/src/modules/DNS.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/modules/DNS.rb 2019-02-28 17:21:23.000000000 +0100
@@ -413,12 +413,6 @@
)
)
end
- if !@write_hostname
- summary = Summary.AddListItem(
- summary,
- _("Hostname will not be written to /etc/hosts")
- )
- end
# if (has_dhcp && NetworkConfig::DHCP["DHCLIENT_MODIFY_RESOLV_CONF"]:false) {
# Summary text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/modules/Lan.rb new/yast2-network-4.1.42/src/modules/Lan.rb
--- old/yast2-network-4.1.39/src/modules/Lan.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/modules/Lan.rb 2019-02-28 17:21:23.000000000 +0100
@@ -94,6 +94,8 @@
# Lan::Read (`cache) will do nothing if initialized already.
@initialized = false
+
+ @backend = nil
end
#------------------
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/modules/LanItems.rb new/yast2-network-4.1.42/src/modules/LanItems.rb
--- old/yast2-network-4.1.39/src/modules/LanItems.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/modules/LanItems.rb 2019-02-28 17:21:23.000000000 +0100
@@ -58,6 +58,7 @@
Yast.import "UI"
textdomain "network"
+ Yast.import "Routing"
Yast.import "NetworkInterfaces"
Yast.import "ProductFeatures"
Yast.import "NetworkConfig"
@@ -276,6 +277,20 @@
items.map { |itemId| GetDeviceName(itemId) }.reject(&:empty?)
end
+ # Return the actual name of the current {LanItem}
+ #
+ # @return [String] the actual name for the current device
+ def current_name
+ current_name_for(@current)
+ end
+
+ # Return the current device names
+ #
+ # @ return [Array<String>]
+ def current_device_names
+ GetNetcardInterfaces().map { |i| current_name_for(i) }.reject(&:empty?)
+ end
+
# Returns device name for current lan item (see LanItems::current)
def GetCurrentName
GetDeviceName(@current)
@@ -2176,7 +2191,10 @@
# @return [true] so that this can be used for the :abort callback
def Rollback
log.info "rollback item #{@current}"
- if getCurrentItem.fetch("hwinfo", {}).empty?
+ # Do not delete elements that are :edited but does not contain hwinfo
+ # yet (Add a virtual device and then edit it canceling the process during the
+ # edition)
+ if LanItems.operation == :add && getCurrentItem.fetch("hwinfo", {}).empty?
LanItems.Items.delete(@current)
elsif IsCurrentConfigured()
if !getNetworkInterfaces.include?(getCurrentItem["ifcfg"])
@@ -2634,6 +2652,41 @@
false
end
+ # Return the current name of the {LanItem} given
+ #
+ # @param item_id [Integer] a key for {#Items}
+ def current_name_for(item_id)
+ renamed?(item_id) ? renamed_to(item_id) : GetDeviceName(item_id)
+ end
+
+ # Finds a LanItem which name is in collision to the provided name
+ #
+ # @param name [String] a device name (eth0, ...)
+ # @return [Integer, nil] item id (see LanItems::Items)
+ def colliding_item(name)
+ item_id, _item_map = Items().find { |i, _| name == current_name_for(i) }
+ item_id
+ end
+
+ # Return wether the {Yast:Routing} devices list needs to be updated or not
+ # to include the current interface name
+ #
+ # @return [Boolean] false if the current interface name is already present
+ def update_routing_devices?
+ !Routing.devices.include?(current_name)
+ end
+
+ # Convenience method to update the {Yast::Routing} devices list
+ def update_routing_devices!
+ Routing.SetDevices(current_device_names)
+ end
+
+ # It modifies the interface name with the new one of all the routes
+ # that belongs to the current renamed {LanItem}
+ def update_routes!(previous_name)
+ Routing.device_routes(previous_name).each { |r| r["device"] = current_name }
+ end
+
private
# Checks if given lladdr can be written into ifcfg
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/src/modules/Routing.rb new/yast2-network-4.1.42/src/modules/Routing.rb
--- old/yast2-network-4.1.39/src/modules/Routing.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/src/modules/Routing.rb 2019-02-28 17:21:23.000000000 +0100
@@ -147,6 +147,14 @@
true
end
+ def device_routes(device)
+ @Routes.select { |r| r["device"] == device }
+ end
+
+ def device_routes?(device)
+ @Routes.any? { |r| r["device"] == device }
+ end
+
# Remove route with default gateway from Routes list
def RemoveDefaultGw
route = []
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/address_test.rb new/yast2-network-4.1.42/test/address_test.rb
--- old/yast2-network-4.1.39/test/address_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/address_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -141,5 +141,4 @@
end
end
end
-
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/edit_nic_name_test.rb new/yast2-network-4.1.42/test/edit_nic_name_test.rb
--- old/yast2-network-4.1.39/test/edit_nic_name_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/edit_nic_name_test.rb 1970-01-01 01:00:00.000000000 +0100
@@ -1,109 +0,0 @@
-#!/usr/bin/env rspec
-
-require_relative "test_helper"
-
-require "yast"
-require "network/edit_nic_name"
-
-module Yast
- Yast.import "UI"
-
- CURRENT_NAME = "spec0".freeze
- NEW_NAME = "new1".freeze
- EXISTING_NEW_NAME = "existing_new_name".freeze
-
- describe "#run" do
- # general mocking stuff is placed here
- before(:each) do
- # NetworkInterfaces are too low level. Everything needed should be mocked
- stub_const("NetworkInterfaces", double(adapt_old_config!: nil))
-
- # mock devices configuration
- allow(LanItems).to receive(:ReadHardware) { [{ "dev_name" => CURRENT_NAME, "mac" => "00:01:02:03:04:05" }] }
- allow(LanItems).to receive(:getNetworkInterfaces) { [CURRENT_NAME] }
- allow(LanItems).to receive(:GetItemUdev) { "" }
- allow(LanItems).to receive(:GetItemUdev).with("NAME") { CURRENT_NAME }
- allow(LanItems).to receive(:GetItemUdev).with("ATTR{address}") { "00:01:02:03:04:05" }
-
- # LanItems initialization
- Yast.import "LanItems"
-
- LanItems.Read
- LanItems.FindAndSelect(CURRENT_NAME)
-
- # create the dialog
- @edit_name_dlg = EditNicName.new
-
- allow(LanItems)
- .to receive(:GetNetcardNames)
- .and_return([CURRENT_NAME])
- end
-
- context "when closed without any change" do
- before(:each) do
- # emulate UI work
- allow(UI).to receive(:QueryWidget).with(:dev_name, :Value) { CURRENT_NAME }
- allow(UI).to receive(:QueryWidget).with(:udev_type, :CurrentButton) { :mac }
- end
-
- it "returns current name when used Ok button" do
- allow(UI).to receive(:UserInput) { :ok }
-
- expect((a)edit_name_dlg.run).to be_equal CURRENT_NAME
- end
-
- it "returns current name when used Cancel button" do
- allow(UI).to receive(:UserInput) { :cancel }
-
- expect((a)edit_name_dlg.run).to be_equal CURRENT_NAME
- end
- end
-
- context "when closed after name change" do
- before(:each) do
- # emulate UI work
- allow(UI).to receive(:QueryWidget).with(:dev_name, :Value) { NEW_NAME }
- allow(UI).to receive(:QueryWidget).with(:udev_type, :CurrentButton) { :mac }
- end
-
- it "returns new name when used Ok button" do
- allow(UI).to receive(:UserInput) { :ok }
-
- expect((a)edit_name_dlg.run).to be_equal NEW_NAME
- end
-
- it "returns current name when used Cancel button" do
- allow(UI).to receive(:UserInput) { :cancel }
-
- expect((a)edit_name_dlg.run).to be_equal CURRENT_NAME
- end
-
- it "asks for new user input when name already exists" do
- allow(UI)
- .to receive(:QueryWidget)
- .with(:dev_name, :Value)
- .and_return(EXISTING_NEW_NAME, NEW_NAME)
- allow(UI)
- .to receive(:UserInput)
- .and_return(:ok)
-
- expect(@edit_name_dlg)
- .to receive(:CheckUdevNicName)
- .with(EXISTING_NEW_NAME)
- .and_return(false)
- expect(@edit_name_dlg)
- .to receive(:CheckUdevNicName)
- .with(NEW_NAME)
- .and_return(true)
-
- expect(UI)
- .to receive(:SetFocus)
- expect(LanItems)
- .to receive(:rename)
- .with(NEW_NAME)
-
- expect((a)edit_name_dlg.run).to eql NEW_NAME
- end
- end
- end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/lan_items_helpers_test.rb new/yast2-network-4.1.42/test/lan_items_helpers_test.rb
--- old/yast2-network-4.1.39/test/lan_items_helpers_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/lan_items_helpers_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -376,31 +376,6 @@
end
end
- describe "LanItems#dhcp_ntp_servers" do
- it "lists ntp servers for every device which provides them" do
- result = {
- "eth0" => ["1.0.0.1"],
- "eth1" => ["1.0.0.2", "1.0.0.3"]
- }
-
- allow(Yast::LanItems)
- .to receive(:parse_ntp_servers)
- .and_return([])
- allow(Yast::LanItems)
- .to receive(:parse_ntp_servers)
- .with("eth0")
- .and_return(["1.0.0.1"])
- allow(Yast::LanItems)
- .to receive(:parse_ntp_servers)
- .with("eth1")
- .and_return(["1.0.0.2", "1.0.0.3"])
- allow(Yast::LanItems)
- .to receive(:find_dhcp_ifaces)
- .and_return(["eth0", "eth1", "eth2"])
-
- expect(Yast::LanItems.dhcp_ntp_servers).to eql result
- end
- end
end
describe "LanItems#dhcp_ntp_servers" do
@@ -590,3 +565,107 @@
end
end
end
+
+describe "LanItems renaming methods" do
+ let(:renamed_to) { nil }
+ let(:current) { 0 }
+ let(:item_0) do
+ {
+ "ifcfg" => "eth0",
+ "renamed_to" => renamed_to
+ }
+ end
+
+ before do
+ allow(Yast::LanItems).to receive(:Items).and_return(0 => item_0)
+ Yast::Routing.SetDevices(["eth0"])
+ end
+
+ describe "LanItems#current_name_for" do
+ context "when the LanItem has not been renamed" do
+ it "returns the item name" do
+ expect(Yast::LanItems.current_name_for(0)).to eql "eth0"
+ end
+ end
+
+ context "when the LanItem has been renamed" do
+ let(:renamed_to) { "new1" }
+
+ it "returns the new name" do
+ expect(Yast::LanItems.current_name_for(0)).to eql "new1"
+ end
+ end
+ end
+
+ describe "LanItems#colliding_item" do
+ it "returns nothing if no collision was found" do
+ expect(Yast::LanItems.colliding_item("enp0s3")).to be nil
+ end
+
+ it "returns the Item index which is in collision" do
+ expect(Yast::LanItems.colliding_item("eth0")).to be 0
+ end
+
+ context "if some of the devices were renamed" do
+ let(:renamed_to) { "enp0s3" }
+
+ it "uses the new name to detect the collision" do
+ expect(Yast::LanItems.colliding_item("enp0s3")).to be 0
+ end
+ end
+ end
+
+ describe "LanItems.update_routing_devices!" do
+ let(:renamed_to) { "new1" }
+
+ it "updates the list of Routing devices with current device names" do
+ Yast::LanItems.update_routing_devices!
+ expect(Yast::Routing.devices).to eql([renamed_to])
+ end
+ end
+
+ describe "LanItems.update_routing_devices?" do
+ context "when there are no changes in the device names" do
+ it "returns false" do
+ expect(Yast::LanItems.update_routing_devices?).to eql(false)
+ end
+ end
+
+ context "when some interface have been renaming and Routing device names differs" do
+ let(:renamed_to) { "new1" }
+ it "returns true" do
+ expect(Yast::LanItems.update_routing_devices?).to eql(true)
+ end
+ end
+ end
+
+ describe "LanItems.update_routes" do
+ let(:renamed_to) { "new1" }
+
+ let(:original_routes) do
+ [{
+ "destination" => "192.168.1.0",
+ "device" => "eth0",
+ "gateway" => "10.1.188.1",
+ "netmask" => "255.255.255.0"
+ },
+ {
+ "destination" => "default",
+ "device" => "eth0",
+ "gateway" => "172.24.88.1",
+ "netmask" => "-"
+ }]
+ end
+
+ before do
+ Yast::Routing.Routes = original_routes
+ end
+
+ it "modifies all existent device routes with the current device name" do
+ Yast::LanItems.update_routes!("eth0")
+ routes = Yast::Routing.Routes().select { |r| r["device"] == renamed_to }
+ expect(routes.size).to eql(2)
+ expect(routes.map { |r| r["destination"] }.sort).to eql(["default", "192.168.1.0"].sort)
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/lan_items_rollback_test.rb new/yast2-network-4.1.42/test/lan_items_rollback_test.rb
--- old/yast2-network-4.1.39/test/lan_items_rollback_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/lan_items_rollback_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -29,8 +29,9 @@
end
describe "#Rollback" do
- context "when the current item is committed" do
+ context "when the current item is edited" do
before do
+ Yast::LanItems.operation = :edit
subject.Items = mocked_items
subject.current = 1
end
@@ -41,8 +42,9 @@
end
end
- context "when the current item is uncommitted; without hwinfo" do
+ context "when the current item is added (configured without hwinfo)" do
before do
+ Yast::LanItems.operation = :add
subject.Items = mocked_items
subject.current = 2
end
@@ -53,8 +55,9 @@
end
end
- context "when the current item is uncommitted; with hwinfo" do
+ context "when the current item is edited; (unconfigured but with hwinfo)" do
before do
+ Yast::LanItems.operation = :edit
subject.Items = mocked_items
subject.current = 3
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/lib/network/edit_nic_name_test.rb new/yast2-network-4.1.42/test/lib/network/edit_nic_name_test.rb
--- old/yast2-network-4.1.39/test/lib/network/edit_nic_name_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-network-4.1.42/test/lib/network/edit_nic_name_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -0,0 +1,133 @@
+#!/usr/bin/env rspec
+
+require_relative "../../test_helper"
+
+require "yast"
+require "network/edit_nic_name"
+
+Yast.import "LanItems"
+
+describe Yast::EditNicName do
+ let(:subject) { described_class.new }
+ let(:current_name) { "spec0" }
+ let(:new_name) { "new1" }
+ let(:existing_new_name) { "existing_new_name" }
+ let(:interface_hwinfo) { { "dev_name" => current_name, "mac" => "00:01:02:03:04:05" } }
+
+ describe "#run" do
+ # general mocking stuff is placed here
+ before(:each) do
+ # NetworkInterfaces are too low level. Everything needed should be mocked
+ stub_const("NetworkInterfaces", double(adapt_old_config!: nil))
+
+ # mock devices configuration
+ allow(Yast::LanItems).to receive(:ReadHardware).and_return([interface_hwinfo])
+ allow(Yast::LanItems).to receive(:getNetworkInterfaces).and_return([current_name])
+ allow(Yast::LanItems).to receive(:GetItemUdev) { "" }
+ allow(Yast::LanItems).to receive(:current_udev_name).and_return(current_name)
+ allow(Yast::LanItems).to receive(:GetItemUdev).with("ATTR{address}") { "00:01:02:03:04:05" }
+ allow(Yast::LanItems).to receive(:GetNetcardNames).and_return([current_name])
+
+ # LanItems initialization
+
+ Yast::LanItems.Read
+ Yast::LanItems.FindAndSelect(current_name)
+ end
+
+ context "when closed without any change" do
+ before(:each) do
+ # emulate Yast::UI work
+ allow(Yast::UI).to receive(:QueryWidget).with(:dev_name, :Value) { current_name }
+ allow(Yast::UI).to receive(:QueryWidget).with(:udev_type, :CurrentButton) { :mac }
+ allow(Yast::UI).to receive(:UserInput) { :ok }
+ allow(Yast::LanItems).to receive(:update_item_udev_rule!)
+ end
+
+ it "returns current name when used Ok button" do
+ expect(subject.run).to be_equal current_name
+ end
+
+ it "returns current name when used Cancel button" do
+ allow(Yast::UI).to receive(:UserInput) { :cancel }
+
+ expect(subject.run).to be_equal current_name
+ end
+
+ it "does not execute any other callback" do
+ expect(Yast::Routing).to_not receive(:update_routing_devices!)
+
+ subject.run
+ end
+ end
+
+ context "when name changed" do
+ before(:each) do
+ # emulate Yast::UI work
+ allow(Yast::UI).to receive(:QueryWidget).with(:dev_name, :Value) { new_name }
+ allow(Yast::UI).to receive(:QueryWidget).with(:udev_type, :CurrentButton) { :mac }
+ allow(Yast::UI).to receive(:UserInput) { :ok }
+ allow(Yast::LanItems).to receive(:update_routing_devices!)
+ allow(subject).to receive(:update_routes?).and_return(false)
+ allow(Yast::LanItems).to receive(:update_routes!)
+ end
+
+ context "and closed confirming the changes" do
+ it "returns the new name" do
+ expect(subject.run).to be_equal new_name
+ end
+
+ it "asks for new user input when name already exists" do
+ allow(Yast::UI).to receive(:QueryWidget)
+ .with(:dev_name, :Value).and_return(existing_new_name, new_name)
+ expect(subject).to receive(:CheckUdevNicName).with(existing_new_name).and_return(false)
+ expect(subject).to receive(:CheckUdevNicName).with(new_name).and_return(true)
+ expect(Yast::UI).to receive(:SetFocus)
+ expect(Yast::LanItems).to receive(:rename).with(new_name)
+ subject.run
+ end
+
+ it "updates the Routing devices list with the new name" do
+ expect(Yast::LanItems).to receive(:update_routing_devices!).and_call_original
+ subject.run
+ expect(Yast::Routing.devices).to include(new_name)
+ end
+
+ context "and there are some routes referencing the previous name" do
+ before do
+ allow(Yast::Routing).to receive(:device_routes?).with(current_name).and_return(true)
+ expect(subject).to receive(:update_routes?).with(current_name).and_call_original
+ allow(Yast::LanItems).to receive(:update_routes!).with(current_name)
+ end
+
+ it "asks the user about updating the routes device name" do
+ expect(Yast::Popup).to receive(:YesNoHeadline)
+
+ subject.run
+ end
+
+ it "updates the routes if the user accepts to do it" do
+ expect(Yast::Popup).to receive(:YesNoHeadline).and_return(true)
+ expect(Yast::LanItems).to receive(:update_routes!).with(current_name)
+
+ subject.run
+ end
+
+ it "does not touch the routes if the user does not want to touch them" do
+ expect(Yast::Popup).to receive(:YesNoHeadline).and_return(false)
+ expect(Yast::LanItems).to_not receive(:update_routes!)
+ subject.run
+ end
+ end
+ end
+
+ context "and closed canceling the changes" do
+ it "returns current name when used Cancel button" do
+ allow(Yast::UI).to receive(:UserInput) { :cancel }
+
+ expect(subject.run).to be_equal current_name
+ end
+ end
+
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/lib/y2network/proposal_settings_test.rb new/yast2-network-4.1.42/test/lib/y2network/proposal_settings_test.rb
--- old/yast2-network-4.1.39/test/lib/y2network/proposal_settings_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-network-4.1.42/test/lib/y2network/proposal_settings_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -0,0 +1,300 @@
+#!/usr/bin/env rspec
+
+require_relative "../../test_helper"
+require "y2network/proposal_settings"
+
+describe Y2Network::ProposalSettings do
+ subject { described_class.create_instance }
+ let(:nm_available) { true }
+ let(:feature) { { "network" => { "network_manager" => "always" } } }
+
+ before do
+ allow_any_instance_of(Y2Network::ProposalSettings)
+ .to receive(:network_manager_available?).and_return(nm_available)
+ stub_features(feature)
+ end
+
+ def stub_features(features)
+ Yast.import "ProductFeatures"
+ Yast::ProductFeatures.Import(features)
+ end
+
+ describe ".instance" do
+ context "no instance has been created yet" do
+ before do
+ described_class.instance_variable_set("@instance", nil)
+ end
+
+ it "creates a new instance" do
+ expect(described_class).to receive(:new).and_call_original
+ described_class.instance
+ end
+ end
+
+ context "when a instance has been already created" do
+ before do
+ described_class.instance
+ end
+
+ it "does not create any new instance" do
+ expect(described_class).to_not receive(:new)
+ described_class.instance
+ end
+
+ it "returns the existent instance" do
+ instance = described_class.instance
+ expect(instance.object_id).to eql(described_class.instance.object_id)
+ end
+ end
+ end
+
+ describe ".create_instance" do
+ let(:created_instance) { described_class.create_instance }
+ let(:nm_available) { false }
+
+ it "creates a new network proposal settings instance" do
+ instance = described_class.instance
+ expect(created_instance).to be_a(described_class)
+ expect(created_instance).to_not equal(instance)
+ end
+ end
+
+ describe "#default_backend" do
+ let(:subject) { described_class.create_instance }
+ let(:logger) { double(info: true) }
+ let(:nm_available) { false }
+
+ context "when the NetworkManager package is not available" do
+ it "returns :wicked as the default backend" do
+ expect(subject.default_backend).to eql(:wicked)
+ end
+ end
+
+ context "when the NetworkManager package is available" do
+ let(:nm_available) { true }
+
+ context "and the ProductFeature .network.network_manager is not defined" do
+ context "and neither .network.network_manager_is_default is" do
+ let(:feature) { { "network" => {} } }
+
+ it "returns :wicked as the default backend" do
+ expect(subject.default_backend).to eql(:wicked)
+ end
+ end
+
+ context "but .network.network_manager_is_default is" do
+ let(:feature) { { "network" => { "network_manager_is_default" => true } } }
+
+ it "returns :network_manager as the default backend" do
+ expect(subject.default_backend).to eql(:network_manager)
+ end
+ end
+ end
+
+ context "and the ProductFeature .network.network_manager is 'always'" do
+ it "returns :network_manager as the default backend" do
+ expect(subject.default_backend).to eql(:network_manager)
+ end
+ end
+
+ context "and the ProductFeature .network.network_manager is 'laptop'" do
+ let(:is_laptop) { true }
+ let(:feature) { { "network" => { "network_manager" => "laptop" } } }
+
+ before do
+ allow(Yast::Arch).to receive(:is_laptop).and_return(is_laptop)
+ end
+
+ context "and the machine is a laptop" do
+ it "returns :network_manager as the default backend" do
+ expect(subject.default_backend).to eql(:network_manager)
+ end
+ end
+
+ context "and the machine is not a laptop" do
+ let(:is_laptop) { false }
+ it "returns :wicked as the default backend" do
+ expect(subject.default_backend).to eql(:wicked)
+ end
+ end
+ end
+
+ it "initializes the default network backend from the product control file" do
+ expect(subject.default_backend).to eql(:network_manager)
+ stub_features("network" => { "network_manager" => "" })
+ expect(subject.default_backend).to eql(:wicked)
+ end
+ end
+
+ it "logs which backend has been selected as the default" do
+ allow_any_instance_of(described_class).to receive(:log).and_return(logger)
+ expect(logger).to receive(:info).with(/backend is: wicked/)
+ subject.default_backend
+ end
+ end
+
+ describe "#current_backend" do
+ let(:selected_backend) { :wicked }
+ let(:default_backend) { "wicked_or_nm_based_on_control_file" }
+
+ before do
+ allow(subject).to receive(:default_backend).and_return(default_backend)
+ subject.selected_backend = selected_backend
+ end
+
+ context "when a backend has been selected manually" do
+ it "returns the backend selected manually" do
+ expect(subject.current_backend).to eql(selected_backend)
+ end
+ end
+
+ context "when no backend has been selected manually" do
+ let(:selected_backend) { nil }
+
+ it "returns the default backend" do
+ expect(subject.current_backend).to eql(default_backend)
+ end
+ end
+ end
+
+ describe "#enable_wicked!" do
+ it "adds the wicked package to the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:AddResolvables)
+ .with("network", :package, ["wicked"])
+ subject.enable_wicked!
+ end
+
+ it "removes the NetworkManager package from the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:RemoveResolvables)
+ .with("network", :package, ["NetworkManager"])
+ subject.enable_wicked!
+ end
+
+ it "sets :wicked as the user selected backend" do
+ expect(subject.selected_backend).to be_nil
+ subject.enable_wicked!
+ expect(subject.selected_backend).to eql(:wicked)
+ end
+ end
+
+ describe "#refresh_packages" do
+ let(:backend) { :wicked }
+
+ before do
+ allow(subject).to receive(:current_backend).and_return(backend)
+ end
+
+ context "when :wicked is the current backend" do
+ it "adds the wicked package to the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:AddResolvables)
+ .with("network", :package, ["wicked"])
+ subject.refresh_packages
+ end
+
+ it "removes the NetworkManager package from the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:RemoveResolvables)
+ .with("network", :package, ["NetworkManager"])
+ subject.refresh_packages
+ end
+ end
+
+ context "when :network_manager is the current backend" do
+ let(:backend) { :network_manager }
+
+ it "adds the NetworkManager package to the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:AddResolvables)
+ .with("network", :package, ["NetworkManager"])
+ subject.refresh_packages
+ end
+
+ it "removes the wicked package from the list of resolvables " do
+ expect(Yast::PackagesProposal).to receive(:RemoveResolvables)
+ .with("network", :package, ["wicked"])
+ subject.refresh_packages
+ end
+ end
+ end
+
+ describe "#enable_network_manager!" do
+ before do
+ subject.selected_backend = nil
+ end
+
+ it "sets :network_manager as the user selected backend" do
+ subject.enable_network_manager!
+ expect(subject.selected_backend).to eql(:network_manager)
+ end
+ end
+
+ describe "#network_manager_available?" do
+ let(:package) { instance_double(Y2Packager::Package, status: :available) }
+ let(:packages) { [package] }
+ let(:settings) { described_class.instance }
+
+ before do
+ allow(settings).to receive(:network_manager_available?).and_call_original
+ allow(Y2Packager::Package).to receive(:find).with("NetworkManager")
+ .and_return(packages)
+ end
+
+ context "when there is no NetworkManager package available" do
+ let(:packages) { [] }
+
+ it "returns false" do
+ expect(settings.network_manager_available?).to eql(false)
+ end
+
+ it "logs that the package is no available" do
+ expect(settings.log).to receive(:info).with(/is not available/)
+ settings.network_manager_available?
+ end
+ end
+
+ context "when there are some NetworkManager packages available" do
+ it "returns true" do
+ expect(settings.network_manager_available?).to eql(true)
+ end
+
+ it "logs the status of the NetworkManager package" do
+ expect(settings.log).to receive(:info).with(/status: available/)
+ settings.network_manager_available?
+ end
+ end
+ end
+
+ describe "#network_service" do
+ let(:settings) { described_class.instance }
+ let(:backend) { :wicked }
+ let(:nm_installed) { true }
+
+ before do
+ allow(settings).to receive(:current_backend).and_return(backend)
+ allow(Yast::Package).to receive(:Installed)
+ .with("NetworkManager").and_return(nm_installed)
+ end
+
+ context "when the backend selected is wicked" do
+ it "returns :wicked" do
+ expect(settings.network_service).to eql(:wicked)
+ end
+ end
+
+ context "when the backend selected is NetworkManager" do
+ let(:backend) { :network_manager }
+
+ context "and the NetworkManager package is installed" do
+ it "returns :network_manager" do
+ expect(settings.network_service).to eql(:network_manager)
+ end
+ end
+
+ context "and the NetworkManager package is not installed" do
+ let(:nm_installed) { false }
+
+ it "returns :wicked" do
+ expect(settings.network_service).to eql(:wicked)
+ end
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/network_autoyast_test.rb new/yast2-network-4.1.42/test/network_autoyast_test.rb
--- old/yast2-network-4.1.39/test/network_autoyast_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/network_autoyast_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -408,41 +408,6 @@
)
end
- describe "#item_name" do
- it "returns old name when the device has not been renamed" do
- mock_lan_item
-
- expect(network_autoyast.send(:item_name, 0)).to eql "eth0"
- end
-
- it "returns new name when the device has been renamed" do
- new_name = "new1"
- mock_lan_item(renamed_to: new_name)
-
- expect(network_autoyast.send(:item_name, 0)).to eql new_name
- end
- end
-
- describe "#colliding_item" do
- it "returns nothing if no collision was found" do
- mock_lan_item
-
- expect(network_autoyast.send(:colliding_item, "enp0s3")).to be nil
- end
-
- it "returns device name which is in collision" do
- mock_lan_item
-
- expect(network_autoyast.send(:colliding_item, "eth0")).to be 0
- end
-
- it "returns device name when the device was already renamed before and we new name is in collision" do
- mock_lan_item(renamed_to: "enp0s3")
-
- expect(network_autoyast.send(:colliding_item, "enp0s3")).to be 0
- end
- end
-
describe "#assign_udevs_to_devs" do
Yast.import "LanItems"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-network-4.1.39/test/network_proposal_test.rb new/yast2-network-4.1.42/test/network_proposal_test.rb
--- old/yast2-network-4.1.39/test/network_proposal_test.rb 2019-02-13 09:23:15.000000000 +0100
+++ new/yast2-network-4.1.42/test/network_proposal_test.rb 2019-02-28 17:21:23.000000000 +0100
@@ -20,17 +20,32 @@
end
describe "#make_proposal" do
- let(:using_wicked) { true }
+ let(:settings) { Y2Network::ProposalSettings.create_instance }
+ let(:current_backend) { :wicked }
+ let(:nm_available) { true }
let(:proposal) { subject.make_proposal({}) }
before do
- allow(Yast::NetworkService).to receive(:wicked?).and_return(using_wicked)
+ settings.selected_backend = current_backend
+ allow(settings).to receive(:network_manager_available?).and_return(nm_available)
end
it "returns a hash describing the proposal" do
expect(proposal).to include("label_proposal", "preformatted_proposal", "links")
end
+ context "when NetworkManager is not available" do
+ let(:nm_available) { false }
+
+ it "includes the Yast::Lan proposal summary" do
+ expect(proposal["preformatted_proposal"]).to include("rich_text_summary")
+ end
+
+ it "does not include any link to switch between backends" do
+ expect(proposal["preformatted_proposal"]).to_not match(/.*Using*.*href.*.switch to*./)
+ end
+ end
+
context "when using the wicked backend" do
it "includes the Yast::Lan proposal summary" do
expect(proposal["preformatted_proposal"]).to include("rich_text_summary")
@@ -46,7 +61,7 @@
end
context "when using the NetworkManager backend" do
- let(:using_wicked) { false }
+ let(:current_backend) { :network_manager }
it "does not include the Yast::Lan proposal summary" do
expect(proposal["preformatted_proposal"]).to_not include("rich_text_summary")
@@ -63,6 +78,7 @@
end
describe "#ask_user" do
+ let(:settings) { Y2Network::ProposalSettings.instance }
let(:chosen_id) { "" }
let(:args) do
{
@@ -103,8 +119,8 @@
expect(Yast::WFM).to_not receive(:CallFuntion).with("inst_lan", anything)
end
- it "changes the netwotk backend to wicked" do
- expect(Yast::NetworkService).to receive(:use_wicked)
+ it "changes the network backend to wicked" do
+ expect(settings).to receive(:enable_wicked!)
subject.ask_user(args)
end
@@ -122,7 +138,7 @@
end
it "changes the netwotk backend to NetworkManager" do
- expect(Yast::NetworkService).to receive(:use_network_manager)
+ expect(settings).to receive(:enable_network_manager!)
subject.ask_user(args)
end
1
0
Hello community,
here is the log from the commit of package yast2-registration for openSUSE:Factory checked in at 2019-02-28 21:48:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-registration (Old)
and /work/SRC/openSUSE:Factory/.yast2-registration.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-registration"
Thu Feb 28 21:48:49 2019 rev:32 rq:680134 version:4.1.18
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-registration/yast2-registration.changes 2019-02-24 18:03:38.671769591 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-registration.new.28833/yast2-registration.changes 2019-02-28 21:48:50.633385700 +0100
@@ -1,0 +2,9 @@
+Mon Feb 25 12:32:35 UTC 2019 - lslezak(a)suse.cz
+
+- Better handle the SSL certificates signed by an uknown CA
+ (bsc#1124992)
+ - Display details in a scrollable widget
+ - Display hints how to install the certificate manually
+- 4.1.18
+
+-------------------------------------------------------------------
Old:
----
yast2-registration-4.1.17.tar.bz2
New:
----
yast2-registration-4.1.18.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-registration.spec ++++++
--- /var/tmp/diff_new_pack.E6mZ59/_old 2019-02-28 21:48:51.161385474 +0100
+++ /var/tmp/diff_new_pack.E6mZ59/_new 2019-02-28 21:48:51.161385474 +0100
@@ -17,7 +17,7 @@
Name: yast2-registration
-Version: 4.1.17
+Version: 4.1.18
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -84,6 +84,7 @@
%files
%defattr(-,root,root)
+%{yast_ybindir}/*
%{yast_desktopdir}/*.desktop
%{yast_clientdir}/*.rb
%{yast_ydatadir}/registration
++++++ yast2-registration-4.1.17.tar.bz2 -> yast2-registration-4.1.18.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/package/yast2-registration.changes new/yast2-registration-4.1.18/package/yast2-registration.changes
--- old/yast2-registration-4.1.17/package/yast2-registration.changes 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/package/yast2-registration.changes 2019-02-28 15:18:50.000000000 +0100
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Mon Feb 25 12:32:35 UTC 2019 - lslezak(a)suse.cz
+
+- Better handle the SSL certificates signed by an uknown CA
+ (bsc#1124992)
+ - Display details in a scrollable widget
+ - Display hints how to install the certificate manually
+- 4.1.18
+
+-------------------------------------------------------------------
Mon Feb 18 13:11:12 UTC 2019 - lslezak(a)suse.cz
- Fixed "can't modify frozen String" crash (bsc#1125006)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/package/yast2-registration.spec new/yast2-registration-4.1.18/package/yast2-registration.spec
--- old/yast2-registration-4.1.17/package/yast2-registration.spec 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/package/yast2-registration.spec 2019-02-28 15:18:50.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-registration
-Version: 4.1.17
+Version: 4.1.18
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -84,6 +84,7 @@
%files
%defattr(-,root,root)
+%{yast_ybindir}/*
%{yast_desktopdir}/*.desktop
%{yast_clientdir}/*.rb
%{yast_ydatadir}/registration
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/bin/install_ssl_certificates new/yast2-registration-4.1.18/src/bin/install_ssl_certificates
--- old/yast2-registration-4.1.17/src/bin/install_ssl_certificates 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-registration-4.1.18/src/bin/install_ssl_certificates 2019-02-28 15:18:50.000000000 +0100
@@ -0,0 +1,54 @@
+#! /usr/bin/env ruby
+
+# ------------------------------------------------------------------------------
+# Copyright (c) 2019 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.
+#
+# ------------------------------------------------------------------------------
+#
+
+# This is a helper script which to import the SSL certificates into inst-sys
+# during installation. (But is should work also in installed system.)
+#
+# It is intended for user convenience, this script just call the YaST
+# functions, it not used by YaST itself.
+
+require "English"
+require "yast"
+require "registration/ssl_certificate"
+
+dir = Registration::SslCertificate::INSTSYS_CERT_DIR
+if Dir.empty?(dir)
+ $stderr.puts "ERROR: Empty #{dir} directory, put your SSL certificate there."
+ exit 1
+end
+
+# in installed system just call the update-ca-certificates script
+if ENV["YAST_IS_RUNNING"] != "instsys"
+ puts "Updating the installed SSL certificates..."
+ system("/usr/sbin/update-ca-certificates")
+
+ if $CHILD_STATUS.success?
+ puts "Done"
+ else
+ $stderr.puts "Failed!"
+ end
+
+ exit $CHILD_STATUS.exitstatus
+end
+
+# import into the inst-sys
+puts "Updating the inst-sys SSL certificates..."
+if Registration::SslCertificate.update_instsys_ca
+ puts "Done"
+else
+ $stderr.puts "Failed!"
+ exit 1
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/data/registration/certificate_error.erb new/yast2-registration-4.1.18/src/data/registration/certificate_error.erb
--- old/yast2-registration-4.1.17/src/data/registration/certificate_error.erb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/src/data/registration/certificate_error.erb 2019-02-28 15:18:50.000000000 +0100
@@ -2,15 +2,48 @@
textdomain "registration"
%>
-<%# dialog heading %>
+<%# TRANSLATORS: dialog heading %>
<h2><%= _("Secure Connection Error") %></h2>
<p>
- <%# label followed by error details %>
- <%= _("Details:") %> <%= _(OPENSSL_ERROR_MESSAGES[Storage::SSLErrors.instance.ssl_error_code]) %>
+ <%# TRANSLATORS: label followed by error details %>
+ <%= _("Details:") %> <%= h(@url) %>: <%= h(@msg) %>
</p>
-<%# dialog sub-heading %>
+<%# display a special help with description how to install the certificate manually %>
+<% if error_code == SslErrorCodes::NO_LOCAL_ISSUER_CERTIFICATE %>
+
+<p>
+ <%# TRANSLATORS: error description %>
+ <%= _("The issuer certificate cannot be found, "\
+ "it needs to be installed manually.") %>
+</p>
+
+<p>
+ <ul>
+ <li>
+ <%# TRANSLATORS: %{file} is replaced by the certificate file name %>
+ <%= _("Save the server certificate in PEM format to file %{file}") %
+ { file: "<tt>#{h(SslCertificate::INSTSYS_SERVER_CERT_FILE)}</tt>" } %>
+ </li>
+
+ <li>
+ <%# TRANSLATORS: suggestion for user, followed by a command to run %>
+ <%= _("Run command:") %> <tt><%= h(import_command) %></tt>
+ </li>
+
+ <li>
+ <%# TRANSLATORS: suggestion to run the registration again %>
+ <%= _("Run registration again") %>
+ </li>
+ </ul>
+</p>
+
+<hr>
+
+<% end %>
+
+<%# TRANSLATORS: dialog sub-heading %>
<h3><%= _("Failed Certificate Details") %></h3>
<%= SslCertificateDetails.new(certificate).richtext_summary %>
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/data/registration/certificate_summary.erb new/yast2-registration-4.1.18/src/data/registration/certificate_summary.erb
--- old/yast2-registration-4.1.17/src/data/registration/certificate_summary.erb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/src/data/registration/certificate_summary.erb 2019-02-28 15:18:50.000000000 +0100
@@ -42,7 +42,7 @@
<%# label followed by the certificate serial number (in HEX format, e.g. AB:CD:42:FF...) %>
<b><%= _("Serial Number: ") %></b><%= h(certificate.serial) %><br>
<b><%= _("SHA1 Fingerprint: ") %></b>
- <%= h(certificate.fingerprint(::Registration::Fingerprint::SHA1).value) %>
+ <%= h(certificate.fingerprint(::Registration::Fingerprint::SHA1).value) %><br>
<b><%= _("SHA256 Fingerprint: ") %></b>
<%= h(certificate.fingerprint(::Registration::Fingerprint::SHA256).value) %>
</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/lib/registration/connect_helpers.rb new/yast2-registration-4.1.18/src/lib/registration/connect_helpers.rb
--- old/yast2-registration-4.1.17/src/lib/registration/connect_helpers.rb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/src/lib/registration/connect_helpers.rb 2019-02-28 15:18:50.000000000 +0100
@@ -25,14 +25,16 @@
require "suse/connect"
require "ui/text_helpers"
-require "registration/helpers"
require "registration/exceptions"
-require "registration/storage"
+require "registration/helpers"
require "registration/smt_status"
require "registration/ssl_certificate"
require "registration/ssl_certificate_details"
-require "registration/url_helpers"
+require "registration/ssl_error_codes"
+require "registration/storage"
require "registration/ui/import_certificate_dialog"
+require "registration/ui/failed_certificate_popup"
+require "registration/url_helpers"
module Registration
# FIXME: change to a module and include it in the clients
@@ -41,11 +43,6 @@
extend ::UI::TextHelpers
extend Yast::I18n
- # openSSL error codes for which the import SSL certificate dialog is shown,
- # for the other error codes just the error message is displayed
- # (importing the certificate would not help)
- IMPORT_ERROR_CODES = UI::ImportCertificateDialog::OPENSSL_ERROR_MESSAGES.keys
-
textdomain "registration"
Yast.import "Mode"
@@ -191,9 +188,9 @@
expected_cert_type = Storage::Config.instance.reg_server_cert_fingerprint_type
# in non-AutoYast mode ask the user to import the certificate
- if !Yast::Mode.autoinst && cert && IMPORT_ERROR_CODES.include?(error_code)
+ if !Yast::Mode.autoinst && cert && SslErrorCodes::IMPORT_ERROR_CODES.include?(error_code)
# retry after successfull import
- return true if ask_import_ssl_certificate(cert)
+ return true if ask_import_ssl_certificate(cert, error_code)
# in AutoYast mode check whether the certificate fingerprint match
# the configured value (if present)
elsif Yast::Mode.autoinst && cert && expected_cert_type && !expected_cert_type.empty?
@@ -207,28 +204,21 @@
return true
end
- report_ssl_error(error.message, cert)
+ report_ssl_error(error.message, cert, error_code)
else
# error message
Yast::Report.Error(_("Received SSL Certificate does not match " \
"the expected certificate."))
end
else
- report_ssl_error(error.message, cert)
+ report_ssl_error(error.message, cert, error_code)
end
false
end
- def self.ssl_error_details(cert)
- return "" if cert.nil?
-
- details = SslCertificateDetails.new(cert)
- details.summary
- end
-
- def self.ask_import_ssl_certificate(cert)
+ def self.ask_import_ssl_certificate(cert, error_code)
# run the import dialog, check the user selection
- if UI::ImportCertificateDialog.run(cert) != :import
+ if UI::ImportCertificateDialog.run(cert, error_code) != :import
log.info "Certificate import rejected"
return false
end
@@ -270,20 +260,8 @@
result
end
- def self.report_ssl_error(message, cert)
- # try to use a translatable message first, if not found then use
- # the original error message from openSSL
- error_code = Storage::SSLErrors.instance.ssl_error_code
- msg = UI::ImportCertificateDialog::OPENSSL_ERROR_MESSAGES[error_code]
- msg = msg ? _(msg) : Storage::SSLErrors.instance.ssl_error_msg
- msg = message if msg.nil? || msg.empty?
-
- url = UrlHelpers.registration_url || SUSE::Connect::YaST::DEFAULT_URL
- msg = url + ": " + msg # workaround after string freeze
-
- Yast::Report.Error(
- error_with_details(_("Secure connection error: %s") % msg, ssl_error_details(cert))
- )
+ def self.report_ssl_error(message, cert, error_code)
+ UI::FailedCertificatePopup.show(message, cert, error_code)
end
# Check whether the registration server provides the old NCC API,
@@ -359,7 +337,7 @@
error_msg << msg
end
- private_class_method :report_error, :error_with_details, :ssl_error_details,
- :import_ssl_certificate, :report_ssl_error, :check_smt_api, :handle_network_error
+ private_class_method :report_error, :error_with_details, :import_ssl_certificate,
+ :report_ssl_error, :check_smt_api, :handle_network_error
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/lib/registration/ssl_error_codes.rb new/yast2-registration-4.1.18/src/lib/registration/ssl_error_codes.rb
--- old/yast2-registration-4.1.17/src/lib/registration/ssl_error_codes.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-registration-4.1.18/src/lib/registration/ssl_error_codes.rb 2019-02-28 15:18:50.000000000 +0100
@@ -0,0 +1,56 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) 2019 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.
+#
+# ------------------------------------------------------------------------------
+#
+
+require "yast"
+
+module Registration
+ # This class defines constants and translations for the most common OpenSSL errors
+ # @see https://www.openssl.org/docs/apps/verify.html
+ # @see https://github.com/openssl/openssl/blob/2c75f03b39de2fa7d006bc0f0d7c58235a5…
+ module SslErrorCodes
+ extend Yast::I18n
+ textdomain "registration"
+
+ # "certificate has expired"
+ EXPIRED = 10
+ # "self signed certificate"
+ SELF_SIGNED_CERT = 18
+ # "self signed certificate in certificate chain"
+ SELF_SIGNED_CERT_IN_CHAIN = 19
+ # "unable to get local issuer certificate"
+ NO_LOCAL_ISSUER_CERTIFICATE = 20
+
+ # openSSL error codes for which the import SSL certificate dialog is shown,
+ # for the other error codes just the error message is displayed
+ # (importing the certificate would not help)
+ IMPORT_ERROR_CODES = [
+ SELF_SIGNED_CERT,
+ SELF_SIGNED_CERT_IN_CHAIN
+ ].freeze
+
+ # error code => translatable error message
+ # @note the text messages need to be translated at runtime via _() call
+ # @note we do not translate every possible OpenSSL error message, just the most common ones
+ OPENSSL_ERROR_MESSAGES = {
+ # TRANSLATORS: SSL error message
+ EXPIRED => N_("Certificate has expired"),
+ # TRANSLATORS: SSL error message
+ SELF_SIGNED_CERT => N_("Self signed certificate"),
+ # TRANSLATORS: SSL error message
+ SELF_SIGNED_CERT_IN_CHAIN => N_("Self signed certificate in certificate chain"),
+ # TRANSLATORS: SSL error message
+ NO_LOCAL_ISSUER_CERTIFICATE => N_("Unable to get local issuer certificate")
+ }.freeze
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/lib/registration/ui/failed_certificate_popup.rb new/yast2-registration-4.1.18/src/lib/registration/ui/failed_certificate_popup.rb
--- old/yast2-registration-4.1.17/src/lib/registration/ui/failed_certificate_popup.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-registration-4.1.18/src/lib/registration/ui/failed_certificate_popup.rb 2019-02-28 15:18:50.000000000 +0100
@@ -0,0 +1,90 @@
+# ------------------------------------------------------------------------------
+# Copyright (c) 2019 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.
+#
+# ------------------------------------------------------------------------------
+#
+
+require "erb"
+require "yast"
+
+require "registration/helpers"
+require "registration/ssl_certificate"
+require "registration/ssl_certificate_details"
+require "registration/ssl_error_codes"
+require "registration/url_helpers"
+
+module Registration
+ module UI
+ # This class displays a popup with a SSL certificate error
+ class FailedCertificatePopup
+ include Yast::I18n
+ include ERB::Util
+
+ attr_accessor :certificate, :error_code, :message
+
+ Yast.import "Report"
+ Yast.import "Stage"
+ Yast.import "Directory"
+
+ # create and display the error popup
+ # @param msg [String,nil] the original OpenSSL error message
+ # (used as a fallback when a translated message is not found)
+ # @param cert [Registration::SslCertitificate] certificate to display
+ # @param error_code [Integer] OpenSSL error code
+ def self.show(msg, cert, error_code)
+ popup = FailedCertificatePopup.new(msg, cert, error_code)
+ popup.show
+ end
+
+ # the constructor
+ # @param msg [String,nil] the original OpenSSL error message
+ # (used as a fallback when a translated message is not found)
+ # @param cert [Registration::SslCertitificate] certificate to display
+ # @param error_code [Integer] OpenSSL error code
+ def initialize(msg, cert, error_code)
+ textdomain "registration"
+
+ @certificate = cert
+ @message = msg
+ @error_code = error_code
+ end
+
+ # display the popup and wait for clicking the [OK] button
+ def show
+ # this uses a RichText message format
+ Yast::Report.LongError(ssl_error_message)
+ end
+
+ private
+
+ # Build the message displayed in the popup
+ # @return [String] message in RichText format
+ def ssl_error_message
+ # try to use a translatable message first, if not found then use
+ # the original error message from openSSL
+ @url = UrlHelpers.registration_url || SUSE::Connect::YaST::DEFAULT_URL
+ @msg = _(SslErrorCodes::OPENSSL_ERROR_MESSAGES[error_code]) || message
+
+ Helpers.render_erb_template("certificate_error.erb", binding)
+ end
+
+ # the command which needs to be called to import the SSL certificate
+ # @return [String] command
+ def import_command
+ if Yast::Stage.initial
+ File.join(Yast::Directory.bindir, "install_ssl_certificates")
+ else
+ "update-ca-certificates"
+ end
+ end
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/src/lib/registration/ui/import_certificate_dialog.rb new/yast2-registration-4.1.18/src/lib/registration/ui/import_certificate_dialog.rb
--- old/yast2-registration-4.1.17/src/lib/registration/ui/import_certificate_dialog.rb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/src/lib/registration/ui/import_certificate_dialog.rb 2019-02-28 15:18:50.000000000 +0100
@@ -1,31 +1,23 @@
+require "erb"
require "yast"
require "registration/fingerprint"
require "registration/ssl_certificate_details"
+require "registration/ssl_error_codes"
+require "registration/url_helpers"
module Registration
module UI
# this class displays and runs the dialog for importing a SSL certificate
class ImportCertificateDialog
+ include ERB::Util
include Yast::Logger
include Yast::I18n
extend Yast::I18n
include Yast::UIShortcuts
- attr_accessor :certificate
-
- # error code => translatable error message
- # @see https://www.openssl.org/docs/apps/verify.html
- # @note the text messages need to be translated at runtime via _() call
- OPENSSL_ERROR_MESSAGES = {
- # SSL error message
- 10 => N_("Certificate has expired"),
- # SSL error message
- 18 => N_("Self signed certificate"),
- # SSL error message
- 19 => N_("Self signed certificate in certificate chain")
- }.freeze
+ attr_accessor :certificate, :error_code
Yast.import "UI"
Yast.import "Label"
@@ -33,16 +25,18 @@
# create a new dialog for importing a SSL certificate and run it
# @param cert [Registration::SslCertitificate] certificate to display
# @return [Symbol] user input (:import, :cancel)
- def self.run(cert)
- dialog = ImportCertificateDialog.new(cert)
+ def self.run(cert, error_code)
+ dialog = ImportCertificateDialog.new(cert, error_code)
dialog.run
end
# the constructor
# @param cert [Registration::SslCertitificate] certificate to display
- def initialize(cert)
+ # @param error_code [Integer] OpenSSL error code
+ def initialize(cert, error_code)
textdomain "registration"
@certificate = cert
+ @error_code = error_code
end
# display the dialog and wait for a button click
@@ -89,7 +83,7 @@
hide_help = displayinfo["TextMode"] && displayinfo["Width"] < 105
window_height = displayinfo["Height"]
- window_height = 25 if window_height > 25
+ window_height = 26 if window_height > 26
HBox(
VSpacing(window_height),
@@ -111,8 +105,14 @@
# render Richtext description with the certificate details
def certificate_description
+ msg = _(SslErrorCodes::OPENSSL_ERROR_MESSAGES[error_code])
+ url = UrlHelpers.registration_url || SUSE::Connect::YaST::DEFAULT_URL
details = SslCertificateDetails.new(certificate)
- details.richtext_summary
+
+ "<h2>#{_("Secure Connection Error")}</h2>\n" \
+ "<p>#{_("Details:")} #{h(url)}: #{h(msg)}</p>\n" \
+ "<h3>#{_("Failed Certificate Details")}</h3>\n" +
+ details.richtext_summary
end
# inline help text displayed in the import dialog
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/test/import_certificate_dialog_test.rb new/yast2-registration-4.1.18/test/import_certificate_dialog_test.rb
--- old/yast2-registration-4.1.17/test/import_certificate_dialog_test.rb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/test/import_certificate_dialog_test.rb 2019-02-28 15:18:50.000000000 +0100
@@ -5,6 +5,7 @@
describe Registration::UI::ImportCertificateDialog do
describe ".run" do
it "displays the certificate details and returns the user input" do
+ allow(Registration::UrlHelpers).to receive(:registration_url)
# generic UI mocks
expect(Yast::UI).to receive(:CloseDialog)
# "Cancel" button must be the default
@@ -25,7 +26,11 @@
end
cert = Registration::SslCertificate.load_file(fixtures_file("test.pem"))
- expect(Registration::UI::ImportCertificateDialog.run(cert)).to eq(:import)
+ expect(
+ Registration::UI::ImportCertificateDialog.run(
+ cert, Registration::SslErrorCodes::SELF_SIGNED_CERT
+ )
+ ).to eq(:import)
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/test/registration/ui/failed_certificate_popup_test.rb new/yast2-registration-4.1.18/test/registration/ui/failed_certificate_popup_test.rb
--- old/yast2-registration-4.1.17/test/registration/ui/failed_certificate_popup_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-registration-4.1.18/test/registration/ui/failed_certificate_popup_test.rb 2019-02-28 15:18:50.000000000 +0100
@@ -0,0 +1,67 @@
+#!/usr/bin/env rspec
+# ------------------------------------------------------------------------------
+# Copyright (c) 2018 SUSE LLC, All Rights Reserved.
+#
+# 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.
+# ------------------------------------------------------------------------------
+
+require_relative "../../spec_helper"
+require "registration/ui/failed_certificate_popup"
+
+describe Registration::UI::FailedCertificatePopup do
+
+ let(:ssl_error) do
+ "SSL_connect returned=1 errno=0 state=error: certificate verify failed " \
+ "(unable to get local issuer certificate)"
+ end
+
+ let(:error_code) { Registration::SslErrorCodes::NO_LOCAL_ISSUER_CERTIFICATE }
+
+ let(:ssl_cert) do
+ Registration::SslCertificate.load_file(fixtures_file("test.pem"))
+ end
+
+ subject do
+ Registration::UI::FailedCertificatePopup.new(ssl_error, ssl_cert, error_code)
+ end
+
+ before do
+ allow(Yast::Report).to receive(:LongError)
+ allow(Yast::Stage).to receive(:initial).and_return(false)
+ end
+
+ # the instance method
+ describe "#show" do
+ it "displays the certificate details" do
+ expect(Yast::Report).to receive(:LongError).with(/Organization \(O\): .*WebYaST/)
+ subject.show
+ end
+
+ it "displays the certificate import hints" do
+ expect(Yast::Report).to receive(:LongError)
+ .with(/Save the server certificate in PEM format to file/)
+ subject.show
+ end
+
+ it "suggests to call the install_ssl_certificates script in inst-sys" do
+ expect(Yast::Stage).to receive(:initial).and_return(true)
+ expect(Yast::Report).to receive(:LongError)
+ .with(/install_ssl_certificates/)
+ subject.show
+ end
+ end
+
+ # the class method
+ describe ".show" do
+ it "displays the failed certificate popup" do
+ expect_any_instance_of(Registration::UI::FailedCertificatePopup).to receive(:show)
+ Registration::UI::FailedCertificatePopup.show(ssl_error, ssl_cert, error_code)
+ end
+ end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/test/registration/ui/not_installed_products_dialog.rb new/yast2-registration-4.1.18/test/registration/ui/not_installed_products_dialog.rb
--- old/yast2-registration-4.1.17/test/registration/ui/not_installed_products_dialog.rb 2019-02-19 16:20:08.000000000 +0100
+++ new/yast2-registration-4.1.18/test/registration/ui/not_installed_products_dialog.rb 1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-#!/usr/bin/env rspec
-# ------------------------------------------------------------------------------
-# Copyright (c) 2018 SUSE LLC, All Rights Reserved.
-#
-# 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.
-# ------------------------------------------------------------------------------
-
-require_relative "../../spec_helper"
-require "registration/ui/not_installed_products_dialog"
-
-describe Registration::UI::NotInstalledProductsDialog do
- describe "#run" do
- before do
- allow(Yast::UI).to receive(:OpenDialog)
- allow(Yast::UI).to receive(:CloseDialog)
- allow(Yast::UI).to receive(:SetFocus)
-
- allow(Yast::Popup).to receive(:Feedback).and_yield
- allow(subject).to receive(:handle_dialog)
-
- # the translated strings are frozen
- allow(subject).to receive(:_), &:freeze
- end
-
- context "when there is a registered but not installed product" do
- before do
- allow(Registration::Addon).to receive(:registered_not_installed).and_return(
- [
- double(name: "not_installed_product")
- ]
- )
- end
-
- it "displays a product summary popup" do
- expect(Yast::UI).to receive(:OpenDialog) do |_opts, content|
- # find the RichText widget in the content
- term = content.nested_find do |t|
- t.respond_to?(:value) && t.value == :RichText
- end
-
- expect(term.params[1]).to match(/registered but not installed: .*not_installed_product/)
- end
-
- subject.run
- end
- end
- end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-registration-4.1.17/test/registration/ui/not_installed_products_dialog_test.rb new/yast2-registration-4.1.18/test/registration/ui/not_installed_products_dialog_test.rb
--- old/yast2-registration-4.1.17/test/registration/ui/not_installed_products_dialog_test.rb 1970-01-01 01:00:00.000000000 +0100
+++ new/yast2-registration-4.1.18/test/registration/ui/not_installed_products_dialog_test.rb 2019-02-28 15:18:50.000000000 +0100
@@ -0,0 +1,54 @@
+#!/usr/bin/env rspec
+# ------------------------------------------------------------------------------
+# Copyright (c) 2018 SUSE LLC, All Rights Reserved.
+#
+# 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.
+# ------------------------------------------------------------------------------
+
+require_relative "../../spec_helper"
+require "registration/ui/not_installed_products_dialog"
+
+describe Registration::UI::NotInstalledProductsDialog do
+ describe "#run" do
+ before do
+ allow(Yast::UI).to receive(:OpenDialog)
+ allow(Yast::UI).to receive(:CloseDialog)
+ allow(Yast::UI).to receive(:SetFocus)
+
+ allow(Yast::Popup).to receive(:Feedback).and_yield
+ allow(subject).to receive(:handle_dialog)
+
+ # the translated strings are frozen
+ allow(subject).to receive(:_), &:freeze
+ end
+
+ context "when there is a registered but not installed product" do
+ before do
+ allow(Registration::Addon).to receive(:registered_not_installed).and_return(
+ [
+ double(name: "not_installed_product")
+ ]
+ )
+ end
+
+ it "displays a product summary popup" do
+ expect(Yast::UI).to receive(:OpenDialog) do |_opts, content|
+ # find the RichText widget in the content
+ term = content.nested_find do |t|
+ t.respond_to?(:value) && t.value == :RichText
+ end
+
+ expect(term.params[1]).to match(/registered but not installed: .*not_installed_product/)
+ end
+
+ subject.run
+ end
+ end
+ end
+end
1
0
Hello community,
here is the log from the commit of package yast2-country for openSUSE:Factory checked in at 2019-02-28 21:48:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-country (Old)
and /work/SRC/openSUSE:Factory/.yast2-country.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-country"
Thu Feb 28 21:48:46 2019 rev:200 rq:680111 version:4.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-country/yast2-country.changes 2019-02-24 18:02:36.067790932 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-country.new.28833/yast2-country.changes 2019-02-28 21:48:46.765387351 +0100
@@ -1,0 +2,8 @@
+Thu Feb 28 09:28:43 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Fix OS detection and use correct keyboard file for opensuse
+ (bsc#1124921).
+- Remove incompatible Lithuanian layout from opensuse file.
+- 4.1.9
+
+-------------------------------------------------------------------
Old:
----
yast2-country-4.1.8.tar.bz2
New:
----
yast2-country-4.1.9.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-country.spec ++++++
--- /var/tmp/diff_new_pack.ptU8zG/_old 2019-02-28 21:48:47.397387082 +0100
+++ /var/tmp/diff_new_pack.ptU8zG/_new 2019-02-28 21:48:47.409387076 +0100
@@ -17,7 +17,7 @@
Name: yast2-country
-Version: 4.1.8
+Version: 4.1.9
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-country-4.1.8.tar.bz2 -> yast2-country-4.1.9.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-country-4.1.8/keyboard/src/data/keyboard_raw.ycp new/yast2-country-4.1.9/keyboard/src/data/keyboard_raw.ycp
--- old/yast2-country-4.1.8/keyboard/src/data/keyboard_raw.ycp 2019-02-18 12:44:15.000000000 +0100
+++ new/yast2-country-4.1.9/keyboard/src/data/keyboard_raw.ycp 2019-02-28 13:33:14.000000000 +0100
@@ -452,7 +452,7 @@
// keyboard layout
_("Lithuanian"),
$[
- "pc104" : $[ "ncurses": "lt.baltic.map.gz"],
+ "pc104" : $[ "ncurses": "lt.map.gz"],
"macintosh" : $[ "ncurses": "mac-us.map.gz"],
"type4" : $[ "ncurses": "sunkeymap.map.gz"],
"type5" : $[ "ncurses": "sunkeymap.map.gz"],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-country-4.1.8/keyboard/src/modules/Keyboard.rb new/yast2-country-4.1.9/keyboard/src/modules/Keyboard.rb
--- old/yast2-country-4.1.8/keyboard/src/modules/Keyboard.rb 2019-02-18 12:44:15.000000000 +0100
+++ new/yast2-country-4.1.9/keyboard/src/modules/Keyboard.rb 2019-02-28 13:33:14.000000000 +0100
@@ -1416,10 +1416,10 @@
# Keyboards map
#
- # The map can be read from two different files:
+ # The map can be read from two different files, see {#keyboard_file}:
#
- # * `keyboard_raw_ID.ycp` where ID is the distribution identifier (as
- # specified in /etc/os-release). For example, `keyboard_raw_opensuse.ycp`.
+ # * `keyboard_raw_opensuse.ycp` when it is an opensuse distribution (according
+ # to the distribution id specified in /etc/os-release).
# * `keyboard_raw.ycp` as a fallback.
#
# @example Keyboards map format
@@ -1442,13 +1442,23 @@
#
# @return [Hash] Keyboards map. See the example for content details.
def all_keyboards
- content = SCR.Read(path(".target.yast2"), "keyboard_raw_#{OSRelease.id}.ycp")
- content ||= SCR.Read(path(".target.yast2"), "keyboard_raw.ycp")
+ content = SCR.Read(path(".target.yast2"), keyboard_file)
# eval is necessary for translating the texts needed to be translated
content ? Builtins.eval(content) : {}
end
+ # Keyboard file to use depending on the distribution
+ #
+ # @return [String]
+ def keyboard_file
+ if OSRelease.id.match?(/opensuse/i)
+ "keyboard_raw_opensuse.ycp"
+ else
+ "keyboard_raw.ycp"
+ end
+ end
+
# String to specify all the relevant devices in a loadkeys command
#
# It includes all tty devices (bsc#1010938) except those representing
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-country-4.1.8/keyboard/test/keyboard_test.rb new/yast2-country-4.1.9/keyboard/test/keyboard_test.rb
--- old/yast2-country-4.1.8/keyboard/test/keyboard_test.rb 2019-02-18 12:44:15.000000000 +0100
+++ new/yast2-country-4.1.9/keyboard/test/keyboard_test.rb 2019-02-28 13:33:14.000000000 +0100
@@ -26,7 +26,7 @@
describe "Keyboard" do
let(:udev_file) { "/usr/lib/udev/rules.d/70-installation-keyboard.rules" }
- let(:os_release_id) { "opensuse" }
+ let(:os_release_id) { "opensuse-leap" }
let(:mode) { "normal" }
let(:stage) { "normal" }
@@ -76,7 +76,7 @@
let(:new_lang) { "spanish" }
it "writes the configuration" do
- expect(WFM).to receive(:Execute).with(path(".local.bash_output"),
+ expect(WFM).to receive(:Execute).with(path(".local.bash_output"),
"/usr/bin/systemd-firstboot --root /mnt --keymap es").and_return("exit" => 0)
expect(AsciiFile).to receive(:AppendLine).with(anything, ["Keytable:", "es.map.gz"])
@@ -638,7 +638,6 @@
let(:chroot) { "spanish" }
let(:mode) { "normal" }
let(:stage) { "normal" }
- let(:os_release_id) { "sles" }
let(:kb_model) { "macintosh" }
before { allow(Yast::OSRelease).to receive(:id).and_return(os_release_id) }
@@ -650,19 +649,23 @@
Keyboard.kb_model = old_kb_model
end
- it "returns generic version of the keyboard map" do
- reduced_db = Keyboard.get_reduced_keyboard_db
- expect(reduced_db["russian"].last["ncurses"])
- .to eq("mac-us.map.gz")
+ context "when using an opensuse product" do
+ let(:os_release_id) { "opensuse-leap" }
+
+ it "returns the opensuse version of the keyboard map" do
+ reduced_db = Keyboard.get_reduced_keyboard_db
+ expect(reduced_db["russian"].last["ncurses"])
+ .to eq("us-mac.map.gz")
+ end
end
- context "when using a product with an specific keyboard map" do
- let(:os_release_id) { "opensuse" }
+ context "when not using an opensuse product" do
+ let(:os_release_id) { "sles" }
- it "returns the specific version of the keyboard map" do
+ it "returns generic version of the keyboard map" do
reduced_db = Keyboard.get_reduced_keyboard_db
expect(reduced_db["russian"].last["ncurses"])
- .to eq("us-mac.map.gz")
+ .to eq("mac-us.map.gz")
end
end
end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-country-4.1.8/package/yast2-country.changes new/yast2-country-4.1.9/package/yast2-country.changes
--- old/yast2-country-4.1.8/package/yast2-country.changes 2019-02-18 12:44:15.000000000 +0100
+++ new/yast2-country-4.1.9/package/yast2-country.changes 2019-02-28 13:33:14.000000000 +0100
@@ -1,4 +1,12 @@
-------------------------------------------------------------------
+Thu Feb 28 09:28:43 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Fix OS detection and use correct keyboard file for opensuse
+ (bsc#1124921).
+- Remove incompatible Lithuanian layout from opensuse file.
+- 4.1.9
+
+-------------------------------------------------------------------
Mon Feb 18 11:36:47 UTC 2019 - snwint(a)suse.com
- fix timezone setting when switching utc/local time (bsc#1087228)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-country-4.1.8/package/yast2-country.spec new/yast2-country-4.1.9/package/yast2-country.spec
--- old/yast2-country-4.1.8/package/yast2-country.spec 2019-02-18 12:44:15.000000000 +0100
+++ new/yast2-country-4.1.9/package/yast2-country.spec 2019-02-28 13:33:14.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-country
-Version: 4.1.8
+Version: 4.1.9
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
1
0
Hello community,
here is the log from the commit of package libstorage-ng for openSUSE:Factory checked in at 2019-02-28 21:48:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libstorage-ng (Old)
and /work/SRC/openSUSE:Factory/.libstorage-ng.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libstorage-ng"
Thu Feb 28 21:48:43 2019 rev:43 rq:680070 version:4.1.95
Changes:
--------
--- /work/SRC/openSUSE:Factory/libstorage-ng/libstorage-ng.changes 2019-02-24 18:03:44.847767486 +0100
+++ /work/SRC/openSUSE:Factory/.libstorage-ng.new.28833/libstorage-ng.changes 2019-02-28 21:48:43.921388566 +0100
@@ -1,0 +2,45 @@
+Thu Feb 28 09:32:25 UTC 2019 - aschnell(a)suse.com
+
+- merge gh#openSUSE/libstorage-ng#620
+- extended documentation
+- 4.1.95
+
+--------------------------------------------------------------------
+Wed Feb 27 13:28:44 UTC 2019 - aschnell(a)suse.com
+
+- merge gh#openSUSE/libstorage-ng#619
+- disable parted-sector-bug workaround on virtio-blk DASDs
+ (bsc#1112037)
+- avoid empty nodes in mockup files
+- extended testsuite helper TsCmpActiongraph
+- added unit tests
+- throw exception based on Exception class
+- enable verbose output of checks during build
+- 4.1.94
+
+--------------------------------------------------------------------
+Mon Feb 25 15:58:33 UTC 2019 - aschnell(a)suse.com
+
+- merge gh#openSUSE/libstorage-ng#618
+- updated pot and po files
+- 4.1.93
+
+--------------------------------------------------------------------
+Mon Feb 25 12:58:38 UTC 2019 - aschnell(a)suse.com
+
+- merge gh#openSUSE/libstorage-ng#617
+- extended parser for lvs command
+- added function to join Texts
+- added unit tests
+- use callback to report unsupported logical volumes (bsc#1099744)
+- coding style
+- allow to ignore errors during in probe utility
+- consistent message style
+- added function to join names of block devices
+- improved messages for creating volume groups and mds
+- consistent naming style
+- use new join function in message about deleting filesystems
+- fixed typo
+- 4.1.92
+
+--------------------------------------------------------------------
Old:
----
libstorage-ng-4.1.91.tar.xz
New:
----
libstorage-ng-4.1.95.tar.xz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ libstorage-ng.spec ++++++
--- /var/tmp/diff_new_pack.2YcRUW/_old 2019-02-28 21:48:45.257387995 +0100
+++ /var/tmp/diff_new_pack.2YcRUW/_new 2019-02-28 21:48:45.277387987 +0100
@@ -18,7 +18,7 @@
%define libname %{name}1
Name: libstorage-ng
-Version: 4.1.91
+Version: 4.1.95
Release: 0
Summary: Library for storage management
License: GPL-2.0-only
@@ -160,7 +160,7 @@
make %{?_smp_mflags}
%check
-make %{?_smp_mflags} check LOCALEDIR=%{buildroot}%{_datadir}/locale
+make %{?_smp_mflags} check VERBOSE=1 LOCALEDIR=%{buildroot}%{_datadir}/locale
%install
%make_install
++++++ libstorage-ng-4.1.91.tar.xz -> libstorage-ng-4.1.95.tar.xz ++++++
++++ 23047 lines of diff (skipped)
1
0
Hello community,
here is the log from the commit of package yast2-users for openSUSE:Factory checked in at 2019-02-28 21:48:37
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-users (Old)
and /work/SRC/openSUSE:Factory/.yast2-users.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-users"
Thu Feb 28 21:48:37 2019 rev:218 rq:680051 version:4.1.9
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-users/yast2-users.changes 2019-02-24 18:02:32.159792265 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-users.new.28833/yast2-users.changes 2019-02-28 21:48:38.961390684 +0100
@@ -1,0 +2,7 @@
+Wed Feb 27 14:32:46 UTC 2019 - mvidner(a)suse.com
+
+- Delete remaining dead code for encrypted homes
+ (bsc#1127138, fate#323541).
+- 4.1.9
+
+-------------------------------------------------------------------
Old:
----
yast2-users-4.1.8.tar.bz2
New:
----
yast2-users-4.1.9.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-users.spec ++++++
--- /var/tmp/diff_new_pack.nKicRs/_old 2019-02-28 21:48:39.493390457 +0100
+++ /var/tmp/diff_new_pack.nKicRs/_new 2019-02-28 21:48:39.497390455 +0100
@@ -17,7 +17,7 @@
Name: yast2-users
-Version: 4.1.8
+Version: 4.1.9
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
++++++ yast2-users-4.1.8.tar.bz2 -> yast2-users-4.1.9.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/package/yast2-users.changes new/yast2-users-4.1.9/package/yast2-users.changes
--- old/yast2-users-4.1.8/package/yast2-users.changes 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/package/yast2-users.changes 2019-02-28 09:56:24.000000000 +0100
@@ -1,4 +1,11 @@
-------------------------------------------------------------------
+Wed Feb 27 14:32:46 UTC 2019 - mvidner(a)suse.com
+
+- Delete remaining dead code for encrypted homes
+ (bsc#1127138, fate#323541).
+- 4.1.9
+
+-------------------------------------------------------------------
Mon Feb 18 11:22:24 CET 2019 - schubi(a)suse.de
- Fixed console warning produced by Users.pm module.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/package/yast2-users.spec new/yast2-users-4.1.9/package/yast2-users.spec
--- old/yast2-users-4.1.8/package/yast2-users.spec 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/package/yast2-users.spec 2019-02-28 09:56:24.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-users
-Version: 4.1.8
+Version: 4.1.9
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/src/include/users/widgets.rb new/yast2-users-4.1.9/src/include/users/widgets.rb
--- old/yast2-users-4.1.8/src/include/users/widgets.rb 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/src/include/users/widgets.rb 2019-02-28 09:56:24.000000000 +0100
@@ -1143,10 +1143,6 @@
no_home = false
# check if dir exists with this owner
stat = Convert.to_map(SCR.Read(path(".target.stat"), home))
- crypted_img = UsersRoutines.CryptedImagePath(username)
- if crypted_img != "" # check crypted dir image
- stat = Convert.to_map(SCR.Read(path(".target.stat"), crypted_img))
- end
if type == "ldap" && !Ldap.file_server ||
Ops.get_integer(stat, "uid", -1) != uid
no_home = true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/src/modules/Users.pm new/yast2-users-4.1.9/src/modules/Users.pm
--- old/yast2-users-4.1.8/src/modules/Users.pm 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/src/modules/Users.pm 2019-02-28 09:56:24.000000000 +0100
@@ -4093,17 +4093,6 @@
return $ret;
}
-# Remove crypted direcotries - because of 'cryptconfig pm-disable' call, this
-# must be done when user is still known to PAM...
-sub DeleteCryptedHomes {
-
- my $ret = 1;
- foreach my $home (keys %removed_homes) {
- $ret = $ret && UsersRoutines->DeleteCryptedHome ($home, $removed_homes{$home});
- };
- return $ret;
-}
-
##------------------------------------
# 1. remove home directories,
# 2. execute USERDEL_POSTCMD scripts for deleted local/system users
@@ -4448,13 +4437,6 @@
$plugin_error = GetPluginError ($args, $result);
}
}
- # remove the crypted directories now, so cryptconfig still knows them
- if (!DeleteCryptedHomes ()) {
- # error popup
- $ret = __("An error occurred while removing users.");
- Report->Error ($ret);
- return $ret;
- }
# -------------------------------------- write /etc/passwd
if ($plugin_error eq "" && !WritePasswd ()) {
$ret = Message->ErrorWritingFile ("$base_directory/passwd");
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/src/modules/UsersLDAP.pm new/yast2-users-4.1.9/src/modules/UsersLDAP.pm
--- old/yast2-users-4.1.8/src/modules/UsersLDAP.pm 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/src/modules/UsersLDAP.pm 2019-02-28 09:56:24.000000000 +0100
@@ -1422,7 +1422,6 @@
else {
if ($server && $delete_home) {
UsersRoutines->DeleteHome ($home);
- UsersRoutines->DeleteCryptedHome ($home, $org_username);
}
y2usernote ("LDAP user '$username' was deleted.");
}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/src/modules/UsersRoutines.pm new/yast2-users-4.1.9/src/modules/UsersRoutines.pm
--- old/yast2-users-4.1.8/src/modules/UsersRoutines.pm 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/src/modules/UsersRoutines.pm 2019-02-28 09:56:24.000000000 +0100
@@ -37,7 +37,6 @@
##------------------- global imports
YaST::YCP::Import ("FileUtils");
-YaST::YCP::Import ("Pam");
YaST::YCP::Import ("Report");
YaST::YCP::Import ("SCR");
YaST::YCP::Import ("String");
@@ -45,24 +44,6 @@
##------------------------------------
##------------------- global variables
-# path to cryptconfig
-my $cryptconfig = "/usr/sbin/cryptconfig";
-
-# path to pam_mount configuration file
-my $pam_mount_path = "/etc/security/pam_mount.conf.xml";
-
-# 'volume' information from pam_mount (info about crypted homes)
-my $pam_mount = undef;
-
-# owners of img files
-my $img2user = undef;
-
-# owners of key files
-my $key2user = undef;
-
-# could we use pam_mount? currntly not if fingerprint dev is in use (bnc#390810)
-my $crypted_homes_enabled = undef;
-
# path to btrfs
my $btrfs = "/usr/sbin/btrfs";
@@ -313,170 +294,5 @@
return 1;
}
-##------------------------------------
-# Delete the crypted directory
-# @param home path to home directory
-# @param user name (to know the key and img name)
-# @return success
-BEGIN { $TYPEINFO{DeleteCryptedHome} = ["function", "boolean", "string", "string"];}
-sub DeleteCryptedHome {
-
- my $self = shift;
- my $home = shift;
- my $username = shift;
- my $ret = 1;
-
- return 0 if ((not defined $home) || (not defined $username));
-
- my $img_path = $self->CryptedImagePath ($username);
- my $key_path = $self->CryptedKeyPath ($username);
-
- if (%{SCR->Read (".target.stat", $key_path)}) {
- my $cmd = "/usr/bin/rm -rf '".String->Quote($key_path)."'";
- my $out = SCR->Execute (".target.bash_output", $cmd);
- if (($out->{"exit"} || 0) ne 0) {
- y2error ("error while removing $key_path file: ", $out->{"stderr"} || "");
- $ret = 0;
- }
- y2usernote ("Encrypted directory key removed: '$cmd'");
- }
- if (%{SCR->Read (".target.stat", $img_path)}) {
- my $cmd = "/usr/bin/rm -rf '".String->Quote($img_path)."'";
- my $out = SCR->Execute (".target.bash_output", $cmd);
- if (($out->{"exit"} || 0) ne 0) {
- y2error ("error while removing $img_path file: ", $out->{"stderr"} || "");
- $ret = 0;
- }
- y2usernote ("Encrypted directory image removed: '$cmd'");
- $cmd = "$cryptconfig pm-disable '".String->Quote($username)."'";
- $out = SCR->Execute (".target.bash_output", $cmd);
- if ($out->{"exit"} ne 0 && $out->{"stderr"}) {
- y2error ("error calling $cmd: ", $out->{"stderr"});
- Report->Error ($out->{"stderr"});
- $ret = 0;
- }
- y2usernote ("Disabled pam_mount for $username: '$cmd'");
- }
- return $ret;
-}
-
-##------------------------------------
-# Return size of given file in MB (rounded down)
-# @param path to file
-# @return size
-BEGIN { $TYPEINFO{FileSizeInMB} = ["function", "string", "string"];}
-sub FileSizeInMB {
- my $self = shift;
- my $file = shift;
-
- return "0" if not defined $file;
-
- my $stat = SCR->Read (".target.stat", $file);
-
- my $size = $stat->{"size"};
- return "0" if not $size;
-
- my $mb = 1024 * 1024;
- return ($size < $mb) ? "1" : sprintf ("%i", $size / $mb);
-}
-
-# Read the 'volume' data from pam_mount config file and fill in the global map
-BEGIN { $TYPEINFO{ReadCryptedHomesInfo} = ["function", "boolean"];}
-sub ReadCryptedHomesInfo {
-
- return 1 if (defined $pam_mount);
- y2milestone ("pam_mount not read yet, doing it now");
- if (FileUtils->Exists ($pam_mount_path)) {
- my $pam_mount_cont = SCR->Read (".anyxml", $pam_mount_path);
- if (defined $pam_mount_cont &&
- defined $pam_mount_cont->{"pam_mount"}[0]{"volume"})
- {
- my $volumes = $pam_mount_cont->{"pam_mount"}[0]{"volume"};
- if (ref ($volumes) eq "ARRAY") {
- foreach my $usermap (@{$volumes}) {
- my $username = $usermap->{"user"};
- next if !defined $username;
- $pam_mount->{$username} = $usermap;
- my $img = $usermap->{"path"} || "";
- $img2user->{$img} = $username if $img;
- my $key = $usermap->{"fskeypath"} || "";
- $key2user->{$key} = $username if $key;
- }
- }
- }
- return 1 if defined $pam_mount;
- }
- else {
- y2milestone ("file $pam_mount_path not found");
- $pam_mount = {};
- }
- return 0;
-}
-
-##------------------------------------
-# Return the owner of given crypted directory image
-# @param image name
-# @return string
-BEGIN { $TYPEINFO{CryptedImageOwner} = ["function", "string", "string"];}
-sub CryptedImageOwner {
-
- my $self = shift;
- my $img_file= shift;
-
- if ($self->ReadCryptedHomesInfo ()) {
- return $img2user->{$img_file} || "";
- }
- return "";
-}
-
-##------------------------------------
-# Return the owner of given crypted directory key
-# @param key name
-# @return string
-BEGIN { $TYPEINFO{CryptedKeyOwner} = ["function", "string", "string"];}
-sub CryptedKeyOwner {
-
- my $self = shift;
- my $key_file= shift;
-
- if ($self->ReadCryptedHomesInfo ()) {
- return $key2user->{$key_file} || "";
- }
- return "";
-}
-
-##------------------------------------
-# Return the path to user's crypted directory image; returns empty string if there is none defined
-# @param user name
-# @return string
-BEGIN { $TYPEINFO{CryptedImagePath} = ["function", "string", "string"];}
-sub CryptedImagePath {
-
- my $self = shift;
- my $user = shift;
-
- if ($self->ReadCryptedHomesInfo ()) {
- return $pam_mount->{$user}{"path"} || "";
- }
- return "";
-}
-
-##------------------------------------
-# Return the path to user's crypted directory key; returns empty string if there is none defined
-# @param user name
-# @return string
-BEGIN { $TYPEINFO{CryptedKeyPath} = ["function", "string", "string"];}
-sub CryptedKeyPath {
-
- my $self = shift;
- my $user = shift;
-
- if ($self->ReadCryptedHomesInfo ()) {
- return $pam_mount->{$user}{"fskeypath"} || "";
- }
- return "";
-}
-
-
1
# EOF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/testsuite/tests/CryptedDirTests.out new/yast2-users-4.1.9/testsuite/tests/CryptedDirTests.out
--- old/yast2-users-4.1.8/testsuite/tests/CryptedDirTests.out 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/testsuite/tests/CryptedDirTests.out 1970-01-01 01:00:00.000000000 +0100
@@ -1,17 +0,0 @@
-Read .target.stat "/etc/security/pam_mount.conf.xml" $["size":1]
-Read .anyxml "/etc/security/pam_mount.conf.xml" $["pam_mount":[$["volume":[$["fskeypath":"/home/hh.key", "path":"/home/hh.img", "user":"hh"]]]]]
-Return true
-Return /home/hh.key
-Return /home/hh.img
-Return
-Return hh
-Return hh
-Return
-Read .target.stat "/home/hh.img" $[]
-Return 0
-Read .target.stat "/home/hh.img" $["size":1024]
-Return 1
-Read .target.stat "/home/hh.img" $["size":1048576]
-Return 1
-Read .target.stat "/home/hh.img" $["size":44040192]
-Return 42
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/testsuite/tests/CryptedDirTests.rb new/yast2-users-4.1.9/testsuite/tests/CryptedDirTests.rb
--- old/yast2-users-4.1.8/testsuite/tests/CryptedDirTests.rb 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/testsuite/tests/CryptedDirTests.rb 1970-01-01 01:00:00.000000000 +0100
@@ -1,89 +0,0 @@
-# encoding: utf-8
-
-# File : CryptedDirTests.ycp
-# Module : Users configurator
-# Summary : Testing functions from UsersRoutines related to crypted dirs
-# Author : Jiri Suchomel <jsuchome(a)suse.cz>
-#
-# $Id$
-module Yast
- class CryptedDirTestsClient < Client
- def main
- Yast.import "Directory"
- Yast.import "Mode"
- Yast.import "UsersRoutines"
-
- @READ = {
- "target" => {
- "stat" => { "size" => 1 },
- "size" => -1,
- "tmpdir" => "/tmp/YaST"
- },
- "anyxml" => {
- "pam_mount" => [
- {
- "volume" => [
- {
- "user" => "hh",
- "path" => "/home/hh.img",
- "fskeypath" => "/home/hh.key"
- }
- ]
- }
- ]
- }
- }
- @WRITE = {}
- @EXEC = {}
-
- Yast.import "Testsuite"
-
- Mode.SetTest("test")
-
- Testsuite.Test(lambda { UsersRoutines.ReadCryptedHomesInfo }, [
- @READ,
- @WRITE,
- @EXEC
- ], 0)
-
- Testsuite.Test(lambda { UsersRoutines.CryptedKeyPath("hh") }, [], 0)
- Testsuite.Test(lambda { UsersRoutines.CryptedImagePath("hh") }, [], 0)
- # no such user -> empty string
- Testsuite.Test(lambda { UsersRoutines.CryptedKeyPath("hhh") }, [], 0)
-
- Testsuite.Test(lambda { UsersRoutines.CryptedImageOwner("/home/hh.img") }, [], 0)
- Testsuite.Test(lambda { UsersRoutines.CryptedKeyOwner("/home/hh.key") }, [], 0)
- # no such key file -> empty string
- Testsuite.Test(lambda { UsersRoutines.CryptedKeyOwner("/home/hh.img") }, [], 0)
-
- @RSIZE = { "target" => { "stat" => {} } }
- Testsuite.Test(lambda { UsersRoutines.FileSizeInMB("/home/hh.img") }, [
- @RSIZE,
- {},
- {}
- ], 0)
- Ops.set(@RSIZE, ["target", "stat", "size"], 1024)
- Testsuite.Test(lambda { UsersRoutines.FileSizeInMB("/home/hh.img") }, [
- @RSIZE,
- {},
- {}
- ], 0)
- Ops.set(@RSIZE, ["target", "stat", "size"], 1024 * 1024)
- Testsuite.Test(lambda { UsersRoutines.FileSizeInMB("/home/hh.img") }, [
- @RSIZE,
- {},
- {}
- ], 0)
- Ops.set(@RSIZE, ["target", "stat", "size"], 1024 * 1024 * 42)
- Testsuite.Test(lambda { UsersRoutines.FileSizeInMB("/home/hh.img") }, [
- @RSIZE,
- {},
- {}
- ], 0)
-
- nil
- end
- end
-end
-
-Yast::CryptedDirTestsClient.new.main
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/testsuite/tests/DeleteUserCryptedDir.out new/yast2-users-4.1.9/testsuite/tests/DeleteUserCryptedDir.out
--- old/yast2-users-4.1.8/testsuite/tests/DeleteUserCryptedDir.out 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/testsuite/tests/DeleteUserCryptedDir.out 1970-01-01 01:00:00.000000000 +0100
@@ -1,40 +0,0 @@
-Read .etc.default.useradd."btrfs_subvolume" 0
-Read .etc.default.useradd."expire" 0
-Read .etc.default.useradd."group" 100
-Read .etc.default.useradd."groups" "audio,video"
-Read .etc.default.useradd."home" "/home"
-Read .etc.default.useradd."inactive" 0
-Read .etc.default.useradd."shell" 0
-Read .etc.default.useradd."skel" 0
-Read .etc.default.useradd."umask" 0
-Read .target.string "/etc/shells" 0
-Read .etc.nsswitch_conf.passwd 0
-Read .ldap_conf.v.binddn 0
-Write .target.ycp "/var/lib/YaST2/users.ycp" $[] true
-Return
-Return nil
-Dump ---- user 'hh':
-Dump $["addit_data":"", "authorized_keys":[], "cn":"HaHa", "gidNumber":"100", "grouplist":$[], "groupname":"users", "homeDirectory":"/home/hh", "loginShell":"/bin/bash", "shadowExpire":"", "shadowFlag":"", "shadowInactive":"", "shadowLastChange":"13727", "shadowMax":"99999", "shadowMin":"0", "shadowWarning":"7", "type":"local", "uid":"hh", "uidNumber":"500", "userPassword":"heslo"]
-Dump ==================== running delete ======================
-Return true
-Return true
-Return nil
-Return nil
-Return nil
-Read .anyxml "/etc/security/pam_mount.conf.xml" $["pam_mount":[$["volume":[$["fskeypath":"/home/hh.key", "path":"/home/hh.img", "user":"hh"]]]]]
-Read .target.stat "/home/hh.key" $["isdir":true]
-Execute .target.bash_output "/usr/bin/rm -rf '/home/hh.key'" $["exit":0]
-Read .target.stat "/home/hh.img" $["isdir":true]
-Execute .target.bash_output "/usr/bin/rm -rf '/home/hh.img'" $["exit":0]
-Execute .target.bash_output "/usr/sbin/cryptconfig pm-disable 'hh'" $["exit":0]
-Execute .target.bash "/usr/bin/cp '/etc/passwd' '/etc/passwd.YaST2save'" 0
-Write .target.string "/etc/passwd" "at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash\nbin:x:1:1:bin:/bin:/bin/bash\ndaemon:x:2:2:Daemon:/sbin:/bin/bash\nmail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false\nnobody:x:65534:65533:nobody:/var/lib/nobody:/bin/bash\nroot:x:0:0:root:/root:/bin/bash\nuucp:x:10:14:Unix-to-Unix CoPy system:/etc/uucp:/bin/bash\nii:x:555:100:Test user:/home/ii:/bin/bash\n+::::::\n" true
-Execute .target.bash_output "/usr/bin/diff -U 1 '/etc/passwd.YaST2save' '/etc/passwd'" $["exit":0]
-Execute .target.bash "/usr/bin/cp '/etc/shadow' '/etc/shadow.YaST2save'" 0
-Write .target.string "/etc/shadow" "at:!:13636:0:99999:7:::\nbin:*:13636::::::\ndaemon:*:13636::::::\nmail:*:13636::::::\nnobody:*:13636::::::\nroot:password:13636::::::\nuucp:*:13636::::::\n+::0:0:0::::\n" true
-Execute .target.bash "/usr/sbin/nscd -i passwd" 0
-Read .target.stat "/home/hh" $["isdir":true]
-Execute .target.bash "/usr/sbin/btrfs subvolume show /home/hh" 0
-Execute .target.bash_output "/usr/sbin/btrfs subvolume delete -C '/home/hh'" $["exit":0]
-Write .target.ycp "/var/lib/YaST2/users.ycp" $["custom_groups":["local"], "custom_users":["local"], "dont_warn_when_nisserver_notdes":false, "dont_warn_when_uppercase":false] true
-Return
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-users-4.1.8/testsuite/tests/DeleteUserCryptedDir.rb new/yast2-users-4.1.9/testsuite/tests/DeleteUserCryptedDir.rb
--- old/yast2-users-4.1.8/testsuite/tests/DeleteUserCryptedDir.rb 2019-02-18 11:55:24.000000000 +0100
+++ new/yast2-users-4.1.9/testsuite/tests/DeleteUserCryptedDir.rb 1970-01-01 01:00:00.000000000 +0100
@@ -1,116 +0,0 @@
-# encoding: utf-8
-
-# File:
-# DeleteUserCryptedDir.ycp
-#
-# Module:
-# Users configurator
-#
-# Summary:
-# Deleting user with encrypted directory
-#
-# Authors:
-# Jiri Suchomel <jsuchome(a)suse.cz>
-#
-module Yast
- class DeleteUserCryptedDirClient < Client
- def main
- # testedfiles: Users.pm UsersPasswd.pm UsersLDAP.pm UsersRoutines.pm
-
- Yast.import "Users"
- Yast.import "UsersPasswd"
- Yast.import "Mode"
- Yast.import "Directory"
- Yast.import "Progress"
- Yast.import "Report"
-
- @tmpdir = Directory.tmpdir
- Builtins.foreach(["passwd", "group", "shadow"]) do |file|
- cmd = Builtins.sformat("/bin/cp ./%1 %2/", file, @tmpdir)
- SCR.Execute(path(".target.bash_output"), cmd)
- end
- Users.SetBaseDirectory(@tmpdir)
- Users.ReadLocal
-
- @READ = {
- "etc" => {
- "fstab" => [],
- "cryptotab" => [],
- "default" => {
- "useradd" => {
- "home" => "/home",
- "groups" => "audio,video",
- "group" => 100
- }
- }
- },
- "product" => {
- "features" => {
- "USE_DESKTOP_SCHEDULER" => "no",
- "IO_SCHEDULER" => "",
- "ENABLE_AUTOLOGIN" => "false",
- "UI_MODE" => "simple",
- "EVMS_CONFIG" => "no",
- "INCOMPLETE_TRANSLATION_TRESHOLD" => "99"
- }
- },
- "target" => { "size" => -1, "stat" => {} }
- }
-
- @WRITE = {}
- @EXEC = {
- "passwd" => { "init" => true },
- "target" => { "bash" => 0, "bash_output" => { "exit" => 0 } }
- }
- @RW = {
- "target" => {
- "stat" => { "isdir" => true },
- "size" => -1,
- "tmpdir" => "/tmp/YaST"
- },
- "anyxml" => {
- "pam_mount" => [
- {
- "volume" => [
- {
- "user" => "hh",
- "path" => "/home/hh.img",
- "fskeypath" => "/home/hh.key"
- }
- ]
- }
- ]
- }
- }
-
- Yast.import "Testsuite"
-
- Mode.SetTest("test")
-
- Testsuite.Test(lambda { Users.Read }, [@READ, @WRITE, @EXEC], 0)
-
- Testsuite.Test(lambda { Users.SelectUserByName("hh") }, [], 0)
-
- Testsuite.Dump(
- Builtins.sformat("---- user 'hh':\n %1", Users.GetCurrentUser)
- )
-
- Testsuite.Dump(
- "==================== running delete ======================"
- )
-
- Testsuite.Test(lambda { Users.DeleteUser(true) }, [@READ], 0)
- Testsuite.Test(lambda { Users.CommitUser }, [@READ], 0)
-
- Testsuite.Test(lambda { Users.SetBaseDirectory("/etc") }, [], 0)
- Testsuite.Test(lambda { UsersPasswd.SetBaseDirectory("/etc") }, [], 0)
- Testsuite.Test(lambda { Directory.ResetTmpDir }, [@RW, @WRITE, @EXEC], 0)
-
- Testsuite.Test(lambda { Users.Write }, [@RW, @WRITE, @EXEC], 0)
-
- nil
- end
- end
-end
-
-Yast::DeleteUserCryptedDirClient.new.main
1
0
Hello community,
here is the log from the commit of package yast2-ldap for openSUSE:Factory checked in at 2019-02-28 21:48:34
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-ldap (Old)
and /work/SRC/openSUSE:Factory/.yast2-ldap.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-ldap"
Thu Feb 28 21:48:34 2019 rev:46 rq:679889 version:4.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-ldap/yast2-ldap.changes 2018-04-26 13:25:02.308638467 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-ldap.new.28833/yast2-ldap.changes 2019-02-28 21:48:35.905391989 +0100
@@ -1,0 +2,16 @@
+Tue Feb 26 14:09:19 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 15:40:28 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Mon Aug 20 09:32:45 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Old:
----
yast2-ldap-4.0.0.tar.bz2
New:
----
yast2-ldap-4.1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-ldap.spec ++++++
--- /var/tmp/diff_new_pack.mZaeD2/_old 2019-02-28 21:48:36.349391799 +0100
+++ /var/tmp/diff_new_pack.mZaeD2/_new 2019-02-28 21:48:36.353391798 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-ldap
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-ldap
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -30,7 +30,7 @@
BuildRequires: yast2-core-devel
BuildRequires: yast2-devtools >= 3.1.10
Summary: YaST2 - LDAP Agent
-License: GPL-2.0
+License: GPL-2.0-only
Group: System/YaST
Requires: ldapcpplib
Requires: yast2
@@ -63,5 +63,6 @@
%{yast_plugindir}/libpy2ag_ldap.so
%{yast_plugindir}/libpy2ag_ldap.la
%doc %{yast_docdir}
+%license COPYING
%changelog
++++++ yast2-ldap-4.0.0.tar.bz2 -> yast2-ldap-4.1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ldap-4.0.0/Dockerfile new/yast2-ldap-4.1.0/Dockerfile
--- old/yast2-ldap-4.0.0/Dockerfile 2018-04-09 11:07:02.000000000 +0200
+++ new/yast2-ldap-4.1.0/Dockerfile 2019-02-27 17:29:23.000000000 +0100
@@ -1,5 +1,6 @@
FROM yastdevel/cpp
RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \
- libldapcpp-devel
+ libldapcpp-devel \
+ yast2-perl-bindings
COPY . /usr/src/app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ldap-4.0.0/package/yast2-ldap.changes new/yast2-ldap-4.1.0/package/yast2-ldap.changes
--- old/yast2-ldap-4.0.0/package/yast2-ldap.changes 2018-04-09 11:07:02.000000000 +0200
+++ new/yast2-ldap-4.1.0/package/yast2-ldap.changes 2019-02-27 17:29:23.000000000 +0100
@@ -1,4 +1,20 @@
-------------------------------------------------------------------
+Tue Feb 26 14:09:19 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 15:40:28 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Mon Aug 20 09:32:45 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Fri Apr 6 18:51:53 UTC 2018 - mfilka(a)suse.com
- bnc#1087957 - version bump
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-ldap-4.0.0/package/yast2-ldap.spec new/yast2-ldap-4.1.0/package/yast2-ldap.spec
--- old/yast2-ldap-4.0.0/package/yast2-ldap.spec 2018-04-09 11:07:02.000000000 +0200
+++ new/yast2-ldap-4.1.0/package/yast2-ldap.spec 2019-02-27 17:29:23.000000000 +0100
@@ -17,14 +17,14 @@
Name: yast2-ldap
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
Group: System/YaST
-License: GPL-2.0
+License: GPL-2.0-only
BuildRequires: gcc-c++ libldapcpp-devel yast2-core-devel yast2 libtool
BuildRequires: yast2-devtools >= 3.1.10
Summary: YaST2 - LDAP Agent
@@ -58,3 +58,4 @@
%{yast_plugindir}/libpy2ag_ldap.so
%{yast_plugindir}/libpy2ag_ldap.la
%doc %{yast_docdir}
+%license COPYING
1
0
Hello community,
here is the log from the commit of package yast2-metapackage-handler for openSUSE:Factory checked in at 2019-02-28 21:48:31
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-metapackage-handler (Old)
and /work/SRC/openSUSE:Factory/.yast2-metapackage-handler.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-metapackage-handler"
Thu Feb 28 21:48:31 2019 rev:51 rq:679888 version:4.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-metapackage-handler/yast2-metapackage-handler.changes 2018-02-14 09:17:44.569660304 +0100
+++ /work/SRC/openSUSE:Factory/.yast2-metapackage-handler.new.28833/yast2-metapackage-handler.changes 2019-02-28 21:48:31.277393965 +0100
@@ -1,0 +2,16 @@
+Tue Feb 26 12:08:42 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:26:20 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:11:57 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Old:
----
yast2-metapackage-handler-4.0.0.tar.bz2
New:
----
yast2-metapackage-handler-4.1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-metapackage-handler.spec ++++++
--- /var/tmp/diff_new_pack.G49i8a/_old 2019-02-28 21:48:32.965393245 +0100
+++ /var/tmp/diff_new_pack.G49i8a/_new 2019-02-28 21:48:32.969393243 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-metapackage-handler
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-metapackage-handler
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -58,7 +58,7 @@
Requires: yast2-ruby-bindings >= 1.0.0
Summary: YaST2 - Easy Installation of Add-on RPMs using Metapackages
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/YaST
%description
@@ -123,6 +123,7 @@
%dir %{yast_moduledir}
%{yast_moduledir}/*.rb
%{yast_moduledir}/*.pm
+%license COPYING
%if %suse_version <= 1020
/opt/kde3
%endif
++++++ yast2-metapackage-handler-4.0.0.tar.bz2 -> yast2-metapackage-handler-4.1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.0.0/Dockerfile new/yast2-metapackage-handler-4.1.0/Dockerfile
--- old/yast2-metapackage-handler-4.0.0/Dockerfile 2018-02-13 13:08:50.000000000 +0100
+++ new/yast2-metapackage-handler-4.1.0/Dockerfile 2019-02-27 17:28:39.000000000 +0100
@@ -1,3 +1,5 @@
FROM yastdevel/ruby
+RUN zypper --gpg-auto-import-keys --non-interactive in --no-recommends \
+ perl-XML-XPath
COPY . /usr/src/app
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.0.0/package/yast2-metapackage-handler.changes new/yast2-metapackage-handler-4.1.0/package/yast2-metapackage-handler.changes
--- old/yast2-metapackage-handler-4.0.0/package/yast2-metapackage-handler.changes 2018-02-13 13:08:50.000000000 +0100
+++ new/yast2-metapackage-handler-4.1.0/package/yast2-metapackage-handler.changes 2019-02-27 17:28:39.000000000 +0100
@@ -1,4 +1,20 @@
-------------------------------------------------------------------
+Tue Feb 26 12:08:42 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:26:20 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:11:57 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Tue Feb 13 11:46:30 UTC 2018 - lelcp(a)protonmail.com
- don't use inline html styles when including package metadata
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-metapackage-handler-4.0.0/package/yast2-metapackage-handler.spec new/yast2-metapackage-handler-4.1.0/package/yast2-metapackage-handler.spec
--- old/yast2-metapackage-handler-4.0.0/package/yast2-metapackage-handler.spec 2018-02-13 13:08:50.000000000 +0100
+++ new/yast2-metapackage-handler-4.1.0/package/yast2-metapackage-handler.spec 2019-02-27 17:28:39.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-metapackage-handler
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -58,7 +58,7 @@
Requires: yast2-ruby-bindings >= 1.0.0
Summary: YaST2 - Easy Installation of Add-on RPMs using Metapackages
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/YaST
%description
@@ -123,6 +123,7 @@
%dir %{yast_moduledir}
%{yast_moduledir}/*.rb
%{yast_moduledir}/*.pm
+%license COPYING
%if %suse_version <= 1020
/opt/kde3
%endif
1
0
Hello community,
here is the log from the commit of package yast2-slp for openSUSE:Factory checked in at 2019-02-28 21:48:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-slp (Old)
and /work/SRC/openSUSE:Factory/.yast2-slp.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-slp"
Thu Feb 28 21:48:25 2019 rev:37 rq:679868 version:4.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-slp/yast2-slp.changes 2018-04-26 13:27:42.958755800 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-slp.new.28833/yast2-slp.changes 2019-02-28 21:48:26.493396008 +0100
@@ -1,0 +2,16 @@
+Tue Feb 26 14:26:58 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:29:43 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:13:20 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Old:
----
yast2-slp-4.0.0.tar.bz2
New:
----
yast2-slp-4.1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-slp.spec ++++++
--- /var/tmp/diff_new_pack.dw3b20/_old 2019-02-28 21:48:26.929395822 +0100
+++ /var/tmp/diff_new_pack.dw3b20/_new 2019-02-28 21:48:26.937395819 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-slp
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-slp
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -40,7 +40,7 @@
Requires: yast2-ruby-bindings >= 1.0.0
Summary: YaST2 - SLP Agent and Library
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/YaST
Url: https://github.com/yast/yast-slp
@@ -68,5 +68,6 @@
%dir %{yast_libdir}/slp/dialogs
%{yast_libdir}/slp/dialogs/*
%doc %{yast_docdir}
+%license COPYING
%changelog
++++++ yast2-slp-4.0.0.tar.bz2 -> yast2-slp-4.1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-slp-4.0.0/package/yast2-slp.changes new/yast2-slp-4.1.0/package/yast2-slp.changes
--- old/yast2-slp-4.0.0/package/yast2-slp.changes 2018-04-11 10:36:43.000000000 +0200
+++ new/yast2-slp-4.1.0/package/yast2-slp.changes 2019-02-27 15:48:15.000000000 +0100
@@ -1,4 +1,20 @@
-------------------------------------------------------------------
+Tue Feb 26 14:26:58 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:29:43 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:13:20 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Fri Apr 6 18:53:54 UTC 2018 - mfilka(a)suse.com
- bnc#1087957 - version bump
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-slp-4.0.0/package/yast2-slp.spec new/yast2-slp-4.1.0/package/yast2-slp.spec
--- old/yast2-slp-4.0.0/package/yast2-slp.spec 2018-04-11 10:36:43.000000000 +0200
+++ new/yast2-slp-4.1.0/package/yast2-slp.spec 2019-02-27 15:48:15.000000000 +0100
@@ -17,14 +17,14 @@
Name: yast2-slp
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
Source0: %{name}-%{version}.tar.bz2
Group: System/YaST
-License: GPL-2.0+
+License: GPL-2.0-or-later
BuildRequires: gcc-c++ openslp-devel doxygen perl-XML-Writer yast2-core-devel yast2 libtool
BuildRequires: yast2-devtools >= 3.1.10
BuildRequires: rubygem(rspec)
@@ -62,3 +62,4 @@
%dir %{yast_libdir}/slp/dialogs
%{yast_libdir}/slp/dialogs/*
%doc %{yast_docdir}
+%license COPYING
1
0
Hello community,
here is the log from the commit of package yast2-xml for openSUSE:Factory checked in at 2019-02-28 21:48:22
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/yast2-xml (Old)
and /work/SRC/openSUSE:Factory/.yast2-xml.new.28833 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-xml"
Thu Feb 28 21:48:22 2019 rev:24 rq:679866 version:4.1.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/yast2-xml/yast2-xml.changes 2018-04-26 13:25:40.179251847 +0200
+++ /work/SRC/openSUSE:Factory/.yast2-xml.new.28833/yast2-xml.changes 2019-02-28 21:48:23.617397237 +0100
@@ -1,0 +2,16 @@
+Tue Feb 26 14:17:57 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:43:58 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:26:56 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Old:
----
yast2-xml-4.0.0.tar.bz2
New:
----
yast2-xml-4.1.0.tar.bz2
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ yast2-xml.spec ++++++
--- /var/tmp/diff_new_pack.s4Mp4C/_old 2019-02-28 21:48:24.173396999 +0100
+++ /var/tmp/diff_new_pack.s4Mp4C/_new 2019-02-28 21:48:24.173396999 +0100
@@ -1,7 +1,7 @@
#
# spec file for package yast2-xml
#
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@@ -17,7 +17,7 @@
Name: yast2-xml
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -30,7 +30,7 @@
BuildRequires: yast2-core-devel
BuildRequires: yast2-devtools >= 3.1.10
Summary: YaST2 - XML Agent
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/YaST
Requires: yast2-core
Provides: yast2-agent-xml
@@ -60,5 +60,6 @@
%{yast_plugindir}/libpy2ag_xml.so
%{yast_scrconfdir}/xml.scr
%doc %{yast_docdir}
+%license COPYING
%changelog
++++++ yast2-xml-4.0.0.tar.bz2 -> yast2-xml-4.1.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-xml-4.0.0/package/yast2-xml.changes new/yast2-xml-4.1.0/package/yast2-xml.changes
--- old/yast2-xml-4.0.0/package/yast2-xml.changes 2018-04-09 11:12:58.000000000 +0200
+++ new/yast2-xml-4.1.0/package/yast2-xml.changes 2019-02-27 15:47:52.000000000 +0100
@@ -1,4 +1,20 @@
-------------------------------------------------------------------
+Tue Feb 26 14:17:57 UTC 2019 - José Iván López González <jlopez(a)suse.com>
+
+- Version bump (bsc#1124009)
+- 4.1.0
+
+-------------------------------------------------------------------
+Tue Oct 16 16:43:58 CEST 2018 - schubi(a)suse.de
+
+- Added license file to spec.
+
+-------------------------------------------------------------------
+Wed Aug 22 16:26:56 CEST 2018 - schubi(a)suse.de
+
+- Switched license in spec file from SPDX2 to SPDX3 format.
+
+-------------------------------------------------------------------
Fri Apr 6 18:55:11 UTC 2018 - mfilka(a)suse.com
- bnc#1087957 - version bump
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-xml-4.0.0/package/yast2-xml.spec new/yast2-xml-4.1.0/package/yast2-xml.spec
--- old/yast2-xml-4.0.0/package/yast2-xml.spec 2018-04-09 11:12:58.000000000 +0200
+++ new/yast2-xml-4.1.0/package/yast2-xml.spec 2019-02-27 15:47:52.000000000 +0100
@@ -17,7 +17,7 @@
Name: yast2-xml
-Version: 4.0.0
+Version: 4.1.0
Release: 0
BuildRoot: %{_tmppath}/%{name}-%{version}-build
@@ -30,7 +30,7 @@
BuildRequires: yast2-core-devel
BuildRequires: yast2-devtools >= 3.1.10
Summary: YaST2 - XML Agent
-License: GPL-2.0+
+License: GPL-2.0-or-later
Group: System/YaST
Requires: yast2-core
Provides: yast2-agent-xml
@@ -60,5 +60,6 @@
%{yast_plugindir}/libpy2ag_xml.so
%{yast_scrconfdir}/xml.scr
%doc %{yast_docdir}
+%license COPYING
%changelog
1
0