Skip to content

Commit 30057a5

Browse files
authored
Merge pull request #6 from Oreoxmt/refine/descriptor
Refine using descriptor and add examples
2 parents 692a31d + 0bd0c34 commit 30057a5

21 files changed

Lines changed: 683 additions & 823 deletions

examples/0_list_resources.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import os
2+
3+
import tidbcloudy
4+
from tidbcloudy.project import Project
5+
6+
public_key = os.environ.get("PUBLIC_KEY")
7+
private_key = os.environ.get("PRIVATE_KEY")
8+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
9+
project_id = "1234567890123456789"
10+
11+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
12+
13+
for project in api.iter_projects():
14+
assert isinstance(project, Project)
15+
print(project)
16+
for cluster in project.iter_clusters():
17+
print(cluster)
18+
if cluster.cluster_type.value == "DEDICATED":
19+
for backup in cluster.iter_backups():
20+
print(backup)
21+
for restore in project.iter_restores():
22+
print(restore)
23+
24+
# get_project() does not fetch full information of a project from the server by default
25+
project = api.get_project(project_id)
26+
print(project)
27+
28+
# To fetch full information of a project, set update_from_server as True
29+
project = api.get_project(project_id, update_from_server=True)
30+
print(project)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import os
2+
3+
import tidbcloudy
4+
5+
public_key = os.environ.get("PUBLIC_KEY")
6+
private_key = os.environ.get("PRIVATE_KEY")
7+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
8+
9+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
10+
11+
for spec in api.list_provider_regions():
12+
print(spec)
13+
14+
for spec in api.list_provider_regions():
15+
print(spec.to_object())
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
import os
2+
import tidbcloudy
3+
from tidbcloudy.specification import CreateClusterConfig
4+
5+
public_key = os.environ.get("PUBLIC_KEY")
6+
private_key = os.environ.get("PRIVATE_KEY")
7+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
8+
project_id = "1234567890123456789"
9+
10+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
11+
project = api.get_project(project_id, update_from_server=True)
12+
13+
config = CreateClusterConfig()
14+
config\
15+
.set_name("developer-0") \
16+
.set_cluster_type("DEVELOPER") \
17+
.set_cloud_provider("AWS") \
18+
.set_region("us-west-2") \
19+
.set_root_password("your_root_password") \
20+
.add_ip_access(cidr="0.0.0.0/0") \
21+
.add_current_ip_access()
22+
cluster = project.create_cluster(config)
23+
print(cluster)
24+
25+
cluster.wait_for_ready()
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import os
2+
import tidbcloudy
3+
from tidbcloudy.specification import CreateClusterConfig
4+
5+
public_key = os.environ.get("PUBLIC_KEY")
6+
private_key = os.environ.get("PRIVATE_KEY")
7+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
8+
project_id = "1234567890123456789"
9+
10+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
11+
project = api.get_project(project_id, update_from_server=True)
12+
13+
config = CreateClusterConfig()
14+
config\
15+
.set_name("dedicated-1") \
16+
.set_cluster_type("DEDICATED") \
17+
.set_cloud_provider("AWS") \
18+
.set_region("us-west-2") \
19+
.set_port(4399) \
20+
.set_root_password("your_root_password") \
21+
.set_component("tidb", "8C16G", 1) \
22+
.set_component("tikv", "8C32G", 3, 500) \
23+
.add_current_ip_access()
24+
cluster = project.create_cluster(config)
25+
print(cluster)
26+
27+
cluster.wait_for_ready()

examples/3_connect_mysql.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import os
2+
import tidbcloudy
3+
4+
public_key = os.environ.get("PUBLIC_KEY")
5+
private_key = os.environ.get("PRIVATE_KEY")
6+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
7+
project_id = "1234567890123456789"
8+
cluster_id = "1234567890123456789"
9+
10+
print("Connecting to TiDB Cloud...")
11+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
12+
project = api.get_project(project_id, update_from_server=True)
13+
cluster = project.get_cluster(cluster_id)
14+
print(cluster)
15+
16+
if cluster.status.cluster_status.value == "AVAILABLE":
17+
connection_strings = cluster.status.connection_strings
18+
connection = cluster.connect(type="standard", database="test", password="your_root_password")
19+
print(connection)
20+
with connection:
21+
with connection.cursor() as cursor:
22+
cursor.execute("SELECT DATABASE();")
23+
m = cursor.fetchone()
24+
print(m[0])

examples/4_scale_a_cluster.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import os
2+
3+
import tidbcloudy
4+
from tidbcloudy.specification import UpdateClusterConfig
5+
6+
public_key = os.environ.get("PUBLIC_KEY")
7+
private_key = os.environ.get("PRIVATE_KEY")
8+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
9+
project_id = "1234567890123456789"
10+
cluster_id = "1234567890123456789"
11+
12+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
13+
project = api.get_project(project_id, update_from_server=True)
14+
cluster = project.get_cluster(cluster_id)
15+
16+
print("The original config is: {}".format(cluster.config.components.to_object()))
17+
new_config = UpdateClusterConfig()
18+
new_config.update_component("tiflash", node_quantity=1, node_size="8C64G", storage_size_gib=500)
19+
cluster.update(new_config)
20+
cluster.wait_for_ready()
21+
print("The new config is: {}".format(cluster.config.components.to_object()))

examples/5_backup_restore.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import os
2+
3+
import tidbcloudy
4+
from tidbcloudy.specification import CreateClusterConfig
5+
6+
public_key = os.environ.get("PUBLIC_KEY")
7+
private_key = os.environ.get("PRIVATE_KEY")
8+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
9+
project_id = "1234567890123456789"
10+
cluster_id = "1234567890123456789"
11+
backup_id = "1234567"
12+
13+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
14+
project = api.get_project(project_id, update_from_server=True)
15+
cluster = project.get_cluster(cluster_id)
16+
print("Create a manual backup task")
17+
backup = cluster.create_backup(name="backup-1", description="automatically generated by tidbcloudy")
18+
print(backup)
19+
20+
config = CreateClusterConfig()
21+
config \
22+
.set_cluster_type("DEDICATED") \
23+
.set_cloud_provider("AWS") \
24+
.set_region("us-west-2") \
25+
.set_port(4399) \
26+
.set_root_password("your_root_password") \
27+
.set_component("tidb", "8C16G", 1) \
28+
.set_component("tikv", "8C32G", 3, 500) \
29+
.set_component("tiflash", "8C64G", 1, 500) \
30+
.add_current_ip_access()
31+
print("Create a restore task from backup_id={}".format(backup_id))
32+
restore = project.create_restore(backup_id=backup_id, name="restore-1", cluster_config=config)
33+
restore_task = project.get_restore(restore.id)
34+
print(restore_task.to_object())
35+
for restore in project.iter_restores():
36+
print(restore)

examples/6_pause_cluster.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import os
2+
import tidbcloudy
3+
4+
public_key = os.environ.get("PUBLIC_KEY")
5+
private_key = os.environ.get("PRIVATE_KEY")
6+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
7+
project_id = "1234567890123456789"
8+
cluster_id = "1234567890123456789"
9+
10+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
11+
project = api.get_project(project_id, update_from_server=True)
12+
cluster = project.get_cluster(cluster_id)
13+
14+
if cluster.status.cluster_status.value == "AVAILABLE":
15+
print("Pause the cluster id={}".format(cluster_id))
16+
cluster.pause()
17+
if cluster.status.cluster_status.value == "PAUSED":
18+
print("Resume the cluster id={}".format(cluster_id))
19+
cluster.resume()
20+
if cluster.status.cluster_status.value == "RESUMING":
21+
print("Wait for the RESUMING cluster id={} to be available".format(cluster_id))
22+
cluster.wait_for_available()

examples/7_delete_resources.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import os
2+
import tidbcloudy
3+
4+
public_key = os.environ.get("PUBLIC_KEY")
5+
private_key = os.environ.get("PRIVATE_KEY")
6+
debug_mode = os.environ.get("TIDBCLOUDY_LOG")
7+
project_id = "1234567890123456789"
8+
9+
api = tidbcloudy.TiDBCloud(public_key=public_key, private_key=private_key)
10+
project = api.get_project(project_id, update_from_server=True)
11+
for cluster in project.iter_clusters():
12+
print(cluster)
13+
if cluster.cluster_type.value == "DEDICATED":
14+
for backup in cluster.iter_backups():
15+
print(backup)
16+
backup.delete()
17+
cluster.delete()

poetry.lock

Lines changed: 18 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)