Skip to content

Commit b16584c

Browse files
authored
Merge pull request #371 from roboflow/ddploy-add-pause-resume
dedicated deployment: add pause resume
2 parents f40a653 + 1c027d2 commit b16584c

File tree

2 files changed

+63
-3
lines changed

2 files changed

+63
-3
lines changed

roboflow/adapters/deploymentapi.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,13 @@ class DeploymentApiError(Exception):
99
pass
1010

1111

12-
def add_deployment(api_key, machine_type, duration, delete_on_expiration, deployment_name, inference_version):
12+
def add_deployment(
13+
api_key, creator_email, machine_type, duration, delete_on_expiration, deployment_name, inference_version
14+
):
1315
url = f"{DEDICATED_DEPLOYMENT_URL}/add"
1416
params = {
1517
"api_key": api_key,
18+
"creator_email": creator_email,
1619
# "security_level": security_level,
1720
"duration": duration,
1821
"delete_on_expiration": delete_on_expiration,
@@ -69,6 +72,22 @@ def get_deployment_usage(api_key, deployment_name, from_timestamp, to_timestamp)
6972
return response.status_code, response.json()
7073

7174

75+
def pause_deployment(api_key, deployment_name):
76+
url = f"{DEDICATED_DEPLOYMENT_URL}/pause"
77+
response = requests.post(url, json={"api_key": api_key, "deployment_name": deployment_name})
78+
if response.status_code != 200:
79+
return response.status_code, response.text
80+
return response.status_code, response.json()
81+
82+
83+
def resume_deployment(api_key, deployment_name):
84+
url = f"{DEDICATED_DEPLOYMENT_URL}/resume"
85+
response = requests.post(url, json={"api_key": api_key, "deployment_name": deployment_name})
86+
if response.status_code != 200:
87+
return response.status_code, response.text
88+
return response.status_code, response.json()
89+
90+
7291
def delete_deployment(api_key, deployment_name):
7392
url = f"{DEDICATED_DEPLOYMENT_URL}/delete"
7493
response = requests.post(url, json={"api_key": api_key, "deployment_name": deployment_name})

roboflow/deployment.py

Lines changed: 43 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,8 @@ def add_deployment_parser(subparsers):
6161
deployment_usage_deployment_parser = deployment_subparsers.add_parser(
6262
"usage_deployment", help="get usage of a specific dedicated deployments"
6363
)
64+
deployment_pause_parser = deployment_subparsers.add_parser("pause", help="pause a dedicated deployment")
65+
deployment_resume_parser = deployment_subparsers.add_parser("resume", help="resume a dedicated deployment")
6466
deployment_delete_parser = deployment_subparsers.add_parser("delete", help="delete a dedicated deployment")
6567
deployment_log_parser = deployment_subparsers.add_parser("log", help="show log info for a dedicated deployment")
6668

@@ -77,7 +79,13 @@ def add_deployment_parser(subparsers):
7779
# "-s", "--security_level", help="security level (protected)", default="protected"
7880
# )
7981
deployment_add_parser.add_argument(
80-
"-m", "--machine_type", help="machine type, run `roboflow deployment machine_type` to see available options"
82+
"-m",
83+
"--machine_type",
84+
help="machine type, run `roboflow deployment machine_type` to see available options",
85+
required=True,
86+
)
87+
deployment_add_parser.add_argument(
88+
"-e", "--creator_email", help="your email address (must be added to the workspace)", required=True
8189
)
8290
deployment_add_parser.add_argument(
8391
"-t",
@@ -87,7 +95,7 @@ def add_deployment_parser(subparsers):
8795
default=3,
8896
)
8997
deployment_add_parser.add_argument(
90-
"-e", "--no_delete_on_expiration", help="keep when expired (default: False)", action="store_true"
98+
"-nodel", "--no_delete_on_expiration", help="keep when expired (default: False)", action="store_true"
9199
)
92100
deployment_add_parser.add_argument(
93101
"-v",
@@ -128,6 +136,14 @@ def add_deployment_parser(subparsers):
128136
"-t", "--to_timestamp", help="end time stamp in ISO8601 format (YYYY-MM-DD HH:MM:SS)", default=None
129137
)
130138

139+
deployment_pause_parser.set_defaults(func=pause_deployment)
140+
deployment_pause_parser.add_argument("-a", "--api_key", help="api key")
141+
deployment_pause_parser.add_argument("deployment_name", help="deployment name")
142+
143+
deployment_resume_parser.set_defaults(func=resume_deployment)
144+
deployment_resume_parser.add_argument("-a", "--api_key", help="api key")
145+
deployment_resume_parser.add_argument("deployment_name", help="deployment name")
146+
131147
deployment_delete_parser.set_defaults(func=delete_deployment)
132148
deployment_delete_parser.add_argument("-a", "--api_key", help="api key")
133149
deployment_delete_parser.add_argument("deployment_name", help="deployment name")
@@ -163,6 +179,7 @@ def add_deployment(args):
163179
exit(1)
164180
status_code, msg = deploymentapi.add_deployment(
165181
api_key,
182+
args.creator_email,
166183
# args.security_level,
167184
args.machine_type,
168185
args.duration,
@@ -241,6 +258,30 @@ def get_deployment_usage(args):
241258
print(json.dumps(msg, indent=2))
242259

243260

261+
def pause_deployment(args):
262+
api_key = args.api_key or load_roboflow_api_key(None)
263+
if api_key is None:
264+
print("Please provide an api key")
265+
exit(1)
266+
status_code, msg = deploymentapi.pause_deployment(api_key, args.deployment_name)
267+
if status_code != 200:
268+
print(f"{status_code}: {msg}")
269+
exit(status_code)
270+
print(json.dumps(msg, indent=2))
271+
272+
273+
def resume_deployment(args):
274+
api_key = args.api_key or load_roboflow_api_key(None)
275+
if api_key is None:
276+
print("Please provide an api key")
277+
exit(1)
278+
status_code, msg = deploymentapi.resume_deployment(api_key, args.deployment_name)
279+
if status_code != 200:
280+
print(f"{status_code}: {msg}")
281+
exit(status_code)
282+
print(json.dumps(msg, indent=2))
283+
284+
244285
def delete_deployment(args):
245286
api_key = args.api_key or load_roboflow_api_key(None)
246287
if api_key is None:

0 commit comments

Comments
 (0)