[one-users] Quota Issue

Hutson Betts hut101 at tamu.edu
Thu Dec 22 11:03:09 PST 2011


Daniel,

This is a late reply, but I wanted to point out that the patch you
provided is slightly wrong. I believe it should be:

--- a/src/authm_mad/remotes/quota/quota.rb
+++ b/src/authm_mad/remotes/quota/quota.rb
@@ -241,10 +241,10 @@ class Quota
             resources.each{ |res|
                 pool = get_pool(res, user_id)
                 base_xpath = "/#{res}_POOL/#{resource}"
                 Quota.const_get("#{res}_USAGE".to_sym).each { |key, params|
+		     usage[key] ||= 0
                     pool.each_xpath("#{base_xpath}/#{params[:xpath]}") { |elem|
                         if elem
-                            usage[key] ||= 0
                             if params[:count]
                                 usage[key] += 1
                             else

With the other patch, the key variable was never defined, since it was defined in the next line. Therefore, the following error would occur:

Thu Dec 22 12:55:12 2011 [AuM][I]: Command execution
fail: /var/lib/one/remotes/auth/quota/authorize 1 VM:PFRFTVBMQVRFPjxDUFU
+PCFbQ0RBVEFbMV1dPjwvQ1BVPjxESV$
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I
22 /usr/lib/one/ruby/quota.rb:244:in `get_usage': undefined local
variable or method `key' for #<Quota:0x7faee1fc02a0> (NameError)

Thu Dec 22 12:55:12 2011 [AuM][I]: /usr/lib/one/ruby/quota.rb:244:in
`get_usage': undefined local variable or method `key' for
#<Quota:0x7faee1fc02a0> (Name$
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /usr/lib/one/ruby/quota.rb:241:in `each'

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /usr/lib/one/ruby/quota.rb:241:in `each'
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /usr/lib/one/ruby/quota.rb:241:in `get_usage'

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /usr/lib/one/ruby/quota.rb:241:in `get_usage'
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /usr/lib/one/ruby/quota.rb:189:in `check_quotas'

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /usr/lib/one/ruby/quota.rb:189:in `check_quotas'
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /usr/lib/one/ruby/quota.rb:184:in `authorize'

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /usr/lib/one/ruby/quota.rb:184:in `authorize'
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /var/lib/one/remotes/auth/quota/authorize:53

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /var/lib/one/remotes/auth/quota/authorize:53
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /var/lib/one/remotes/auth/quota/authorize:52:in `each'

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /var/lib/one/remotes/auth/quota/authorize:52:in `each'
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22
from /var/lib/one/remotes/auth/quota/authorize:52

Thu Dec 22 12:55:12 2011 [AuM][I]:
from /var/lib/one/remotes/auth/quota/authorize:52
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: LOG I 22 ExitCode:
1

Thu Dec 22 12:55:12 2011 [AuM][I]: ExitCode: 1
Thu Dec 22 12:55:12 2011 [AuM][D]: Message received: AUTHORIZE FAILURE
22 -

Thu Dec 22 12:55:12 2011 [AuM][E]: Auth Error:
Thu Dec 22 12:55:12 2011 [ReM][E]: [VirtualMachineAllocate] User [1] not
authorized to perform action on virtual machine.

However, after using the change I made, I was able to get it working.

oneadmin at opennebula-server:~$ occi-compute --username [USER] --password
[PASSWORD] --url https://localhost/occi --debug create test.vm 
/var/lib/gems/1.8/gems/curb-0.7.16/lib/curb_core.so: warning: already
initialized constant CURL_SSLVERSION_DEFAULT
<COMPUTE href='[ADDRESS]/compute/21'>
  <ID>21</ID>
  <CPU>1</CPU>
  <MEMORY>1024</MEMORY>
  <NAME>one-21</NAME>
  <INSTANCE_TYPE>small</INSTANCE_TYPE>
  <STATE>PENDING</STATE>
  <DISK id='0'>
    <STORAGE href='[ADDRESS]/storage/1' name='Machine A'/>
    <TYPE>DISK</TYPE>
    <TARGET>hda</TARGET>
  </DISK>
  <NIC>
    <NETWORK href='[ADDRESS]/network/10' name='test-2'/>
    <IP>192.168.0.1</IP>
    <MAC>02:00:c0:a8:00:01</MAC>
  </NIC>
</COMPUTE>

oneadmin at opennebula-server:~$ onevm list all
    ID USER     GROUP    NAME         STAT CPU     MEM        HOSTNAME
TIME
    21 [USER]    users    one-21       runn  94   1024M      10.1.0.101
00 00:02:33


-- 
Hutson Betts
Computer Science and Engineering
Texas A&M University


On Fri, 2011-12-16 at 17:51 +0100, Daniel Molina wrote:
> Dear Hutson,
> 
> I suppose that you are using OpenNebula 3.0. That bug was fixed in the
> master branch for the next release. This bug appears when the VM pool
> is empty or no CPU is defined in the VMS. You can fix it applying the
> following patch:
> 
> diff --git a/src/authm_mad/remotes/quota/quota.rb
> b/src/authm_mad/remotes/quota/quota.rb
> index 1f13234..26336bb 100644
> --- a/src/authm_mad/remotes/quota/quota.rb
> +++ b/src/authm_mad/remotes/quota/quota.rb
> @@ -241,10 +241,10 @@ class Quota
>              resources.each{ |res|
>                  pool = get_pool(res, user_id)
>                  base_xpath = "/#{res}_POOL/#{resource}"
> +                usage[key] ||= 0
>                  Quota.const_get("#{res}_USAGE".to_sym).each { |key, params|
>                      pool.each_xpath("#{base_xpath}/#{params[:xpath]}") { |elem|
>                          if elem
> -                            usage[key] ||= 0
>                              if params[:count]
>                                  usage[key] += 1
>                              else
> 
> 
> Kind regards.
> 
> On 15 December 2011 18:45, Hutson Betts <hut101 at tamu.edu> wrote:
> > I'm currently facing a similar issue when attempting to instantiate a VM
> > using occi-compute. The error:
> >
> > oneadmin at opennebula-server:~$ occi-compute --username [USER] --password
> > [PASSWORD] --url https://localhost/occi --debug create test.vm
> > /var/lib/gems/1.8/gems/curb-0.7.16/lib/curb_core.so: warning: already
> > initialized constant CURL_SSLVERSION_DEFAULT
> > [VirtualMachineAllocate] User [1] not authorized to perform action on
> > virtual machine.
> >
> > oneadmin at opennebula-server:~$ onevm list all
> >    ID USER     GROUP    NAME         STAT CPU     MEM        HOSTNAME
> > TIME
> >
> > oneadmin at opennebula-server:~$ onevnet list all
> > one  ID USER     GROUP    NAME              TYPE BRIDGE PUB  LEASES
> >   6 [USER]    users    firewall-extern      R    br2  No       0
> >
> > oneadmin at opennebula-server:~$ oneimage list all
> >  ID USER     GROUP    NAME            SIZE TYPE          REGTIME PUB
> > PER STAT  RVMS
> >   1 [USER]    users    Machine A      1015M   OS   12/11 17:50:01  No
> > No  rdy     0
> >   2 [USER]    users    Machine B       976M   OS   12/11 17:51:27  No
> > No  rdy     0
> >   3 [USER]    users    Machine C       993M   OS   12/11 18:00:40  No
> > No  rdy     0
> >
> > Output From oned.log:
> >
> > Thu Dec 15 11:43:25 2011 [ACL][D]: Request #1 VM/* CREATE
> > Thu Dec 15 11:43:25 2011 [ACL][D]: > Rule  @1 VM+NET+IMAGE+TEMPLATE/*
> > CREATE+INFO_POOL_MINE
> > Thu Dec 15 11:43:25 2011 [ACL][D]: Permission granted
> > Thu Dec 15 11:43:26 2011 [ReM][D]: VirtualMachinePoolInfo method invoked
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 12 ExitCode:
> > 0
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]: ExitCode: 0
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: AUTHENTICATE
> > SUCCESS 12 -
> >
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11 Command
> > execution fail: /var/lib/one/remotes/auth/quota/authorize 1
> > VM:PFRFTVBMQVRFPjxDUFU+PCF$
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]: Command execution
> > fail: /var/lib/one/remotes/auth/quota/authorize 1 VM:PFRFTVBMQVRFPjxDUFU
> > +PCFbQ0RBVEFbMV1dPjwvQ1BVPjxESV$
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I
> > 11 /usr/lib/one/ruby/quota.rb:199:in `Float': can't convert nil into
> > Float (TypeError)
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]: /usr/lib/one/ruby/quota.rb:199:in
> > `Float': can't convert nil into Float (TypeError)
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /usr/lib/one/ruby/quota.rb:199:in `send'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /usr/lib/one/ruby/quota.rb:199:in `send'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /usr/lib/one/ruby/quota.rb:199:in `check_quotas'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /usr/lib/one/ruby/quota.rb:199:in `check_quotas'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /usr/lib/one/ruby/quota.rb:194:in `each'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /usr/lib/one/ruby/quota.rb:194:in `each'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /usr/lib/one/ruby/quota.rb:194:in `check_quotas'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /usr/lib/one/ruby/quota.rb:194:in `check_quotas'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /usr/lib/one/ruby/quota.rb:184:in `authorize'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /usr/lib/one/ruby/quota.rb:184:in `authorize'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /var/lib/one/remotes/auth/quota/authorize:53
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /var/lib/one/remotes/auth/quota/authorize:53
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /var/lib/one/remotes/auth/quota/authorize:52:in `each'
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /var/lib/one/remotes/auth/quota/authorize:52:in `each'
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11
> > from /var/lib/one/remotes/auth/quota/authorize:52
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]:
> > from /var/lib/one/remotes/auth/quota/authorize:52
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: LOG I 11 ExitCode:
> > 1
> >
> > Thu Dec 15 11:43:26 2011 [AuM][I]: ExitCode: 1
> > Thu Dec 15 11:43:26 2011 [AuM][D]: Message received: AUTHORIZE FAILURE
> > 11 -
> >
> > Thu Dec 15 11:43:26 2011 [AuM][E]: Auth Error:
> > Thu Dec 15 11:43:26 2011 [ReM][E]: [VirtualMachineAllocate] User [1] not
> > authorized to perform action on virtual machine.
> >
> > --
> > Hutson Betts
> > Computer Science and Engineering
> > Texas A&M University
> >
> >
> > On Thu, 2011-12-15 at 14:26 +1000, Graeme Gillies wrote:
> >> Hi,
> >>
> >> I've done some more investigating and I've got a handle on what the problem is.
> >>
> >> My VM templates don't define a CPU attribute (as I'm just letting it
> >> use the default values) and therefore the code errors out trying to
> >> get a CPU value from my vm template which don't have one.
> >>
> >> This sounds like a bug to me, I'm assuming I should file it at
> >> dev.opennebula.org?
> >>
> >> Regards,
> >>
> >> Graeme
> >>
> >> On Mon, Dec 5, 2011 at 3:36 PM, Graeme Gillies
> >> <graeme.r.gillies at gmail.com> wrote:
> >> > Hi,
> >> >
> >> > I have enabled the quota module on my opennebula 3 installation and
> >> > now whenever I try and create a vm image, either from a template or
> >> > file from disk, I get the quota module denying me. I have checked the
> >> > quota limits for the user are ok. Running the command from the
> >> > oned.log with ruby debug gives the following error message
> >> >
> >> > /var/lib/one/remotes/auth/quota/authorize:38: warning: ambiguous first
> >> > argument; put parentheses or even spaces
> >> > /var/lib/one/remotes/auth/quota/authorize:57: warning: ambiguous first
> >> > argument; put parentheses or even spaces
> >> > Exception `LoadError' at /usr/lib/ruby/site_ruby/1.8/rubygems.rb:1113
> >> > - no such file to load -- rubygems/defaults/operating_system
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/config_file.rb:50 - no such file
> >> > to load -- Win32API
> >> > Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 -
> >> > undefined method `gcd' for Rational(1, 2):Rational
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31 - no such
> >> > file to load -- nokogiri
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31 - no such
> >> > file to load -- xmlparser
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:38 - no such
> >> > file to load -- xmlparser
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31 - no such
> >> > file to load -- sequel
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/model/base.rb:817:
> >> > warning: `*' interpreted as argument prefix
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/model/base.rb:631:
> >> > warning: instance variable @dataset not initialized
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/model/base.rb:631:
> >> > warning: instance variable @dataset not initialized
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31 - no such
> >> > file to load -- sqlite3
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31 - no such
> >> > file to load -- sqlite3/1.8/sqlite3_native
> >> > Exception `LoadError' at
> >> > /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:38 - no such
> >> > file to load -- sqlite3/1.8/sqlite3_native
> >> > Exception `SQLite3::SQLException' at
> >> > /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3/lib/sqlite3/database.rb:91 -
> >> > index quotas_uid_index already exists
> >> > Exception `Sequel::DatabaseError' at
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/database/misc.rb:254
> >> > - SQLite3::SQLException: index quotas_uid_index already exists
> >> > Exception `SQLite3::SQLException' at
> >> > /usr/lib/ruby/gems/1.8/gems/sqlite3-1.3.3/lib/sqlite3/database.rb:91 -
> >> > index usage_uid_index already exists
> >> > Exception `Sequel::DatabaseError' at
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/database/misc.rb:254
> >> > - SQLite3::SQLException: index usage_uid_index already exists
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/dataset/actions.rb:130:
> >> > warning: instance variable @row_proc not initialized
> >> > /usr/lib/ruby/gems/1.8/gems/sequel-3.29.0/lib/sequel/dataset/actions.rb:130:
> >> > warning: instance variable @row_proc not initialized
> >> > Exception `TypeError' at /usr/lib/one/ruby/quota.rb:199 - can't
> >> > convert nil into Float
> >> > /usr/lib/one/ruby/quota.rb:199:in `Float': can't convert nil into
> >> > Float (TypeError)
> >> >        from /usr/lib/one/ruby/quota.rb:199:in `send'
> >> >        from /usr/lib/one/ruby/quota.rb:199:in `check_quotas'
> >> >        from /usr/lib/one/ruby/quota.rb:194:in `each'
> >> >        from /usr/lib/one/ruby/quota.rb:194:in `check_quotas'
> >> >        from /usr/lib/one/ruby/quota.rb:184:in `authorize'
> >> >        from /var/lib/one/remotes/auth/quota/authorize:53
> >> >        from /var/lib/one/remotes/auth/quota/authorize:52:in `each'
> >> >        from /var/lib/one/remotes/auth/quota/authorize:52
> >> >
> >> > output for onequota show 1
> >> >
> >> >  uid          cpu       memory      num_vms      storage
> >> >   1          0/3   5120/10240         4/10      0/20480
> >> >
> >> > Any help would be much appreciated.
> >> >
> >> > Regards,
> >> >
> >> > Graeme
> >> _______________________________________________
> >> Users mailing list
> >> Users at lists.opennebula.org
> >> http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
> >
> > _______________________________________________
> > Users mailing list
> > Users at lists.opennebula.org
> > http://lists.opennebula.org/listinfo.cgi/users-opennebula.org
> >
> 
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: This is a digitally signed message part
URL: <http://lists.opennebula.org/pipermail/users-opennebula.org/attachments/20111222/f6fc859f/attachment-0003.pgp>


More information about the Users mailing list