#!/usr/bin/env ruby # -------------------------------------------------------------------------- # # Copyright 2002-2012, OpenNebula Project Leads (OpenNebula.org) # # # # Licensed under the Apache License, Version 2.0 (the "License"); you may # # not use this file except in compliance with the License. You may obtain # # a copy of the License at # # # # http://www.apache.org/licenses/LICENSE-2.0 # # # # Unless required by applicable law or agreed to in writing, software # # distributed under the License is distributed on an "AS IS" BASIS, # # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # # See the License for the specific language governing permissions and # # limitations under the License. # #--------------------------------------------------------------------------- # ONE_LOCATION=ENV["ONE_LOCATION"] if !ONE_LOCATION RUBY_LIB_LOCATION="/usr/lib/one/ruby" else RUBY_LIB_LOCATION=ONE_LOCATION+"/lib/ruby" end $: << RUBY_LIB_LOCATION $: << RUBY_LIB_LOCATION+"/cli" require 'command_parser' require 'one_helper/oneacl_helper' cmd = CommandParser::CmdParser.new(ARGV) do usage "`oneacl` [] []" version OpenNebulaHelper::ONE_VERSION helper = OneAclHelper.new ######################################################################## # Global Options ######################################################################## set :option, CommandParser::OPTIONS ######################################################################## # Formatters for arguments ######################################################################## set :format, :aclid_list, OneAclHelper.list_to_id_desc do |arg| helper.list_to_id(arg) end ######################################################################## # Commands ######################################################################## addrule_desc = <<-EOT.unindent Adds a new ACL rule EOT command :create, addrule_desc, [:user,:rulestr], [:resource, nil], [:rights, nil] do case args.length when 1 new_args = Acl.parse_rule(args[0]) if OpenNebula.is_error?(new_args) next -1, new_args.message end when 3 new_args=args else next -1, "Wrong number of arguments, must be 1 or 3" end helper.create_resource(options) do |rule| rule.allocate(*new_args) end end delrule_desc = <<-EOT.unindent Deletes an existing ACL rule EOT command :delete, delrule_desc, [:range] do helper.perform_actions(args[0],options,"deleted") do |obj| obj.delete end end list_desc = <<-EOT.unindent Lists the ACL rule set EOT command :list, list_desc,:options=>OpenNebulaHelper::XML do helper.list_pool( options ) end end