Hi, few comments
On 08/17/2009 10:01 AM, Jiri Suchomel wrote:
> ref: refs/heads/master
> commit 51c4d88d32d55c56e38a96fd782310e8890e41ea
> Author: Jiri Suchomel <[email protected]>
> 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: [email protected]
For additional commands, e-mail: [email protected]