Skip to content

ManageService

ManageService(domain, root_client, root_secret)

Manage service to interact with the manage endpoint. The manage endpoint uses basic auth using the root client and secret

Source code in TM1py/Services/ManageService.py
def __init__(self, domain, root_client, root_secret):
    self._domain = domain
    self._root_client = root_client
    self._root_secret = root_secret
    self._auth_header = HTTPBasicAuth(self._root_client, self._root_secret)
    self._root_url = f"{self._domain}/manage/v1"

__enter__()

Source code in TM1py/Services/ManageService.py
def __enter__(self):
    return self

__exit__(exception_type, exception_value, traceback)

Source code in TM1py/Services/ManageService.py
def __exit__(self, exception_type, exception_value, traceback):
    pass

create_and_upload_database_backup_set_file(instance_name, database_name, backup_set_name)

Source code in TM1py/Services/ManageService.py
def create_and_upload_database_backup_set_file(self, instance_name: str, database_name: str, backup_set_name: str):

    create_url = (
        f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
        f"/Contents('Files')/Contents('.backupsets')/Contents"
    )
    payload = {"@odata.type": "#ibm.tm1.api.v1.Document", "Name": f"{backup_set_name}.tgz"}
    requests.post(url=create_url, json=payload, auth=self._auth_header)

    upload_url = (
        f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
        f"/Contents('Files')/Contents('.backupsets')/Contents('{backup_set_name}.tgz')/Content"
    )
    response = requests.post(url=upload_url, json=payload, auth=self._auth_header)
    return response

create_application(instance_name, application_name)

Source code in TM1py/Services/ManageService.py
def create_application(self, instance_name, application_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Applications"
    payload = {"Name": application_name}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    response_json = json.loads(response.content)
    return response_json["ClientID"], response_json["ClientSecret"]

create_database(instance_name, database_name, number_replicas, product_version, cpu_requests='1000m', cpu_limits='2000m', memory_requests='1G', memory_limits='2G', storage_size='20Gi')

Source code in TM1py/Services/ManageService.py
def create_database(
    self,
    instance_name,
    database_name,
    number_replicas,
    product_version,
    cpu_requests="1000m",
    cpu_limits="2000m",
    memory_requests="1G",
    memory_limits="2G",
    storage_size="20Gi",
):

    url = f"{self._root_url}/Instances('{instance_name}')/Databases"

    payload = {
        "Name": database_name,
        "Replicas": number_replicas,
        "ProductVersion": product_version,
        "Resources": {
            "Replica": {
                "CPU": {"Requests": cpu_requests, "Limits": cpu_limits},
                "Memory": {"Requests": memory_requests, "Limits": memory_limits},
            },
            "Storage": {"Size": storage_size},
        },
    }
    response = requests.post(url=url, json=payload, auth=self._auth_header)

    return response

create_database_backup(instance_name, database_name, backup_set_name)

Source code in TM1py/Services/ManageService.py
def create_database_backup(self, instance_name: str, database_name: str, backup_set_name: str):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')/tm1s.Backup"
    payload = {"URL": f"{backup_set_name}.tgz"}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    return response

create_instance(instance_name)

Source code in TM1py/Services/ManageService.py
def create_instance(self, instance_name):
    url = f"{self._root_url}/Instances"
    payload = {"Name": instance_name}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    return response

database_exists(instance_name, database_name)

Source code in TM1py/Services/ManageService.py
def database_exists(self, instance_name, database_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
    response = requests.get(url=url, auth=self._auth_header)
    if response.ok:
        return True
    else:
        return False

delete_database(instance_name, database_name)

Source code in TM1py/Services/ManageService.py
def delete_database(self, instance_name, database_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
    response = requests.delete(url=url, auth=self._auth_header)
    return response

delete_instance(instance_name)

Source code in TM1py/Services/ManageService.py
def delete_instance(self, instance_name):
    url = f"{self._root_url}/Instances('{instance_name}')"
    response = requests.delete(url=url, auth=self._auth_header)
    return response

get_application(instance_name, application_name)

Source code in TM1py/Services/ManageService.py
def get_application(self, instance_name, application_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Applications('{application_name}')"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content)

get_applications(instance_name)

Source code in TM1py/Services/ManageService.py
def get_applications(self, instance_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Applications"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content)

get_database(instance_name, database_name)

Source code in TM1py/Services/ManageService.py
def get_database(self, instance_name, database_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content)

get_databases(instance_name)

Source code in TM1py/Services/ManageService.py
def get_databases(self, instance_name):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content).get("value")

get_instance(instance_name)

Source code in TM1py/Services/ManageService.py
def get_instance(self, instance_name):
    url = f"{self._root_url}/Instances('{instance_name}')"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content)

get_instances()

Source code in TM1py/Services/ManageService.py
def get_instances(self):
    url = f"{self._root_url}/Instances"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content).get("value")

get_metadata()

Source code in TM1py/Services/ManageService.py
def get_metadata(self):
    url = f"{self._root_url}/$metadata?$format=json"
    response = requests.get(url=url, auth=self._auth_header)
    return json.loads(response.content)

instance_exists(instance_name)

Source code in TM1py/Services/ManageService.py
def instance_exists(self, instance_name):
    url = f"{self._root_url}/Instances('{instance_name}')"
    response = requests.get(url=url, auth=self._auth_header)
    if response.ok:
        return True
    else:
        return False

restore_database(instance_name, database_name, backup_url)

Source code in TM1py/Services/ManageService.py
def restore_database(self, instance_name: str, database_name: str, backup_url: str):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')/tm1s.Restore"
    payload = {"URL": backup_url}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    return response

scale_database(instance_name, database_name, replicas)

Source code in TM1py/Services/ManageService.py
def scale_database(self, instance_name: str, database_name: str, replicas: int):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"
    payload = {"Replicas": replicas}
    response = requests.patch(url=url, json=payload, auth=self._auth_header)
    return response

subscribe_to_data_changes(instance_name, database_name, target_url, additional_properties={})

Source code in TM1py/Services/ManageService.py
def subscribe_to_data_changes(self, instance_name, database_name, target_url, additional_properties: dict = {}):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')/tm1.Subscribe"
    payload = {"URL": target_url, "AdditionalProperties": additional_properties}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    return response

unsubscribe_from_data_changes(instance_name, database_name, target_url)

Source code in TM1py/Services/ManageService.py
def unsubscribe_from_data_changes(self, instance_name, database_name, target_url):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')/tm1.Unsubscribe"
    response = requests.post(url=url, auth=self._auth_header)
    return response

update_database_cpu(instance_name, database_name, cpu_requests, cpu_limits)

Source code in TM1py/Services/ManageService.py
def update_database_cpu(
    self,
    instance_name,
    database_name,
    cpu_requests,
    cpu_limits,
):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"

    payload = {
        "Resources": {
            "Replica": {
                "CPU": {"Requests": cpu_requests, "Limits": cpu_limits},
            }
        }
    }
    response = requests.patch(url=url, json=payload, auth=self._auth_header)
    return response

update_database_memory(instance_name, database_name, memory_requests, memory_limits)

Source code in TM1py/Services/ManageService.py
def update_database_memory(
    self,
    instance_name,
    database_name,
    memory_requests,
    memory_limits,
):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"

    payload = {"Resources": {"Replica": {"Memory": {"Requests": memory_requests, "Limits": memory_limits}}}}
    response = requests.patch(url=url, json=payload, auth=self._auth_header)
    return response

update_database_storage(instance_name, database_name, storage_size)

Source code in TM1py/Services/ManageService.py
def update_database_storage(self, instance_name, database_name, storage_size):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')"

    payload = {"Resources": {"Storage": {"Size": storage_size}}}
    response = requests.patch(url=url, json=payload, auth=self._auth_header)
    return response

upgrade_database(instance_name, database_name, target_version='')

Source code in TM1py/Services/ManageService.py
def upgrade_database(self, instance_name: str, database_name: str, target_version: str = ""):
    url = f"{self._root_url}/Instances('{instance_name}')/Databases('{database_name}')/tm1s.Upgrade"
    payload = {"ProductVersion": target_version}
    response = requests.post(url=url, json=payload, auth=self._auth_header)
    return response