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)