Net-OpenNebula
view release on metacpan or search on metacpan
lib/Net/OpenNebula/RPC.pm view on Meta::CPAN
# Chown
# options
# uid : uid to use
# gid : gid to use
# one : Net::OpenNebula instance to use for user/groupname lookup
# (i.e. when uid/gid is not a integer)
# It wil use $one->get_users and/or $one->get_groups methods.
sub chown
{
my ($self, %opts) = @_;
$self->has_id("chown") || return;
my $uid = $self->_lookup('user', $opts{uid}, $opts{one});
return if ! defined($uid);
my $gid = $self->_lookup('group', $opts{gid}, $opts{one});
return if ! defined($gid);
return $self->_onerpc("chown",
[ int => $self->id ],
[ int => $uid ],
[ int => $gid ]
);
}
# Mode can be
# an integer, typical in octal mode 0664, but can be decimal or whatever
sub chmod
{
my ($self, $mode) = @_;
$self->has_id("chmod") || return;
my @bits;
if ($mode =~ m/^\d+/) {
my $bin = sprintf("%b", $mode & oct("777"));
@bits = split('', $bin);
} else {
$self->error("chown cannot handle mode $mode");
return;
};
if((scalar @bits) == 9) {
my @allargs = qw(chmod);
push(@allargs, [ int => $self->id ], map {[ int => $_ ]} @bits);
return $self->_onerpc(@allargs);
} else {
$self->error("9 permissions bits required, got ".join(",", @bits));
return;
( run in 1.491 second using v1.01-cache-2.11-cpan-71847e10f99 )