Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
kwargs['base_url'] = self.url_join(self._store["base_url"], item)
return ProxmoxResource(**kwargs)
def url_join(self, base, *args):
scheme, netloc, path, query, fragment = urlparse.urlsplit(base)
path = path if len(path) else "/"
path = posixpath.join(path, *[('%s' % x) for x in args])
return urlparse.urlunsplit([scheme, netloc, path, query, fragment])
class ResourceException(Exception):
pass
class ProxmoxResource(ProxmoxResourceBase):
def __init__(self, **kwargs):
self._store = kwargs
def __call__(self, resource_id=None):
if not resource_id:
return self
if isinstance(resource_id, basestring):
resource_id = resource_id.split("/")
elif not isinstance(resource_id, (tuple, list)):
resource_id = [str(resource_id)]
kwargs = self._store.copy()
if resource_id is not None:
kwargs["base_url"] = self.url_join(self._store["base_url"], *resource_id)
return self(args)._request("POST", data=data)
def put(self, *args, **data):
return self(args)._request("PUT", data=data)
def delete(self, *args, **params):
return self(args)._request("DELETE", params=params)
def create(self, *args, **data):
return self.post(*args, **data)
def set(self, *args, **data):
return self.put(*args, **data)
class ProxmoxAPI(ProxmoxResourceBase):
def __init__(self, host, backend='https', **kwargs):
#load backend module
self._backend = importlib.import_module('.backends.%s' % backend, 'proxmoxer').Backend(host, **kwargs)
self._backend_name = backend
self._store = {
"base_url": self._backend.get_base_url(),
"session": self._backend.get_session(),
"serializer": self._backend.get_serializer(),
}
def get_tokens(self):
"""Return the auth and csrf tokens.
Returns (None, None) if the backend is not https.