forked from uncloud/uncloud
46 lines
1.4 KiB
Python
46 lines
1.4 KiB
Python
import importlib
|
|
import sys
|
|
import os
|
|
|
|
from os.path import join as join_path
|
|
from xmlrpc.client import ServerProxy as RPCClient
|
|
|
|
root = os.path.dirname(os.getcwd())
|
|
sys.path.append(join_path(root, 'uncloud'))
|
|
secrets = importlib.import_module('uncloud.secrets')
|
|
|
|
|
|
class OpenNebula:
|
|
def __init__(self, url, session_string):
|
|
self.session_string = session_string
|
|
self.client = RPCClient(secrets.OPENNEBULA_URL)
|
|
|
|
def create_user(self, username, password, authentication_driver='', group_id=None):
|
|
# https://docs.opennebula.org/5.10/integration/system_interfaces/api.html#one-user-allocate
|
|
|
|
if group_id is None:
|
|
group_id = []
|
|
|
|
return self.client.one.user.allocate(
|
|
self.session_string,
|
|
username,
|
|
password,
|
|
authentication_driver,
|
|
group_id
|
|
)
|
|
|
|
def chmod(self, vm_id, user_id=-1, group_id=-1):
|
|
# https://docs.opennebula.org/5.10/integration/system_interfaces/api.html#one-vm-chown
|
|
|
|
return self.client.one.vm.chown(self.session_string, vm_id, user_id, group_id)
|
|
|
|
|
|
one = OpenNebula(secrets.OPENNEBULA_URL, secrets.OPENNEBULA_USER_PASS)
|
|
|
|
# Create User in OpenNebula
|
|
# success, response, *_ = one.create_user(username='meow12345', password='hello_world')
|
|
# print(success, response)
|
|
|
|
# Change owner of a VM
|
|
# success, response, *_ = one.chmod(vm_id=25589, user_id=706)
|
|
# print(success, response)
|