Hello community, here is the log from the commit of package yast2-isns for openSUSE:Factory checked in at 2014-09-08 21:29:03 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/yast2-isns (Old) and /work/SRC/openSUSE:Factory/.yast2-isns.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "yast2-isns" Changes: -------- --- /work/SRC/openSUSE:Factory/yast2-isns/yast2-isns.changes 2014-06-27 06:53:20.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.yast2-isns.new/yast2-isns.changes 2014-09-08 21:30:23.000000000 +0200 @@ -1,0 +2,8 @@ +Thu Sep 4 13:39:48 UTC 2014 - [email protected] + +- adapted to open-isns (bnc#887477 + fate#316901) by + - removing UI parts of things not supported by open-isns + - changing calls of 'isnsadm' to new syntax +- 3.1.4 + +------------------------------------------------------------------- Old: ---- yast2-isns-3.1.3.tar.bz2 New: ---- yast2-isns-3.1.4.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ yast2-isns.spec ++++++ --- /var/tmp/diff_new_pack.PtLYuu/_old 2014-09-08 21:30:25.000000000 +0200 +++ /var/tmp/diff_new_pack.PtLYuu/_new 2014-09-08 21:30:25.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-isns -Version: 3.1.3 +Version: 3.1.4 Release: 0 BuildRoot: %{_tmppath}/%{name}-%{version}-build ++++++ yast2-isns-3.1.3.tar.bz2 -> yast2-isns-3.1.4.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/package/yast2-isns.changes new/yast2-isns-3.1.4/package/yast2-isns.changes --- old/yast2-isns-3.1.3/package/yast2-isns.changes 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/package/yast2-isns.changes 2014-09-08 12:08:24.000000000 +0200 @@ -1,4 +1,12 @@ ------------------------------------------------------------------- +Thu Sep 4 13:39:48 UTC 2014 - [email protected] + +- adapted to open-isns (bnc#887477 + fate#316901) by + - removing UI parts of things not supported by open-isns + - changing calls of 'isnsadm' to new syntax +- 3.1.4 + +------------------------------------------------------------------- Thu Jun 5 11:23:03 CEST 2014 - [email protected] - correct name for firewall service, adjust 'isnsd' service start diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/package/yast2-isns.spec new/yast2-isns-3.1.4/package/yast2-isns.spec --- old/yast2-isns-3.1.3/package/yast2-isns.spec 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/package/yast2-isns.spec 2014-09-08 12:08:24.000000000 +0200 @@ -17,7 +17,7 @@ Name: yast2-isns -Version: 3.1.3 +Version: 3.1.4 Release: 0 License: GPL-2.0 Group: System/YaST diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/src/include/isns/dialogs.rb new/yast2-isns-3.1.4/src/include/isns/dialogs.rb --- old/yast2-isns-3.1.3/src/include/isns/dialogs.rb 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/src/include/isns/dialogs.rb 2014-09-08 12:08:24.000000000 +0200 @@ -38,8 +38,6 @@ HStretch(), HSpacing(1), VBox( - "ipaddress", - VSpacing(2), "auto_start_up", VSpacing(2), "firewall", @@ -50,7 +48,7 @@ ), VStretch() ), - "widget_names" => ["ipaddress", "auto_start_up", "firewall"] + "widget_names" => ["auto_start_up", "firewall"] }, # second tab - iSCSI Nodes "members" => { @@ -71,16 +69,6 @@ HBox(HStretch(), VBox("dd_display_members"), HStretch()) ), "widget_names" => ["dd_display", "dd_display_members"] - }, - # fourth tab - discovery domain sets - "discoverydomainsets" => { - "header" => _("Discovery Domains Sets"), - "contents" => VBox( - HBox(HStretch(), VBox("dds_display"), HStretch()), - VStretch(), - HBox(HStretch(), VBox("dds_display_members"), HStretch()) - ), - "widget_names" => ["dds_display", "dds_display_members"] } } @@ -105,24 +93,6 @@ ) } ), - "ipaddress" => { - "widget" => :custom, - "custom_widget" => VBox( - HBox( - InputField( - Id(:isnsaddress), - Opt(:hstretch), - _("Address of iSNS Server") - ) - ) - ), - "init" => fun_ref(method(:initAddress), "void (string)"), - "handle" => fun_ref( - method(:handleAddress), - "symbol (string, map)" - ), - "help" => Ops.get_string(@HELPS, "ipaddress", "") - }, "firewall" => CWMFirewallInterfaces.CreateOpenFirewallWidget( { "services" => ["service:isns"], "display_details" => true } ), @@ -204,66 +174,6 @@ "symbol (string, map)" ), "help" => Ops.get_string(@HELPS, "dd_display_members", "") - }, - "dds_display" => { - "widget" => :custom, - "custom_widget" => VBox( - Heading(_("Discovery Domains Sets")), - HBox( - VSpacing(5), - Table( - Id(:dds_table), - Opt(:notify, :immediate), - Header(_("Discovery Domain Set Name")), - [] - ) - ), - Left( - HBox( - PushButton(Id(:add), _("Create Discovery Domain Set")), - PushButton(Id(:delete), _("Delete")), - HSpacing(25) - ) - ) - ), - "init" => fun_ref( - method(:initDiscoveryDomainSet), - "void (string)" - ), - "handle" => fun_ref( - method(:handleDiscoveryDomainSet), - "symbol (string, map)" - ), - "help" => Ops.get_string(@HELPS, "dds_display", "") - }, - "dds_display_members" => { - "widget" => :custom, - "custom_widget" => VBox( - Heading(_("Discovery Domain Set Members")), - HBox( - VSpacing(10), - Table( - Id(:dds_members_table), - Header(_("Discovery Domain Name")), - [] - ) - ), - Left( - HBox( - PushButton(Id(:adddd), _("Add Discovery Domain")), - PushButton(Id(:remove), _("Remove")) - ) - ) - ), - "init" => fun_ref( - method(:initDiscoveryDomainSetMembers), - "void (string)" - ), - "handle" => fun_ref( - method(:handleDiscoveryDomainSetMembers), - "symbol (string, map)" - ), - "help" => Ops.get_string(@HELPS, "dds_display_members", "") } } end @@ -280,8 +190,7 @@ "tab_order" => [ "service", "members", - "discoverydomains", - "discoverydomainsets" + "discoverydomains" ], "tabs" => @tabs_descr, "widget_descr" => @widgets, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/src/include/isns/helps.rb new/yast2-isns-3.1.4/src/include/isns/helps.rb --- old/yast2-isns-3.1.3/src/include/isns/helps.rb 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/src/include/isns/helps.rb 2014-09-08 12:08:24.000000000 +0200 @@ -36,9 +36,6 @@ "summary" => _( "<p><b><big>iSNS Configuration</big></b><br>\nConfigure an iSNS server.<br></p>\n" ), - "ipaddress" => _( - "<b><big>iSNS Server location</big></b><br>The DNS name or the IP address of the iSNS service can be entered as the iSNS address.\n" - ), "iscsi_display" => _( "<p>The list of all available iSCSI nodes registered with the iSNS service are displayed.</p> <p>Nodes are registered by iSCSI initiators and iSCSI targets.</p> <p> It is only possible to <b>delete</b> them. Deleting a node removes it from the iSNS database.</p>" ), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/src/include/isns/widgets.rb new/yast2-isns-3.1.4/src/include/isns/widgets.rb --- old/yast2-isns-3.1.3/src/include/isns/widgets.rb 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/src/include/isns/widgets.rb 2014-09-08 12:08:24.000000000 +0200 @@ -16,13 +16,10 @@ Yast.import "IsnsServer" Yast.import "String" Yast.import "Report" - - @address = "" end # **************** global funcions and variables ***** def DiscoveryDomainDetailDialog(values_before) - values_before = deep_copy(values_before) ret_map = {} dd_dialog = VBox( Heading(_("Create New Discovery Domain")), @@ -31,128 +28,33 @@ 3, InputField(Id(:ddentry), Opt(:hstretch), _("Discovery Domain Name")) ), - VSpacing(1), - HBox( - HSpacing(3), - VBox( - Label( - _( - "Select discovery domain set to which discovery domain will be added." - ) - ), - SelectionBox(Id(:ddsentries), _("Discovery Domain Name Set")) - ), - HSpacing(3) - ), - VSpacing(1), ButtonBox( - PushButton(Id(:ok), Label.OKButton), + PushButton(Id(:ok), Opt(:default), Label.OKButton), PushButton(Id(:cancel), Label.CancelButton) ), VSpacing(1) ) UI.OpenDialog(dd_dialog) - - inc_items = [] - count = 0 - index = "" - first = "" - Builtins.foreach(IsnsServer.readDDS(@address)) do |ddsentry| - if count == 0 - index = ddsentry - count = 1 - else - inc_items = Builtins.add(inc_items, Item(Id(index), ddsentry)) - count = 0 - first = ddsentry if first == "" - end - end - - UI.ChangeWidget(Id(:ddsentries), :Items, inc_items) - UI.ChangeWidget(Id(:ddsentries), :CurrentItem, first) + UI.SetFocus(:ddentry) ret = :nil while ret != :ok && ret != :cancel enable = false - ret = Convert.to_symbol(UI.UserInput) + ret = UI.UserInput end if ret == :cancel ret_map = {} else - dd_name = Convert.to_string(UI.QueryWidget(:ddentry, :Value)) - - dds_id = Convert.to_string( - UI.QueryWidget(Id(:ddsentries), :CurrentItem) - ) - Builtins.y2milestone("creating dd add to dds: %1", dds_id) - IsnsServer.addDD(@address, dd_name) - - count2 = 0 - dd_index = "" - Builtins.foreach(IsnsServer.readDD(@address)) do |dd| - if count2 == 0 - dd_index = dd - count2 = 1 - else - IsnsServer.addDDSMember(@address, dds_id, dd_index) if dd == dd_name - count2 = 0 - end - end - + dd_name = UI.QueryWidget(:ddentry, :Value) + IsnsServer.addDD(dd_name) ret_map = { "VALUE" => dd_name } end UI.CloseDialog - deep_copy(ret_map) + ret_map end - def DiscoveryDomainSetDetailDialog(values_before) - values_before = deep_copy(values_before) - ret_map = {} - dds_dialog = HBox( - HSpacing(5), - VBox( - VSpacing(1), - Left( - HWeight( - 3, - InputField( - Id(:ddsentry), - Opt(:hstretch), - _("Discovery Domain Set Name") - ) - ) - ), - Left( - ButtonBox( - PushButton(Id(:ok), Label.OKButton), - PushButton(Id(:cancel), Label.CancelButton) - ) - ), - VSpacing(1) - ), - HSpacing(5) - ) - UI.OpenDialog(dds_dialog) - - ret = :nil - while ret != :ok && ret != :cancel - enable = false - ret = Convert.to_symbol(UI.UserInput) - end - - if ret == :cancel - ret_map = {} - else - value = Convert.to_string(UI.QueryWidget(:ddsentry, :Value)) - ret_map = { "VALUE" => value } - end - UI.CloseDialog - deep_copy(ret_map) - end - - def CreateNode(values_before) - values_before = deep_copy(values_before) + def CreateNode() ret_map = {} node_dialog = HBox( HSpacing(5), @@ -230,7 +132,7 @@ 1, "" ) - IsnsServer.addDDMember(@address, dd_id, iqn) + IsnsServer.addDDMember(dd_id, iqn) initDiscoveryDomainPotentialISCSI(dd_id) end end @@ -239,82 +141,28 @@ deep_copy(ret_map) end - def DisplayAllDiscoveryDomainsDialog(dds_name, dds_id) - ret_map = {} - dds_dialog = VBox( - Heading(_("Add Discovery Domain to Set")), - Label(dds_name), - HSpacing(50), - Heading(_("Available Discovery Domains")), - HBox(VSpacing(10), Table(Id(:dd_table), Header(_("Name")), [])), - Left( - HBox( - PushButton(Id(:add), _("Add Discovery Domain")), - PushButton(Id(:exit), _("Done")) - ) - ) - ) - UI.OpenDialog(dds_dialog) - - initDiscoveryDomainPotential(dds_id) - - ret = :nil - while ret != :exit - enable = false - ret = Convert.to_symbol(UI.UserInput) - if ret == :add - Builtins.y2milestone("Add a dds member") - dd_id = Convert.to_string(UI.QueryWidget(Id(:dd_table), :CurrentItem)) - IsnsServer.addDDSMember(@address, dds_id, dd_id) - initDiscoveryDomainPotential(dds_id) - end - end - - UI.CloseDialog - deep_copy(ret_map) - end - - - def initAddress(key) - @address = Ops.get_string( - Convert.convert( - SCR.Execute( - path(".target.bash_output"), - "cat /etc/isns.conf|cut -d'=' -f2|tr -d '\n'" - ), - :from => "any", - :to => "map <string, any>" - ), - "stdout", - "" - ) - UI.ChangeWidget(:isnsaddress, :Value, @address) - - nil - end def initISCSI(key) - count = 0 type = _("Target or Initiator") inc_items = [] checkISNS - Builtins.foreach(IsnsServer.readISCSI(@address)) do |key2| - inc_items = Builtins.add( - inc_items, - Item( - Id(count), - Ops.get_string(key2, "NODE", ""), - Ops.get_string(key2, "TYPE", "") - ) - ) - count = Ops.add(count, 1) + list = IsnsServer.readISCSI + + list.each_with_index do |key, index| + inc_items.push(Item( + Id(index), + key["NODE"], + key["TYPE"] + ) + ) end UI.ChangeWidget(Id(:members_table), :Items, inc_items) nil end + def initDiscoveryDomainPotentialISCSI(key) count = 0 type = _("Target or Initiator") @@ -323,9 +171,9 @@ ddmembers = [] found = "FALSE" - ddmembers = IsnsServer.readDDMembers(@address, key) + ddmembers = IsnsServer.readDDMembers(key) - Builtins.foreach(IsnsServer.readISCSI(@address)) do |iscsinode2| + Builtins.foreach(IsnsServer.readISCSI) do |iscsinode2| found = "FALSE" Builtins.foreach(ddmembers) do |ddmember| if Ops.get_string(ddmember, "NODE", "") == @@ -351,79 +199,32 @@ nil end def initDDISCSIMembers(key) - count = 0 - index = "" - ddid = "" inc_items = [] Builtins.y2milestone("initDDISCSIMembers key is:%1", key) if key == "dd_display_members" - key = Convert.to_string(UI.QueryWidget(Id(:dd_table), :CurrentItem)) + key = UI.QueryWidget(Id(:dd_table), :CurrentItem) end ddid = key - Builtins.foreach(IsnsServer.readDDMembers(@address, ddid)) do |result| + IsnsServer.readDDMembers(ddid).each_with_index do |result, index| Builtins.y2milestone("iscsiMembers: %1", key) - inc_items = Builtins.add( - inc_items, - Item( - Id(count), - Ops.get_string(result, "NODE", ""), - Ops.get_string(result, "TYPE", "") - ) - ) - count = Ops.add(count, 1) + inc_items << Item(Id(index), result["NODE"], result["TYPE"]) end UI.ChangeWidget(Id(:dd_members_table), :Items, inc_items) nil end - def initDiscoveryDomain(key) - count = 0 - index = "" - inc_items = [] + def initDiscoveryDomain(key = nil) checkISNS - Builtins.foreach(IsnsServer.readDD(@address)) do |dd| - if count == 0 - index = dd - count = 1 - else - inc_items = Builtins.add(inc_items, Item(Id(index), dd)) - count = 0 - end - end - - UI.ChangeWidget(Id(:dd_table), :Items, inc_items) - - nil - end - def initDiscoveryDomainPotential(key) - count = 0 - index = "" inc_items = [] - ddsmembers = [] - found = "FALSE" - - ddsmembers = IsnsServer.readDDSMembers(@address, key) - - Builtins.foreach(IsnsServer.readDD(@address)) do |dd| - if count == 0 - index = dd - count = 1 - else - found = "FALSE" - Builtins.foreach(ddsmembers) do |ddsmember| - found = "TRUE" if ddsmember == dd - end - if found == "FALSE" - inc_items = Builtins.add(inc_items, Item(Id(index), dd)) - end - count = 0 - end + IsnsServer.readDD.each do |dd| + dd["DD name"] = "default" if dd["DD ID"] == "0" + inc_items << Item(Id(dd["DD ID"]), dd["DD name"]) end UI.ChangeWidget(Id(:dd_table), :Items, inc_items) @@ -431,87 +232,15 @@ nil end - def initDiscoveryDomainSet(key) - count = 0 - index = "" - - inc_items = [] - - Builtins.y2milestone("isnsaddress is %1", @address) - - checkISNS - - Builtins.foreach(IsnsServer.readDDS(@address)) do |key2| - if count == 0 - index = key2 - count = 1 - else - inc_items = Builtins.add(inc_items, Item(Id(index), key2)) - count = 0 - end - end - - UI.ChangeWidget(Id(:dds_table), :Items, inc_items) - - nil - end - def initDiscoveryDomainSetMembers(key) - count = 0 - index = "" - inc_items = [] - dds_id = "" - - if key == "dds_display_members" - key = Convert.to_string(UI.QueryWidget(Id(:dds_table), :CurrentItem)) - end - - dds_id = key - - Builtins.foreach(IsnsServer.readDDSMembers(@address, dds_id)) do |key2| - Builtins.y2milestone("results received: %1", key2) - if count == 0 - index = key2 - count = 1 - else - inc_items = Builtins.add(inc_items, Item(Id(index), key2)) - count = 0 - end - end - - UI.ChangeWidget(Id(:dds_members_table), :Items, inc_items) - - nil - end - - - def handleAddress(key, event) - event = deep_copy(event) - @address = Convert.to_string(UI.QueryWidget(:isnsaddress, :Value)) - SCR.Execute( - path(".target.bash_output"), - Builtins.sformat("echo \"isns_address=%1\">/etc/isns.conf", @address) - ) - Builtins.y2milestone("isnsaddress is %1", @address) - nil - end - - def handleISCSI(key, event) - event = deep_copy(event) - if Ops.get_string(event, "EventReason", "") == "Activated" - case Ops.get_symbol(event, "WidgetID") + if event["EventReason"] == "Activated" + case event["WidgetID"] when :delete @del = UI.QueryWidget(Id(:members_table), :CurrentItem) if @del != nil if Popup.ContinueCancel(_("Really delete the selected item?")) - discoverydomainsetname = Ops.get_string( - Convert.to_term( - UI.QueryWidget(Id(:members_table), term(:Item, @del)) - ), - 1, - "" - ) - IsnsServer.deleteISCSI(@address, discoverydomainsetname) + iqn = UI.QueryWidget(Id(:members_table), term(:Item, @del))[1] + IsnsServer.deleteISCSI(iqn) initISCSI("") else Builtins.y2milestone("Delete canceled") @@ -539,63 +268,15 @@ ) if @del != nil if Popup.ContinueCancel(_("Really delete this domain?")) - IsnsServer.deleteDD(@address, @del) - initDiscoveryDomain("") + IsnsServer.deleteDD(@del) + initDiscoveryDomain else Builtins.y2milestone("Delete canceled") end end when :add @add_map = DiscoveryDomainDetailDialog({ "VALUE" => "" }) - if @add_map != {} - # IsnsServer::addDD(address, add_map["VALUE"]:""); - initDiscoveryDomain("") - end - end - end - - nil - end - - def handleDiscoveryDomainSet(key, event) - event = deep_copy(event) - mycurrent = Convert.to_string( - UI.QueryWidget(Id(:dds_table), :CurrentItem) - ) - Builtins.y2milestone( - "handleDiscoveryDomainSet action called: %1 -- %2 -- %3", - key, - event, - mycurrent - ) - - if Ops.get_string(event, "EventReason", "") == "SelectionChanged" - Builtins.y2milestone("selectionChangedEvent") - dds_id = Convert.to_string(UI.QueryWidget(Id(:dds_table), :CurrentItem)) - Builtins.y2milestone("selectionChangedEvent - dds-id:%1", dds_id) - initDiscoveryDomainSetMembers(dds_id) - end - - if Ops.get_string(event, "EventReason", "") == "Activated" - case Ops.get_symbol(event, "WidgetID") - when :delete - @del = Convert.to_string( - UI.QueryWidget(Id(:dds_table), :CurrentItem) - ) - if @del != nil - if Popup.ContinueCancel(_("Really delete the selected item?")) - IsnsServer.deleteDDS(@address, @del) - initDiscoveryDomainSet("") - else - Builtins.y2milestone("Delete canceled") - end - end - when :add - @add_map = DiscoveryDomainSetDetailDialog({ "VALUE" => "" }) - if @add_map != {} - IsnsServer.addDDS(@address, Ops.get_string(@add_map, "VALUE", "")) - initDiscoveryDomainSet("") - end + initDiscoveryDomain unless @add_map.empty? end end @@ -624,7 +305,7 @@ dd_id = Convert.to_string( UI.QueryWidget(Id(:dd_table), :CurrentItem) ) - IsnsServer.deleteDDMember(@address, dd_id, dd_name) + IsnsServer.deleteDDMember(dd_id, dd_name) initDDISCSIMembers(dd_id) when :addiscsinode dd_id = Convert.to_string( @@ -647,12 +328,11 @@ "" ) - add_map = CreateNode({ "VALUE" => "" }) + add_map = CreateNode() if add_map != {} IsnsServer.addDDMember( - @address, dd_id, - Ops.get_string(add_map, "VALUE", "") + add_map["VALUE"] ) end @@ -663,52 +343,12 @@ nil end - def handleDiscoveryDomainSetMembers(key, event) - event = deep_copy(event) - if Ops.get_string(event, "EventReason", "") == "Activated" - case Ops.get_symbol(event, "WidgetID") - when :delete - # domain Set deleted, but we get this event so update the members table - dds_id = Convert.to_string( - UI.QueryWidget(Id(:dds_table), :CurrentItem) - ) - initDiscoveryDomainSetMembers(dds_id) - when :remove - Builtins.y2milestone("Unassign a dds member") - dds_id = Convert.to_string( - UI.QueryWidget(Id(:dds_table), :CurrentItem) - ) - dd_id = Convert.to_string( - UI.QueryWidget(Id(:dds_members_table), :CurrentItem) - ) - IsnsServer.deleteDDSMember(@address, dds_id, dd_id) - initDiscoveryDomainSetMembers(dds_id) - when :adddd - Builtins.y2milestone("Add a dds member") - dds_id = Convert.to_string( - UI.QueryWidget(Id(:dds_table), :CurrentItem) - ) - dds_name = Ops.get_string( - Convert.to_term( - UI.QueryWidget(Id(:dds_table), term(:Item, dds_id)) - ), - 1, - "" - ) - add_map1 = DisplayAllDiscoveryDomainsDialog(dds_name, dds_id) - initDiscoveryDomainSetMembers(dds_id) - end - end - - nil - end def checkISNS - isns_status = IsnsServer.testISNSAccess(@address) - if isns_status != "OK" + if !IsnsServer.testISNSAccess # boolean display = true; # Report::DisplayErrors(display,10); Report.Error( - _("Unable to connect to iSNS server. Check iSNS server address.") + _("Unable to connect to iSNS server. Check if iSNS server is running.") ) return 1 end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/yast2-isns-3.1.3/src/modules/IsnsServer.rb new/yast2-isns-3.1.4/src/modules/IsnsServer.rb --- old/yast2-isns-3.1.3/src/modules/IsnsServer.rb 2014-06-26 14:23:20.000000000 +0200 +++ new/yast2-isns-3.1.4/src/modules/IsnsServer.rb 2014-09-08 12:08:24.000000000 +0200 @@ -13,10 +13,10 @@ module Yast class IsnsServerClass < Module + def main textdomain "isns" - Yast.import "Progress" Yast.import "Report" Yast.import "Summary" Yast.import "Message" @@ -124,7 +124,7 @@ # Data was modified? # @return true if modified def Modified - Builtins.y2debug("modified=%1", @modified) + y2debug("modified=%1", @modified) @modified end @@ -136,37 +136,14 @@ :to => "map <string, any>" ) # IsnsServerFunctions::parseConfig( read_values ); - Builtins.y2milestone("isns readConfig") + y2milestone("isns readConfig") true end - # write configuration file /etc/ietd.conf - def writeConfig - # prepare map, because perl->ycp lost information about data types (integers in this case) - # map <string, any> config_file = IsnsServerFunctions::writeConfig(); - # config_file["type"]=tointeger(config_file["type"]:"1"); - # config_file["file"]=tointeger(config_file["file"]:"1"); - # list <map<string, any> > value = []; - # foreach(map<string, any> row, config_file["value"]:[], { - # row["type"]=tointeger(row["type"]:"1"); - # row["file"]=tointeger(row["file"]:"1"); - # value = add(value, row); - # }); - # - # config_file["value"] = value; - # y2milestone("config_file to write %1", config_file); - # // write it - # SCR::Write(.etc.ietd.all, config_file); - # SCR::Write(.etc.ietd, nil); - true - end - - - # test if required package ("open-isns") is installed def installed_packages ret = false - Builtins.y2milestone("Check if open-isns is installed") + y2milestone("Check if open-isns is installed") if !Package.InstallMsg( "open-isns", _( @@ -205,7 +182,7 @@ @statusOnStart = true @serviceStatus = true end - Builtins.y2milestone("Service status = %1", @statusOnStart) + y2milestone("Service status = %1", @statusOnStart) isnsdSocketStart if !@statusOnStart ret end @@ -216,11 +193,11 @@ start = @statusOnStart if !@serviceStatus if !start - Builtins.y2milestone("Stop isnsd service and socket") + y2milestone("Stop isnsd service and socket") isnsdSocketStop Service.Stop("isnsd") else - Builtins.y2milestone("Start isnsd socket") + y2milestone("Start isnsd socket") Service.Stop("isnsd") if Service.Status("isnsd") == 0 @serviceStatus = true isnsdSocketStart @@ -228,417 +205,89 @@ true end - def testISNSAccess(address) - value = "OK" - temp = {} - - command = Builtins.sformat("isnsadm -a %1 -t -q iscsi", address) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - if row == "TCP error on connection" - Builtins.y2milestone("TCP error: %1 ", row) - value = "ERROR" - end - if row == "Error Sending TCP request." - Builtins.y2milestone("Failed to resolve host error: %1 ", row) - value = "ERROR" - end - end - - value - end - def readISCSI(address) - values = [] - temp = {} - - command = Builtins.sformat("isnsadm -a %1 -t -q iscsi", address) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - end - if key == "iSCSI ID " - val = Builtins.substring(row, Ops.add(pos, 2)) - Ops.set(temp, "NODE", val) - end - if key == "Type" - val = Builtins.substring(row, Ops.add(pos, 6)) - Ops.set(temp, "TYPE", val) - values = Builtins.add(values, temp) - end - end - - deep_copy(values) - end - - def readISCSI_type(address, index) - temp = "" - - Builtins.y2milestone("iSCSIRead_type index:%1", index) - - command = Builtins.sformat( - "isnsadm -a %1 -t -q iscsi -n %2", - address, - index - ) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - val = Builtins.substring(row, Ops.add(pos, 6)) - end - Builtins.y2milestone("iSCSIRead_type %1", key) - if key == "Type" - Builtins.y2milestone("iSCSIRead_type return value is %1", val) - temp = val - end - end - - temp + def testISNSAccess() + # We cannot proceed if we are not control node + isnsadm_control end - - def readDDS(address) + def readISCSI values = [] - ddid = "" - Builtins.y2milestone("readDDS %1", address) - command = Builtins.sformat("isnsadm -a %1 -t -q dds", address) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - val = Builtins.substring(row, Ops.add(pos, 2)) - end - if key == "DDS ID " - values = Builtins.add(values, val) - elsif key == "DDS Sym Name " - values = Builtins.add(values, val) - end + isnsadm_list("nodes").each do |obj| + temp = {} + temp["NODE"] = obj["iSCSI name"] + temp["TYPE"] = obj["iSCSI node type"] + values.push(temp) end - deep_copy(values) + values end - def readDDMembers(address, id) + def readDDMembers(id) values = [] temp = {} - ddid = "" - Builtins.y2milestone("readDDSMembers %1 %2", address, id) - command = Builtins.sformat("isnsadm -a %1 -t -q dd -n %2", address, id) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - Builtins.y2milestone("results: %1", row) - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - val = Builtins.substring(row, Ops.add(pos, 2)) - end - Ops.set(temp, "NODE", val) if key == " DD iSCSI Member " - if key == " DD iSCSI Member Index " - Ops.set(temp, "TYPE", readISCSI_type(address, val)) - values = Builtins.add(values, temp) - end - end + y2milestone("readDDMembers of DD #{id}") - deep_copy(values) - end - - def readDDSMembers(address, id) - values = [] - ddid = "" + ddmembers = isnsadm_query("dd-id=#{id}")["DD member iSCSI name"] + return [] unless ddmembers - Builtins.y2milestone("readDDSMembers %1 %2", address, id) - command = Builtins.sformat("isnsadm -a %1 -t -q dds -n %2", address, id) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - Builtins.y2milestone("results: %1", row) - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - val = Builtins.substring(row, Ops.add(pos, 2)) - end - if key == " DD ID " - values = Builtins.add(values, val) - elsif key == " DD Sym Name " - values = Builtins.add(values, val) - end + ddmembers.each do |iqn| + type = isnsadm_query("iscsi-name=#{iqn}")["iSCSI node type"] + values << {"NODE" => iqn, "TYPE" => type } end - deep_copy(values) + values end - def readDD(address) - values = [] - ddid = "" - - Builtins.y2milestone("readDD") - command = Builtins.sformat("isnsadm -a %1 -t -q dd", address) - result = Convert.convert( - SCR.Execute(path(".target.bash_output"), command, {}), - :from => "any", - :to => "map <string, any>" - ) - Builtins.foreach( - Builtins.splitstring(Ops.get_string(result, "stdout", ""), "\n") - ) do |row| - pos = Builtins.findfirstof(row, ":") - key = "" - val = "" - if pos != nil && Ops.greater_than(pos, 0) - key = Builtins.substring(row, 0, pos) - val = Builtins.substring(row, Ops.add(pos, 2)) - end - if key == "DD ID " - values = Builtins.add(values, val) - elsif key == "DD Sym Name " - values = Builtins.add(values, val) - end - end - - deep_copy(values) + def readDD + y2milestone("readDD") + isnsadm_list("dds") end - def addISCSI(address, name, entityid) - Builtins.y2milestone("addISCSI") - command = Builtins.sformat( - "isnsadm -a %1 -t -r iscsi -n '%2' -m '%3'", - address, - name, - entityid - ) - SCR.Execute(path(".target.bash_output"), command, {}) - true + def addDDMember(dd_id, iqn) + y2milestone("addDDMember #{iqn} to #{dd_id}") + isnsadm("--dd-register dd-id=#{dd_id} dd-member-name=#{iqn}") end - def addDDS(address, name) - Builtins.y2milestone("addDDS") - command = Builtins.sformat( - "isnsadm -a %1 -t -r dds -n '%2'", - address, - name - ) - SCR.Execute(path(".target.bash_output"), command, {}) - true + def addDD(iqn) + y2milestone("addDD #{iqn}") + isnsadm("--dd-register dd-name=#{iqn}") end - def addDDMember(address, dd_id, iqn) - Builtins.y2milestone("addDDMember") - command = Builtins.sformat( - "isnsadm -a %1 -t -r ddmember -n %2 -m %3", - address, - dd_id, - iqn - ) - SCR.Execute(path(".target.bash_output"), command, {}) - true - end - - def addDDSMember(address, dds_id, dd_id) - Builtins.y2milestone("addDDSMember") - command = Builtins.sformat( - "isnsadm -a %1 -t -r ddsmember -n %2 -m %3", - address, - dds_id, - dd_id - ) - SCR.Execute(path(".target.bash_output"), command, {}) - true + def deleteISCSI(id) + y2milestone("deleteISCSI: #{id}") + isnsadm("--deregister iscsi-name=#{id}") end - def addDD(address, name) - Builtins.y2milestone("addDD") - command = Builtins.sformat( - "isnsadm -a %1 -t -r dd -n '%2'", - address, - name - ) - SCR.Execute(path(".target.bash_output"), command, {}) - true + def deleteDDMember(dd_id, iqn) + y2milestone("deleteDDMember #{iqn} from #{dd_id}") + isnsadm("--dd-deregister #{dd_id} dd-member-name=#{iqn}") end - def deleteISCSI(address, id) - Builtins.y2milestone("deleteISCSI") - command = Builtins.sformat( - "isnsadm -a %1 -t -d iscsi -n '%2'", - address, - id - ) - SCR.Execute(path(".target.bash_output"), command, {}) - - true - end - - def deleteDDS(address, id) - Builtins.y2milestone("deleteDDS") - command = Builtins.sformat("isnsadm -a %1 -t -d dds -n '%2'", address, id) - SCR.Execute(path(".target.bash_output"), command, {}) - - true - end - - def deleteDDMember(address, dd_id, iqn) - Builtins.y2milestone("deleteDDSMember:%1", iqn) - command = Builtins.sformat( - "isnsadm -a %1 -t -d ddmember -n %2 -m %3", - address, - dd_id, - iqn - ) - SCR.Execute(path(".target.bash_output"), command, {}) - - true + def deleteDD(id) + y2milestone("deleteDD: #{id}") + isnsadm("--dd-deregister #{id}") end - def deleteDDSMember(address, dds_id, dd_id) - Builtins.y2milestone("deleteDDSMember") - command = Builtins.sformat( - "isnsadm -a %1 -t -d ddsmember -n %2 -m %3", - address, - dds_id, - dd_id - ) - SCR.Execute(path(".target.bash_output"), command, {}) - - true - end - - def deleteDD(address, id) - Builtins.y2milestone("deleteDDS") - command = Builtins.sformat("isnsadm -a %1 -t -d dd -n '%2'", address, id) - SCR.Execute(path(".target.bash_output"), command, {}) - - true - end - - # Read all iscsi-server settings # @return true on success def Read # IsnsServer read dialog caption caption = _("Initializing isns daemon configuration") - # TODO FIXME Set the right number of stages - steps = 4 - - sl = 500 - Builtins.sleep(sl) - - # TODO FIXME Names of real stages - # We do not set help text here, because it was set outside - Progress.New( - caption, - " ", - steps, - [ - # Progress stage 1/3 - _("Read the database"), - # Progress stage 2/3 - _("Read the previous settings"), - # Progress stage 3/3 - _("Detect the devices") - ], - [ - # Progress step 1/3 - _("Reading the database..."), - # Progress step 2/3 - _("Reading the previous settings..."), - # Progress step 3/3 - _("Detecting the devices..."), - # Progress finished - _("Finished") - ], - "" - ) - # check if user is root return false if !Confirm.MustBeRoot - Progress.NextStage + # check if required packages ("open-isns") is installed return false if !installed_packages - Builtins.sleep(sl) - return false if Abort() - Progress.NextStep # get status of isns init script return false if !getServiceStatus - Builtins.sleep(sl) - - return false if Abort() - Progress.NextStage - # read configuration (/etc/ietd.conf) - if !readConfig - Report.Error(Message.CannotReadCurrentSettings) - return false - end - Builtins.sleep(sl) # detect devices - Progress.set(false) SuSEFirewall.Read - Progress.set(true) - - Progress.NextStage - # Error message - return false if false - Builtins.sleep(sl) - - return false if Abort() - # Progress finished - Progress.NextStage - Builtins.sleep(sl) - return false if Abort() @modified = false @configured = true true @@ -650,56 +299,7 @@ # IsnsServer write dialog caption caption = _("Saving isns Configuration") - # TODO FIXME And set the right number of stages - steps = 2 - - sl = 500 - Builtins.sleep(sl) - - # TODO FIXME Names of real stages - # We do not set help text here, because it was set outside - Progress.New( - caption, - " ", - steps, - [ - # Progress stage 1/2 - _("Write the settings"), - # Progress stage 2/2 - _("Run SuSEconfig") - ], - [ - # Progress step 1/2 - _("Writing the settings..."), - # Progress step 2/2 - _("Running SuSEconfig..."), - # Progress finished - _("Finished") - ], - "" - ) - - - Progress.set(false) SuSEFirewall.Write - Progress.set(true) - - Progress.NextStage - # write configuration (/etc/isns.conf) - Report.Error(_("Cannot write settings.")) if !writeConfig - Builtins.sleep(sl) - - - return false if Abort() - Progress.NextStage - # ask user whether reload or restart server and do it - # if ( (serviceStatus) || (statusOnStart) ) - # if (!reloadServer()) return false; - # sleep(sl); - - return false if Abort() - Progress.NextStage - Builtins.sleep(sl) # set isns initscript status return false if !setServiceStatus @@ -719,12 +319,12 @@ # get/set service accessors for CWMService component def GetStartService status = isnsdSocketEnabled? - Builtins.y2milestone("isns service status %1", status) + y2milestone("isns service status %1", status) status end def SetStartService(status) - Builtins.y2milestone("Set service status %1", status) + y2milestone("Set service status %1", status) @serviceStatus = status if status == true isnsdSocketEnable @@ -735,6 +335,87 @@ nil end + private + + def isnsadm(params, ret_result = false) + command = "isnsadm --local #{params}" + y2debug("Executing #{command}") + res = SCR.Execute(path(".target.bash_output"), command, {}) + + if ret_result + return res + else + return res["exit"] == 0 + end + end + + def isnsadm_control + if !@isctrlnode + @isctrlnode = isnsadm("--register control") + if !@isctrlnode + y2error("Registering as control node failed: #{res["stderr"]}; #{res["stdout"]}") + end + end + + @isctrlnode + end + + def isnsadm_query(query) + if !isnsadm_control + y2error("We aren't control node. Only default DD shown.") + end + + stdout = isnsadm("--query #{query}", true)["stdout"] + + parse_obj(stdout) + end + + def isnsadm_list(type) + if !isnsadm_control + y2error("We aren't control node. Only default DD shown.") + end + + objects = isnsadm("--list #{type}", true)["stdout"].split(/Object \d+:\n/) + + temp = [] + objects.each do |obj| + next if obj.empty? + temp << parse_obj(obj) + end + temp + end + + def parse_obj(text) + obj_details = {} + + text.each_line do |line| + line.chomp! + + # Schema of each line is: + # <definition> : <key> = <value> + # e.g.: + # 0020 string : iSCSI name = "iqn.2005-01.org.open-iscsi.foo:disk1" + # ( m[1] ) ( m[2] ) ( m[3] ) + # + # Quotation marks around the value(if any) are stripped. + # In some cases (dds) keys are not unique. + + line.match(/^\s*(.*)\b\s*:\s*(.*)\b\s*=\s*"*([^"]*)"*\s*$/) do |m| + key = m[2] + value = m[3] + + if key == "DD member iSCSI index" || key == "DD member iSCSI name" + obj_details[key] ||= [] + obj_details[key] << value + else + obj_details[key] = value + end + end + end + + obj_details + end + publish :function => :Modified, :type => "boolean ()" publish :variable => :modified, :type => "boolean" publish :variable => :configured, :type => "boolean" @@ -743,22 +424,14 @@ publish :variable => :AbortFunction, :type => "boolean ()" publish :function => :Abort, :type => "boolean ()" publish :function => :readConfig, :type => "boolean ()" - publish :function => :testISNSAccess, :type => "string (string)" + publish :function => :testISNSAccess, :type => "boolean ()" publish :function => :readISCSI, :type => "list <map <string, any>> (string)" - publish :function => :readISCSI_type, :type => "string (string, string)" - publish :function => :readDDS, :type => "list <string> (string)" publish :function => :readDDMembers, :type => "list <map <string, any>> (string, string)" - publish :function => :readDDSMembers, :type => "list <string> (string, string)" publish :function => :readDD, :type => "list <string> (string)" - publish :function => :addISCSI, :type => "boolean (string, string, string)" - publish :function => :addDDS, :type => "boolean (string, string)" publish :function => :addDDMember, :type => "boolean (string, string, string)" - publish :function => :addDDSMember, :type => "boolean (string, string, string)" publish :function => :addDD, :type => "boolean (string, string)" publish :function => :deleteISCSI, :type => "boolean (string, string)" - publish :function => :deleteDDS, :type => "boolean (string, string)" publish :function => :deleteDDMember, :type => "boolean (string, string, string)" - publish :function => :deleteDDSMember, :type => "boolean (string, string, string)" publish :function => :deleteDD, :type => "boolean (string, string)" publish :function => :Read, :type => "boolean ()" publish :function => :Write, :type => "boolean ()" -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
