Class: OpenNebula::User

Inherits:
PoolElement show all
Defined in:
lib/opennebula/user.rb

Constant Summary collapse

USER_METHODS =

Constants and Class Methods

{
    :info     => "user.info",
    :allocate => "user.allocate",
    :delete   => "user.delete",
    :passwd   => "user.passwd",
    :chgrp    => "user.chgrp",
    :addgroup => "user.addgroup",
    :delgroup => "user.delgroup",
    :update   => "user.update",
    :chauth   => "user.chauth",
    :quota    => "user.quota",
    :login    => "user.login"
}
SELF =
-1
CORE_AUTH =

Driver name for default core authentication

"core"
CIPHER_AUTH =

Driver name for default core authentication

"server_cipher"
SSH_AUTH =

Driver name for ssh authentication

"ssh"
X509_AUTH =

Driver name for x509 authentication

"x509"
X509_PROXY_AUTH =

Driver name for x509 proxy authentication

"x509_proxy"
INVALID_NAME_CHARS =

Same as User.cc

[" ", ":", "\t", "\n", "\v", "\f", "\r"]
INVALID_PASS_CHARS =
[" ", "\t", "\n", "\v", "\f", "\r"]

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from PoolElement

#id, #name, new_with_id, #to_str

Methods inherited from XMLElement

#[], #add_element, #attr, #delete_element, #each, #each_xpath, #element_xml, #has_elements?, #initialize_xml, #name, #retrieve_elements, #retrieve_xmlelements, #template_like_str, #template_str, #template_xml, #text, #to_hash, #to_xml, #xml_nil?

Constructor Details

#initialize(xml, client) ⇒ User

Class constructor



79
80
81
82
83
# File 'lib/opennebula/user.rb', line 79

def initialize(xml, client)
    super(xml,client)

    @client = client
end

Class Method Details

.build_xml(pe_id = nil) ⇒ Object

Creates a User description with just its identifier this method should be used to create plain User objects. id the id of the user

Example:

user = User.new(User.build_xml(3),rpc_client)


68
69
70
71
72
73
74
75
76
# File 'lib/opennebula/user.rb', line 68

def User.build_xml(pe_id=nil)
    if pe_id
        user_xml = "<USER><ID>#{pe_id}</ID></USER>"
    else
        user_xml = "<USER></USER>"
    end

    XMLElement.build_xml(user_xml, 'USER')
end

Instance Method Details

#addgroup(gid) ⇒ nil, OpenNebula::Error

Adds the User to a secondary group

Parameters:

  • gid (Integer)

    the new group id.

Returns:



159
160
161
# File 'lib/opennebula/user.rb', line 159

def addgroup(gid)
    return call(USER_METHODS[:addgroup], @pe_id, gid)
end

#allocate(username, password, driver = nil, gids = []) ⇒ nil, OpenNebula::Error

Allocates a new User in OpenNebula

username Name of the new user.

password Password for the new user This array can be empty, in which case the default group will be used.

Parameters:

  • username

    Username for the new user.

  • password

    Password for the new user

  • driver (defaults to: nil)

    Auth driver for the new user.

  • gids (defaults to: [])

    Group IDs. The first ID will be used as the main group.

Returns:



109
110
111
112
# File 'lib/opennebula/user.rb', line 109

def allocate(username, password, driver=nil, gids=[])
    driver = CORE_AUTH if driver.nil?
    super(USER_METHODS[:allocate], username, password, driver, gids)
end

#chauth(auth, password = "") ⇒ nil, OpenNebula::Error

Changes the auth driver and the password of the given User

Parameters:

  • auth (String)

    the new auth driver

  • password (String) (defaults to: "")

    the new password. If it is an empty string, the user password is not changed

Returns:



179
180
181
182
183
184
185
186
# File 'lib/opennebula/user.rb', line 179

def chauth(auth, password="")
    return Error.new('ID not defined') if !@pe_id

    rc = @client.call(USER_METHODS[:chauth],@pe_id, auth, password)
    rc = nil if !OpenNebula.is_error?(rc)

    return rc
end

#chgrp(gid) ⇒ Object

Changes the primary group

gid

Integer the new group id. Set to -1 to leave the current one

return

nil in case of success or an Error object



146
147
148
149
150
151
152
153
# File 'lib/opennebula/user.rb', line 146

def chgrp(gid)
    return Error.new('ID not defined') if !@pe_id

    rc = @client.call(USER_METHODS[:chgrp],@pe_id, gid)
    rc = nil if !OpenNebula.is_error?(rc)

    return rc
end

#deleteObject

Deletes the User



127
128
129
# File 'lib/opennebula/user.rb', line 127

def delete()
    super(USER_METHODS[:delete])
end

#delgroup(gid) ⇒ nil, OpenNebula::Error

Removes the User from a secondary group. Fails if the group is the main one

Parameters:

  • gid (Integer)

    the group id.

Returns:



168
169
170
# File 'lib/opennebula/user.rb', line 168

def delgroup(gid)
    return call(USER_METHODS[:delgroup], @pe_id, gid)
end

#gidObject

Returns the group identifier

return

Integer the element’s group ID



223
224
225
# File 'lib/opennebula/user.rb', line 223

def gid
    self['GID'].to_i
end

#groupsObject

Returns a list with all the group IDs for the user including primary

return

Array with the group ID’s (as integers)



229
230
231
232
# File 'lib/opennebula/user.rb', line 229

def groups
    all_groups = self.retrieve_elements("GROUPS/ID")
    all_groups.collect! {|x| x.to_i}
end

#infoObject Also known as: info!

Retrieves the information of the given User.



90
91
92
# File 'lib/opennebula/user.rb', line 90

def info()
    super(USER_METHODS[:info], 'USER')
end

#login(uname, token, expire, egid = -1)) ⇒ String, OpenNebula::Error

Sets the LOGIN_TOKEN for the user

the current GID and user groups set it to -1

Parameters:

  • uname (String)

    of the user

  • token (String)

    the login token, if empty OpenNebula will generate one

  • expire (String)

    valid period of the token in secs. If == 0 the token will be reset

  • egid (Integer) (defaults to: -1))

    Effective GID to use with this token. To use

Returns:



213
214
215
# File 'lib/opennebula/user.rb', line 213

def (uname, token, expire, egid = -1)
    return @client.call(USER_METHODS[:login], uname, token, expire, egid)
end

#passwd(password) ⇒ Object

Changes the password of the given User

password String containing the new password



134
135
136
137
138
139
140
141
# File 'lib/opennebula/user.rb', line 134

def passwd(password)
    return Error.new('ID not defined') if !@pe_id

    rc = @client.call(USER_METHODS[:passwd], @pe_id, password)
    rc = nil if !OpenNebula.is_error?(rc)

    return rc
end

#set_quota(quota) ⇒ nil, OpenNebula::Error

Sets the user quota limits

Parameters:

  • quota (String)

    a template (XML or txt) with the new quota limits

Returns:



193
194
195
196
197
198
199
200
# File 'lib/opennebula/user.rb', line 193

def set_quota(quota)
    return Error.new('ID not defined') if !@pe_id

    rc = @client.call(USER_METHODS[:quota],@pe_id, quota)
    rc = nil if !OpenNebula.is_error?(rc)

    return rc
end

#update(new_template, append = false) ⇒ nil, OpenNebula::Error

Replaces the template contents

Parameters:

  • new_template (String)

    New template contents

  • append (true, false) (defaults to: false)

    True to append new attributes instead of replace the whole template

Returns:



122
123
124
# File 'lib/opennebula/user.rb', line 122

def update(new_template, append=false)
    super(USER_METHODS[:update], new_template, append ? 1 : 0)
end