![](https://seccdn.libravatar.org/avatar/f9a9cf77af20d925b328ee8c95c0068c.jpg?s=120&d=mm&r=g)
Hi, few comments On 08/17/2009 10:01 AM, Jiri Suchomel wrote:
ref: refs/heads/master commit 51c4d88d32d55c56e38a96fd782310e8890e41ea Author: Jiri Suchomel <jsuchome@suse.cz> Date: Mon Aug 17 10:01:21 2009 +0200
custom-services rest plugin (originaly services plugin for fate 306696) --- plugins/custom_services/.gitignore | 3 + plugins/custom_services/MIT-LICENSE | 20 +++++ plugins/custom_services/README | 7 ++ plugins/custom_services/Rakefile | 10 +++ .../app/controllers/custom_services_controller.rb | 54 +++++++++++++ .../custom_services/app/models/custom_service.rb | 70 ++++++++++++++++ .../app/views/custom_services/index.html.erb | 1 + .../app/views/custom_services/index.json.erb | 1 + .../app/views/custom_services/index.xml.erb | 1 + .../app/views/custom_services/show.html.erb | 1 + .../app/views/custom_services/show.json.erb | 1 + .../app/views/custom_services/show.xml.erb | 1 + plugins/custom_services/config/rails_parent.rb | 15 ++++ .../config/resources/custom_services.yml | 2 + plugins/custom_services/init.rb | 1 + plugins/custom_services/install.rb | 1 + .../org.opensuse.yast.modules.yapi.services.policy | 39 +++++++++ .../package/yast2-webservice-services.changes | 16 ++++ .../package/yast2-webservice-services.spec | 83 ++++++++++++++++++++ .../tasks/custom_services_tasks.rake | 6 ++ .../functional/custom_services_controller_test.rb | 51 ++++++++++++ plugins/custom_services/test/test_helper.rb | 52 ++++++++++++ plugins/custom_services/uninstall.rb | 1 + 23 files changed, 437 insertions(+), 0 deletions(-)
<snip /> diff --git a/plugins/custom_services/app/models/custom_service.rb b/plugins/custom_services/app/models/custom_service.rb new file mode 100644 index 0000000..26ce7ef --- /dev/null +++ b/plugins/custom_services/app/models/custom_service.rb @@ -0,0 +1,70 @@ +require 'yast_service' + +class CustomService + + attr_accessor :name + attr_accessor :status + + def initialize + end + + # services = CustomService.find_all + def self.find_all
This is not much convention for model. I think we should for better readiness use same method as do ActiveRecord...so instead find_all use find(:all) (use all as parameter)
+ + services = [] + yapi_ret = YastService.Call("YaPI::SERVICES::Read") + +Rails.logger.debug "reading YAPI ----------------------------" + + if yapi_ret.nil? + raise "Can't get services list" + else + yapi_ret.each do |s| + service = CustomService.new + service.name = s["name"] + service.status = s["status"] + Rails.logger.debug "service: #{service.inspect}" + services << service + end + end + services + end + + # load the status of the service + def self.find(id) + yapi_ret = YastService.Call("YaPI::SERVICES::Get", id) + + raise "Got no data while loading service" if yapi_ret.empty? + + service = CustomService.new + service.name = yapi_ret["name"] + service.status = yapi_ret["status"] + + Rails.logger.debug service.inspect + service + end + + + def save(cmd) + ret = YastService.Call("YaPI::SERVICES::Execute", self.name, cmd) + + Rails.logger.debug "Command returns: #{ret.inspect}" + ret + end + + def to_xml( options = {} ) + xml = options[:builder] ||= Builder::XmlMarkup.new(options) + xml.instruct! unless options[:skip_instruct] + + xml.service do + xml.tag!(:name, name ) + xml.tag!(:status, status, {:type => "integer"} ) + end + end + + def to_json( options = {} ) + hash = Hash.from_xml(to_xml()) + return hash.to_json + end + +end new file mode 100644 index 0000000..0f5d8ab --- /dev/null +++ b/plugins/custom_services/package/org.opensuse.yast.modules.yapi.services.policy @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" + "http://www.freedesktop.org/standards/PolicyKit/1.0/policyconfig.dtd"> + +<policyconfig> + <vendor>Novell, Inc.</vendor> + <vendor_url>http://www.novell.com</vendor_url> + + <action id="org.opensuse.yast.modules.yapi.services.read"> + <description>Get list of services.</description> + <message>System policy prevents the Yast DBus service from reading service list.</message> + <defaults> + <allow_any>no</allow_any> + <allow_inactive>no</allow_inactive> + <allow_active>auth_admin_keep_session</allow_active> + </defaults> + </action> + + <action id="org.opensuse.yast.modules.yapi.services.get"> + <description>Get the information about given service.</description> + <message>System policy prevents the Yast DBus service from reading service info.</message> + <defaults> + <allow_any>no</allow_any> + <allow_inactive>no</allow_inactive> + <allow_active>auth_admin_keep_session</allow_active> + </defaults> + </action> + + <action id="org.opensuse.yast.modules.yapi.services.execute"> + <description>Starting/stopping services.</description> + <message>System policy prevents the Yast DBus service from executing service script.</message> + <defaults> + <allow_any>no</allow_any> + <allow_inactive>no</allow_inactive> + <allow_active>auth_admin_keep_session</allow_active> + </defaults> + </action> +</policyconfig> +
We should unify location of policy files. I as yapi is reachable via dbus and uses policy kit I add it to directly to yast module. Maybe someone (Klaus?) should say where is correct location for this file. -- Josef Reidinger YaST team maintainer of perl-Bootloader, YaST2-Repair, webyast modules language and time -- To unsubscribe, e-mail: yast-devel+unsubscribe@opensuse.org For additional commands, e-mail: yast-devel+help@opensuse.org