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]

Reply via email to