You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.0 KiB
72 lines
2.0 KiB
# Copyright (C) 2005-2025 Splunk Inc. All Rights Reserved.
|
|
|
|
import json
|
|
|
|
from integrations.commons.rest import RestMethods
|
|
from integrations.commons.logutil import get_logger
|
|
|
|
logger = get_logger(name=__name__)
|
|
|
|
|
|
class Resource(object):
|
|
verify_ssl_cert = True
|
|
|
|
@classmethod
|
|
def create(cls, server, data):
|
|
raise NotImplementedError('Derived class did not implement `create`.')
|
|
|
|
@classmethod
|
|
def read(cls, server, data):
|
|
raise NotImplementedError('Derived class did not implement `read`.')
|
|
|
|
@classmethod
|
|
def update(cls, server, data):
|
|
raise NotImplementedError('Derived class did not implement `update`.')
|
|
|
|
@classmethod
|
|
def delete(cls, server, data):
|
|
raise NotImplementedError('Derived class did not implement `delete`.')
|
|
|
|
@classmethod
|
|
def get_url(cls, server, resource_name):
|
|
return server.get_rest_endpoint() + resource_name
|
|
|
|
|
|
class Result(object):
|
|
def __init__(self, item, errors):
|
|
self.item = item
|
|
self.errors = errors
|
|
|
|
|
|
# anything other than desired status code of say 200 or 201, can use this
|
|
class PhantomAPIError(Exception):
|
|
pass
|
|
|
|
|
|
class Container(Resource):
|
|
resource_name = 'container'
|
|
|
|
@classmethod
|
|
def create(cls, server, data):
|
|
data_json = json.dumps(data)
|
|
url = cls.get_url(server, cls.resource_name)
|
|
status_code, response = RestMethods.post(url, data_json=data_json, headers=server.get_rest_headers(), verify=cls.verify_ssl_cert)
|
|
if status_code == 200:
|
|
return Result(response, None)
|
|
else:
|
|
return Result(None, response)
|
|
|
|
|
|
class Artifact(Resource):
|
|
resource_name = 'artifact'
|
|
|
|
@classmethod
|
|
def create(cls, server, data):
|
|
data_json = json.dumps(data)
|
|
url = cls.get_url(server, cls.resource_name)
|
|
status_code, response = RestMethods.post(url + '', data_json=data_json, headers=server.get_rest_headers(), verify=cls.verify_ssl_cert)
|
|
if status_code == 200:
|
|
return Result(response, None)
|
|
else:
|
|
return Result(None, response)
|