Commit 5ddc7f7d authored by Maksim Khadkevich's avatar Maksim Khadkevich Committed by GitHub
Browse files

feat: moved compoundAI operator, APIserver, and examples (#10)

parent 14ce7e03
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"database/sql/driver"
"encoding/json"
)
type EventStatus string
const (
EventStatusPending EventStatus = "pending"
EventStatusSuccess EventStatus = "success"
EventStatusFailed EventStatus = "failed"
)
func (e EventStatus) Ptr() *EventStatus {
return &e
}
type EventInfo struct {
ResourceName string `json:"resource_name"`
}
func (c *EventInfo) Scan(value interface{}) error {
if value == nil {
return nil
}
return json.Unmarshal([]byte(value.(string)), c)
}
func (c *EventInfo) Value() (driver.Value, error) {
if c == nil {
return nil, nil
}
return json.Marshal(c)
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import apiv1 "k8s.io/api/core/v1"
type KubePodActualStatus string
const (
KubePodActualStatusPending KubePodActualStatus = "Pending"
KubePodActualStatusRunning KubePodActualStatus = "Running"
KubePodActualStatusSucceeded KubePodActualStatus = "Succeeded"
KubePodActualStatusFailed KubePodActualStatus = "Failed"
KubePodActualStatusUnknown KubePodActualStatus = "Unknown"
KubePodActualStatusTerminating KubePodActualStatus = "Terminating"
)
type KubePodStatus struct {
Status KubePodActualStatus `json:"status"`
Phase apiv1.PodPhase `json:"phase"`
ContainerStates []apiv1.ContainerState `json:"container_states"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
type LabelItemSchema struct {
Key string `json:"key"`
Value string `json:"value"`
}
func (in *LabelItemSchema) DeepCopy() (out *LabelItemSchema) {
if in == nil {
return nil
}
out = new(LabelItemSchema)
in.DeepCopyInto(out)
return
}
func (in *LabelItemSchema) DeepCopyInto(out *LabelItemSchema) {
*out = *in
}
type LabelItemsSchema []LabelItemSchema
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
type MemberRole string
const (
MemberRoleGuest MemberRole = "guest"
MemberRoleDeveloper MemberRole = "developer"
MemberRoleAdmin MemberRole = "admin"
)
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"database/sql/driver"
"encoding/json"
)
type ModelUploadStatus string
const (
ModelUploadStatusPending ModelUploadStatus = "pending"
ModelUploadStatusUploading ModelUploadStatus = "uploading"
ModelUploadStatusSuccess ModelUploadStatus = "success"
ModelUploadStatusFailed ModelUploadStatus = "failed"
)
type ModelManifestSchema struct {
BentomlVersion string `json:"bentoml_version"`
ApiVersion string `json:"api_version"`
Module string `json:"module"`
Metadata map[string]interface{} `json:"metadata"`
Context map[string]interface{} `json:"context"`
Options map[string]interface{} `json:"options"`
SizeBytes uint `json:"size_bytes"`
}
func (c *ModelManifestSchema) Scan(value interface{}) error {
if value == nil {
return nil
}
return json.Unmarshal(value.([]byte), c)
}
func (c *ModelManifestSchema) Value() (driver.Value, error) {
if c == nil {
return nil, nil
}
return json.Marshal(c)
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"database/sql/driver"
"encoding/json"
)
type AWSS3Schema struct {
BentosBucketName string `json:"bentos_bucket_name"`
ModelsBucketName string `json:"models_bucket_name"`
Region string `json:"region"`
}
type AWSECRSchema struct {
AccountId string `json:"account_id"`
BentosRepositoryName string `json:"bentos_repository_name"`
ModelsRepositoryName string `json:"models_repository_name"`
Password string `json:"password"`
Region string `json:"region"`
}
type OrganizationConfigAWSSchema struct {
AccessKeyId string `json:"access_key_id"`
SecretAccessKey string `json:"secret_access_key"`
ECR *AWSECRSchema `json:"ecr"`
S3 *AWSS3Schema `json:"s3"`
}
type OrganizationDockerRegistrySchema struct {
BentosRepositoryURI string `json:"bentos_repository_uri"`
ModelsRepositoryURI string `json:"models_repository_uri"`
Server string `json:"server"`
Username string `json:"username"`
Password string `json:"password"`
Secure bool `json:"secure"`
}
type OrganizationS3Schema struct {
Endpoint string `json:"endpoint"`
AccessKey string `json:"access_key"`
SecretKey string `json:"secret_key"`
Secure bool `json:"secure"`
Region string `json:"region"`
BentosBucketName string `json:"bentos_bucket_name"`
ModelsBucketName string `json:"models_bucket_name"`
}
type OrganizationConfigSchema struct {
MajorClusterUid string `json:"major_cluster_uid"`
AWS *OrganizationConfigAWSSchema `json:"aws,omitempty"`
DockerRegistry *OrganizationDockerRegistrySchema `json:"docker_registry,omitempty"`
S3 *OrganizationS3Schema `json:"s3,omitempty"`
TransmissionStrategy *TransmissionStrategy `json:"transmission_strategy,omitempty"`
}
func (c *OrganizationConfigSchema) Scan(value interface{}) error {
if value == nil {
return nil
}
return json.Unmarshal([]byte(value.(string)), c)
}
func (c *OrganizationConfigSchema) Value() (driver.Value, error) {
if c == nil {
return nil, nil
}
return json.Marshal(c)
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
type ResourceType string
const (
ResourceTypeUser ResourceType = "user"
ResourceTypeOrganization ResourceType = "organization"
ResourceTypeCluster ResourceType = "cluster"
ResourceTypeBentoRepository ResourceType = "bento_repository"
ResourceTypeBento ResourceType = "bento"
ResourceTypeDeployment ResourceType = "deployment"
ResourceTypeDeploymentRevision ResourceType = "deployment_revision"
ResourceTypeTerminalRecord ResourceType = "terminal_record"
ResourceTypeModelRepository ResourceType = "model_repository"
ResourceTypeModel ResourceType = "model"
ResourceTypeLabel ResourceType = "label"
ResourceTypeApiToken ResourceType = "api_token"
ResourceTypeYataiComponent ResourceType = "yatai_component"
)
func (type_ ResourceType) Ptr() *ResourceType {
return &type_
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
type ResourceInstance struct {
ID string `json:"id"`
Name string `json:"name"`
Group string `json:"group"`
Description string `json:"description"`
NodeSelectors map[string]string `json:"node_selectors"`
Resources DeploymentTargetResources `json:"resources"`
Price string `json:"price"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"github.com/huandu/xstrings"
"github.com/pkg/errors"
)
type Tag string
func (t Tag) Parse() (name, version string, err error) {
name, _, version = xstrings.Partition(string(t), ":")
if version == "" {
err = errors.Errorf("tag %s is invalid", t)
return
}
return
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"database/sql/driver"
"encoding/json"
)
type RecordType string
const (
RecordTypeInput RecordType = "i"
RecordTypeOutput RecordType = "o"
)
type TerminalRecordEnv struct {
TERM string `json:"term"`
SHELL string `json:"shell"`
}
type TerminalRecordMeta struct {
Version uint `json:"version"`
Width uint16 `json:"width"`
Height uint16 `json:"height"`
Timestamp int64 `json:"timestamp"`
Env *TerminalRecordEnv `json:"env"`
}
func (m *TerminalRecordMeta) Scan(value interface{}) error {
if value == nil {
return nil
}
return json.Unmarshal([]byte(value.(string)), m)
}
func (m *TerminalRecordMeta) Value() (driver.Value, error) {
if m == nil {
return nil, nil
}
return json.Marshal(m)
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
type UserPerm string
const (
UserPermDefault UserPerm = "default"
UserPermAdmin UserPerm = "admin"
)
func UserPermPtr(perm UserPerm) *UserPerm {
return &perm
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package modelschemas
import (
"database/sql/driver"
"encoding/json"
)
type YataiComponentName string
const (
YataiComponentNameDeployment YataiComponentName = "deployment"
YataiComponentNameImageBuilder YataiComponentName = "image-builder"
YataiComponentNameServerless YataiComponentName = "serverless"
YataiComponentNameFunction YataiComponentName = "function"
YataiComponentNameJob YataiComponentName = "job"
)
type YataiComponentManifestSchema struct {
SelectorLabels map[string]string `json:"selector_labels,omitempty"`
LatestCRDVersion string `json:"latest_crd_version,omitempty"`
}
func (c *YataiComponentManifestSchema) Scan(value interface{}) error {
if value == nil {
return nil
}
return json.Unmarshal(value.([]byte), c)
}
func (c *YataiComponentManifestSchema) Value() (driver.Value, error) {
if c == nil {
return nil, nil
}
return json.Marshal(c)
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import (
"time"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
)
type ApiTokenSchema struct {
ResourceSchema
Description string `json:"description"`
User *UserSchema `json:"user"`
Organization *OrganizationSchema `json:"organization"`
Scopes *modelschemas.ApiTokenScopes `json:"scopes"`
ExpiredAt *time.Time `json:"expired_at"`
LastUsedAt *time.Time `json:"last_used_at"`
IsExpired bool `json:"is_expired"`
}
type ApiTokenListSchema struct {
BaseListSchema
Items []*ApiTokenSchema `json:"items"`
}
type ApiTokenFullSchema struct {
ApiTokenSchema
Token string `json:"token"`
}
type UpdateApiTokenSchema struct {
Description *string `json:"description"`
Scopes *modelschemas.ApiTokenScopes `json:"scopes"`
ExpiredAt *time.Time `json:"expired_at"`
LastUsedAt *time.Time `json:"last_used_at"`
}
type CreateApiTokenSchema struct {
Name string `json:"name"`
Description string `json:"description"`
Scopes *modelschemas.ApiTokenScopes `json:"scopes"`
ExpiredAt *time.Time `json:"expired_at"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import "time"
type BaseSchema struct {
Uid string `json:"uid"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt time.Time `json:"updated_at"`
DeletedAt *time.Time `json:"deleted_at"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import (
"time"
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
)
type BentoSchema struct {
ResourceSchema
BentoRepositoryUid string `json:"bento_repository_uid"`
Creator *UserSchema `json:"creator"`
Version string `json:"version"`
Description string `json:"description"`
ImageBuildStatus modelschemas.ImageBuildStatus `json:"image_build_status"`
UploadStatus modelschemas.BentoUploadStatus `json:"upload_status"`
UploadStartedAt *time.Time `json:"upload_started_at"`
UploadFinishedAt *time.Time `json:"upload_finished_at"`
UploadFinishedReason string `json:"upload_finished_reason"`
PresignedUploadUrl string `json:"presigned_upload_url"`
PresignedDownloadUrl string `json:"presigned_download_url"`
PresignedUrlsDeprecated bool `json:"presigned_urls_deprecated"`
TransmissionStrategy *modelschemas.TransmissionStrategy `json:"transmission_strategy"`
UploadId string `json:"upload_id"`
Manifest *modelschemas.BentoManifestSchema `json:"manifest"`
BuildAt time.Time `json:"build_at"`
}
type BentoListSchema struct {
BaseListSchema
Items []*BentoSchema `json:"items"`
}
type BentoWithRepositorySchema struct {
BentoSchema
Repository *BentoRepositorySchema `json:"repository"`
}
type BentoWithRepositoryListSchema struct {
BaseListSchema
Items []*BentoWithRepositorySchema `json:"items"`
}
type BentoFullSchema struct {
BentoWithRepositorySchema
Models []*ModelWithRepositorySchema `json:"models"`
}
type CreateBentoSchema struct {
Description string `json:"description"`
Version string `json:"version"`
Manifest *modelschemas.BentoManifestSchema `json:"manifest"`
BuildAt string `json:"build_at"`
Labels modelschemas.LabelItemsSchema `json:"labels"`
}
type UpdateBentoSchema struct {
Description string `json:"description"`
Version string `json:"version"`
Manifest **modelschemas.BentoManifestSchema `json:"manifest"`
BuildAt string `json:"build_at"`
Labels *modelschemas.LabelItemsSchema `json:"labels,omitempty"`
}
type FinishUploadBentoSchema struct {
Status *modelschemas.BentoUploadStatus `json:"status"`
Reason *string `json:"reason"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import "github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
type BentoRepositorySchema struct {
ResourceSchema
Creator *UserSchema `json:"creator"`
Organization *OrganizationSchema `json:"organization"`
LatestBento *BentoSchema `json:"latest_bento"`
NBentos uint `json:"n_bentos"`
NDeployments uint `json:"n_deployments"`
LatestBentos []*BentoSchema `json:"latest_bentos"`
Description string `json:"description"`
}
type BentoRepositoryListSchema struct {
BaseListSchema
Items []*BentoRepositorySchema `json:"items"`
}
type BentoRepositoryWithLatestDeploymentsSchema struct {
BentoRepositorySchema
LatestDeployments []*DeploymentSchema `json:"latest_deployments"`
}
type BentoRepositoryWithLatestDeploymentsListSchema struct {
BaseListSchema
Items []*BentoRepositoryWithLatestDeploymentsSchema `json:"items"`
}
type CreateBentoRepositorySchema struct {
Name string `json:"name"`
Description string `json:"description"`
Labels modelschemas.LabelItemsSchema `json:"labels"`
}
type UpdateBentoRepositorySchema struct {
Description *string `json:"description"`
Labels *modelschemas.LabelItemsSchema `json:"labels,omitempty"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import (
"github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
)
type ClusterSchema struct {
ResourceSchema
Creator *UserSchema `json:"creator"`
Description string `json:"description"`
}
type ClusterListSchema struct {
BaseListSchema
Items []*ClusterSchema `json:"items"`
}
type ClusterFullSchema struct {
ClusterSchema
Organization *OrganizationSchema `json:"organization"`
KubeConfig *string `json:"kube_config"`
Config **modelschemas.ClusterConfigSchema `json:"config"`
GrafanaRootPath string `json:"grafana_root_path"`
}
type UpdateClusterSchema struct {
Description *string `json:"description"`
KubeConfig *string `json:"kube_config"`
Config **modelschemas.ClusterConfigSchema `json:"config"`
}
type CreateClusterSchema struct {
Description string `json:"description"`
KubeConfig string `json:"kube_config"`
Config *modelschemas.ClusterConfigSchema `json:"config"`
Name string `json:"name"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import "github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
type ClusterMemberSchema struct {
BaseSchema
Role modelschemas.MemberRole `json:"role"`
Creator *UserSchema `json:"creator"`
User UserSchema `json:"user"`
Cluster ClusterSchema `json:"cluster"`
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import "github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
type DeploymentSchema struct {
ResourceSchema
Mode *modelschemas.DeploymentMode `json:"mode,omitempty"`
Creator *UserSchema `json:"creator"`
Cluster *ClusterFullSchema `json:"cluster"`
Status modelschemas.DeploymentStatus `json:"status" enum:"unknown,non-deployed,running,unhealthy,failed,deploying"`
URLs []string `json:"urls"`
LatestRevision *DeploymentRevisionSchema `json:"latest_revision"`
KubeNamespace string `json:"kube_namespace"`
}
type DeploymentListSchema struct {
BaseListSchema
Items []*DeploymentSchema `json:"items"`
}
type UpdateDeploymentSchema struct {
Mode *modelschemas.DeploymentMode `json:"mode,omitempty"`
Targets []*CreateDeploymentTargetSchema `json:"targets"`
Labels *modelschemas.LabelItemsSchema `json:"labels,omitempty"`
Description *string `json:"description,omitempty"`
DoNotDeploy bool `json:"do_not_deploy,omitempty"`
}
type CreateDeploymentSchema struct {
Name string `json:"name"`
KubeNamespace string `json:"kube_namespace"`
UpdateDeploymentSchema
}
/*
* SPDX-FileCopyrightText: Copyright (c) 2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
* SPDX-License-Identifier: Apache-2.0
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package schemasv1
import "github.com/dynemo-ai/dynemo/deploy/compoundai/operator/api/compoundai/modelschemas"
type DeploymentRevisionSchema struct {
ResourceSchema
Creator *UserSchema `json:"creator"`
Status modelschemas.DeploymentRevisionStatus `json:"status" enum:"active,inactive"`
Targets []*DeploymentTargetSchema `json:"targets"`
}
type DeploymentRevisionListSchema struct {
BaseListSchema
Items []*DeploymentRevisionSchema `json:"items"`
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment