Skip to content

Commit f61ee80

Browse files
committed
setup positional and optional params properly
1 parent 6f1b08a commit f61ee80

File tree

2 files changed

+100
-60
lines changed

2 files changed

+100
-60
lines changed

roboflow/adapters/deploymentapi.py

Lines changed: 25 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,55 +9,50 @@ class DeploymentApiError(Exception):
99

1010
def add_deployment(api_key, machine_type, duration, delete_on_expiration, deployment_name, inference_version):
1111
url = f"{DEDICATED_DEPLOYMENT_URL}/add"
12-
response = requests.post(
13-
url,
14-
json={
12+
params = {
1513
"api_key": api_key,
1614
# "security_level": security_level,
17-
"machine_type": machine_type,
1815
"duration": duration,
1916
"delete_on_expiration": delete_on_expiration,
2017
"deployment_name": deployment_name,
2118
"inference_version": inference_version,
22-
},
23-
)
19+
}
20+
if machine_type is not None:
21+
params["machine_type"] = machine_type
22+
response = requests.post(url, json = params)
2423
if response.status_code != 200:
25-
raise DeploymentApiError(f"{response.status_code}: {response.text}")
26-
result = response.json()
27-
return result
24+
return response.status_code, response.text
25+
return response.status_code, response.json()
2826

2927

30-
def get_deployment(api_key, deployment_id):
31-
url = f"{DEDICATED_DEPLOYMENT_URL}/get"
32-
response = requests.get(url, json={"api_key": api_key, "deployment_id": deployment_id})
28+
def get_deployment(api_key, deployment_name):
29+
url = f"{DEDICATED_DEPLOYMENT_URL}/get?api_key={api_key}&deployment_name={deployment_name}"
30+
response = requests.get(url)
3331
if response.status_code != 200:
34-
raise DeploymentApiError(f"{response.status_code}: {response.text}")
35-
result = response.json()
36-
return result
32+
return response.status_code, response.text
33+
return response.status_code, response.json()
3734

3835

3936
def list_deployment(api_key):
40-
url = f"{DEDICATED_DEPLOYMENT_URL}/list"
41-
response = requests.get(url, json={"api_key": api_key})
37+
url = f"{DEDICATED_DEPLOYMENT_URL}/list?api_key={api_key}"
38+
response = requests.get(url)
4239
if response.status_code != 200:
43-
raise DeploymentApiError(f"{response.status_code}: {response.text}")
44-
result = response.json()
45-
return result
40+
return response.status_code, response.text
41+
return response.status_code, response.json()
4642

4743

48-
def delete_deployment(api_key, deployment_id):
44+
def delete_deployment(api_key, deployment_name):
4945
url = f"{DEDICATED_DEPLOYMENT_URL}/delete"
50-
response = requests.post(url, json={"api_key": api_key, "deployment_id": deployment_id})
46+
response = requests.post(url, json={"api_key": api_key, "deployment_name": deployment_name})
5147
if response.status_code != 200:
52-
raise DeploymentApiError(f"{response.status_code}: {response.text}")
53-
result = response.json()
54-
return result
48+
return response.status_code, response.text
49+
return response.status_code, response.json()
5550

5651

5752
def list_machine_types(api_key):
58-
url = f"{DEDICATED_DEPLOYMENT_URL}/machine_types"
59-
response = requests.get(url, json={"api_key": api_key})
53+
url = f"{DEDICATED_DEPLOYMENT_URL}/machine_types?api_key={api_key}"
54+
response = requests.get(url)
6055
if response.status_code != 200:
61-
raise DeploymentApiError(f"{response.status_code}: {response.text}")
62-
result = response.json()
63-
return result
56+
return response.status_code, response.text
57+
return response.status_code, response.json()
58+

roboflow/deployment.py

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
from roboflow.adapters import deploymentapi
44
from roboflow.config import load_roboflow_api_key
5+
import time
6+
from datetime import datetime
57

68

79
def add_deployment_parser(subparsers):
@@ -19,78 +21,121 @@ def add_deployment_parser(subparsers):
1921
deployment_delete_parser = deployment_subparsers.add_parser("delete", help="delete a dedicated deployment")
2022

2123
deployment_machine_type_parser.set_defaults(func=list_machine_types)
22-
deployment_machine_type_parser.add_argument("-a", dest="api_key", help="api key")
24+
deployment_machine_type_parser.add_argument("-a", "--api_key", help="api key")
2325

2426
deployment_add_parser.set_defaults(func=add_deployment)
25-
deployment_add_parser.add_argument("-a", dest="api_key", help="api key")
26-
# deployment_add_parser.add_argument(
27-
# "-s", dest="security_level", help="security level (protected)", default="protected"
28-
# )
27+
deployment_add_parser.add_argument("-a", "--api_key", help="api key")
2928
deployment_add_parser.add_argument(
30-
"-m", dest="machine_type", help="machine type, run `roboflow deployment machine_type` to see available options"
29+
"deployment_name", help="deployment name, must contain 5-15 lowercase characters, first character must be a letter"
3130
)
31+
# deployment_add_parser.add_argument(
32+
# "-s", "--security_level", help="security level (protected)", default="protected"
33+
# )
3234
deployment_add_parser.add_argument(
33-
"-t",
34-
dest="duration",
35-
help="duration, how long you want to keep the deployment (unit: hour, default: 3)",
36-
type=float,
37-
default=3,
35+
"-m", "--machine_type", help="machine type, run `roboflow deployment machine_type` to see available options"
3836
)
3937
deployment_add_parser.add_argument(
40-
"-e", dest="delete_on_expiration", help="delete when expired (default: True)", type=bool, default=True
38+
"-t", "--duration", help="duration, how long you want to keep the deployment (unit: hour, default: 3)",
39+
type=float, default=3
4140
)
4241
deployment_add_parser.add_argument(
43-
"-n", dest="deployment_name", help="deployment name, must contain 3-10 lowercase characters"
42+
"-e", "--no_delete_on_expiration", help="keep when expired (default: False)", action="store_true"
4443
)
4544
deployment_add_parser.add_argument(
46-
"-v", dest="inference_version", help="inference server version (default: latest)", default="latest"
45+
"-v", "--inference_version", help="inference server version (default: latest)", default="latest",
4746
)
47+
deployment_add_parser.add_argument("-w", "--wait_on_pending", help="wait if deployment is pending", action="store_true")
4848

4949
deployment_get_parser.set_defaults(func=get_deployment)
50-
deployment_get_parser.add_argument("-a", dest="api_key", help="api key")
51-
deployment_get_parser.add_argument("-d", dest="deployment_id", help="deployment id")
50+
deployment_get_parser.add_argument("-a", "--api_key", help="api key")
51+
deployment_get_parser.add_argument("deployment_name", help="deployment name")
52+
deployment_get_parser.add_argument("-w", "--wait_on_pending", help="wait if deployment is pending", action="store_true")
5253

5354
deployment_list_parser.set_defaults(func=list_deployment)
54-
deployment_list_parser.add_argument("-a", dest="api_key", help="api key")
55+
deployment_list_parser.add_argument("-a", "--api_key", help="api key")
5556

5657
deployment_delete_parser.set_defaults(func=delete_deployment)
57-
deployment_delete_parser.add_argument("-a", dest="api_key", help="api key")
58-
deployment_delete_parser.add_argument("-d", dest="deployment_id", help="deployment id")
58+
deployment_delete_parser.add_argument("-a", "--api_key", help="api key")
59+
deployment_delete_parser.add_argument("deployment_name", help="deployment name")
5960

6061

6162
def list_machine_types(args):
6263
api_key = args.api_key or load_roboflow_api_key(None)
63-
ret_json = deploymentapi.list_machine_types(api_key)
64-
print(json.dumps(ret_json, indent=2))
64+
if api_key is None:
65+
print("Please provide an api key")
66+
return
67+
status_code, msg = deploymentapi.list_machine_types(api_key)
68+
if status_code != 200:
69+
print(f"{status_code}: {msg}")
70+
return
71+
print(json.dumps(msg, indent=2))
6572

6673

6774
def add_deployment(args):
6875
api_key = args.api_key or load_roboflow_api_key(None)
69-
ret_json = deploymentapi.add_deployment(
76+
if api_key is None:
77+
print("Please provide an api key")
78+
return
79+
status_code, msg = deploymentapi.add_deployment(
7080
api_key,
7181
# args.security_level,
7282
args.machine_type,
7383
args.duration,
74-
args.delete_on_expiration,
84+
(not args.no_delete_on_expiration),
7585
args.deployment_name,
7686
args.inference_version,
7787
)
78-
print(json.dumps(ret_json, indent=2))
88+
89+
if status_code != 200:
90+
print(f"{status_code}: {msg}")
91+
return
92+
else:
93+
print(f"Deployment {args.deployment_name} created successfully")
94+
print(json.dumps(msg, indent=2))
95+
96+
if args.wait_on_pending:
97+
get_deployment(args)
7998

8099

81100
def get_deployment(args):
82101
api_key = args.api_key or load_roboflow_api_key(None)
83-
ret_json = deploymentapi.get_deployment(api_key, args.deployment_id)
84-
print(json.dumps(ret_json, indent=2))
102+
if api_key is None:
103+
print("Please provide an api key")
104+
return
105+
while True:
106+
status_code, msg = deploymentapi.get_deployment(api_key, args.deployment_name)
107+
if status_code != 200:
108+
print(f"{status_code}: {msg}")
109+
return
110+
111+
if (not args.wait_on_pending) or msg["status"] != "pending":
112+
print(json.dumps(msg, indent=2))
113+
break
114+
115+
print(f'{datetime.now().strftime("%Y-%m-%d %H:%M:%S")} Waiting for deployment {args.deployment_name} to be ready...\n')
116+
time.sleep(30)
85117

86118

87119
def list_deployment(args):
88120
api_key = args.api_key or load_roboflow_api_key(None)
89-
ret_json = deploymentapi.list_deployment(api_key)
90-
print(json.dumps(ret_json, indent=2))
121+
if api_key is None:
122+
print("Please provide an api key")
123+
return
124+
status_code, msg = deploymentapi.list_deployment(api_key)
125+
if status_code != 200:
126+
print(f"{status_code}: {msg}")
127+
return
128+
print(json.dumps(msg, indent=2))
91129

92130

93131
def delete_deployment(args):
94132
api_key = args.api_key or load_roboflow_api_key(None)
95-
ret_json = deploymentapi.delete_deployment(api_key, args.deployment_id)
96-
print(json.dumps(ret_json, indent=2))
133+
if api_key is None:
134+
print("Please provide an api key")
135+
return
136+
status_code, msg = deploymentapi.delete_deployment(api_key, args.deployment_name)
137+
if status_code != 200:
138+
print(f"{status_code}: {msg}")
139+
return
140+
print(json.dumps(msg, indent=2))
141+

0 commit comments

Comments
 (0)