forked from phoenix/litellm-mirror
[Feat] Admin UI - Add Service Accounts (#5855)
* service_account_settings on config * add service account checks * call service_account_checks * add testing for service accounts * add service_account on ui
This commit is contained in:
parent
391b107909
commit
39b68b2914
1 changed files with 31 additions and 3 deletions
|
@ -21,6 +21,7 @@ import {
|
||||||
InputNumber,
|
InputNumber,
|
||||||
Select,
|
Select,
|
||||||
message,
|
message,
|
||||||
|
Radio,
|
||||||
} from "antd";
|
} from "antd";
|
||||||
import {
|
import {
|
||||||
keyCreateCall,
|
keyCreateCall,
|
||||||
|
@ -53,6 +54,8 @@ const CreateKey: React.FC<CreateKeyProps> = ({
|
||||||
const [softBudget, setSoftBudget] = useState(null);
|
const [softBudget, setSoftBudget] = useState(null);
|
||||||
const [userModels, setUserModels] = useState([]);
|
const [userModels, setUserModels] = useState([]);
|
||||||
const [modelsToPick, setModelsToPick] = useState([]);
|
const [modelsToPick, setModelsToPick] = useState([]);
|
||||||
|
const [keyOwner, setKeyOwner] = useState("you");
|
||||||
|
|
||||||
const handleOk = () => {
|
const handleOk = () => {
|
||||||
setIsModalVisible(false);
|
setIsModalVisible(false);
|
||||||
form.resetFields();
|
form.resetFields();
|
||||||
|
@ -108,6 +111,21 @@ const CreateKey: React.FC<CreateKeyProps> = ({
|
||||||
|
|
||||||
message.info("Making API Call");
|
message.info("Making API Call");
|
||||||
setIsModalVisible(true);
|
setIsModalVisible(true);
|
||||||
|
|
||||||
|
// If it's a service account, add the service_account_id to the metadata
|
||||||
|
if (keyOwner === "service_account") {
|
||||||
|
// Parse existing metadata or create an empty object
|
||||||
|
let metadata: Record<string, any> = {};
|
||||||
|
try {
|
||||||
|
metadata = JSON.parse(formValues.metadata || "{}");
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Error parsing metadata:", error);
|
||||||
|
}
|
||||||
|
metadata["service_account_id"] = formValues.key_alias;
|
||||||
|
// Update the formValues with the new metadata
|
||||||
|
formValues.metadata = JSON.stringify(metadata);
|
||||||
|
}
|
||||||
|
|
||||||
const response = await keyCreateCall(accessToken, userID, formValues);
|
const response = await keyCreateCall(accessToken, userID, formValues);
|
||||||
|
|
||||||
console.log("key create Response:", response);
|
console.log("key create Response:", response);
|
||||||
|
@ -172,11 +190,21 @@ const CreateKey: React.FC<CreateKeyProps> = ({
|
||||||
labelAlign="left"
|
labelAlign="left"
|
||||||
>
|
>
|
||||||
<>
|
<>
|
||||||
|
<Form.Item label="Owned By" className="mb-4">
|
||||||
|
<Radio.Group
|
||||||
|
onChange={(e) => setKeyOwner(e.target.value)}
|
||||||
|
value={keyOwner}
|
||||||
|
>
|
||||||
|
<Radio value="you">You</Radio>
|
||||||
|
<Radio value="service_account">Service Account</Radio>
|
||||||
|
</Radio.Group>
|
||||||
|
</Form.Item>
|
||||||
|
|
||||||
<Form.Item
|
<Form.Item
|
||||||
label="Key Name"
|
label={keyOwner === "you" ? "Key Name" : "Service Account ID"}
|
||||||
name="key_alias"
|
name="key_alias"
|
||||||
rules={[{ required: true, message: "Please input a key name" }]}
|
rules={[{ required: true, message: `Please input a ${keyOwner === "you" ? "key name" : "service account ID"}` }]}
|
||||||
help="required"
|
help={keyOwner === "you" ? "required" : "IDs can include letters, numbers, and hyphens"}
|
||||||
>
|
>
|
||||||
<TextInput placeholder="" />
|
<TextInput placeholder="" />
|
||||||
</Form.Item>
|
</Form.Item>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue