From 5f519b811d42d1f7482334688bdf4cebfab28145 Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Fri, 26 Sep 2025 00:46:37 +0000 Subject: [PATCH 1/6] feat: Support Space CRD --- apis/v1alpha1/ack-generate-metadata.yaml | 12 +- apis/v1alpha1/app.go | 5 + apis/v1alpha1/enums.go | 16 +- apis/v1alpha1/generator.yaml | 4 +- apis/v1alpha1/space.go | 87 ++ apis/v1alpha1/types.go | 82 +- apis/v1alpha1/zz_generated.deepcopy.go | 430 +++++++ cmd/controller/main.go | 1 + .../sagemaker.services.k8s.aws_apps.yaml | 7 + .../sagemaker.services.k8s.aws_domains.yaml | 20 + .../sagemaker.services.k8s.aws_spaces.yaml | 364 ++++++ ...gemaker.services.k8s.aws_userprofiles.yaml | 20 + config/crd/kustomization.yaml | 1 + config/rbac/cluster-role-controller.yaml | 2 + config/rbac/role-reader.yaml | 1 + config/rbac/role-writer.yaml | 2 + generator.yaml | 4 +- .../crds/sagemaker.services.k8s.aws_apps.yaml | 7 + .../sagemaker.services.k8s.aws_domains.yaml | 20 + .../sagemaker.services.k8s.aws_spaces.yaml | 364 ++++++ ...gemaker.services.k8s.aws_userprofiles.yaml | 20 + helm/templates/_helpers.tpl | 2 + helm/templates/role-reader.yaml | 1 + helm/templates/role-writer.yaml | 2 + helm/values.yaml | 1 + pkg/resource/app/delta.go | 7 + pkg/resource/app/resource.go | 18 +- pkg/resource/app/sdk.go | 32 +- pkg/resource/domain/delta.go | 14 + pkg/resource/domain/sdk.go | 222 ++-- pkg/resource/space/delta.go | 366 ++++++ pkg/resource/space/descriptor.go | 155 +++ pkg/resource/space/identifiers.go | 55 + pkg/resource/space/manager.go | 404 ++++++ pkg/resource/space/manager_factory.go | 100 ++ pkg/resource/space/references.go | 57 + pkg/resource/space/resource.go | 124 ++ pkg/resource/space/sdk.go | 1093 +++++++++++++++++ pkg/resource/space/tags.go | 119 ++ pkg/resource/user_profile/delta.go | 14 + pkg/resource/user_profile/sdk.go | 222 ++-- 41 files changed, 4286 insertions(+), 191 deletions(-) create mode 100644 apis/v1alpha1/space.go create mode 100644 config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml create mode 100644 helm/crds/sagemaker.services.k8s.aws_spaces.yaml create mode 100644 pkg/resource/space/delta.go create mode 100644 pkg/resource/space/descriptor.go create mode 100644 pkg/resource/space/identifiers.go create mode 100644 pkg/resource/space/manager.go create mode 100644 pkg/resource/space/manager_factory.go create mode 100644 pkg/resource/space/references.go create mode 100644 pkg/resource/space/resource.go create mode 100644 pkg/resource/space/sdk.go create mode 100644 pkg/resource/space/tags.go diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index 338a2b2e..f103e5be 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,13 +1,13 @@ ack_generate_info: - build_date: "2025-09-20T00:39:31Z" - build_hash: 5bf1e456e1dfc638d47ab492376335f528c0f455 - go_version: go1.25.0 - version: v0.52.0-1-g5bf1e45 -api_directory_checksum: 0b6625eb2e0b359687d13920cd0bb353a21e0e19 + build_date: "2025-09-26T00:44:06Z" + build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd + go_version: go1.24.7 + version: v0.52.0 +api_directory_checksum: b61a47a3a2eb341ed1b4cad140909a4001f979e5 api_version: v1alpha1 aws_sdk_go_version: v1.32.6 generator_config_info: - file_checksum: 70c9edbf252f449db6a130c3cc7272a847aaaafd + file_checksum: 6ab8ea5ca9ad928833d82f53fcfa745e3c15c74d original_file_name: generator.yaml last_modification: reason: API generation diff --git a/apis/v1alpha1/app.go b/apis/v1alpha1/app.go index aa2558fb..b222b670 100644 --- a/apis/v1alpha1/app.go +++ b/apis/v1alpha1/app.go @@ -45,6 +45,11 @@ type AppSpec struct { // those three ResourceSpec values for a KernelGateway app, the CreateApp call // fails with a request validation error. ResourceSpec *ResourceSpec `json:"resourceSpec,omitempty"` + // The name of the space. If this value is not set, then UserProfileName must + // be set. + // + // Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + SpaceName *string `json:"spaceName,omitempty"` // Each tag consists of a key and an optional value. Tag keys must be unique // per resource. Tags []*Tag `json:"tags,omitempty"` diff --git a/apis/v1alpha1/enums.go b/apis/v1alpha1/enums.go index b266b64d..18b0034e 100644 --- a/apis/v1alpha1/enums.go +++ b/apis/v1alpha1/enums.go @@ -2825,16 +2825,16 @@ const ( SpaceSortKey_LastModifiedTime SpaceSortKey = "LastModifiedTime" ) -type SpaceStatus string +type SpaceStatus_SDK string const ( - SpaceStatus_Delete_Failed SpaceStatus = "Delete_Failed" - SpaceStatus_Deleting SpaceStatus = "Deleting" - SpaceStatus_Failed SpaceStatus = "Failed" - SpaceStatus_InService SpaceStatus = "InService" - SpaceStatus_Pending SpaceStatus = "Pending" - SpaceStatus_Update_Failed SpaceStatus = "Update_Failed" - SpaceStatus_Updating SpaceStatus = "Updating" + SpaceStatus_SDK_Delete_Failed SpaceStatus_SDK = "Delete_Failed" + SpaceStatus_SDK_Deleting SpaceStatus_SDK = "Deleting" + SpaceStatus_SDK_Failed SpaceStatus_SDK = "Failed" + SpaceStatus_SDK_InService SpaceStatus_SDK = "InService" + SpaceStatus_SDK_Pending SpaceStatus_SDK = "Pending" + SpaceStatus_SDK_Update_Failed SpaceStatus_SDK = "Update_Failed" + SpaceStatus_SDK_Updating SpaceStatus_SDK = "Updating" ) type SplitType string diff --git a/apis/v1alpha1/generator.yaml b/apis/v1alpha1/generator.yaml index f05db345..18ec5979 100644 --- a/apis/v1alpha1/generator.yaml +++ b/apis/v1alpha1/generator.yaml @@ -1174,7 +1174,7 @@ ignore: - PresignedMlflowTrackingServerUrl # - ProcessingJob - Project - - Space + # - Space - StudioLifecycleConfig # - TrainingJob # - TransformJob @@ -1197,10 +1197,8 @@ ignore: - DisableProfiler - BatchTransformInput_ - MonitoringParquetDatasetFormat - - SpaceName - DefaultSpaceSettings - BatchDataCaptureConfig - - CodeRepositories - TableFormat - RandomSeed - TrainingImageConfig diff --git a/apis/v1alpha1/space.go b/apis/v1alpha1/space.go new file mode 100644 index 00000000..3bd81bde --- /dev/null +++ b/apis/v1alpha1/space.go @@ -0,0 +1,87 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package v1alpha1 + +import ( + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// SpaceSpec defines the desired state of Space. +type SpaceSpec struct { + + // The ID of the associated domain. + // + // Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` + // +kubebuilder:validation:Required + DomainID *string `json:"domainID"` + // A collection of ownership settings. + OwnershipSettings *OwnershipSettings `json:"ownershipSettings,omitempty"` + // The name of the space that appears in the SageMaker Studio UI. + // + // Regex Pattern: `^(?!\s*$).+$` + SpaceDisplayName *string `json:"spaceDisplayName,omitempty"` + // The name of the space. + // + // Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + // +kubebuilder:validation:Required + SpaceName *string `json:"spaceName"` + // A collection of space settings. + SpaceSettings *SpaceSettings `json:"spaceSettings,omitempty"` + // A collection of space sharing settings. + SpaceSharingSettings *SpaceSharingSettings `json:"spaceSharingSettings,omitempty"` + // Tags to associated with the space. Each tag consists of a key and an optional + // value. Tag keys must be unique for each resource. Tags are searchable using + // the Search API. + Tags []*Tag `json:"tags,omitempty"` +} + +// SpaceStatus defines the observed state of Space +type SpaceStatus struct { + // All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + // that is used to contain resource sync state, account ownership, + // constructed ARN for the resource + // +kubebuilder:validation:Optional + ACKResourceMetadata *ackv1alpha1.ResourceMetadata `json:"ackResourceMetadata"` + // All CRs managed by ACK have a common `Status.Conditions` member that + // contains a collection of `ackv1alpha1.Condition` objects that describe + // the various terminal states of the CR and its backend AWS service API + // resource + // +kubebuilder:validation:Optional + Conditions []*ackv1alpha1.Condition `json:"conditions"` +} + +// Space is the Schema for the Spaces API +// +kubebuilder:object:root=true +// +kubebuilder:subresource:status +type Space struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + Spec SpaceSpec `json:"spec,omitempty"` + Status SpaceStatus `json:"status,omitempty"` +} + +// SpaceList contains a list of Space +// +kubebuilder:object:root=true +type SpaceList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []Space `json:"items"` +} + +func init() { + SchemeBuilder.Register(&Space{}, &SpaceList{}) +} diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 98c57545..7af65741 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -180,6 +180,7 @@ type AppDetails struct { // Specifies the ARN's of a SageMaker image and SageMaker image version, and // the instance type that the version runs on. ResourceSpec *ResourceSpec `json:"resourceSpec,omitempty"` + SpaceName *string `json:"spaceName,omitempty"` Status *string `json:"status,omitempty"` UserProfileName *string `json:"userProfileName,omitempty"` } @@ -664,6 +665,12 @@ type CodeEditorAppSettings struct { LifecycleConfigARNs []*string `json:"lifecycleConfigARNs,omitempty"` } +// A Git repository that SageMaker automatically displays to users for cloning +// in the JupyterServer application. +type CodeRepository struct { + RepositoryURL *string `json:"repositoryURL,omitempty"` +} + // Specifies summary information about a Git repository. type CodeRepositorySummary struct { CodeRepositoryName *string `json:"codeRepositoryName,omitempty"` @@ -740,6 +747,16 @@ type ContinuousParameterRangeSpecification struct { MinValue *string `json:"minValue,omitempty"` } +// A file system, created by you, that you assign to a user profile or space +// for an Amazon SageMaker Domain. Permitted users can access this file system +// in Amazon SageMaker Studio. +type CustomFileSystem struct { + // A file system, created by you in Amazon EFS, that you assign to a user profile + // or space for an Amazon SageMaker Domain. Permitted users can access this + // file system in Amazon SageMaker Studio. + EFSFileSystem *EFSFileSystem `json:"efsFileSystem,omitempty"` +} + // The settings for assigning a custom file system to a user profile or space // for an Amazon SageMaker Domain. Permitted users can access this file system // in Amazon SageMaker Studio. @@ -2264,6 +2281,13 @@ type IdentityProviderOAuthSetting struct { Status *string `json:"status,omitempty"` } +// Settings related to idle shutdown of Studio applications. +type IdleSettings struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` + MaxIdleTimeoutInMinutes *int64 `json:"maxIdleTimeoutInMinutes,omitempty"` + MinIdleTimeoutInMinutes *int64 `json:"minIdleTimeoutInMinutes,omitempty"` +} + // A SageMaker image. A SageMaker image represents a set of container images // that are derived from a common base container image. Each of these container // images is represented by a SageMaker ImageVersion. @@ -2498,7 +2522,8 @@ type IntegerParameterRangeSpecification struct { // The settings for the JupyterLab application. type JupyterLabAppSettings struct { - CustomImages []*CustomImage `json:"customImages,omitempty"` + CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` + CustomImages []*CustomImage `json:"customImages,omitempty"` // Specifies the ARN's of a SageMaker image and SageMaker image version, and // the instance type that the version runs on. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` @@ -2507,6 +2532,7 @@ type JupyterLabAppSettings struct { // The JupyterServer app settings. type JupyterServerAppSettings struct { + CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` // Specifies the ARN's of a SageMaker image and SageMaker image version, and // the instance type that the version runs on. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` @@ -4695,8 +4721,18 @@ type SourceAlgorithmSpecification struct { SourceAlgorithms []*SourceAlgorithm `json:"sourceAlgorithms,omitempty"` } +// Settings that are used to configure and manage the lifecycle of Amazon SageMaker +// Studio applications in a space. +type SpaceAppLifecycleManagement struct { + // Settings related to idle shutdown of Studio applications in a space. + IdleSettings *SpaceIdleSettings `json:"idleSettings,omitempty"` +} + // The application settings for a Code Editor space. type SpaceCodeEditorAppSettings struct { + // Settings that are used to configure and manage the lifecycle of Amazon SageMaker + // Studio applications in a space. + AppLifecycleManagement *SpaceAppLifecycleManagement `json:"appLifecycleManagement,omitempty"` // Specifies the ARN's of a SageMaker image and SageMaker image version, and // the instance type that the version runs on. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` @@ -4707,10 +4743,28 @@ type SpaceDetails struct { CreationTime *metav1.Time `json:"creationTime,omitempty"` DomainID *string `json:"domainID,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` + // Specifies summary information about the ownership settings. + OwnershipSettingsSummary *OwnershipSettingsSummary `json:"ownershipSettingsSummary,omitempty"` + SpaceDisplayName *string `json:"spaceDisplayName,omitempty"` + SpaceName *string `json:"spaceName,omitempty"` + // Specifies summary information about the space settings. + SpaceSettingsSummary *SpaceSettingsSummary `json:"spaceSettingsSummary,omitempty"` + // Specifies summary information about the space sharing settings. + SpaceSharingSettingsSummary *SpaceSharingSettingsSummary `json:"spaceSharingSettingsSummary,omitempty"` + Status *string `json:"status,omitempty"` +} + +// Settings related to idle shutdown of Studio applications in a space. +type SpaceIdleSettings struct { + IdleTimeoutInMinutes *int64 `json:"idleTimeoutInMinutes,omitempty"` } // The settings for the JupyterLab application within a space. type SpaceJupyterLabAppSettings struct { + // Settings that are used to configure and manage the lifecycle of Amazon SageMaker + // Studio applications in a space. + AppLifecycleManagement *SpaceAppLifecycleManagement `json:"appLifecycleManagement,omitempty"` + CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` // Specifies the ARN's of a SageMaker image and SageMaker image version, and // the instance type that the version runs on. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` @@ -4719,15 +4773,41 @@ type SpaceJupyterLabAppSettings struct { // A collection of space settings. type SpaceSettings struct { AppType *string `json:"appType,omitempty"` + // The application settings for a Code Editor space. + CodeEditorAppSettings *SpaceCodeEditorAppSettings `json:"codeEditorAppSettings,omitempty"` + CustomFileSystems []*CustomFileSystem `json:"customFileSystems,omitempty"` + // The settings for the JupyterLab application within a space. + JupyterLabAppSettings *SpaceJupyterLabAppSettings `json:"jupyterLabAppSettings,omitempty"` // The JupyterServer app settings. JupyterServerAppSettings *JupyterServerAppSettings `json:"jupyterServerAppSettings,omitempty"` // The KernelGateway app settings. KernelGatewayAppSettings *KernelGatewayAppSettings `json:"kernelGatewayAppSettings,omitempty"` + // The storage settings for a space. + SpaceStorageSettings *SpaceStorageSettings `json:"spaceStorageSettings,omitempty"` } // Specifies summary information about the space settings. type SpaceSettingsSummary struct { AppType *string `json:"appType,omitempty"` + // The storage settings for a space. + SpaceStorageSettings *SpaceStorageSettings `json:"spaceStorageSettings,omitempty"` +} + +// A collection of space sharing settings. +type SpaceSharingSettings struct { + SharingType *string `json:"sharingType,omitempty"` +} + +// Specifies summary information about the space sharing settings. +type SpaceSharingSettingsSummary struct { + SharingType *string `json:"sharingType,omitempty"` +} + +// The storage settings for a space. +type SpaceStorageSettings struct { + // A collection of EBS storage settings that apply to both private and shared + // spaces. + EBSStorageSettings *EBSStorageSettings `json:"ebsStorageSettings,omitempty"` } // Specifies a limit to how long a job can run. When the job reaches the time diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 5948a666..ccf79eba 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -471,6 +471,11 @@ func (in *AppDetails) DeepCopyInto(out *AppDetails) { *out = new(ResourceSpec) (*in).DeepCopyInto(*out) } + if in.SpaceName != nil { + in, out := &in.SpaceName, &out.SpaceName + *out = new(string) + **out = **in + } if in.Status != nil { in, out := &in.Status, &out.Status *out = new(string) @@ -576,6 +581,11 @@ func (in *AppSpec) DeepCopyInto(out *AppSpec) { *out = new(ResourceSpec) (*in).DeepCopyInto(*out) } + if in.SpaceName != nil { + in, out := &in.SpaceName, &out.SpaceName + *out = new(string) + **out = **in + } if in.Tags != nil { in, out := &in.Tags, &out.Tags *out = make([]*Tag, len(*in)) @@ -2013,6 +2023,26 @@ func (in *CodeEditorAppSettings) DeepCopy() *CodeEditorAppSettings { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CodeRepository) DeepCopyInto(out *CodeRepository) { + *out = *in + if in.RepositoryURL != nil { + in, out := &in.RepositoryURL, &out.RepositoryURL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CodeRepository. +func (in *CodeRepository) DeepCopy() *CodeRepository { + if in == nil { + return nil + } + out := new(CodeRepository) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CodeRepositorySummary) DeepCopyInto(out *CodeRepositorySummary) { *out = *in @@ -2322,6 +2352,26 @@ func (in *ContinuousParameterRangeSpecification) DeepCopy() *ContinuousParameter return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CustomFileSystem) DeepCopyInto(out *CustomFileSystem) { + *out = *in + if in.EFSFileSystem != nil { + in, out := &in.EFSFileSystem, &out.EFSFileSystem + *out = new(EFSFileSystem) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFileSystem. +func (in *CustomFileSystem) DeepCopy() *CustomFileSystem { + if in == nil { + return nil + } + out := new(CustomFileSystem) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CustomFileSystemConfig) DeepCopyInto(out *CustomFileSystemConfig) { *out = *in @@ -6855,6 +6905,36 @@ func (in *IdentityProviderOAuthSetting) DeepCopy() *IdentityProviderOAuthSetting return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *IdleSettings) DeepCopyInto(out *IdleSettings) { + *out = *in + if in.IdleTimeoutInMinutes != nil { + in, out := &in.IdleTimeoutInMinutes, &out.IdleTimeoutInMinutes + *out = new(int64) + **out = **in + } + if in.MaxIdleTimeoutInMinutes != nil { + in, out := &in.MaxIdleTimeoutInMinutes, &out.MaxIdleTimeoutInMinutes + *out = new(int64) + **out = **in + } + if in.MinIdleTimeoutInMinutes != nil { + in, out := &in.MinIdleTimeoutInMinutes, &out.MinIdleTimeoutInMinutes + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new IdleSettings. +func (in *IdleSettings) DeepCopy() *IdleSettings { + if in == nil { + return nil + } + out := new(IdleSettings) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Image) DeepCopyInto(out *Image) { *out = *in @@ -7855,6 +7935,17 @@ func (in *IntegerParameterRangeSpecification) DeepCopy() *IntegerParameterRangeS // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JupyterLabAppSettings) DeepCopyInto(out *JupyterLabAppSettings) { *out = *in + if in.CodeRepositories != nil { + in, out := &in.CodeRepositories, &out.CodeRepositories + *out = make([]*CodeRepository, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CodeRepository) + (*in).DeepCopyInto(*out) + } + } + } if in.CustomImages != nil { in, out := &in.CustomImages, &out.CustomImages *out = make([]*CustomImage, len(*in)) @@ -7897,6 +7988,17 @@ func (in *JupyterLabAppSettings) DeepCopy() *JupyterLabAppSettings { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JupyterServerAppSettings) DeepCopyInto(out *JupyterServerAppSettings) { *out = *in + if in.CodeRepositories != nil { + in, out := &in.CodeRepositories, &out.CodeRepositories + *out = make([]*CodeRepository, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CodeRepository) + (*in).DeepCopyInto(*out) + } + } + } if in.DefaultResourceSpec != nil { in, out := &in.DefaultResourceSpec, &out.DefaultResourceSpec *out = new(ResourceSpec) @@ -17022,9 +17124,61 @@ func (in *SourceAlgorithmSpecification) DeepCopy() *SourceAlgorithmSpecification return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Space) DeepCopyInto(out *Space) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Space. +func (in *Space) DeepCopy() *Space { + if in == nil { + return nil + } + out := new(Space) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *Space) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceAppLifecycleManagement) DeepCopyInto(out *SpaceAppLifecycleManagement) { + *out = *in + if in.IdleSettings != nil { + in, out := &in.IdleSettings, &out.IdleSettings + *out = new(SpaceIdleSettings) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceAppLifecycleManagement. +func (in *SpaceAppLifecycleManagement) DeepCopy() *SpaceAppLifecycleManagement { + if in == nil { + return nil + } + out := new(SpaceAppLifecycleManagement) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SpaceCodeEditorAppSettings) DeepCopyInto(out *SpaceCodeEditorAppSettings) { *out = *in + if in.AppLifecycleManagement != nil { + in, out := &in.AppLifecycleManagement, &out.AppLifecycleManagement + *out = new(SpaceAppLifecycleManagement) + (*in).DeepCopyInto(*out) + } if in.DefaultResourceSpec != nil { in, out := &in.DefaultResourceSpec, &out.DefaultResourceSpec *out = new(ResourceSpec) @@ -17058,6 +17212,36 @@ func (in *SpaceDetails) DeepCopyInto(out *SpaceDetails) { in, out := &in.LastModifiedTime, &out.LastModifiedTime *out = (*in).DeepCopy() } + if in.OwnershipSettingsSummary != nil { + in, out := &in.OwnershipSettingsSummary, &out.OwnershipSettingsSummary + *out = new(OwnershipSettingsSummary) + (*in).DeepCopyInto(*out) + } + if in.SpaceDisplayName != nil { + in, out := &in.SpaceDisplayName, &out.SpaceDisplayName + *out = new(string) + **out = **in + } + if in.SpaceName != nil { + in, out := &in.SpaceName, &out.SpaceName + *out = new(string) + **out = **in + } + if in.SpaceSettingsSummary != nil { + in, out := &in.SpaceSettingsSummary, &out.SpaceSettingsSummary + *out = new(SpaceSettingsSummary) + (*in).DeepCopyInto(*out) + } + if in.SpaceSharingSettingsSummary != nil { + in, out := &in.SpaceSharingSettingsSummary, &out.SpaceSharingSettingsSummary + *out = new(SpaceSharingSettingsSummary) + (*in).DeepCopyInto(*out) + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceDetails. @@ -17070,9 +17254,45 @@ func (in *SpaceDetails) DeepCopy() *SpaceDetails { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceIdleSettings) DeepCopyInto(out *SpaceIdleSettings) { + *out = *in + if in.IdleTimeoutInMinutes != nil { + in, out := &in.IdleTimeoutInMinutes, &out.IdleTimeoutInMinutes + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceIdleSettings. +func (in *SpaceIdleSettings) DeepCopy() *SpaceIdleSettings { + if in == nil { + return nil + } + out := new(SpaceIdleSettings) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SpaceJupyterLabAppSettings) DeepCopyInto(out *SpaceJupyterLabAppSettings) { *out = *in + if in.AppLifecycleManagement != nil { + in, out := &in.AppLifecycleManagement, &out.AppLifecycleManagement + *out = new(SpaceAppLifecycleManagement) + (*in).DeepCopyInto(*out) + } + if in.CodeRepositories != nil { + in, out := &in.CodeRepositories, &out.CodeRepositories + *out = make([]*CodeRepository, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CodeRepository) + (*in).DeepCopyInto(*out) + } + } + } if in.DefaultResourceSpec != nil { in, out := &in.DefaultResourceSpec, &out.DefaultResourceSpec *out = new(ResourceSpec) @@ -17090,6 +17310,38 @@ func (in *SpaceJupyterLabAppSettings) DeepCopy() *SpaceJupyterLabAppSettings { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceList) DeepCopyInto(out *SpaceList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]Space, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceList. +func (in *SpaceList) DeepCopy() *SpaceList { + if in == nil { + return nil + } + out := new(SpaceList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *SpaceList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *SpaceSettings) DeepCopyInto(out *SpaceSettings) { *out = *in @@ -17098,6 +17350,27 @@ func (in *SpaceSettings) DeepCopyInto(out *SpaceSettings) { *out = new(string) **out = **in } + if in.CodeEditorAppSettings != nil { + in, out := &in.CodeEditorAppSettings, &out.CodeEditorAppSettings + *out = new(SpaceCodeEditorAppSettings) + (*in).DeepCopyInto(*out) + } + if in.CustomFileSystems != nil { + in, out := &in.CustomFileSystems, &out.CustomFileSystems + *out = make([]*CustomFileSystem, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(CustomFileSystem) + (*in).DeepCopyInto(*out) + } + } + } + if in.JupyterLabAppSettings != nil { + in, out := &in.JupyterLabAppSettings, &out.JupyterLabAppSettings + *out = new(SpaceJupyterLabAppSettings) + (*in).DeepCopyInto(*out) + } if in.JupyterServerAppSettings != nil { in, out := &in.JupyterServerAppSettings, &out.JupyterServerAppSettings *out = new(JupyterServerAppSettings) @@ -17108,6 +17381,11 @@ func (in *SpaceSettings) DeepCopyInto(out *SpaceSettings) { *out = new(KernelGatewayAppSettings) (*in).DeepCopyInto(*out) } + if in.SpaceStorageSettings != nil { + in, out := &in.SpaceStorageSettings, &out.SpaceStorageSettings + *out = new(SpaceStorageSettings) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceSettings. @@ -17128,6 +17406,11 @@ func (in *SpaceSettingsSummary) DeepCopyInto(out *SpaceSettingsSummary) { *out = new(string) **out = **in } + if in.SpaceStorageSettings != nil { + in, out := &in.SpaceStorageSettings, &out.SpaceStorageSettings + *out = new(SpaceStorageSettings) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceSettingsSummary. @@ -17140,6 +17423,153 @@ func (in *SpaceSettingsSummary) DeepCopy() *SpaceSettingsSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceSharingSettings) DeepCopyInto(out *SpaceSharingSettings) { + *out = *in + if in.SharingType != nil { + in, out := &in.SharingType, &out.SharingType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceSharingSettings. +func (in *SpaceSharingSettings) DeepCopy() *SpaceSharingSettings { + if in == nil { + return nil + } + out := new(SpaceSharingSettings) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceSharingSettingsSummary) DeepCopyInto(out *SpaceSharingSettingsSummary) { + *out = *in + if in.SharingType != nil { + in, out := &in.SharingType, &out.SharingType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceSharingSettingsSummary. +func (in *SpaceSharingSettingsSummary) DeepCopy() *SpaceSharingSettingsSummary { + if in == nil { + return nil + } + out := new(SpaceSharingSettingsSummary) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceSpec) DeepCopyInto(out *SpaceSpec) { + *out = *in + if in.DomainID != nil { + in, out := &in.DomainID, &out.DomainID + *out = new(string) + **out = **in + } + if in.OwnershipSettings != nil { + in, out := &in.OwnershipSettings, &out.OwnershipSettings + *out = new(OwnershipSettings) + (*in).DeepCopyInto(*out) + } + if in.SpaceDisplayName != nil { + in, out := &in.SpaceDisplayName, &out.SpaceDisplayName + *out = new(string) + **out = **in + } + if in.SpaceName != nil { + in, out := &in.SpaceName, &out.SpaceName + *out = new(string) + **out = **in + } + if in.SpaceSettings != nil { + in, out := &in.SpaceSettings, &out.SpaceSettings + *out = new(SpaceSettings) + (*in).DeepCopyInto(*out) + } + if in.SpaceSharingSettings != nil { + in, out := &in.SpaceSharingSettings, &out.SpaceSharingSettings + *out = new(SpaceSharingSettings) + (*in).DeepCopyInto(*out) + } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*Tag, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(Tag) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceSpec. +func (in *SpaceSpec) DeepCopy() *SpaceSpec { + if in == nil { + return nil + } + out := new(SpaceSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceStatus) DeepCopyInto(out *SpaceStatus) { + *out = *in + if in.ACKResourceMetadata != nil { + in, out := &in.ACKResourceMetadata, &out.ACKResourceMetadata + *out = new(corev1alpha1.ResourceMetadata) + (*in).DeepCopyInto(*out) + } + if in.Conditions != nil { + in, out := &in.Conditions, &out.Conditions + *out = make([]*corev1alpha1.Condition, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(corev1alpha1.Condition) + (*in).DeepCopyInto(*out) + } + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceStatus. +func (in *SpaceStatus) DeepCopy() *SpaceStatus { + if in == nil { + return nil + } + out := new(SpaceStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SpaceStorageSettings) DeepCopyInto(out *SpaceStorageSettings) { + *out = *in + if in.EBSStorageSettings != nil { + in, out := &in.EBSStorageSettings, &out.EBSStorageSettings + *out = new(EBSStorageSettings) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceStorageSettings. +func (in *SpaceStorageSettings) DeepCopy() *SpaceStorageSettings { + if in == nil { + return nil + } + out := new(SpaceStorageSettings) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *StoppingCondition) DeepCopyInto(out *StoppingCondition) { *out = *in diff --git a/cmd/controller/main.go b/cmd/controller/main.go index 53e1dc7f..8d02def0 100644 --- a/cmd/controller/main.go +++ b/cmd/controller/main.go @@ -60,6 +60,7 @@ import ( _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/pipeline" _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/pipeline_execution" _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/processing_job" + _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/space" _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/training_job" _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/transform_job" _ "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource/user_profile" diff --git a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml index ded223bd..9e26ff27 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml @@ -80,6 +80,13 @@ spec: sageMakerImageVersionAlias: type: string type: object + spaceName: + description: |- + The name of the space. If this value is not set, then UserProfileName must + be set. + + Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + type: string tags: description: |- Each tag consists of a key and an optional value. Tag keys must be unique diff --git a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml index c22ac85a..01566db7 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml @@ -141,6 +141,16 @@ spec: jupyterLabAppSettings: description: The settings for the JupyterLab application. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array customImages: items: description: |- @@ -180,6 +190,16 @@ spec: jupyterServerAppSettings: description: The JupyterServer app settings. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array defaultResourceSpec: description: |- Specifies the ARN's of a SageMaker image and SageMaker image version, and diff --git a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml new file mode 100644 index 00000000..4acb21f2 --- /dev/null +++ b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml @@ -0,0 +1,364 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.2 + name: spaces.sagemaker.services.k8s.aws +spec: + group: sagemaker.services.k8s.aws + names: + kind: Space + listKind: SpaceList + plural: spaces + singular: space + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Space is the Schema for the Spaces API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: SpaceSpec defines the desired state of Space. + properties: + domainID: + description: |- + The ID of the associated domain. + + Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` + type: string + ownershipSettings: + description: A collection of ownership settings. + properties: + ownerUserProfileName: + type: string + type: object + spaceDisplayName: + description: |- + The name of the space that appears in the SageMaker Studio UI. + + Regex Pattern: `^(?!\s*$).+$` + type: string + spaceName: + description: |- + The name of the space. + + Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + type: string + spaceSettings: + description: A collection of space settings. + properties: + appType: + type: string + codeEditorAppSettings: + description: The application settings for a Code Editor space. + properties: + appLifecycleManagement: + description: |- + Settings that are used to configure and manage the lifecycle of Amazon SageMaker + Studio applications in a space. + properties: + idleSettings: + description: Settings related to idle shutdown of Studio + applications in a space. + properties: + idleTimeoutInMinutes: + format: int64 + type: integer + type: object + type: object + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + type: object + customFileSystems: + items: + description: |- + A file system, created by you, that you assign to a user profile or space + for an Amazon SageMaker Domain. Permitted users can access this file system + in Amazon SageMaker Studio. + properties: + efsFileSystem: + description: |- + A file system, created by you in Amazon EFS, that you assign to a user profile + or space for an Amazon SageMaker Domain. Permitted users can access this + file system in Amazon SageMaker Studio. + properties: + fileSystemID: + type: string + type: object + type: object + type: array + jupyterLabAppSettings: + description: The settings for the JupyterLab application within + a space. + properties: + appLifecycleManagement: + description: |- + Settings that are used to configure and manage the lifecycle of Amazon SageMaker + Studio applications in a space. + properties: + idleSettings: + description: Settings related to idle shutdown of Studio + applications in a space. + properties: + idleTimeoutInMinutes: + format: int64 + type: integer + type: object + type: object + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + type: object + jupyterServerAppSettings: + description: The JupyterServer app settings. + properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + lifecycleConfigARNs: + items: + type: string + type: array + type: object + kernelGatewayAppSettings: + description: The KernelGateway app settings. + properties: + customImages: + items: + description: |- + A custom SageMaker image. For more information, see Bring your own SageMaker + image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + properties: + appImageConfigName: + type: string + imageName: + type: string + imageVersionNumber: + format: int64 + type: integer + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + lifecycleConfigARNs: + items: + type: string + type: array + type: object + spaceStorageSettings: + description: The storage settings for a space. + properties: + ebsStorageSettings: + description: |- + A collection of EBS storage settings that apply to both private and shared + spaces. + properties: + ebsVolumeSizeInGb: + format: int64 + type: integer + type: object + type: object + type: object + spaceSharingSettings: + description: A collection of space sharing settings. + properties: + sharingType: + type: string + type: object + tags: + description: |- + Tags to associated with the space. Each tag consists of a key and an optional + value. Tag keys must be unique for each resource. Tags are searchable using + the Search API. + items: + description: |- + A tag object that consists of a key and an optional value, used to manage + metadata for SageMaker Amazon Web Services resources. + + You can add tags to notebook instances, training jobs, hyperparameter tuning + jobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations, + and endpoints. For more information on adding tags to SageMaker resources, + see AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html). + + For more information on adding metadata to your Amazon Web Services resources + with tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + For advice on best practices for managing Amazon Web Services resources with + tagging, see Tagging Best Practices: Implement an Effective Amazon Web Services + Resource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf). + properties: + key: + type: string + value: + type: string + type: object + type: array + required: + - domainID + - spaceName + type: object + status: + description: SpaceStatus defines the observed state of Space + properties: + ackResourceMetadata: + description: |- + All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + that is used to contain resource sync state, account ownership, + constructed ARN for the resource + properties: + arn: + description: |- + ARN is the Amazon Resource Name for the resource. This is a + globally-unique identifier and is set only by the ACK service controller + once the controller has orchestrated the creation of the resource OR + when it has verified that an "adopted" resource (a resource where the + ARN annotation was set by the Kubernetes user on the CR) exists and + matches the supplied CR's Spec field values. + https://github.com/aws/aws-controllers-k8s/issues/270 + type: string + ownerAccountID: + description: |- + OwnerAccountID is the AWS Account ID of the account that owns the + backend AWS service API resource. + type: string + region: + description: Region is the AWS region in which the resource exists + or will exist. + type: string + required: + - ownerAccountID + - region + type: object + conditions: + description: |- + All CRs managed by ACK have a common `Status.Conditions` member that + contains a collection of `ackv1alpha1.Condition` objects that describe + the various terminal states of the CR and its backend AWS service API + resource + items: + description: |- + Condition is the common struct used by all CRDs managed by ACK service + controllers to indicate terminal states of the CR and its backend AWS + service API resource + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type is the type of the Condition + type: string + required: + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml index 813f57b5..75b00d23 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml @@ -169,6 +169,16 @@ spec: jupyterLabAppSettings: description: The settings for the JupyterLab application. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array customImages: items: description: |- @@ -208,6 +218,16 @@ spec: jupyterServerAppSettings: description: The JupyterServer app settings. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array defaultResourceSpec: description: |- Specifies the ARN's of a SageMaker image and SageMaker image version, and diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index 527f451d..153ea40f 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -23,6 +23,7 @@ resources: - bases/sagemaker.services.k8s.aws_pipelines.yaml - bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml - bases/sagemaker.services.k8s.aws_processingjobs.yaml + - bases/sagemaker.services.k8s.aws_spaces.yaml - bases/sagemaker.services.k8s.aws_trainingjobs.yaml - bases/sagemaker.services.k8s.aws_transformjobs.yaml - bases/sagemaker.services.k8s.aws_userprofiles.yaml diff --git a/config/rbac/cluster-role-controller.yaml b/config/rbac/cluster-role-controller.yaml index b49fae6d..345e5599 100644 --- a/config/rbac/cluster-role-controller.yaml +++ b/config/rbac/cluster-role-controller.yaml @@ -46,6 +46,7 @@ rules: - pipelineexecutions - pipelines - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles @@ -81,6 +82,7 @@ rules: - pipelineexecutions/status - pipelines/status - processingjobs/status + - spaces/status - trainingjobs/status - transformjobs/status - userprofiles/status diff --git a/config/rbac/role-reader.yaml b/config/rbac/role-reader.yaml index 7316a92e..0c912037 100644 --- a/config/rbac/role-reader.yaml +++ b/config/rbac/role-reader.yaml @@ -30,6 +30,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles diff --git a/config/rbac/role-writer.yaml b/config/rbac/role-writer.yaml index e65a31bc..77e2af05 100644 --- a/config/rbac/role-writer.yaml +++ b/config/rbac/role-writer.yaml @@ -30,6 +30,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles @@ -65,6 +66,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles diff --git a/generator.yaml b/generator.yaml index f05db345..18ec5979 100644 --- a/generator.yaml +++ b/generator.yaml @@ -1174,7 +1174,7 @@ ignore: - PresignedMlflowTrackingServerUrl # - ProcessingJob - Project - - Space + # - Space - StudioLifecycleConfig # - TrainingJob # - TransformJob @@ -1197,10 +1197,8 @@ ignore: - DisableProfiler - BatchTransformInput_ - MonitoringParquetDatasetFormat - - SpaceName - DefaultSpaceSettings - BatchDataCaptureConfig - - CodeRepositories - TableFormat - RandomSeed - TrainingImageConfig diff --git a/helm/crds/sagemaker.services.k8s.aws_apps.yaml b/helm/crds/sagemaker.services.k8s.aws_apps.yaml index ded223bd..9e26ff27 100644 --- a/helm/crds/sagemaker.services.k8s.aws_apps.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_apps.yaml @@ -80,6 +80,13 @@ spec: sageMakerImageVersionAlias: type: string type: object + spaceName: + description: |- + The name of the space. If this value is not set, then UserProfileName must + be set. + + Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + type: string tags: description: |- Each tag consists of a key and an optional value. Tag keys must be unique diff --git a/helm/crds/sagemaker.services.k8s.aws_domains.yaml b/helm/crds/sagemaker.services.k8s.aws_domains.yaml index b8356954..66473f03 100644 --- a/helm/crds/sagemaker.services.k8s.aws_domains.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_domains.yaml @@ -141,6 +141,16 @@ spec: jupyterLabAppSettings: description: The settings for the JupyterLab application. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array customImages: items: description: |- @@ -180,6 +190,16 @@ spec: jupyterServerAppSettings: description: The JupyterServer app settings. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array defaultResourceSpec: description: |- Specifies the ARN's of a SageMaker image and SageMaker image version, and diff --git a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml new file mode 100644 index 00000000..4acb21f2 --- /dev/null +++ b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml @@ -0,0 +1,364 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.2 + name: spaces.sagemaker.services.k8s.aws +spec: + group: sagemaker.services.k8s.aws + names: + kind: Space + listKind: SpaceList + plural: spaces + singular: space + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: Space is the Schema for the Spaces API + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: SpaceSpec defines the desired state of Space. + properties: + domainID: + description: |- + The ID of the associated domain. + + Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` + type: string + ownershipSettings: + description: A collection of ownership settings. + properties: + ownerUserProfileName: + type: string + type: object + spaceDisplayName: + description: |- + The name of the space that appears in the SageMaker Studio UI. + + Regex Pattern: `^(?!\s*$).+$` + type: string + spaceName: + description: |- + The name of the space. + + Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` + type: string + spaceSettings: + description: A collection of space settings. + properties: + appType: + type: string + codeEditorAppSettings: + description: The application settings for a Code Editor space. + properties: + appLifecycleManagement: + description: |- + Settings that are used to configure and manage the lifecycle of Amazon SageMaker + Studio applications in a space. + properties: + idleSettings: + description: Settings related to idle shutdown of Studio + applications in a space. + properties: + idleTimeoutInMinutes: + format: int64 + type: integer + type: object + type: object + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + type: object + customFileSystems: + items: + description: |- + A file system, created by you, that you assign to a user profile or space + for an Amazon SageMaker Domain. Permitted users can access this file system + in Amazon SageMaker Studio. + properties: + efsFileSystem: + description: |- + A file system, created by you in Amazon EFS, that you assign to a user profile + or space for an Amazon SageMaker Domain. Permitted users can access this + file system in Amazon SageMaker Studio. + properties: + fileSystemID: + type: string + type: object + type: object + type: array + jupyterLabAppSettings: + description: The settings for the JupyterLab application within + a space. + properties: + appLifecycleManagement: + description: |- + Settings that are used to configure and manage the lifecycle of Amazon SageMaker + Studio applications in a space. + properties: + idleSettings: + description: Settings related to idle shutdown of Studio + applications in a space. + properties: + idleTimeoutInMinutes: + format: int64 + type: integer + type: object + type: object + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + type: object + jupyterServerAppSettings: + description: The JupyterServer app settings. + properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + lifecycleConfigARNs: + items: + type: string + type: array + type: object + kernelGatewayAppSettings: + description: The KernelGateway app settings. + properties: + customImages: + items: + description: |- + A custom SageMaker image. For more information, see Bring your own SageMaker + image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + properties: + appImageConfigName: + type: string + imageName: + type: string + imageVersionNumber: + format: int64 + type: integer + type: object + type: array + defaultResourceSpec: + description: |- + Specifies the ARN's of a SageMaker image and SageMaker image version, and + the instance type that the version runs on. + properties: + instanceType: + type: string + lifecycleConfigARN: + type: string + sageMakerImageARN: + type: string + sageMakerImageVersionARN: + type: string + sageMakerImageVersionAlias: + type: string + type: object + lifecycleConfigARNs: + items: + type: string + type: array + type: object + spaceStorageSettings: + description: The storage settings for a space. + properties: + ebsStorageSettings: + description: |- + A collection of EBS storage settings that apply to both private and shared + spaces. + properties: + ebsVolumeSizeInGb: + format: int64 + type: integer + type: object + type: object + type: object + spaceSharingSettings: + description: A collection of space sharing settings. + properties: + sharingType: + type: string + type: object + tags: + description: |- + Tags to associated with the space. Each tag consists of a key and an optional + value. Tag keys must be unique for each resource. Tags are searchable using + the Search API. + items: + description: |- + A tag object that consists of a key and an optional value, used to manage + metadata for SageMaker Amazon Web Services resources. + + You can add tags to notebook instances, training jobs, hyperparameter tuning + jobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations, + and endpoints. For more information on adding tags to SageMaker resources, + see AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html). + + For more information on adding metadata to your Amazon Web Services resources + with tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + For advice on best practices for managing Amazon Web Services resources with + tagging, see Tagging Best Practices: Implement an Effective Amazon Web Services + Resource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf). + properties: + key: + type: string + value: + type: string + type: object + type: array + required: + - domainID + - spaceName + type: object + status: + description: SpaceStatus defines the observed state of Space + properties: + ackResourceMetadata: + description: |- + All CRs managed by ACK have a common `Status.ACKResourceMetadata` member + that is used to contain resource sync state, account ownership, + constructed ARN for the resource + properties: + arn: + description: |- + ARN is the Amazon Resource Name for the resource. This is a + globally-unique identifier and is set only by the ACK service controller + once the controller has orchestrated the creation of the resource OR + when it has verified that an "adopted" resource (a resource where the + ARN annotation was set by the Kubernetes user on the CR) exists and + matches the supplied CR's Spec field values. + https://github.com/aws/aws-controllers-k8s/issues/270 + type: string + ownerAccountID: + description: |- + OwnerAccountID is the AWS Account ID of the account that owns the + backend AWS service API resource. + type: string + region: + description: Region is the AWS region in which the resource exists + or will exist. + type: string + required: + - ownerAccountID + - region + type: object + conditions: + description: |- + All CRs managed by ACK have a common `Status.Conditions` member that + contains a collection of `ackv1alpha1.Condition` objects that describe + the various terminal states of the CR and its backend AWS service API + resource + items: + description: |- + Condition is the common struct used by all CRDs managed by ACK service + controllers to indicate terminal states of the CR and its backend AWS + service API resource + properties: + lastTransitionTime: + description: Last time the condition transitioned from one status + to another. + format: date-time + type: string + message: + description: A human readable message indicating details about + the transition. + type: string + reason: + description: The reason for the condition's last transition. + type: string + status: + description: Status of the condition, one of True, False, Unknown. + type: string + type: + description: Type is the type of the Condition + type: string + required: + - status + - type + type: object + type: array + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml index 813f57b5..75b00d23 100644 --- a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml @@ -169,6 +169,16 @@ spec: jupyterLabAppSettings: description: The settings for the JupyterLab application. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array customImages: items: description: |- @@ -208,6 +218,16 @@ spec: jupyterServerAppSettings: description: The JupyterServer app settings. properties: + codeRepositories: + items: + description: |- + A Git repository that SageMaker automatically displays to users for cloning + in the JupyterServer application. + properties: + repositoryURL: + type: string + type: object + type: array defaultResourceSpec: description: |- Specifies the ARN's of a SageMaker image and SageMaker image version, and diff --git a/helm/templates/_helpers.tpl b/helm/templates/_helpers.tpl index 7a7eefec..9998c974 100644 --- a/helm/templates/_helpers.tpl +++ b/helm/templates/_helpers.tpl @@ -93,6 +93,7 @@ rules: - pipelineexecutions - pipelines - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles @@ -128,6 +129,7 @@ rules: - pipelineexecutions/status - pipelines/status - processingjobs/status + - spaces/status - trainingjobs/status - transformjobs/status - userprofiles/status diff --git a/helm/templates/role-reader.yaml b/helm/templates/role-reader.yaml index 3a763afa..1f737a92 100644 --- a/helm/templates/role-reader.yaml +++ b/helm/templates/role-reader.yaml @@ -37,6 +37,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles diff --git a/helm/templates/role-writer.yaml b/helm/templates/role-writer.yaml index c226c22e..a95e0ef0 100644 --- a/helm/templates/role-writer.yaml +++ b/helm/templates/role-writer.yaml @@ -37,6 +37,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles @@ -72,6 +73,7 @@ rules: - pipelines - pipelineexecutions - processingjobs + - spaces - trainingjobs - transformjobs - userprofiles diff --git a/helm/values.yaml b/helm/values.yaml index 5cfb39a4..e7326a83 100644 --- a/helm/values.yaml +++ b/helm/values.yaml @@ -166,6 +166,7 @@ reconcile: - Pipeline - PipelineExecution - ProcessingJob + - Space - TrainingJob - TransformJob - UserProfile diff --git a/pkg/resource/app/delta.go b/pkg/resource/app/delta.go index 89a4ed7c..e199991c 100644 --- a/pkg/resource/app/delta.go +++ b/pkg/resource/app/delta.go @@ -103,6 +103,13 @@ func newResourceDelta( } } } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) { + delta.Add("Spec.SpaceName", a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) + } else if a.ko.Spec.SpaceName != nil && b.ko.Spec.SpaceName != nil { + if *a.ko.Spec.SpaceName != *b.ko.Spec.SpaceName { + delta.Add("Spec.SpaceName", a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) + } + } if ackcompare.HasNilDifference(a.ko.Spec.UserProfileName, b.ko.Spec.UserProfileName) { delta.Add("Spec.UserProfileName", a.ko.Spec.UserProfileName, b.ko.Spec.UserProfileName) } else if a.ko.Spec.UserProfileName != nil && b.ko.Spec.UserProfileName != nil { diff --git a/pkg/resource/app/resource.go b/pkg/resource/app/resource.go index 4feb29ce..d6b44f9e 100644 --- a/pkg/resource/app/resource.go +++ b/pkg/resource/app/resource.go @@ -101,9 +101,13 @@ func (r *resource) SetIdentifiers(identifier *ackv1alpha1.AWSIdentifiers) error if f2ok { r.ko.Spec.DomainID = aws.String(f2) } - f3, f3ok := identifier.AdditionalKeys["userProfileName"] + f3, f3ok := identifier.AdditionalKeys["spaceName"] if f3ok { - r.ko.Spec.UserProfileName = aws.String(f3) + r.ko.Spec.SpaceName = aws.String(f3) + } + f4, f4ok := identifier.AdditionalKeys["userProfileName"] + if f4ok { + r.ko.Spec.UserProfileName = aws.String(f4) } return nil @@ -120,16 +124,20 @@ func (r *resource) PopulateResourceFromAnnotation(fields map[string]string) erro if !ok { return ackerrors.NewTerminalError(fmt.Errorf("required field missing: appType")) } - r.ko.Spec.AppType = &f1 + r.ko.Spec.AppType = aws.String(string(&f1)) f2, ok := fields["domainID"] if !ok { return ackerrors.NewTerminalError(fmt.Errorf("required field missing: domainID")) } r.ko.Spec.DomainID = &f2 - f3, f3ok := fields["userProfileName"] + f3, f3ok := fields["spaceName"] if f3ok { - r.ko.Spec.UserProfileName = aws.String(f3) + r.ko.Spec.SpaceName = aws.String(f3) + } + f4, f4ok := fields["userProfileName"] + if f4ok { + r.ko.Spec.UserProfileName = aws.String(f4) } return nil diff --git a/pkg/resource/app/sdk.go b/pkg/resource/app/sdk.go index 819673af..496daa28 100644 --- a/pkg/resource/app/sdk.go +++ b/pkg/resource/app/sdk.go @@ -133,6 +133,11 @@ func (rm *resourceManager) sdkFind( } else { ko.Spec.ResourceSpec = nil } + if resp.SpaceName != nil { + ko.Spec.SpaceName = resp.SpaceName + } else { + ko.Spec.SpaceName = nil + } if resp.Status != "" { ko.Status.Status = aws.String(string(resp.Status)) } else { @@ -175,6 +180,9 @@ func (rm *resourceManager) newDescribeRequestPayload( if r.ko.Spec.DomainID != nil { res.DomainId = r.ko.Spec.DomainID } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } if r.ko.Spec.UserProfileName != nil { res.UserProfileName = r.ko.Spec.UserProfileName } @@ -258,19 +266,22 @@ func (rm *resourceManager) newCreateRequestPayload( } res.ResourceSpec = f3 } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } if r.ko.Spec.Tags != nil { - f4 := []svcsdktypes.Tag{} - for _, f4iter := range r.ko.Spec.Tags { - f4elem := &svcsdktypes.Tag{} - if f4iter.Key != nil { - f4elem.Key = f4iter.Key + f5 := []svcsdktypes.Tag{} + for _, f5iter := range r.ko.Spec.Tags { + f5elem := &svcsdktypes.Tag{} + if f5iter.Key != nil { + f5elem.Key = f5iter.Key } - if f4iter.Value != nil { - f4elem.Value = f4iter.Value + if f5iter.Value != nil { + f5elem.Value = f5iter.Value } - f4 = append(f4, *f4elem) + f5 = append(f5, *f5elem) } - res.Tags = f4 + res.Tags = f5 } if r.ko.Spec.UserProfileName != nil { res.UserProfileName = r.ko.Spec.UserProfileName @@ -347,6 +358,9 @@ func (rm *resourceManager) newDeleteRequestPayload( if r.ko.Spec.DomainID != nil { res.DomainId = r.ko.Spec.DomainID } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } if r.ko.Spec.UserProfileName != nil { res.UserProfileName = r.ko.Spec.UserProfileName } diff --git a/pkg/resource/domain/delta.go b/pkg/resource/domain/delta.go index 1c227c54..31910116 100644 --- a/pkg/resource/domain/delta.go +++ b/pkg/resource/domain/delta.go @@ -159,6 +159,13 @@ func newResourceDelta( if ackcompare.HasNilDifference(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings) { delta.Add("Spec.DefaultUserSettings.JupyterLabAppSettings", a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings) } else if a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings != nil && b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings != nil { + if len(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) != len(b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) + } else if len(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories) + } + } if len(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages) != len(b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages) { delta.Add("Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages", a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages, b.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages) } else if len(a.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages) > 0 { @@ -216,6 +223,13 @@ func newResourceDelta( if ackcompare.HasNilDifference(a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings) { delta.Add("Spec.DefaultUserSettings.JupyterServerAppSettings", a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings) } else if a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings != nil && b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings != nil { + if len(a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) != len(b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) + } else if len(a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories) + } + } if ackcompare.HasNilDifference(a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec) { delta.Add("Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec", a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec) } else if a.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil && b.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { diff --git a/pkg/resource/domain/sdk.go b/pkg/resource/domain/sdk.go index 13c8dc14..d4a980b9 100644 --- a/pkg/resource/domain/sdk.go +++ b/pkg/resource/domain/sdk.go @@ -174,42 +174,53 @@ func (rm *resourceManager) sdkFind( } if resp.DefaultUserSettings.JupyterLabAppSettings != nil { f4f5 := &svcapitypes.JupyterLabAppSettings{} + if resp.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f4f5f0 := []*svcapitypes.CodeRepository{} + for _, f4f5f0iter := range resp.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories { + f4f5f0elem := &svcapitypes.CodeRepository{} + if f4f5f0iter.RepositoryUrl != nil { + f4f5f0elem.RepositoryURL = f4f5f0iter.RepositoryUrl + } + f4f5f0 = append(f4f5f0, f4f5f0elem) + } + f4f5.CodeRepositories = f4f5f0 + } if resp.DefaultUserSettings.JupyterLabAppSettings.CustomImages != nil { - f4f5f0 := []*svcapitypes.CustomImage{} - for _, f4f5f0iter := range resp.DefaultUserSettings.JupyterLabAppSettings.CustomImages { - f4f5f0elem := &svcapitypes.CustomImage{} - if f4f5f0iter.AppImageConfigName != nil { - f4f5f0elem.AppImageConfigName = f4f5f0iter.AppImageConfigName + f4f5f1 := []*svcapitypes.CustomImage{} + for _, f4f5f1iter := range resp.DefaultUserSettings.JupyterLabAppSettings.CustomImages { + f4f5f1elem := &svcapitypes.CustomImage{} + if f4f5f1iter.AppImageConfigName != nil { + f4f5f1elem.AppImageConfigName = f4f5f1iter.AppImageConfigName } - if f4f5f0iter.ImageName != nil { - f4f5f0elem.ImageName = f4f5f0iter.ImageName + if f4f5f1iter.ImageName != nil { + f4f5f1elem.ImageName = f4f5f1iter.ImageName } - if f4f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy := int64(*f4f5f0iter.ImageVersionNumber) - f4f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + if f4f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy := int64(*f4f5f1iter.ImageVersionNumber) + f4f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f4f5f0 = append(f4f5f0, f4f5f0elem) + f4f5f1 = append(f4f5f1, f4f5f1elem) } - f4f5.CustomImages = f4f5f0 + f4f5.CustomImages = f4f5f1 } if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f4f5f1 := &svcapitypes.ResourceSpec{} + f4f5f2 := &svcapitypes.ResourceSpec{} if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != "" { - f4f5f1.InstanceType = aws.String(string(resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType)) + f4f5f2.InstanceType = aws.String(string(resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType)) } if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { - f4f5f1.LifecycleConfigARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn + f4f5f2.LifecycleConfigARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn } if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { - f4f5f1.SageMakerImageARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn + f4f5f2.SageMakerImageARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn } if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f4f5f1.SageMakerImageVersionAlias = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f4f5f2.SageMakerImageVersionAlias = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { - f4f5f1.SageMakerImageVersionARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + f4f5f2.SageMakerImageVersionARN = resp.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn } - f4f5.DefaultResourceSpec = f4f5f1 + f4f5.DefaultResourceSpec = f4f5f2 } if resp.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigArns != nil { f4f5.LifecycleConfigARNs = aws.StringSlice(resp.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigArns) @@ -218,24 +229,35 @@ func (rm *resourceManager) sdkFind( } if resp.DefaultUserSettings.JupyterServerAppSettings != nil { f4f6 := &svcapitypes.JupyterServerAppSettings{} + if resp.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f4f6f0 := []*svcapitypes.CodeRepository{} + for _, f4f6f0iter := range resp.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories { + f4f6f0elem := &svcapitypes.CodeRepository{} + if f4f6f0iter.RepositoryUrl != nil { + f4f6f0elem.RepositoryURL = f4f6f0iter.RepositoryUrl + } + f4f6f0 = append(f4f6f0, f4f6f0elem) + } + f4f6.CodeRepositories = f4f6f0 + } if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f4f6f0 := &svcapitypes.ResourceSpec{} + f4f6f1 := &svcapitypes.ResourceSpec{} if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != "" { - f4f6f0.InstanceType = aws.String(string(resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType)) + f4f6f1.InstanceType = aws.String(string(resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType)) } if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { - f4f6f0.LifecycleConfigARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn + f4f6f1.LifecycleConfigARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn } if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { - f4f6f0.SageMakerImageARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn + f4f6f1.SageMakerImageARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn } if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f4f6f0.SageMakerImageVersionAlias = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f4f6f1.SageMakerImageVersionAlias = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { - f4f6f0.SageMakerImageVersionARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + f4f6f1.SageMakerImageVersionARN = resp.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn } - f4f6.DefaultResourceSpec = f4f6f0 + f4f6.DefaultResourceSpec = f4f6f1 } if resp.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigArns != nil { f4f6.LifecycleConfigARNs = aws.StringSlice(resp.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigArns) @@ -622,46 +644,57 @@ func (rm *resourceManager) newCreateRequestPayload( } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings != nil { f3f5 := &svcsdktypes.JupyterLabAppSettings{} + if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f3f5f0 := []svcsdktypes.CodeRepository{} + for _, f3f5f0iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories { + f3f5f0elem := &svcsdktypes.CodeRepository{} + if f3f5f0iter.RepositoryURL != nil { + f3f5f0elem.RepositoryUrl = f3f5f0iter.RepositoryURL + } + f3f5f0 = append(f3f5f0, *f3f5f0elem) + } + f3f5.CodeRepositories = f3f5f0 + } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages != nil { - f3f5f0 := []svcsdktypes.CustomImage{} - for _, f3f5f0iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages { - f3f5f0elem := &svcsdktypes.CustomImage{} - if f3f5f0iter.AppImageConfigName != nil { - f3f5f0elem.AppImageConfigName = f3f5f0iter.AppImageConfigName + f3f5f1 := []svcsdktypes.CustomImage{} + for _, f3f5f1iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages { + f3f5f1elem := &svcsdktypes.CustomImage{} + if f3f5f1iter.AppImageConfigName != nil { + f3f5f1elem.AppImageConfigName = f3f5f1iter.AppImageConfigName } - if f3f5f0iter.ImageName != nil { - f3f5f0elem.ImageName = f3f5f0iter.ImageName + if f3f5f1iter.ImageName != nil { + f3f5f1elem.ImageName = f3f5f1iter.ImageName } - if f3f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy0 := *f3f5f0iter.ImageVersionNumber + if f3f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f3f5f1iter.ImageVersionNumber if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") } imageVersionNumberCopy := int32(imageVersionNumberCopy0) - f3f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + f3f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f3f5f0 = append(f3f5f0, *f3f5f0elem) + f3f5f1 = append(f3f5f1, *f3f5f1elem) } - f3f5.CustomImages = f3f5f0 + f3f5.CustomImages = f3f5f1 } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f3f5f1 := &svcsdktypes.ResourceSpec{} + f3f5f2 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { - f3f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + f3f5f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f3f5f1.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + f3f5f2.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f3f5f1.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + f3f5f2.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f3f5f1.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f3f5f2.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f3f5f1.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f3f5f2.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f3f5.DefaultResourceSpec = f3f5f1 + f3f5.DefaultResourceSpec = f3f5f2 } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigARNs != nil { f3f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigARNs) @@ -670,24 +703,35 @@ func (rm *resourceManager) newCreateRequestPayload( } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings != nil { f3f6 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f3f6f0 := []svcsdktypes.CodeRepository{} + for _, f3f6f0iter := range r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories { + f3f6f0elem := &svcsdktypes.CodeRepository{} + if f3f6f0iter.RepositoryURL != nil { + f3f6f0elem.RepositoryUrl = f3f6f0iter.RepositoryURL + } + f3f6f0 = append(f3f6f0, *f3f6f0elem) + } + f3f6.CodeRepositories = f3f6f0 + } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f3f6f0 := &svcsdktypes.ResourceSpec{} + f3f6f1 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { - f3f6f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + f3f6f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f3f6f0.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + f3f6f1.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f3f6f0.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + f3f6f1.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f3f6f0.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f3f6f1.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f3f6f0.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f3f6f1.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f3f6.DefaultResourceSpec = f3f6f0 + f3f6.DefaultResourceSpec = f3f6f1 } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { f3f6.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigARNs) @@ -1030,46 +1074,57 @@ func (rm *resourceManager) newUpdateRequestPayload( } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings != nil { f2f5 := &svcsdktypes.JupyterLabAppSettings{} + if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f2f5f0 := []svcsdktypes.CodeRepository{} + for _, f2f5f0iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CodeRepositories { + f2f5f0elem := &svcsdktypes.CodeRepository{} + if f2f5f0iter.RepositoryURL != nil { + f2f5f0elem.RepositoryUrl = f2f5f0iter.RepositoryURL + } + f2f5f0 = append(f2f5f0, *f2f5f0elem) + } + f2f5.CodeRepositories = f2f5f0 + } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages != nil { - f2f5f0 := []svcsdktypes.CustomImage{} - for _, f2f5f0iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages { - f2f5f0elem := &svcsdktypes.CustomImage{} - if f2f5f0iter.AppImageConfigName != nil { - f2f5f0elem.AppImageConfigName = f2f5f0iter.AppImageConfigName + f2f5f1 := []svcsdktypes.CustomImage{} + for _, f2f5f1iter := range r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.CustomImages { + f2f5f1elem := &svcsdktypes.CustomImage{} + if f2f5f1iter.AppImageConfigName != nil { + f2f5f1elem.AppImageConfigName = f2f5f1iter.AppImageConfigName } - if f2f5f0iter.ImageName != nil { - f2f5f0elem.ImageName = f2f5f0iter.ImageName + if f2f5f1iter.ImageName != nil { + f2f5f1elem.ImageName = f2f5f1iter.ImageName } - if f2f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy0 := *f2f5f0iter.ImageVersionNumber + if f2f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f2f5f1iter.ImageVersionNumber if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") } imageVersionNumberCopy := int32(imageVersionNumberCopy0) - f2f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + f2f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f2f5f0 = append(f2f5f0, *f2f5f0elem) + f2f5f1 = append(f2f5f1, *f2f5f1elem) } - f2f5.CustomImages = f2f5f0 + f2f5.CustomImages = f2f5f1 } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f2f5f1 := &svcsdktypes.ResourceSpec{} + f2f5f2 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { - f2f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + f2f5f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f2f5f1.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + f2f5f2.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f2f5f1.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + f2f5f2.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f2f5f1.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f2f5f2.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f2f5f1.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f2f5f2.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f2f5.DefaultResourceSpec = f2f5f1 + f2f5.DefaultResourceSpec = f2f5f2 } if r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigARNs != nil { f2f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.DefaultUserSettings.JupyterLabAppSettings.LifecycleConfigARNs) @@ -1078,24 +1133,35 @@ func (rm *resourceManager) newUpdateRequestPayload( } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings != nil { f2f6 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f2f6f0 := []svcsdktypes.CodeRepository{} + for _, f2f6f0iter := range r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.CodeRepositories { + f2f6f0elem := &svcsdktypes.CodeRepository{} + if f2f6f0iter.RepositoryURL != nil { + f2f6f0elem.RepositoryUrl = f2f6f0iter.RepositoryURL + } + f2f6f0 = append(f2f6f0, *f2f6f0elem) + } + f2f6.CodeRepositories = f2f6f0 + } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f2f6f0 := &svcsdktypes.ResourceSpec{} + f2f6f1 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { - f2f6f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + f2f6f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f2f6f0.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + f2f6f1.LifecycleConfigArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f2f6f0.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + f2f6f1.SageMakerImageArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f2f6f0.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f2f6f1.SageMakerImageVersionAlias = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f2f6f0.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f2f6f1.SageMakerImageVersionArn = r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f2f6.DefaultResourceSpec = f2f6f0 + f2f6.DefaultResourceSpec = f2f6f1 } if r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { f2f6.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.DefaultUserSettings.JupyterServerAppSettings.LifecycleConfigARNs) diff --git a/pkg/resource/space/delta.go b/pkg/resource/space/delta.go new file mode 100644 index 00000000..f28408b2 --- /dev/null +++ b/pkg/resource/space/delta.go @@ -0,0 +1,366 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "bytes" + "reflect" + + ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare" + acktags "github.com/aws-controllers-k8s/runtime/pkg/tags" +) + +// Hack to avoid import errors during build... +var ( + _ = &bytes.Buffer{} + _ = &reflect.Method{} + _ = &acktags.Tags{} +) + +// newResourceDelta returns a new `ackcompare.Delta` used to compare two +// resources +func newResourceDelta( + a *resource, + b *resource, +) *ackcompare.Delta { + delta := ackcompare.NewDelta() + if (a == nil && b != nil) || + (a != nil && b == nil) { + delta.Add("", a, b) + return delta + } + + if ackcompare.HasNilDifference(a.ko.Spec.DomainID, b.ko.Spec.DomainID) { + delta.Add("Spec.DomainID", a.ko.Spec.DomainID, b.ko.Spec.DomainID) + } else if a.ko.Spec.DomainID != nil && b.ko.Spec.DomainID != nil { + if *a.ko.Spec.DomainID != *b.ko.Spec.DomainID { + delta.Add("Spec.DomainID", a.ko.Spec.DomainID, b.ko.Spec.DomainID) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.OwnershipSettings, b.ko.Spec.OwnershipSettings) { + delta.Add("Spec.OwnershipSettings", a.ko.Spec.OwnershipSettings, b.ko.Spec.OwnershipSettings) + } else if a.ko.Spec.OwnershipSettings != nil && b.ko.Spec.OwnershipSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.OwnershipSettings.OwnerUserProfileName, b.ko.Spec.OwnershipSettings.OwnerUserProfileName) { + delta.Add("Spec.OwnershipSettings.OwnerUserProfileName", a.ko.Spec.OwnershipSettings.OwnerUserProfileName, b.ko.Spec.OwnershipSettings.OwnerUserProfileName) + } else if a.ko.Spec.OwnershipSettings.OwnerUserProfileName != nil && b.ko.Spec.OwnershipSettings.OwnerUserProfileName != nil { + if *a.ko.Spec.OwnershipSettings.OwnerUserProfileName != *b.ko.Spec.OwnershipSettings.OwnerUserProfileName { + delta.Add("Spec.OwnershipSettings.OwnerUserProfileName", a.ko.Spec.OwnershipSettings.OwnerUserProfileName, b.ko.Spec.OwnershipSettings.OwnerUserProfileName) + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceDisplayName, b.ko.Spec.SpaceDisplayName) { + delta.Add("Spec.SpaceDisplayName", a.ko.Spec.SpaceDisplayName, b.ko.Spec.SpaceDisplayName) + } else if a.ko.Spec.SpaceDisplayName != nil && b.ko.Spec.SpaceDisplayName != nil { + if *a.ko.Spec.SpaceDisplayName != *b.ko.Spec.SpaceDisplayName { + delta.Add("Spec.SpaceDisplayName", a.ko.Spec.SpaceDisplayName, b.ko.Spec.SpaceDisplayName) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) { + delta.Add("Spec.SpaceName", a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) + } else if a.ko.Spec.SpaceName != nil && b.ko.Spec.SpaceName != nil { + if *a.ko.Spec.SpaceName != *b.ko.Spec.SpaceName { + delta.Add("Spec.SpaceName", a.ko.Spec.SpaceName, b.ko.Spec.SpaceName) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings, b.ko.Spec.SpaceSettings) { + delta.Add("Spec.SpaceSettings", a.ko.Spec.SpaceSettings, b.ko.Spec.SpaceSettings) + } else if a.ko.Spec.SpaceSettings != nil && b.ko.Spec.SpaceSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.AppType, b.ko.Spec.SpaceSettings.AppType) { + delta.Add("Spec.SpaceSettings.AppType", a.ko.Spec.SpaceSettings.AppType, b.ko.Spec.SpaceSettings.AppType) + } else if a.ko.Spec.SpaceSettings.AppType != nil && b.ko.Spec.SpaceSettings.AppType != nil { + if *a.ko.Spec.SpaceSettings.AppType != *b.ko.Spec.SpaceSettings.AppType { + delta.Add("Spec.SpaceSettings.AppType", a.ko.Spec.SpaceSettings.AppType, b.ko.Spec.SpaceSettings.AppType) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings, b.ko.Spec.SpaceSettings.CodeEditorAppSettings) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings", a.ko.Spec.SpaceSettings.CodeEditorAppSettings, b.ko.Spec.SpaceSettings.CodeEditorAppSettings) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + } + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } else if a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil && b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + if *a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != *b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN { + delta.Add("Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } + } + } + } + if len(a.ko.Spec.SpaceSettings.CustomFileSystems) != len(b.ko.Spec.SpaceSettings.CustomFileSystems) { + delta.Add("Spec.SpaceSettings.CustomFileSystems", a.ko.Spec.SpaceSettings.CustomFileSystems, b.ko.Spec.SpaceSettings.CustomFileSystems) + } else if len(a.ko.Spec.SpaceSettings.CustomFileSystems) > 0 { + if !reflect.DeepEqual(a.ko.Spec.SpaceSettings.CustomFileSystems, b.ko.Spec.SpaceSettings.CustomFileSystems) { + delta.Add("Spec.SpaceSettings.CustomFileSystems", a.ko.Spec.SpaceSettings.CustomFileSystems, b.ko.Spec.SpaceSettings.CustomFileSystems) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings, b.ko.Spec.SpaceSettings.JupyterLabAppSettings) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings", a.ko.Spec.SpaceSettings.JupyterLabAppSettings, b.ko.Spec.SpaceSettings.JupyterLabAppSettings) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + } + } + } + } + if len(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) != len(b.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) + } else if len(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } else if a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil && b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != *b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN { + delta.Add("Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings, b.ko.Spec.SpaceSettings.JupyterServerAppSettings) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings", a.ko.Spec.SpaceSettings.JupyterServerAppSettings, b.ko.Spec.SpaceSettings.JupyterServerAppSettings) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings != nil { + if len(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) != len(b.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) + } else if len(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { + if *a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != *b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != *b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != *b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + if *a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != *b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } else if a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil && b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + if *a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != *b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } + } + } + if len(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) != len(b.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) + } else if len(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) > 0 { + if !ackcompare.SliceStringPEqual(a.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) { + delta.Add("Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs", a.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings != nil { + if len(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) != len(b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) + } else if len(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) > 0 { + if !reflect.DeepEqual(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != nil { + if *a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != *b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + if *a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN != *b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + if *a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN != *b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + if *a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != *b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } else if a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil && b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + if *a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != *b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN) + } + } + } + if len(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) != len(b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) + } else if len(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) > 0 { + if !ackcompare.SliceStringPEqual(a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) { + delta.Add("Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs", a.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs, b.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.SpaceStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings) { + delta.Add("Spec.SpaceSettings.SpaceStorageSettings", a.ko.Spec.SpaceSettings.SpaceStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings) + } else if a.ko.Spec.SpaceSettings.SpaceStorageSettings != nil && b.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings) { + delta.Add("Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings", a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings) + } else if a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil && b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb, b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb) { + delta.Add("Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb", a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb, b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb) + } else if a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil && b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil { + if *a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != *b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb { + delta.Add("Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb", a.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb, b.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb) + } + } + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSharingSettings, b.ko.Spec.SpaceSharingSettings) { + delta.Add("Spec.SpaceSharingSettings", a.ko.Spec.SpaceSharingSettings, b.ko.Spec.SpaceSharingSettings) + } else if a.ko.Spec.SpaceSharingSettings != nil && b.ko.Spec.SpaceSharingSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSharingSettings.SharingType, b.ko.Spec.SpaceSharingSettings.SharingType) { + delta.Add("Spec.SpaceSharingSettings.SharingType", a.ko.Spec.SpaceSharingSettings.SharingType, b.ko.Spec.SpaceSharingSettings.SharingType) + } else if a.ko.Spec.SpaceSharingSettings.SharingType != nil && b.ko.Spec.SpaceSharingSettings.SharingType != nil { + if *a.ko.Spec.SpaceSharingSettings.SharingType != *b.ko.Spec.SpaceSharingSettings.SharingType { + delta.Add("Spec.SpaceSharingSettings.SharingType", a.ko.Spec.SpaceSharingSettings.SharingType, b.ko.Spec.SpaceSharingSettings.SharingType) + } + } + } + desiredACKTags, _ := convertToOrderedACKTags(a.ko.Spec.Tags) + latestACKTags, _ := convertToOrderedACKTags(b.ko.Spec.Tags) + if !ackcompare.MapStringStringEqual(desiredACKTags, latestACKTags) { + delta.Add("Spec.Tags", a.ko.Spec.Tags, b.ko.Spec.Tags) + } + + return delta +} diff --git a/pkg/resource/space/descriptor.go b/pkg/resource/space/descriptor.go new file mode 100644 index 00000000..bfa64305 --- /dev/null +++ b/pkg/resource/space/descriptor.go @@ -0,0 +1,155 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare" + acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime/schema" + rtclient "sigs.k8s.io/controller-runtime/pkg/client" + k8sctrlutil "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +const ( + FinalizerString = "finalizers.sagemaker.services.k8s.aws/Space" +) + +var ( + GroupVersionResource = svcapitypes.GroupVersion.WithResource("spaces") + GroupKind = metav1.GroupKind{ + Group: "sagemaker.services.k8s.aws", + Kind: "Space", + } +) + +// resourceDescriptor implements the +// `aws-service-operator-k8s/pkg/types.AWSResourceDescriptor` interface +type resourceDescriptor struct { +} + +// GroupVersionKind returns a Kubernetes schema.GroupVersionKind struct that +// describes the API Group, Version and Kind of CRs described by the descriptor +func (d *resourceDescriptor) GroupVersionKind() schema.GroupVersionKind { + return svcapitypes.GroupVersion.WithKind(GroupKind.Kind) +} + +// EmptyRuntimeObject returns an empty object prototype that may be used in +// apimachinery and k8s client operations +func (d *resourceDescriptor) EmptyRuntimeObject() rtclient.Object { + return &svcapitypes.Space{} +} + +// ResourceFromRuntimeObject returns an AWSResource that has been initialized +// with the supplied runtime.Object +func (d *resourceDescriptor) ResourceFromRuntimeObject( + obj rtclient.Object, +) acktypes.AWSResource { + return &resource{ + ko: obj.(*svcapitypes.Space), + } +} + +// Delta returns an `ackcompare.Delta` object containing the difference between +// one `AWSResource` and another. +func (d *resourceDescriptor) Delta(a, b acktypes.AWSResource) *ackcompare.Delta { + return newResourceDelta(a.(*resource), b.(*resource)) +} + +// IsManaged returns true if the supplied AWSResource is under the management +// of an ACK service controller. What this means in practice is that the +// underlying custom resource (CR) in the AWSResource has had a +// resource-specific finalizer associated with it. +func (d *resourceDescriptor) IsManaged( + res acktypes.AWSResource, +) bool { + obj := res.RuntimeObject() + if obj == nil { + // Should not happen. If it does, there is a bug in the code + panic("nil RuntimeMetaObject in AWSResource") + } + // Remove use of custom code once + // https://github.com/kubernetes-sigs/controller-runtime/issues/994 is + // fixed. This should be able to be: + // + // return k8sctrlutil.ContainsFinalizer(obj, FinalizerString) + return containsFinalizer(obj, FinalizerString) +} + +// Remove once https://github.com/kubernetes-sigs/controller-runtime/issues/994 +// is fixed. +func containsFinalizer(obj rtclient.Object, finalizer string) bool { + f := obj.GetFinalizers() + for _, e := range f { + if e == finalizer { + return true + } + } + return false +} + +// MarkManaged places the supplied resource under the management of ACK. What +// this typically means is that the resource manager will decorate the +// underlying custom resource (CR) with a finalizer that indicates ACK is +// managing the resource and the underlying CR may not be deleted until ACK is +// finished cleaning up any backend AWS service resources associated with the +// CR. +func (d *resourceDescriptor) MarkManaged( + res acktypes.AWSResource, +) { + obj := res.RuntimeObject() + if obj == nil { + // Should not happen. If it does, there is a bug in the code + panic("nil RuntimeMetaObject in AWSResource") + } + k8sctrlutil.AddFinalizer(obj, FinalizerString) +} + +// MarkUnmanaged removes the supplied resource from management by ACK. What +// this typically means is that the resource manager will remove a finalizer +// underlying custom resource (CR) that indicates ACK is managing the resource. +// This will allow the Kubernetes API server to delete the underlying CR. +func (d *resourceDescriptor) MarkUnmanaged( + res acktypes.AWSResource, +) { + obj := res.RuntimeObject() + if obj == nil { + // Should not happen. If it does, there is a bug in the code + panic("nil RuntimeMetaObject in AWSResource") + } + k8sctrlutil.RemoveFinalizer(obj, FinalizerString) +} + +// MarkAdopted places descriptors on the custom resource that indicate the +// resource was not created from within ACK. +func (d *resourceDescriptor) MarkAdopted( + res acktypes.AWSResource, +) { + obj := res.RuntimeObject() + if obj == nil { + // Should not happen. If it does, there is a bug in the code + panic("nil RuntimeObject in AWSResource") + } + curr := obj.GetAnnotations() + if curr == nil { + curr = make(map[string]string) + } + curr[ackv1alpha1.AnnotationAdopted] = "true" + obj.SetAnnotations(curr) +} diff --git a/pkg/resource/space/identifiers.go b/pkg/resource/space/identifiers.go new file mode 100644 index 00000000..e6178c57 --- /dev/null +++ b/pkg/resource/space/identifiers.go @@ -0,0 +1,55 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" +) + +// resourceIdentifiers implements the +// `aws-service-operator-k8s/pkg/types.AWSResourceIdentifiers` interface +type resourceIdentifiers struct { + meta *ackv1alpha1.ResourceMetadata +} + +// ARN returns the AWS Resource Name for the backend AWS resource. If nil, +// this means the resource has not yet been created in the backend AWS +// service. +func (ri *resourceIdentifiers) ARN() *ackv1alpha1.AWSResourceName { + if ri.meta != nil { + return ri.meta.ARN + } + return nil +} + +// OwnerAccountID returns the AWS account identifier in which the +// backend AWS resource resides, or nil if this information is not known +// for the resource +func (ri *resourceIdentifiers) OwnerAccountID() *ackv1alpha1.AWSAccountID { + if ri.meta != nil { + return ri.meta.OwnerAccountID + } + return nil +} + +// Region returns the AWS region in which the resource exists, or +// nil if this information is not known. +func (ri *resourceIdentifiers) Region() *ackv1alpha1.AWSRegion { + if ri.meta != nil { + return ri.meta.Region + } + return nil +} diff --git a/pkg/resource/space/manager.go b/pkg/resource/space/manager.go new file mode 100644 index 00000000..66cc1b29 --- /dev/null +++ b/pkg/resource/space/manager.go @@ -0,0 +1,404 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "context" + "fmt" + "time" + + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" + ackcfg "github.com/aws-controllers-k8s/runtime/pkg/config" + ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" + ackmetrics "github.com/aws-controllers-k8s/runtime/pkg/metrics" + ackrequeue "github.com/aws-controllers-k8s/runtime/pkg/requeue" + ackrt "github.com/aws-controllers-k8s/runtime/pkg/runtime" + ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log" + acktags "github.com/aws-controllers-k8s/runtime/pkg/tags" + acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" + ackutil "github.com/aws-controllers-k8s/runtime/pkg/util" + "github.com/aws/aws-sdk-go-v2/aws" + svcsdk "github.com/aws/aws-sdk-go-v2/service/sagemaker" + "github.com/go-logr/logr" + corev1 "k8s.io/api/core/v1" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +var ( + _ = ackutil.InStrings + _ = acktags.NewTags() + _ = ackrt.MissingImageTagValue + _ = svcapitypes.Space{} +) + +// +kubebuilder:rbac:groups=sagemaker.services.k8s.aws,resources=spaces,verbs=get;list;watch;create;update;patch;delete +// +kubebuilder:rbac:groups=sagemaker.services.k8s.aws,resources=spaces/status,verbs=get;update;patch + +var lateInitializeFieldNames = []string{} + +// resourceManager is responsible for providing a consistent way to perform +// CRUD operations in a backend AWS service API for Book custom resources. +type resourceManager struct { + // cfg is a copy of the ackcfg.Config object passed on start of the service + // controller + cfg ackcfg.Config + // clientcfg is a copy of the client configuration passed on start of the + // service controller + clientcfg aws.Config + // log refers to the logr.Logger object handling logging for the service + // controller + log logr.Logger + // metrics contains a collection of Prometheus metric objects that the + // service controller and its reconcilers track + metrics *ackmetrics.Metrics + // rr is the Reconciler which can be used for various utility + // functions such as querying for Secret values given a SecretReference + rr acktypes.Reconciler + // awsAccountID is the AWS account identifier that contains the resources + // managed by this resource manager + awsAccountID ackv1alpha1.AWSAccountID + // The AWS Region that this resource manager targets + awsRegion ackv1alpha1.AWSRegion + // sdk is a pointer to the AWS service API client exposed by the + // aws-sdk-go-v2/services/{alias} package. + sdkapi *svcsdk.Client +} + +// concreteResource returns a pointer to a resource from the supplied +// generic AWSResource interface +func (rm *resourceManager) concreteResource( + res acktypes.AWSResource, +) *resource { + // cast the generic interface into a pointer type specific to the concrete + // implementing resource type managed by this resource manager + return res.(*resource) +} + +// ReadOne returns the currently-observed state of the supplied AWSResource in +// the backend AWS service API. +func (rm *resourceManager) ReadOne( + ctx context.Context, + res acktypes.AWSResource, +) (acktypes.AWSResource, error) { + r := rm.concreteResource(res) + if r.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's ReadOne() method received resource with nil CR object") + } + observed, err := rm.sdkFind(ctx, r) + mirrorAWSTags(r, observed) + if err != nil { + if observed != nil { + return rm.onError(observed, err) + } + return rm.onError(r, err) + } + return rm.onSuccess(observed) +} + +// Create attempts to create the supplied AWSResource in the backend AWS +// service API, returning an AWSResource representing the newly-created +// resource +func (rm *resourceManager) Create( + ctx context.Context, + res acktypes.AWSResource, +) (acktypes.AWSResource, error) { + r := rm.concreteResource(res) + if r.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's Create() method received resource with nil CR object") + } + created, err := rm.sdkCreate(ctx, r) + if err != nil { + if created != nil { + return rm.onError(created, err) + } + return rm.onError(r, err) + } + return rm.onSuccess(created) +} + +// Update attempts to mutate the supplied desired AWSResource in the backend AWS +// service API, returning an AWSResource representing the newly-mutated +// resource. +// Note for specialized logic implementers can check to see how the latest +// observed resource differs from the supplied desired state. The +// higher-level reonciler determines whether or not the desired differs +// from the latest observed and decides whether to call the resource +// manager's Update method +func (rm *resourceManager) Update( + ctx context.Context, + resDesired acktypes.AWSResource, + resLatest acktypes.AWSResource, + delta *ackcompare.Delta, +) (acktypes.AWSResource, error) { + desired := rm.concreteResource(resDesired) + latest := rm.concreteResource(resLatest) + if desired.ko == nil || latest.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's Update() method received resource with nil CR object") + } + updated, err := rm.sdkUpdate(ctx, desired, latest, delta) + if err != nil { + if updated != nil { + return rm.onError(updated, err) + } + return rm.onError(latest, err) + } + return rm.onSuccess(updated) +} + +// Delete attempts to destroy the supplied AWSResource in the backend AWS +// service API, returning an AWSResource representing the +// resource being deleted (if delete is asynchronous and takes time) +func (rm *resourceManager) Delete( + ctx context.Context, + res acktypes.AWSResource, +) (acktypes.AWSResource, error) { + r := rm.concreteResource(res) + if r.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's Update() method received resource with nil CR object") + } + observed, err := rm.sdkDelete(ctx, r) + if err != nil { + if observed != nil { + return rm.onError(observed, err) + } + return rm.onError(r, err) + } + + return rm.onSuccess(observed) +} + +// ARNFromName returns an AWS Resource Name from a given string name. This +// is useful for constructing ARNs for APIs that require ARNs in their +// GetAttributes operations but all we have (for new CRs at least) is a +// name for the resource +func (rm *resourceManager) ARNFromName(name string) string { + return fmt.Sprintf( + "arn:aws:sagemaker:%s:%s:%s", + rm.awsRegion, + rm.awsAccountID, + name, + ) +} + +// LateInitialize returns an acktypes.AWSResource after setting the late initialized +// fields from the readOne call. This method will initialize the optional fields +// which were not provided by the k8s user but were defaulted by the AWS service. +// If there are no such fields to be initialized, the returned object is similar to +// object passed in the parameter. +func (rm *resourceManager) LateInitialize( + ctx context.Context, + latest acktypes.AWSResource, +) (acktypes.AWSResource, error) { + rlog := ackrtlog.FromContext(ctx) + // If there are no fields to late initialize, do nothing + if len(lateInitializeFieldNames) == 0 { + rlog.Debug("no late initialization required.") + return latest, nil + } + latestCopy := latest.DeepCopy() + lateInitConditionReason := "" + lateInitConditionMessage := "" + observed, err := rm.ReadOne(ctx, latestCopy) + if err != nil { + lateInitConditionMessage = "Unable to complete Read operation required for late initialization" + lateInitConditionReason = "Late Initialization Failure" + ackcondition.SetLateInitialized(latestCopy, corev1.ConditionFalse, &lateInitConditionMessage, &lateInitConditionReason) + ackcondition.SetSynced(latestCopy, corev1.ConditionFalse, nil, nil) + return latestCopy, err + } + lateInitializedRes := rm.lateInitializeFromReadOneOutput(observed, latestCopy) + incompleteInitialization := rm.incompleteLateInitialization(lateInitializedRes) + if incompleteInitialization { + // Add the condition with LateInitialized=False + lateInitConditionMessage = "Late initialization did not complete, requeuing with delay of 5 seconds" + lateInitConditionReason = "Delayed Late Initialization" + ackcondition.SetLateInitialized(lateInitializedRes, corev1.ConditionFalse, &lateInitConditionMessage, &lateInitConditionReason) + ackcondition.SetSynced(lateInitializedRes, corev1.ConditionFalse, nil, nil) + return lateInitializedRes, ackrequeue.NeededAfter(nil, time.Duration(5)*time.Second) + } + // Set LateInitialized condition to True + lateInitConditionMessage = "Late initialization successful" + lateInitConditionReason = "Late initialization successful" + ackcondition.SetLateInitialized(lateInitializedRes, corev1.ConditionTrue, &lateInitConditionMessage, &lateInitConditionReason) + return lateInitializedRes, nil +} + +// incompleteLateInitialization return true if there are fields which were supposed to be +// late initialized but are not. If all the fields are late initialized, false is returned +func (rm *resourceManager) incompleteLateInitialization( + res acktypes.AWSResource, +) bool { + return false +} + +// lateInitializeFromReadOneOutput late initializes the 'latest' resource from the 'observed' +// resource and returns 'latest' resource +func (rm *resourceManager) lateInitializeFromReadOneOutput( + observed acktypes.AWSResource, + latest acktypes.AWSResource, +) acktypes.AWSResource { + return latest +} + +// IsSynced returns true if the resource is synced. +func (rm *resourceManager) IsSynced(ctx context.Context, res acktypes.AWSResource) (bool, error) { + r := rm.concreteResource(res) + if r.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's IsSynced() method received resource with nil CR object") + } + + return true, nil +} + +// EnsureTags ensures that tags are present inside the AWSResource. +// If the AWSResource does not have any existing resource tags, the 'tags' +// field is initialized and the controller tags are added. +// If the AWSResource has existing resource tags, then controller tags are +// added to the existing resource tags without overriding them. +// If the AWSResource does not support tags, only then the controller tags +// will not be added to the AWSResource. +func (rm *resourceManager) EnsureTags( + ctx context.Context, + res acktypes.AWSResource, + md acktypes.ServiceControllerMetadata, +) error { + r := rm.concreteResource(res) + if r.ko == nil { + // Should never happen... if it does, it's buggy code. + panic("resource manager's EnsureTags method received resource with nil CR object") + } + defaultTags := ackrt.GetDefaultTags(&rm.cfg, r.ko, md) + var existingTags []*svcapitypes.Tag + existingTags = r.ko.Spec.Tags + resourceTags, keyOrder := convertToOrderedACKTags(existingTags) + tags := acktags.Merge(resourceTags, defaultTags) + r.ko.Spec.Tags = fromACKTags(tags, keyOrder) + return nil +} + +// FilterAWSTags ignores tags that have keys that start with "aws:" +// is needed to ensure the controller does not attempt to remove +// tags set by AWS. This function needs to be called after each Read +// operation. +// Eg. resources created with cloudformation have tags that cannot be +// removed by an ACK controller +func (rm *resourceManager) FilterSystemTags(res acktypes.AWSResource) { + r := rm.concreteResource(res) + if r == nil || r.ko == nil { + return + } + var existingTags []*svcapitypes.Tag + existingTags = r.ko.Spec.Tags + resourceTags, tagKeyOrder := convertToOrderedACKTags(existingTags) + ignoreSystemTags(resourceTags) + r.ko.Spec.Tags = fromACKTags(resourceTags, tagKeyOrder) +} + +// mirrorAWSTags ensures that AWS tags are included in the desired resource +// if they are present in the latest resource. This will ensure that the +// aws tags are not present in a diff. The logic of the controller will +// ensure these tags aren't patched to the resource in the cluster, and +// will only be present to make sure we don't try to remove these tags. +// +// Although there are a lot of similarities between this function and +// EnsureTags, they are very much different. +// While EnsureTags tries to make sure the resource contains the controller +// tags, mirrowAWSTags tries to make sure tags injected by AWS are mirrored +// from the latest resoruce to the desired resource. +func mirrorAWSTags(a *resource, b *resource) { + if a == nil || a.ko == nil || b == nil || b.ko == nil { + return + } + var existingLatestTags []*svcapitypes.Tag + var existingDesiredTags []*svcapitypes.Tag + existingDesiredTags = a.ko.Spec.Tags + existingLatestTags = b.ko.Spec.Tags + desiredTags, desiredTagKeyOrder := convertToOrderedACKTags(existingDesiredTags) + latestTags, _ := convertToOrderedACKTags(existingLatestTags) + syncAWSTags(desiredTags, latestTags) + a.ko.Spec.Tags = fromACKTags(desiredTags, desiredTagKeyOrder) +} + +// newResourceManager returns a new struct implementing +// acktypes.AWSResourceManager +// This is for AWS-SDK-GO-V2 - Created newResourceManager With AWS sdk-Go-ClientV2 +func newResourceManager( + cfg ackcfg.Config, + clientcfg aws.Config, + log logr.Logger, + metrics *ackmetrics.Metrics, + rr acktypes.Reconciler, + id ackv1alpha1.AWSAccountID, + region ackv1alpha1.AWSRegion, +) (*resourceManager, error) { + return &resourceManager{ + cfg: cfg, + clientcfg: clientcfg, + log: log, + metrics: metrics, + rr: rr, + awsAccountID: id, + awsRegion: region, + sdkapi: svcsdk.NewFromConfig(clientcfg), + }, nil +} + +// onError updates resource conditions and returns updated resource +// it returns nil if no condition is updated. +func (rm *resourceManager) onError( + r *resource, + err error, +) (acktypes.AWSResource, error) { + if r == nil { + return nil, err + } + r1, updated := rm.updateConditions(r, false, err) + if !updated { + return r, err + } + for _, condition := range r1.Conditions() { + if condition.Type == ackv1alpha1.ConditionTypeTerminal && + condition.Status == corev1.ConditionTrue { + // resource is in Terminal condition + // return Terminal error + return r1, ackerr.Terminal + } + } + return r1, err +} + +// onSuccess updates resource conditions and returns updated resource +// it returns the supplied resource if no condition is updated. +func (rm *resourceManager) onSuccess( + r *resource, +) (acktypes.AWSResource, error) { + if r == nil { + return nil, nil + } + r1, updated := rm.updateConditions(r, true, nil) + if !updated { + return r, nil + } + return r1, nil +} diff --git a/pkg/resource/space/manager_factory.go b/pkg/resource/space/manager_factory.go new file mode 100644 index 00000000..da0996a9 --- /dev/null +++ b/pkg/resource/space/manager_factory.go @@ -0,0 +1,100 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "fmt" + "sync" + + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcfg "github.com/aws-controllers-k8s/runtime/pkg/config" + ackmetrics "github.com/aws-controllers-k8s/runtime/pkg/metrics" + acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/go-logr/logr" + + svcresource "github.com/aws-controllers-k8s/sagemaker-controller/pkg/resource" +) + +// resourceManagerFactory produces resourceManager objects. It implements the +// `types.AWSResourceManagerFactory` interface. +type resourceManagerFactory struct { + sync.RWMutex + // rmCache contains resource managers for a particular AWS account ID + rmCache map[string]*resourceManager +} + +// ResourcePrototype returns an AWSResource that resource managers produced by +// this factory will handle +func (f *resourceManagerFactory) ResourceDescriptor() acktypes.AWSResourceDescriptor { + return &resourceDescriptor{} +} + +// ManagerFor returns a resource manager object that can manage resources for a +// supplied AWS account +func (f *resourceManagerFactory) ManagerFor( + cfg ackcfg.Config, + clientcfg aws.Config, + log logr.Logger, + metrics *ackmetrics.Metrics, + rr acktypes.Reconciler, + id ackv1alpha1.AWSAccountID, + region ackv1alpha1.AWSRegion, + roleARN ackv1alpha1.AWSResourceName, +) (acktypes.AWSResourceManager, error) { + // We use the account ID, region, and role ARN to uniquely identify a + // resource manager. This helps us to avoid creating multiple resource + // managers for the same account/region/roleARN combination. + rmId := fmt.Sprintf("%s/%s/%s", id, region, roleARN) + f.RLock() + rm, found := f.rmCache[rmId] + f.RUnlock() + + if found { + return rm, nil + } + + f.Lock() + defer f.Unlock() + + rm, err := newResourceManager(cfg, clientcfg, log, metrics, rr, id, region) + if err != nil { + return nil, err + } + f.rmCache[rmId] = rm + return rm, nil +} + +// IsAdoptable returns true if the resource is able to be adopted +func (f *resourceManagerFactory) IsAdoptable() bool { + return true +} + +// RequeueOnSuccessSeconds returns true if the resource should be requeued after specified seconds +// Default is false which means resource will not be requeued after success. +func (f *resourceManagerFactory) RequeueOnSuccessSeconds() int { + return 0 +} + +func newResourceManagerFactory() *resourceManagerFactory { + return &resourceManagerFactory{ + rmCache: map[string]*resourceManager{}, + } +} + +func init() { + svcresource.RegisterManagerFactory(newResourceManagerFactory()) +} diff --git a/pkg/resource/space/references.go b/pkg/resource/space/references.go new file mode 100644 index 00000000..630814e2 --- /dev/null +++ b/pkg/resource/space/references.go @@ -0,0 +1,57 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "context" + + "sigs.k8s.io/controller-runtime/pkg/client" + + acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +// ClearResolvedReferences removes any reference values that were made +// concrete in the spec. It returns a copy of the input AWSResource which +// contains the original *Ref values, but none of their respective concrete +// values. +func (rm *resourceManager) ClearResolvedReferences(res acktypes.AWSResource) acktypes.AWSResource { + ko := rm.concreteResource(res).ko.DeepCopy() + + return &resource{ko} +} + +// ResolveReferences finds if there are any Reference field(s) present +// inside AWSResource passed in the parameter and attempts to resolve those +// reference field(s) into their respective target field(s). It returns a +// copy of the input AWSResource with resolved reference(s), a boolean which +// is set to true if the resource contains any references (regardless of if +// they are resolved successfully) and an error if the passed AWSResource's +// reference field(s) could not be resolved. +func (rm *resourceManager) ResolveReferences( + ctx context.Context, + apiReader client.Reader, + res acktypes.AWSResource, +) (acktypes.AWSResource, bool, error) { + return res, false, nil +} + +// validateReferenceFields validates the reference field and corresponding +// identifier field. +func validateReferenceFields(ko *svcapitypes.Space) error { + return nil +} diff --git a/pkg/resource/space/resource.go b/pkg/resource/space/resource.go new file mode 100644 index 00000000..52a3013f --- /dev/null +++ b/pkg/resource/space/resource.go @@ -0,0 +1,124 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "fmt" + + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackerrors "github.com/aws-controllers-k8s/runtime/pkg/errors" + acktypes "github.com/aws-controllers-k8s/runtime/pkg/types" + "github.com/aws/aws-sdk-go-v2/aws" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + rtclient "sigs.k8s.io/controller-runtime/pkg/client" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +// Hack to avoid import errors during build... +var ( + _ = &ackerrors.MissingNameIdentifier +) + +// resource implements the `aws-controller-k8s/runtime/pkg/types.AWSResource` +// interface +type resource struct { + // The Kubernetes-native CR representing the resource + ko *svcapitypes.Space +} + +// Identifiers returns an AWSResourceIdentifiers object containing various +// identifying information, including the AWS account ID that owns the +// resource, the resource's AWS Resource Name (ARN) +func (r *resource) Identifiers() acktypes.AWSResourceIdentifiers { + return &resourceIdentifiers{r.ko.Status.ACKResourceMetadata} +} + +// IsBeingDeleted returns true if the Kubernetes resource has a non-zero +// deletion timestamp +func (r *resource) IsBeingDeleted() bool { + return !r.ko.DeletionTimestamp.IsZero() +} + +// RuntimeObject returns the Kubernetes apimachinery/runtime representation of +// the AWSResource +func (r *resource) RuntimeObject() rtclient.Object { + return r.ko +} + +// MetaObject returns the Kubernetes apimachinery/apis/meta/v1.Object +// representation of the AWSResource +func (r *resource) MetaObject() metav1.Object { + return r.ko.GetObjectMeta() +} + +// Conditions returns the ACK Conditions collection for the AWSResource +func (r *resource) Conditions() []*ackv1alpha1.Condition { + return r.ko.Status.Conditions +} + +// ReplaceConditions sets the Conditions status field for the resource +func (r *resource) ReplaceConditions(conditions []*ackv1alpha1.Condition) { + r.ko.Status.Conditions = conditions +} + +// SetObjectMeta sets the ObjectMeta field for the resource +func (r *resource) SetObjectMeta(meta metav1.ObjectMeta) { + r.ko.ObjectMeta = meta +} + +// SetStatus will set the Status field for the resource +func (r *resource) SetStatus(desired acktypes.AWSResource) { + r.ko.Status = desired.(*resource).ko.Status +} + +// SetIdentifiers sets the Spec or Status field that is referenced as the unique +// resource identifier +func (r *resource) SetIdentifiers(identifier *ackv1alpha1.AWSIdentifiers) error { + if identifier.NameOrID == "" { + return ackerrors.MissingNameIdentifier + } + r.ko.Spec.SpaceName = &identifier.NameOrID + + f0, f0ok := identifier.AdditionalKeys["domainID"] + if f0ok { + r.ko.Spec.DomainID = aws.String(f0) + } + + return nil +} + +// PopulateResourceFromAnnotation populates the fields passed from adoption annotation +func (r *resource) PopulateResourceFromAnnotation(fields map[string]string) error { + f0, ok := fields["domainID"] + if !ok { + return ackerrors.NewTerminalError(fmt.Errorf("required field missing: domainID")) + } + r.ko.Spec.DomainID = &f0 + f1, ok := fields["spaceName"] + if !ok { + return ackerrors.NewTerminalError(fmt.Errorf("required field missing: spaceName")) + } + r.ko.Spec.SpaceName = &f1 + + return nil +} + +// DeepCopy will return a copy of the resource +func (r *resource) DeepCopy() acktypes.AWSResource { + koCopy := r.ko.DeepCopy() + return &resource{koCopy} +} diff --git a/pkg/resource/space/sdk.go b/pkg/resource/space/sdk.go new file mode 100644 index 00000000..19226c22 --- /dev/null +++ b/pkg/resource/space/sdk.go @@ -0,0 +1,1093 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "context" + "errors" + "fmt" + "math" + "reflect" + "strings" + + ackv1alpha1 "github.com/aws-controllers-k8s/runtime/apis/core/v1alpha1" + ackcompare "github.com/aws-controllers-k8s/runtime/pkg/compare" + ackcondition "github.com/aws-controllers-k8s/runtime/pkg/condition" + ackerr "github.com/aws-controllers-k8s/runtime/pkg/errors" + ackrequeue "github.com/aws-controllers-k8s/runtime/pkg/requeue" + ackrtlog "github.com/aws-controllers-k8s/runtime/pkg/runtime/log" + "github.com/aws/aws-sdk-go-v2/aws" + svcsdk "github.com/aws/aws-sdk-go-v2/service/sagemaker" + svcsdktypes "github.com/aws/aws-sdk-go-v2/service/sagemaker/types" + smithy "github.com/aws/smithy-go" + corev1 "k8s.io/api/core/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +// Hack to avoid import errors during build... +var ( + _ = &metav1.Time{} + _ = strings.ToLower("") + _ = &svcsdk.Client{} + _ = &svcapitypes.Space{} + _ = ackv1alpha1.AWSAccountID("") + _ = &ackerr.NotFound + _ = &ackcondition.NotManagedMessage + _ = &reflect.Value{} + _ = fmt.Sprintf("") + _ = &ackrequeue.NoRequeue{} + _ = &aws.Config{} +) + +// sdkFind returns SDK-specific information about a supplied resource +func (rm *resourceManager) sdkFind( + ctx context.Context, + r *resource, +) (latest *resource, err error) { + rlog := ackrtlog.FromContext(ctx) + exit := rlog.Trace("rm.sdkFind") + defer func() { + exit(err) + }() + // If any required fields in the input shape are missing, AWS resource is + // not created yet. Return NotFound here to indicate to callers that the + // resource isn't yet created. + if rm.requiredFieldsMissingFromReadOneInput(r) { + return nil, ackerr.NotFound + } + + input, err := rm.newDescribeRequestPayload(r) + if err != nil { + return nil, err + } + + var resp *svcsdk.DescribeSpaceOutput + resp, err = rm.sdkapi.DescribeSpace(ctx, input) + rm.metrics.RecordAPICall("READ_ONE", "DescribeSpace", err) + if err != nil { + var awsErr smithy.APIError + if errors.As(err, &awsErr) && awsErr.ErrorCode() == "UNKNOWN" { + return nil, ackerr.NotFound + } + return nil, err + } + + // Merge in the information we read from the API call above to the copy of + // the original Kubernetes object we passed to the function + ko := r.ko.DeepCopy() + + if resp.DomainId != nil { + ko.Spec.DomainID = resp.DomainId + } else { + ko.Spec.DomainID = nil + } + if resp.OwnershipSettings != nil { + f5 := &svcapitypes.OwnershipSettings{} + if resp.OwnershipSettings.OwnerUserProfileName != nil { + f5.OwnerUserProfileName = resp.OwnershipSettings.OwnerUserProfileName + } + ko.Spec.OwnershipSettings = f5 + } else { + ko.Spec.OwnershipSettings = nil + } + if ko.Status.ACKResourceMetadata == nil { + ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} + } + if resp.SpaceArn != nil { + arn := ackv1alpha1.AWSResourceName(*resp.SpaceArn) + ko.Status.ACKResourceMetadata.ARN = &arn + } + if resp.SpaceDisplayName != nil { + ko.Spec.SpaceDisplayName = resp.SpaceDisplayName + } else { + ko.Spec.SpaceDisplayName = nil + } + if resp.SpaceName != nil { + ko.Spec.SpaceName = resp.SpaceName + } else { + ko.Spec.SpaceName = nil + } + if resp.SpaceSettings != nil { + f9 := &svcapitypes.SpaceSettings{} + if resp.SpaceSettings.AppType != "" { + f9.AppType = aws.String(string(resp.SpaceSettings.AppType)) + } + if resp.SpaceSettings.CodeEditorAppSettings != nil { + f9f1 := &svcapitypes.SpaceCodeEditorAppSettings{} + if resp.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement != nil { + f9f1f0 := &svcapitypes.SpaceAppLifecycleManagement{} + if resp.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings != nil { + f9f1f0f0 := &svcapitypes.SpaceIdleSettings{} + if resp.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy := int64(*resp.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + f9f1f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f9f1f0.IdleSettings = f9f1f0f0 + } + f9f1.AppLifecycleManagement = f9f1f0 + } + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec != nil { + f9f1f1 := &svcapitypes.ResourceSpec{} + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != "" { + f9f1f1.InstanceType = aws.String(string(resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType)) + } + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { + f9f1f1.LifecycleConfigARN = resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigArn + } + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { + f9f1f1.SageMakerImageARN = resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageArn + } + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f9f1f1.SageMakerImageVersionAlias = resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { + f9f1f1.SageMakerImageVersionARN = resp.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + } + f9f1.DefaultResourceSpec = f9f1f1 + } + f9.CodeEditorAppSettings = f9f1 + } + if resp.SpaceSettings.CustomFileSystems != nil { + f9f2 := []*svcapitypes.CustomFileSystem{} + for _, f9f2iter := range resp.SpaceSettings.CustomFileSystems { + f9f2elem := &svcapitypes.CustomFileSystem{} + switch f9f2iter.(type) { + case *svcsdktypes.CustomFileSystemMemberEFSFileSystem: + f9f2elemf0 := f9f2iter.(*svcsdktypes.CustomFileSystemMemberEFSFileSystem) + if f9f2elemf0 != nil { + f9f2elemf0f0 := &svcapitypes.EFSFileSystem{} + if f9f2elemf0.Value.FileSystemId != nil { + f9f2elemf0f0.FileSystemID = f9f2elemf0.Value.FileSystemId + } + f9f2elem.EFSFileSystem = f9f2elemf0f0 + } + } + f9f2 = append(f9f2, f9f2elem) + } + f9.CustomFileSystems = f9f2 + } + if resp.SpaceSettings.JupyterLabAppSettings != nil { + f9f3 := &svcapitypes.SpaceJupyterLabAppSettings{} + if resp.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement != nil { + f9f3f0 := &svcapitypes.SpaceAppLifecycleManagement{} + if resp.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings != nil { + f9f3f0f0 := &svcapitypes.SpaceIdleSettings{} + if resp.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy := int64(*resp.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes) + f9f3f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f9f3f0.IdleSettings = f9f3f0f0 + } + f9f3.AppLifecycleManagement = f9f3f0 + } + if resp.SpaceSettings.JupyterLabAppSettings.CodeRepositories != nil { + f9f3f1 := []*svcapitypes.CodeRepository{} + for _, f9f3f1iter := range resp.SpaceSettings.JupyterLabAppSettings.CodeRepositories { + f9f3f1elem := &svcapitypes.CodeRepository{} + if f9f3f1iter.RepositoryUrl != nil { + f9f3f1elem.RepositoryURL = f9f3f1iter.RepositoryUrl + } + f9f3f1 = append(f9f3f1, f9f3f1elem) + } + f9f3.CodeRepositories = f9f3f1 + } + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { + f9f3f2 := &svcapitypes.ResourceSpec{} + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != "" { + f9f3f2.InstanceType = aws.String(string(resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType)) + } + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { + f9f3f2.LifecycleConfigARN = resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn + } + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { + f9f3f2.SageMakerImageARN = resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn + } + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f9f3f2.SageMakerImageVersionAlias = resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { + f9f3f2.SageMakerImageVersionARN = resp.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + } + f9f3.DefaultResourceSpec = f9f3f2 + } + f9.JupyterLabAppSettings = f9f3 + } + if resp.SpaceSettings.JupyterServerAppSettings != nil { + f9f4 := &svcapitypes.JupyterServerAppSettings{} + if resp.SpaceSettings.JupyterServerAppSettings.CodeRepositories != nil { + f9f4f0 := []*svcapitypes.CodeRepository{} + for _, f9f4f0iter := range resp.SpaceSettings.JupyterServerAppSettings.CodeRepositories { + f9f4f0elem := &svcapitypes.CodeRepository{} + if f9f4f0iter.RepositoryUrl != nil { + f9f4f0elem.RepositoryURL = f9f4f0iter.RepositoryUrl + } + f9f4f0 = append(f9f4f0, f9f4f0elem) + } + f9f4.CodeRepositories = f9f4f0 + } + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { + f9f4f1 := &svcapitypes.ResourceSpec{} + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != "" { + f9f4f1.InstanceType = aws.String(string(resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType)) + } + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { + f9f4f1.LifecycleConfigARN = resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn + } + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { + f9f4f1.SageMakerImageARN = resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn + } + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f9f4f1.SageMakerImageVersionAlias = resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { + f9f4f1.SageMakerImageVersionARN = resp.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + } + f9f4.DefaultResourceSpec = f9f4f1 + } + if resp.SpaceSettings.JupyterServerAppSettings.LifecycleConfigArns != nil { + f9f4.LifecycleConfigARNs = aws.StringSlice(resp.SpaceSettings.JupyterServerAppSettings.LifecycleConfigArns) + } + f9.JupyterServerAppSettings = f9f4 + } + if resp.SpaceSettings.KernelGatewayAppSettings != nil { + f9f5 := &svcapitypes.KernelGatewayAppSettings{} + if resp.SpaceSettings.KernelGatewayAppSettings.CustomImages != nil { + f9f5f0 := []*svcapitypes.CustomImage{} + for _, f9f5f0iter := range resp.SpaceSettings.KernelGatewayAppSettings.CustomImages { + f9f5f0elem := &svcapitypes.CustomImage{} + if f9f5f0iter.AppImageConfigName != nil { + f9f5f0elem.AppImageConfigName = f9f5f0iter.AppImageConfigName + } + if f9f5f0iter.ImageName != nil { + f9f5f0elem.ImageName = f9f5f0iter.ImageName + } + if f9f5f0iter.ImageVersionNumber != nil { + imageVersionNumberCopy := int64(*f9f5f0iter.ImageVersionNumber) + f9f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + } + f9f5f0 = append(f9f5f0, f9f5f0elem) + } + f9f5.CustomImages = f9f5f0 + } + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec != nil { + f9f5f1 := &svcapitypes.ResourceSpec{} + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != "" { + f9f5f1.InstanceType = aws.String(string(resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType)) + } + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { + f9f5f1.LifecycleConfigARN = resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigArn + } + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { + f9f5f1.SageMakerImageARN = resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageArn + } + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f9f5f1.SageMakerImageVersionAlias = resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { + f9f5f1.SageMakerImageVersionARN = resp.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + } + f9f5.DefaultResourceSpec = f9f5f1 + } + if resp.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigArns != nil { + f9f5.LifecycleConfigARNs = aws.StringSlice(resp.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigArns) + } + f9.KernelGatewayAppSettings = f9f5 + } + if resp.SpaceSettings.SpaceStorageSettings != nil { + f9f6 := &svcapitypes.SpaceStorageSettings{} + if resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings != nil { + f9f6f0 := &svcapitypes.EBSStorageSettings{} + if resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings.EbsVolumeSizeInGb != nil { + ebsVolumeSizeInGbCopy := int64(*resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings.EbsVolumeSizeInGb) + f9f6f0.EBSVolumeSizeInGb = &ebsVolumeSizeInGbCopy + } + f9f6.EBSStorageSettings = f9f6f0 + } + f9.SpaceStorageSettings = f9f6 + } + ko.Spec.SpaceSettings = f9 + } else { + ko.Spec.SpaceSettings = nil + } + if resp.SpaceSharingSettings != nil { + f10 := &svcapitypes.SpaceSharingSettings{} + if resp.SpaceSharingSettings.SharingType != "" { + f10.SharingType = aws.String(string(resp.SpaceSharingSettings.SharingType)) + } + ko.Spec.SpaceSharingSettings = f10 + } else { + ko.Spec.SpaceSharingSettings = nil + } + + rm.setStatusDefaults(ko) + return &resource{ko}, nil +} + +// requiredFieldsMissingFromReadOneInput returns true if there are any fields +// for the ReadOne Input shape that are required but not present in the +// resource's Spec or Status +func (rm *resourceManager) requiredFieldsMissingFromReadOneInput( + r *resource, +) bool { + return r.ko.Spec.DomainID == nil || r.ko.Spec.SpaceName == nil + +} + +// newDescribeRequestPayload returns SDK-specific struct for the HTTP request +// payload of the Describe API call for the resource +func (rm *resourceManager) newDescribeRequestPayload( + r *resource, +) (*svcsdk.DescribeSpaceInput, error) { + res := &svcsdk.DescribeSpaceInput{} + + if r.ko.Spec.DomainID != nil { + res.DomainId = r.ko.Spec.DomainID + } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } + + return res, nil +} + +// sdkCreate creates the supplied resource in the backend AWS service API and +// returns a copy of the resource with resource fields (in both Spec and +// Status) filled in with values from the CREATE API operation's Output shape. +func (rm *resourceManager) sdkCreate( + ctx context.Context, + desired *resource, +) (created *resource, err error) { + rlog := ackrtlog.FromContext(ctx) + exit := rlog.Trace("rm.sdkCreate") + defer func() { + exit(err) + }() + input, err := rm.newCreateRequestPayload(ctx, desired) + if err != nil { + return nil, err + } + + var resp *svcsdk.CreateSpaceOutput + _ = resp + resp, err = rm.sdkapi.CreateSpace(ctx, input) + rm.metrics.RecordAPICall("CREATE", "CreateSpace", err) + if err != nil { + return nil, err + } + // Merge in the information we read from the API call above to the copy of + // the original Kubernetes object we passed to the function + ko := desired.ko.DeepCopy() + + if ko.Status.ACKResourceMetadata == nil { + ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} + } + if resp.SpaceArn != nil { + arn := ackv1alpha1.AWSResourceName(*resp.SpaceArn) + ko.Status.ACKResourceMetadata.ARN = &arn + } + + rm.setStatusDefaults(ko) + return &resource{ko}, nil +} + +// newCreateRequestPayload returns an SDK-specific struct for the HTTP request +// payload of the Create API call for the resource +func (rm *resourceManager) newCreateRequestPayload( + ctx context.Context, + r *resource, +) (*svcsdk.CreateSpaceInput, error) { + res := &svcsdk.CreateSpaceInput{} + + if r.ko.Spec.DomainID != nil { + res.DomainId = r.ko.Spec.DomainID + } + if r.ko.Spec.OwnershipSettings != nil { + f1 := &svcsdktypes.OwnershipSettings{} + if r.ko.Spec.OwnershipSettings.OwnerUserProfileName != nil { + f1.OwnerUserProfileName = r.ko.Spec.OwnershipSettings.OwnerUserProfileName + } + res.OwnershipSettings = f1 + } + if r.ko.Spec.SpaceDisplayName != nil { + res.SpaceDisplayName = r.ko.Spec.SpaceDisplayName + } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } + if r.ko.Spec.SpaceSettings != nil { + f4 := &svcsdktypes.SpaceSettings{} + if r.ko.Spec.SpaceSettings.AppType != nil { + f4.AppType = svcsdktypes.AppType(*r.ko.Spec.SpaceSettings.AppType) + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings != nil { + f4f1 := &svcsdktypes.SpaceCodeEditorAppSettings{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement != nil { + f4f1f0 := &svcsdktypes.SpaceAppLifecycleManagement{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings != nil { + f4f1f0f0 := &svcsdktypes.SpaceIdleSettings{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy0 := *r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes + if idleTimeoutInMinutesCopy0 > math.MaxInt32 || idleTimeoutInMinutesCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field IdleTimeoutInMinutes is of type int32") + } + idleTimeoutInMinutesCopy := int32(idleTimeoutInMinutesCopy0) + f4f1f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f4f1f0.IdleSettings = f4f1f0f0 + } + f4f1.AppLifecycleManagement = f4f1f0 + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec != nil { + f4f1f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != nil { + f4f1f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f4f1f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f4f1f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f4f1f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f4f1f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f4f1.DefaultResourceSpec = f4f1f1 + } + f4.CodeEditorAppSettings = f4f1 + } + if r.ko.Spec.SpaceSettings.CustomFileSystems != nil { + f4f2 := []svcsdktypes.CustomFileSystem{} + for _, f4f2iter := range r.ko.Spec.SpaceSettings.CustomFileSystems { + var f4f2elem svcsdktypes.CustomFileSystem + isInterfaceSet := false + if f4f2iter.EFSFileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for EFSFileSystem")) + } + f4f2elemf0Parent := &svcsdktypes.CustomFileSystemMemberEFSFileSystem{} + f4f2elemf0 := &svcsdktypes.EFSFileSystem{} + if f4f2iter.EFSFileSystem.FileSystemID != nil { + f4f2elemf0.FileSystemId = f4f2iter.EFSFileSystem.FileSystemID + } + f4f2elemf0Parent.Value = *f4f2elemf0 + } + f4f2 = append(f4f2, f4f2elem) + } + f4.CustomFileSystems = f4f2 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings != nil { + f4f3 := &svcsdktypes.SpaceJupyterLabAppSettings{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement != nil { + f4f3f0 := &svcsdktypes.SpaceAppLifecycleManagement{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings != nil { + f4f3f0f0 := &svcsdktypes.SpaceIdleSettings{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy0 := *r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes + if idleTimeoutInMinutesCopy0 > math.MaxInt32 || idleTimeoutInMinutesCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field IdleTimeoutInMinutes is of type int32") + } + idleTimeoutInMinutesCopy := int32(idleTimeoutInMinutesCopy0) + f4f3f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f4f3f0.IdleSettings = f4f3f0f0 + } + f4f3.AppLifecycleManagement = f4f3f0 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories != nil { + f4f3f1 := []svcsdktypes.CodeRepository{} + for _, f4f3f1iter := range r.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories { + f4f3f1elem := &svcsdktypes.CodeRepository{} + if f4f3f1iter.RepositoryURL != nil { + f4f3f1elem.RepositoryUrl = f4f3f1iter.RepositoryURL + } + f4f3f1 = append(f4f3f1, *f4f3f1elem) + } + f4f3.CodeRepositories = f4f3f1 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { + f4f3f2 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { + f4f3f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f4f3f2.LifecycleConfigArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f4f3f2.SageMakerImageArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f4f3f2.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f4f3f2.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f4f3.DefaultResourceSpec = f4f3f2 + } + f4.JupyterLabAppSettings = f4f3 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings != nil { + f4f4 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories != nil { + f4f4f0 := []svcsdktypes.CodeRepository{} + for _, f4f4f0iter := range r.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories { + f4f4f0elem := &svcsdktypes.CodeRepository{} + if f4f4f0iter.RepositoryURL != nil { + f4f4f0elem.RepositoryUrl = f4f4f0iter.RepositoryURL + } + f4f4f0 = append(f4f4f0, *f4f4f0elem) + } + f4f4.CodeRepositories = f4f4f0 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { + f4f4f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { + f4f4f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f4f4f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f4f4f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f4f4f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f4f4f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f4f4.DefaultResourceSpec = f4f4f1 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { + f4f4.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) + } + f4.JupyterServerAppSettings = f4f4 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings != nil { + f4f5 := &svcsdktypes.KernelGatewayAppSettings{} + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages != nil { + f4f5f0 := []svcsdktypes.CustomImage{} + for _, f4f5f0iter := range r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages { + f4f5f0elem := &svcsdktypes.CustomImage{} + if f4f5f0iter.AppImageConfigName != nil { + f4f5f0elem.AppImageConfigName = f4f5f0iter.AppImageConfigName + } + if f4f5f0iter.ImageName != nil { + f4f5f0elem.ImageName = f4f5f0iter.ImageName + } + if f4f5f0iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f4f5f0iter.ImageVersionNumber + if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") + } + imageVersionNumberCopy := int32(imageVersionNumberCopy0) + f4f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + } + f4f5f0 = append(f4f5f0, *f4f5f0elem) + } + f4f5.CustomImages = f4f5f0 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec != nil { + f4f5f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != nil { + f4f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f4f5f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f4f5f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f4f5f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f4f5f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f4f5.DefaultResourceSpec = f4f5f1 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs != nil { + f4f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) + } + f4.KernelGatewayAppSettings = f4f5 + } + if r.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { + f4f6 := &svcsdktypes.SpaceStorageSettings{} + if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil { + f4f6f0 := &svcsdktypes.EbsStorageSettings{} + if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil { + ebsVolumeSizeInGbCopy0 := *r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb + if ebsVolumeSizeInGbCopy0 > math.MaxInt32 || ebsVolumeSizeInGbCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field EbsVolumeSizeInGb is of type int32") + } + ebsVolumeSizeInGbCopy := int32(ebsVolumeSizeInGbCopy0) + f4f6f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy + } + f4f6.EbsStorageSettings = f4f6f0 + } + f4.SpaceStorageSettings = f4f6 + } + res.SpaceSettings = f4 + } + if r.ko.Spec.SpaceSharingSettings != nil { + f5 := &svcsdktypes.SpaceSharingSettings{} + if r.ko.Spec.SpaceSharingSettings.SharingType != nil { + f5.SharingType = svcsdktypes.SharingType(*r.ko.Spec.SpaceSharingSettings.SharingType) + } + res.SpaceSharingSettings = f5 + } + if r.ko.Spec.Tags != nil { + f6 := []svcsdktypes.Tag{} + for _, f6iter := range r.ko.Spec.Tags { + f6elem := &svcsdktypes.Tag{} + if f6iter.Key != nil { + f6elem.Key = f6iter.Key + } + if f6iter.Value != nil { + f6elem.Value = f6iter.Value + } + f6 = append(f6, *f6elem) + } + res.Tags = f6 + } + + return res, nil +} + +// sdkUpdate patches the supplied resource in the backend AWS service API and +// returns a new resource with updated fields. +func (rm *resourceManager) sdkUpdate( + ctx context.Context, + desired *resource, + latest *resource, + delta *ackcompare.Delta, +) (updated *resource, err error) { + rlog := ackrtlog.FromContext(ctx) + exit := rlog.Trace("rm.sdkUpdate") + defer func() { + exit(err) + }() + input, err := rm.newUpdateRequestPayload(ctx, desired, delta) + if err != nil { + return nil, err + } + + var resp *svcsdk.UpdateSpaceOutput + _ = resp + resp, err = rm.sdkapi.UpdateSpace(ctx, input) + rm.metrics.RecordAPICall("UPDATE", "UpdateSpace", err) + if err != nil { + return nil, err + } + // Merge in the information we read from the API call above to the copy of + // the original Kubernetes object we passed to the function + ko := desired.ko.DeepCopy() + + if ko.Status.ACKResourceMetadata == nil { + ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} + } + if resp.SpaceArn != nil { + arn := ackv1alpha1.AWSResourceName(*resp.SpaceArn) + ko.Status.ACKResourceMetadata.ARN = &arn + } + + rm.setStatusDefaults(ko) + return &resource{ko}, nil +} + +// newUpdateRequestPayload returns an SDK-specific struct for the HTTP request +// payload of the Update API call for the resource +func (rm *resourceManager) newUpdateRequestPayload( + ctx context.Context, + r *resource, + delta *ackcompare.Delta, +) (*svcsdk.UpdateSpaceInput, error) { + res := &svcsdk.UpdateSpaceInput{} + + if r.ko.Spec.DomainID != nil { + res.DomainId = r.ko.Spec.DomainID + } + if r.ko.Spec.SpaceDisplayName != nil { + res.SpaceDisplayName = r.ko.Spec.SpaceDisplayName + } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } + if r.ko.Spec.SpaceSettings != nil { + f3 := &svcsdktypes.SpaceSettings{} + if r.ko.Spec.SpaceSettings.AppType != nil { + f3.AppType = svcsdktypes.AppType(*r.ko.Spec.SpaceSettings.AppType) + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings != nil { + f3f1 := &svcsdktypes.SpaceCodeEditorAppSettings{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement != nil { + f3f1f0 := &svcsdktypes.SpaceAppLifecycleManagement{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings != nil { + f3f1f0f0 := &svcsdktypes.SpaceIdleSettings{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy0 := *r.ko.Spec.SpaceSettings.CodeEditorAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes + if idleTimeoutInMinutesCopy0 > math.MaxInt32 || idleTimeoutInMinutesCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field IdleTimeoutInMinutes is of type int32") + } + idleTimeoutInMinutesCopy := int32(idleTimeoutInMinutesCopy0) + f3f1f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f3f1f0.IdleSettings = f3f1f0f0 + } + f3f1.AppLifecycleManagement = f3f1f0 + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec != nil { + f3f1f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType != nil { + f3f1f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f3f1f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f3f1f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f3f1f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f3f1f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.CodeEditorAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f3f1.DefaultResourceSpec = f3f1f1 + } + f3.CodeEditorAppSettings = f3f1 + } + if r.ko.Spec.SpaceSettings.CustomFileSystems != nil { + f3f2 := []svcsdktypes.CustomFileSystem{} + for _, f3f2iter := range r.ko.Spec.SpaceSettings.CustomFileSystems { + var f3f2elem svcsdktypes.CustomFileSystem + isInterfaceSet := false + if f3f2iter.EFSFileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for EFSFileSystem")) + } + f3f2elemf0Parent := &svcsdktypes.CustomFileSystemMemberEFSFileSystem{} + f3f2elemf0 := &svcsdktypes.EFSFileSystem{} + if f3f2iter.EFSFileSystem.FileSystemID != nil { + f3f2elemf0.FileSystemId = f3f2iter.EFSFileSystem.FileSystemID + } + f3f2elemf0Parent.Value = *f3f2elemf0 + } + f3f2 = append(f3f2, f3f2elem) + } + f3.CustomFileSystems = f3f2 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings != nil { + f3f3 := &svcsdktypes.SpaceJupyterLabAppSettings{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement != nil { + f3f3f0 := &svcsdktypes.SpaceAppLifecycleManagement{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings != nil { + f3f3f0f0 := &svcsdktypes.SpaceIdleSettings{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes != nil { + idleTimeoutInMinutesCopy0 := *r.ko.Spec.SpaceSettings.JupyterLabAppSettings.AppLifecycleManagement.IdleSettings.IdleTimeoutInMinutes + if idleTimeoutInMinutesCopy0 > math.MaxInt32 || idleTimeoutInMinutesCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field IdleTimeoutInMinutes is of type int32") + } + idleTimeoutInMinutesCopy := int32(idleTimeoutInMinutesCopy0) + f3f3f0f0.IdleTimeoutInMinutes = &idleTimeoutInMinutesCopy + } + f3f3f0.IdleSettings = f3f3f0f0 + } + f3f3.AppLifecycleManagement = f3f3f0 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories != nil { + f3f3f1 := []svcsdktypes.CodeRepository{} + for _, f3f3f1iter := range r.ko.Spec.SpaceSettings.JupyterLabAppSettings.CodeRepositories { + f3f3f1elem := &svcsdktypes.CodeRepository{} + if f3f3f1iter.RepositoryURL != nil { + f3f3f1elem.RepositoryUrl = f3f3f1iter.RepositoryURL + } + f3f3f1 = append(f3f3f1, *f3f3f1elem) + } + f3f3.CodeRepositories = f3f3f1 + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { + f3f3f2 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { + f3f3f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f3f3f2.LifecycleConfigArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f3f3f2.SageMakerImageArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f3f3f2.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f3f3f2.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f3f3.DefaultResourceSpec = f3f3f2 + } + f3.JupyterLabAppSettings = f3f3 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings != nil { + f3f4 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories != nil { + f3f4f0 := []svcsdktypes.CodeRepository{} + for _, f3f4f0iter := range r.ko.Spec.SpaceSettings.JupyterServerAppSettings.CodeRepositories { + f3f4f0elem := &svcsdktypes.CodeRepository{} + if f3f4f0iter.RepositoryURL != nil { + f3f4f0elem.RepositoryUrl = f3f4f0iter.RepositoryURL + } + f3f4f0 = append(f3f4f0, *f3f4f0elem) + } + f3f4.CodeRepositories = f3f4f0 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { + f3f4f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { + f3f4f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f3f4f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f3f4f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f3f4f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f3f4f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f3f4.DefaultResourceSpec = f3f4f1 + } + if r.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { + f3f4.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.SpaceSettings.JupyterServerAppSettings.LifecycleConfigARNs) + } + f3.JupyterServerAppSettings = f3f4 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings != nil { + f3f5 := &svcsdktypes.KernelGatewayAppSettings{} + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages != nil { + f3f5f0 := []svcsdktypes.CustomImage{} + for _, f3f5f0iter := range r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.CustomImages { + f3f5f0elem := &svcsdktypes.CustomImage{} + if f3f5f0iter.AppImageConfigName != nil { + f3f5f0elem.AppImageConfigName = f3f5f0iter.AppImageConfigName + } + if f3f5f0iter.ImageName != nil { + f3f5f0elem.ImageName = f3f5f0iter.ImageName + } + if f3f5f0iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f3f5f0iter.ImageVersionNumber + if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") + } + imageVersionNumberCopy := int32(imageVersionNumberCopy0) + f3f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + } + f3f5f0 = append(f3f5f0, *f3f5f0elem) + } + f3f5.CustomImages = f3f5f0 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec != nil { + f3f5f1 := &svcsdktypes.ResourceSpec{} + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType != nil { + f3f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.InstanceType) + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { + f3f5f1.LifecycleConfigArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.LifecycleConfigARN + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { + f3f5f1.SageMakerImageArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageARN + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { + f3f5f1.SageMakerImageVersionAlias = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { + f3f5f1.SageMakerImageVersionArn = r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + } + f3f5.DefaultResourceSpec = f3f5f1 + } + if r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs != nil { + f3f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.SpaceSettings.KernelGatewayAppSettings.LifecycleConfigARNs) + } + f3.KernelGatewayAppSettings = f3f5 + } + if r.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { + f3f6 := &svcsdktypes.SpaceStorageSettings{} + if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil { + f3f6f0 := &svcsdktypes.EbsStorageSettings{} + if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil { + ebsVolumeSizeInGbCopy0 := *r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb + if ebsVolumeSizeInGbCopy0 > math.MaxInt32 || ebsVolumeSizeInGbCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field EbsVolumeSizeInGb is of type int32") + } + ebsVolumeSizeInGbCopy := int32(ebsVolumeSizeInGbCopy0) + f3f6f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy + } + f3f6.EbsStorageSettings = f3f6f0 + } + f3.SpaceStorageSettings = f3f6 + } + res.SpaceSettings = f3 + } + + return res, nil +} + +// sdkDelete deletes the supplied resource in the backend AWS service API +func (rm *resourceManager) sdkDelete( + ctx context.Context, + r *resource, +) (latest *resource, err error) { + rlog := ackrtlog.FromContext(ctx) + exit := rlog.Trace("rm.sdkDelete") + defer func() { + exit(err) + }() + input, err := rm.newDeleteRequestPayload(r) + if err != nil { + return nil, err + } + var resp *svcsdk.DeleteSpaceOutput + _ = resp + resp, err = rm.sdkapi.DeleteSpace(ctx, input) + rm.metrics.RecordAPICall("DELETE", "DeleteSpace", err) + return nil, err +} + +// newDeleteRequestPayload returns an SDK-specific struct for the HTTP request +// payload of the Delete API call for the resource +func (rm *resourceManager) newDeleteRequestPayload( + r *resource, +) (*svcsdk.DeleteSpaceInput, error) { + res := &svcsdk.DeleteSpaceInput{} + + if r.ko.Spec.DomainID != nil { + res.DomainId = r.ko.Spec.DomainID + } + if r.ko.Spec.SpaceName != nil { + res.SpaceName = r.ko.Spec.SpaceName + } + + return res, nil +} + +// setStatusDefaults sets default properties into supplied custom resource +func (rm *resourceManager) setStatusDefaults( + ko *svcapitypes.Space, +) { + if ko.Status.ACKResourceMetadata == nil { + ko.Status.ACKResourceMetadata = &ackv1alpha1.ResourceMetadata{} + } + if ko.Status.ACKResourceMetadata.Region == nil { + ko.Status.ACKResourceMetadata.Region = &rm.awsRegion + } + if ko.Status.ACKResourceMetadata.OwnerAccountID == nil { + ko.Status.ACKResourceMetadata.OwnerAccountID = &rm.awsAccountID + } + if ko.Status.Conditions == nil { + ko.Status.Conditions = []*ackv1alpha1.Condition{} + } +} + +// updateConditions returns updated resource, true; if conditions were updated +// else it returns nil, false +func (rm *resourceManager) updateConditions( + r *resource, + onSuccess bool, + err error, +) (*resource, bool) { + ko := r.ko.DeepCopy() + rm.setStatusDefaults(ko) + + // Terminal condition + var terminalCondition *ackv1alpha1.Condition = nil + var recoverableCondition *ackv1alpha1.Condition = nil + var syncCondition *ackv1alpha1.Condition = nil + for _, condition := range ko.Status.Conditions { + if condition.Type == ackv1alpha1.ConditionTypeTerminal { + terminalCondition = condition + } + if condition.Type == ackv1alpha1.ConditionTypeRecoverable { + recoverableCondition = condition + } + if condition.Type == ackv1alpha1.ConditionTypeResourceSynced { + syncCondition = condition + } + } + var termError *ackerr.TerminalError + if rm.terminalAWSError(err) || err == ackerr.SecretTypeNotSupported || err == ackerr.SecretNotFound || errors.As(err, &termError) { + if terminalCondition == nil { + terminalCondition = &ackv1alpha1.Condition{ + Type: ackv1alpha1.ConditionTypeTerminal, + } + ko.Status.Conditions = append(ko.Status.Conditions, terminalCondition) + } + var errorMessage = "" + if err == ackerr.SecretTypeNotSupported || err == ackerr.SecretNotFound || errors.As(err, &termError) { + errorMessage = err.Error() + } else { + awsErr, _ := ackerr.AWSError(err) + errorMessage = awsErr.Error() + } + terminalCondition.Status = corev1.ConditionTrue + terminalCondition.Message = &errorMessage + } else { + // Clear the terminal condition if no longer present + if terminalCondition != nil { + terminalCondition.Status = corev1.ConditionFalse + terminalCondition.Message = nil + } + // Handling Recoverable Conditions + if err != nil { + if recoverableCondition == nil { + // Add a new Condition containing a non-terminal error + recoverableCondition = &ackv1alpha1.Condition{ + Type: ackv1alpha1.ConditionTypeRecoverable, + } + ko.Status.Conditions = append(ko.Status.Conditions, recoverableCondition) + } + recoverableCondition.Status = corev1.ConditionTrue + awsErr, _ := ackerr.AWSError(err) + errorMessage := err.Error() + if awsErr != nil { + errorMessage = awsErr.Error() + } + recoverableCondition.Message = &errorMessage + } else if recoverableCondition != nil { + recoverableCondition.Status = corev1.ConditionFalse + recoverableCondition.Message = nil + } + } + // Required to avoid the "declared but not used" error in the default case + _ = syncCondition + if terminalCondition != nil || recoverableCondition != nil || syncCondition != nil { + return &resource{ko}, true // updated + } + return nil, false // not updated +} + +// terminalAWSError returns awserr, true; if the supplied error is an aws Error type +// and if the exception indicates that it is a Terminal exception +// 'Terminal' exception are specified in generator configuration +func (rm *resourceManager) terminalAWSError(err error) bool { + // No terminal_errors specified for this resource in generator config + return false +} diff --git a/pkg/resource/space/tags.go b/pkg/resource/space/tags.go new file mode 100644 index 00000000..b7e43ee9 --- /dev/null +++ b/pkg/resource/space/tags.go @@ -0,0 +1,119 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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. + +// Code generated by ack-generate. DO NOT EDIT. + +package space + +import ( + "slices" + "strings" + + acktags "github.com/aws-controllers-k8s/runtime/pkg/tags" + + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" +) + +var ( + _ = svcapitypes.Space{} + _ = acktags.NewTags() + ACKSystemTags = []string{"services.k8s.aws/namespace", "services.k8s.aws/controller-version"} +) + +// convertToOrderedACKTags converts the tags parameter into 'acktags.Tags' shape. +// This method helps in creating the hub(acktags.Tags) for merging +// default controller tags with existing resource tags. It also returns a slice +// of keys maintaining the original key Order when the tags are a list +func convertToOrderedACKTags(tags []*svcapitypes.Tag) (acktags.Tags, []string) { + result := acktags.NewTags() + keyOrder := []string{} + + if len(tags) == 0 { + return result, keyOrder + } + for _, t := range tags { + if t.Key != nil { + keyOrder = append(keyOrder, *t.Key) + if t.Value != nil { + result[*t.Key] = *t.Value + } else { + result[*t.Key] = "" + } + } + } + + return result, keyOrder +} + +// fromACKTags converts the tags parameter into []*svcapitypes.Tag shape. +// This method helps in setting the tags back inside AWSResource after merging +// default controller tags with existing resource tags. When a list, +// it maintains the order from original +func fromACKTags(tags acktags.Tags, keyOrder []string) []*svcapitypes.Tag { + result := []*svcapitypes.Tag{} + + for _, k := range keyOrder { + v, ok := tags[k] + if ok { + tag := svcapitypes.Tag{Key: &k, Value: &v} + result = append(result, &tag) + delete(tags, k) + } + } + for k, v := range tags { + tag := svcapitypes.Tag{Key: &k, Value: &v} + result = append(result, &tag) + } + + return result +} + +// ignoreSystemTags ignores tags that have keys that start with "aws:" +// and ACKSystemTags, to avoid patching them to the resourceSpec. +// Eg. resources created with cloudformation have tags that cannot be +// removed by an ACK controller +func ignoreSystemTags(tags acktags.Tags) { + for k := range tags { + if strings.HasPrefix(k, "aws:") || + slices.Contains(ACKSystemTags, k) { + delete(tags, k) + } + } +} + +// syncAWSTags ensures AWS-managed tags (prefixed with "aws:") from the latest resource state +// are preserved in the desired state. This prevents the controller from attempting to +// modify AWS-managed tags, which would result in an error. +// +// AWS-managed tags are automatically added by AWS services (e.g., CloudFormation, Service Catalog) +// and cannot be modified or deleted through normal tag operations. Common examples include: +// - aws:cloudformation:stack-name +// - aws:servicecatalog:productArn +// +// Parameters: +// - a: The target Tags map to be updated (typically desired state) +// - b: The source Tags map containing AWS-managed tags (typically latest state) +// +// Example: +// +// latest := Tags{"aws:cloudformation:stack-name": "my-stack", "environment": "prod"} +// desired := Tags{"environment": "dev"} +// SyncAWSTags(desired, latest) +// desired now contains {"aws:cloudformation:stack-name": "my-stack", "environment": "dev"} +func syncAWSTags(a acktags.Tags, b acktags.Tags) { + for k := range b { + if strings.HasPrefix(k, "aws:") { + a[k] = b[k] + } + } +} diff --git a/pkg/resource/user_profile/delta.go b/pkg/resource/user_profile/delta.go index 2d704709..bde94e85 100644 --- a/pkg/resource/user_profile/delta.go +++ b/pkg/resource/user_profile/delta.go @@ -166,6 +166,13 @@ func newResourceDelta( if ackcompare.HasNilDifference(a.ko.Spec.UserSettings.JupyterLabAppSettings, b.ko.Spec.UserSettings.JupyterLabAppSettings) { delta.Add("Spec.UserSettings.JupyterLabAppSettings", a.ko.Spec.UserSettings.JupyterLabAppSettings, b.ko.Spec.UserSettings.JupyterLabAppSettings) } else if a.ko.Spec.UserSettings.JupyterLabAppSettings != nil && b.ko.Spec.UserSettings.JupyterLabAppSettings != nil { + if len(a.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) != len(b.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.UserSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) + } else if len(a.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) { + delta.Add("Spec.UserSettings.JupyterLabAppSettings.CodeRepositories", a.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories) + } + } if len(a.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages) != len(b.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages) { delta.Add("Spec.UserSettings.JupyterLabAppSettings.CustomImages", a.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages, b.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages) } else if len(a.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages) > 0 { @@ -223,6 +230,13 @@ func newResourceDelta( if ackcompare.HasNilDifference(a.ko.Spec.UserSettings.JupyterServerAppSettings, b.ko.Spec.UserSettings.JupyterServerAppSettings) { delta.Add("Spec.UserSettings.JupyterServerAppSettings", a.ko.Spec.UserSettings.JupyterServerAppSettings, b.ko.Spec.UserSettings.JupyterServerAppSettings) } else if a.ko.Spec.UserSettings.JupyterServerAppSettings != nil && b.ko.Spec.UserSettings.JupyterServerAppSettings != nil { + if len(a.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) != len(b.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.UserSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) + } else if len(a.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) > 0 { + if !reflect.DeepEqual(a.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) { + delta.Add("Spec.UserSettings.JupyterServerAppSettings.CodeRepositories", a.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories, b.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories) + } + } if ackcompare.HasNilDifference(a.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec) { delta.Add("Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec", a.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec, b.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec) } else if a.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil && b.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { diff --git a/pkg/resource/user_profile/sdk.go b/pkg/resource/user_profile/sdk.go index 44a686a7..a0c214d0 100644 --- a/pkg/resource/user_profile/sdk.go +++ b/pkg/resource/user_profile/sdk.go @@ -191,42 +191,53 @@ func (rm *resourceManager) sdkFind( } if resp.UserSettings.JupyterLabAppSettings != nil { f10f5 := &svcapitypes.JupyterLabAppSettings{} + if resp.UserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f10f5f0 := []*svcapitypes.CodeRepository{} + for _, f10f5f0iter := range resp.UserSettings.JupyterLabAppSettings.CodeRepositories { + f10f5f0elem := &svcapitypes.CodeRepository{} + if f10f5f0iter.RepositoryUrl != nil { + f10f5f0elem.RepositoryURL = f10f5f0iter.RepositoryUrl + } + f10f5f0 = append(f10f5f0, f10f5f0elem) + } + f10f5.CodeRepositories = f10f5f0 + } if resp.UserSettings.JupyterLabAppSettings.CustomImages != nil { - f10f5f0 := []*svcapitypes.CustomImage{} - for _, f10f5f0iter := range resp.UserSettings.JupyterLabAppSettings.CustomImages { - f10f5f0elem := &svcapitypes.CustomImage{} - if f10f5f0iter.AppImageConfigName != nil { - f10f5f0elem.AppImageConfigName = f10f5f0iter.AppImageConfigName + f10f5f1 := []*svcapitypes.CustomImage{} + for _, f10f5f1iter := range resp.UserSettings.JupyterLabAppSettings.CustomImages { + f10f5f1elem := &svcapitypes.CustomImage{} + if f10f5f1iter.AppImageConfigName != nil { + f10f5f1elem.AppImageConfigName = f10f5f1iter.AppImageConfigName } - if f10f5f0iter.ImageName != nil { - f10f5f0elem.ImageName = f10f5f0iter.ImageName + if f10f5f1iter.ImageName != nil { + f10f5f1elem.ImageName = f10f5f1iter.ImageName } - if f10f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy := int64(*f10f5f0iter.ImageVersionNumber) - f10f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + if f10f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy := int64(*f10f5f1iter.ImageVersionNumber) + f10f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f10f5f0 = append(f10f5f0, f10f5f0elem) + f10f5f1 = append(f10f5f1, f10f5f1elem) } - f10f5.CustomImages = f10f5f0 + f10f5.CustomImages = f10f5f1 } if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f10f5f1 := &svcapitypes.ResourceSpec{} + f10f5f2 := &svcapitypes.ResourceSpec{} if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != "" { - f10f5f1.InstanceType = aws.String(string(resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType)) + f10f5f2.InstanceType = aws.String(string(resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType)) } if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { - f10f5f1.LifecycleConfigARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn + f10f5f2.LifecycleConfigARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigArn } if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { - f10f5f1.SageMakerImageARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn + f10f5f2.SageMakerImageARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageArn } if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f10f5f1.SageMakerImageVersionAlias = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f10f5f2.SageMakerImageVersionAlias = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { - f10f5f1.SageMakerImageVersionARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + f10f5f2.SageMakerImageVersionARN = resp.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionArn } - f10f5.DefaultResourceSpec = f10f5f1 + f10f5.DefaultResourceSpec = f10f5f2 } if resp.UserSettings.JupyterLabAppSettings.LifecycleConfigArns != nil { f10f5.LifecycleConfigARNs = aws.StringSlice(resp.UserSettings.JupyterLabAppSettings.LifecycleConfigArns) @@ -235,24 +246,35 @@ func (rm *resourceManager) sdkFind( } if resp.UserSettings.JupyterServerAppSettings != nil { f10f6 := &svcapitypes.JupyterServerAppSettings{} + if resp.UserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f10f6f0 := []*svcapitypes.CodeRepository{} + for _, f10f6f0iter := range resp.UserSettings.JupyterServerAppSettings.CodeRepositories { + f10f6f0elem := &svcapitypes.CodeRepository{} + if f10f6f0iter.RepositoryUrl != nil { + f10f6f0elem.RepositoryURL = f10f6f0iter.RepositoryUrl + } + f10f6f0 = append(f10f6f0, f10f6f0elem) + } + f10f6.CodeRepositories = f10f6f0 + } if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f10f6f0 := &svcapitypes.ResourceSpec{} + f10f6f1 := &svcapitypes.ResourceSpec{} if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != "" { - f10f6f0.InstanceType = aws.String(string(resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType)) + f10f6f1.InstanceType = aws.String(string(resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType)) } if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn != nil { - f10f6f0.LifecycleConfigARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn + f10f6f1.LifecycleConfigARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigArn } if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn != nil { - f10f6f0.SageMakerImageARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn + f10f6f1.SageMakerImageARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageArn } if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f10f6f0.SageMakerImageVersionAlias = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f10f6f1.SageMakerImageVersionAlias = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { - f10f6f0.SageMakerImageVersionARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn + f10f6f1.SageMakerImageVersionARN = resp.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionArn } - f10f6.DefaultResourceSpec = f10f6f0 + f10f6.DefaultResourceSpec = f10f6f1 } if resp.UserSettings.JupyterServerAppSettings.LifecycleConfigArns != nil { f10f6.LifecycleConfigARNs = aws.StringSlice(resp.UserSettings.JupyterServerAppSettings.LifecycleConfigArns) @@ -551,46 +573,57 @@ func (rm *resourceManager) newCreateRequestPayload( } if r.ko.Spec.UserSettings.JupyterLabAppSettings != nil { f5f5 := &svcsdktypes.JupyterLabAppSettings{} + if r.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f5f5f0 := []svcsdktypes.CodeRepository{} + for _, f5f5f0iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories { + f5f5f0elem := &svcsdktypes.CodeRepository{} + if f5f5f0iter.RepositoryURL != nil { + f5f5f0elem.RepositoryUrl = f5f5f0iter.RepositoryURL + } + f5f5f0 = append(f5f5f0, *f5f5f0elem) + } + f5f5.CodeRepositories = f5f5f0 + } if r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages != nil { - f5f5f0 := []svcsdktypes.CustomImage{} - for _, f5f5f0iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages { - f5f5f0elem := &svcsdktypes.CustomImage{} - if f5f5f0iter.AppImageConfigName != nil { - f5f5f0elem.AppImageConfigName = f5f5f0iter.AppImageConfigName + f5f5f1 := []svcsdktypes.CustomImage{} + for _, f5f5f1iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages { + f5f5f1elem := &svcsdktypes.CustomImage{} + if f5f5f1iter.AppImageConfigName != nil { + f5f5f1elem.AppImageConfigName = f5f5f1iter.AppImageConfigName } - if f5f5f0iter.ImageName != nil { - f5f5f0elem.ImageName = f5f5f0iter.ImageName + if f5f5f1iter.ImageName != nil { + f5f5f1elem.ImageName = f5f5f1iter.ImageName } - if f5f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy0 := *f5f5f0iter.ImageVersionNumber + if f5f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f5f5f1iter.ImageVersionNumber if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") } imageVersionNumberCopy := int32(imageVersionNumberCopy0) - f5f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + f5f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f5f5f0 = append(f5f5f0, *f5f5f0elem) + f5f5f1 = append(f5f5f1, *f5f5f1elem) } - f5f5.CustomImages = f5f5f0 + f5f5.CustomImages = f5f5f1 } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f5f5f1 := &svcsdktypes.ResourceSpec{} + f5f5f2 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { - f5f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + f5f5f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f5f5f1.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + f5f5f2.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f5f5f1.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + f5f5f2.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f5f5f1.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f5f5f2.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f5f5f1.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f5f5f2.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f5f5.DefaultResourceSpec = f5f5f1 + f5f5.DefaultResourceSpec = f5f5f2 } if r.ko.Spec.UserSettings.JupyterLabAppSettings.LifecycleConfigARNs != nil { f5f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.UserSettings.JupyterLabAppSettings.LifecycleConfigARNs) @@ -599,24 +632,35 @@ func (rm *resourceManager) newCreateRequestPayload( } if r.ko.Spec.UserSettings.JupyterServerAppSettings != nil { f5f6 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f5f6f0 := []svcsdktypes.CodeRepository{} + for _, f5f6f0iter := range r.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories { + f5f6f0elem := &svcsdktypes.CodeRepository{} + if f5f6f0iter.RepositoryURL != nil { + f5f6f0elem.RepositoryUrl = f5f6f0iter.RepositoryURL + } + f5f6f0 = append(f5f6f0, *f5f6f0elem) + } + f5f6.CodeRepositories = f5f6f0 + } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f5f6f0 := &svcsdktypes.ResourceSpec{} + f5f6f1 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { - f5f6f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + f5f6f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f5f6f0.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + f5f6f1.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f5f6f0.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + f5f6f1.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f5f6f0.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f5f6f1.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f5f6f0.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f5f6f1.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f5f6.DefaultResourceSpec = f5f6f0 + f5f6.DefaultResourceSpec = f5f6f1 } if r.ko.Spec.UserSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { f5f6.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.UserSettings.JupyterServerAppSettings.LifecycleConfigARNs) @@ -881,46 +925,57 @@ func (rm *resourceManager) newUpdateRequestPayload( } if r.ko.Spec.UserSettings.JupyterLabAppSettings != nil { f2f5 := &svcsdktypes.JupyterLabAppSettings{} + if r.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories != nil { + f2f5f0 := []svcsdktypes.CodeRepository{} + for _, f2f5f0iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CodeRepositories { + f2f5f0elem := &svcsdktypes.CodeRepository{} + if f2f5f0iter.RepositoryURL != nil { + f2f5f0elem.RepositoryUrl = f2f5f0iter.RepositoryURL + } + f2f5f0 = append(f2f5f0, *f2f5f0elem) + } + f2f5.CodeRepositories = f2f5f0 + } if r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages != nil { - f2f5f0 := []svcsdktypes.CustomImage{} - for _, f2f5f0iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages { - f2f5f0elem := &svcsdktypes.CustomImage{} - if f2f5f0iter.AppImageConfigName != nil { - f2f5f0elem.AppImageConfigName = f2f5f0iter.AppImageConfigName + f2f5f1 := []svcsdktypes.CustomImage{} + for _, f2f5f1iter := range r.ko.Spec.UserSettings.JupyterLabAppSettings.CustomImages { + f2f5f1elem := &svcsdktypes.CustomImage{} + if f2f5f1iter.AppImageConfigName != nil { + f2f5f1elem.AppImageConfigName = f2f5f1iter.AppImageConfigName } - if f2f5f0iter.ImageName != nil { - f2f5f0elem.ImageName = f2f5f0iter.ImageName + if f2f5f1iter.ImageName != nil { + f2f5f1elem.ImageName = f2f5f1iter.ImageName } - if f2f5f0iter.ImageVersionNumber != nil { - imageVersionNumberCopy0 := *f2f5f0iter.ImageVersionNumber + if f2f5f1iter.ImageVersionNumber != nil { + imageVersionNumberCopy0 := *f2f5f1iter.ImageVersionNumber if imageVersionNumberCopy0 > math.MaxInt32 || imageVersionNumberCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field ImageVersionNumber is of type int32") } imageVersionNumberCopy := int32(imageVersionNumberCopy0) - f2f5f0elem.ImageVersionNumber = &imageVersionNumberCopy + f2f5f1elem.ImageVersionNumber = &imageVersionNumberCopy } - f2f5f0 = append(f2f5f0, *f2f5f0elem) + f2f5f1 = append(f2f5f1, *f2f5f1elem) } - f2f5.CustomImages = f2f5f0 + f2f5.CustomImages = f2f5f1 } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec != nil { - f2f5f1 := &svcsdktypes.ResourceSpec{} + f2f5f2 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType != nil { - f2f5f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) + f2f5f2.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f2f5f1.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN + f2f5f2.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f2f5f1.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN + f2f5f2.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f2f5f1.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f2f5f2.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f2f5f1.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f2f5f2.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterLabAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f2f5.DefaultResourceSpec = f2f5f1 + f2f5.DefaultResourceSpec = f2f5f2 } if r.ko.Spec.UserSettings.JupyterLabAppSettings.LifecycleConfigARNs != nil { f2f5.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.UserSettings.JupyterLabAppSettings.LifecycleConfigARNs) @@ -929,24 +984,35 @@ func (rm *resourceManager) newUpdateRequestPayload( } if r.ko.Spec.UserSettings.JupyterServerAppSettings != nil { f2f6 := &svcsdktypes.JupyterServerAppSettings{} + if r.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories != nil { + f2f6f0 := []svcsdktypes.CodeRepository{} + for _, f2f6f0iter := range r.ko.Spec.UserSettings.JupyterServerAppSettings.CodeRepositories { + f2f6f0elem := &svcsdktypes.CodeRepository{} + if f2f6f0iter.RepositoryURL != nil { + f2f6f0elem.RepositoryUrl = f2f6f0iter.RepositoryURL + } + f2f6f0 = append(f2f6f0, *f2f6f0elem) + } + f2f6.CodeRepositories = f2f6f0 + } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec != nil { - f2f6f0 := &svcsdktypes.ResourceSpec{} + f2f6f1 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType != nil { - f2f6f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) + f2f6f1.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f2f6f0.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN + f2f6f1.LifecycleConfigArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f2f6f0.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN + f2f6f1.SageMakerImageArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f2f6f0.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f2f6f1.SageMakerImageVersionAlias = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f2f6f0.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN + f2f6f1.SageMakerImageVersionArn = r.ko.Spec.UserSettings.JupyterServerAppSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f2f6.DefaultResourceSpec = f2f6f0 + f2f6.DefaultResourceSpec = f2f6f1 } if r.ko.Spec.UserSettings.JupyterServerAppSettings.LifecycleConfigARNs != nil { f2f6.LifecycleConfigArns = aws.ToStringSlice(r.ko.Spec.UserSettings.JupyterServerAppSettings.LifecycleConfigARNs) From a7e03d2eb745ce34d7b102c02a5742c58cc7c498 Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Fri, 26 Sep 2025 22:41:16 +0000 Subject: [PATCH 2/6] add space describe fields --- apis/v1alpha1/ack-generate-metadata.yaml | 6 +- apis/v1alpha1/generator.yaml | 55 ++++++++++++++++ apis/v1alpha1/space.go | 31 +++++++++ apis/v1alpha1/zz_generated.deepcopy.go | 24 +++++++ .../sagemaker.services.k8s.aws_spaces.yaml | 42 +++++++++++- generator.yaml | 55 ++++++++++++++++ .../sagemaker.services.k8s.aws_spaces.yaml | 42 +++++++++++- pkg/resource/space/delta.go | 5 -- pkg/resource/space/sdk.go | 64 ++++++++++++++++++- 9 files changed, 311 insertions(+), 13 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index f103e5be..e450d67b 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,13 +1,13 @@ ack_generate_info: - build_date: "2025-09-26T00:44:06Z" + build_date: "2025-09-26T22:37:19Z" build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd go_version: go1.24.7 version: v0.52.0 -api_directory_checksum: b61a47a3a2eb341ed1b4cad140909a4001f979e5 +api_directory_checksum: 5cec8e23be2f264730caf3abe98a11c4213a6314 api_version: v1alpha1 aws_sdk_go_version: v1.32.6 generator_config_info: - file_checksum: 6ab8ea5ca9ad928833d82f53fcfa745e3c15c74d + file_checksum: 2026f25cbdeceddd056cc5ebe10c5bc8fc043a26 original_file_name: generator.yaml last_modification: reason: API generation diff --git a/apis/v1alpha1/generator.yaml b/apis/v1alpha1/generator.yaml index 18ec5979..76b34ce6 100644 --- a/apis/v1alpha1/generator.yaml +++ b/apis/v1alpha1/generator.yaml @@ -928,6 +928,61 @@ resources: Tags: compare: is_ignored: true + Space: + exceptions: + errors: + 404: + code: ResourceNotFound + terminal_codes: + - ResourceNotFound + - ResourceInUse + - ResourceLimitExceeded + # - InvalidParameterCombination + # - InvalidParameterValue + # - MissingParameter + hooks: + sdk_read_one_post_set_output: + code: rm.customDescribeSpaceSetOutput(ko) + sdk_update_pre_build_request: + template_path: common/sdk_update_pre_build_request.go.tpl + sdk_delete_pre_build_request: + template_path: common/sdk_delete_pre_build_request.go.tpl + sdk_delete_post_request: + template_path: common/sdk_delete_post_request.go.tpl + fields: + Status: + is_read_only: true + print: + name: STATUS + from: + operation: DescribeSpace + path: Status + FailureReason: + is_read_only: true + print: + name: FAILURE-REASON + priority: 1 + from: + operation: DescribeSpace + path: FailureReason + HomeEfsFileSystemUid: + is_read_only: true + from: + operation: DescribeSpace + path: HomeEfsFileSystemUid + CreationTime: + is_read_only: true + from: + operation: DescribeSpace + path: CreationTime + Url: + is_read_only: true + from: + operation: DescribeSpace + path: Url + Tags: + compare: + is_ignored: true TrainingJob: reconcile: requeue_on_success_seconds: 300 diff --git a/apis/v1alpha1/space.go b/apis/v1alpha1/space.go index 3bd81bde..53f5f410 100644 --- a/apis/v1alpha1/space.go +++ b/apis/v1alpha1/space.go @@ -62,11 +62,42 @@ type SpaceStatus struct { // resource // +kubebuilder:validation:Optional Conditions []*ackv1alpha1.Condition `json:"conditions"` + // The creation time. + // +kubebuilder:validation:Optional + CreationTime *metav1.Time `json:"creationTime,omitempty"` + // The failure reason. + // +kubebuilder:validation:Optional + FailureReason *string `json:"failureReason,omitempty"` + // The ID of the space's profile in the Amazon EFS volume. + // + // Regex Pattern: `^\d+$` + // +kubebuilder:validation:Optional + HomeEFSFileSystemUID *string `json:"homeEFSFileSystemUID,omitempty"` + // The status. + // +kubebuilder:validation:Optional + Status *string `json:"status,omitempty"` + // Returns the URL of the space. If the space is created with Amazon Web Services + // IAM Identity Center (Successor to Amazon Web Services Single Sign-On) authentication, + // users can navigate to the URL after appending the respective redirect parameter + // for the application type to be federated through Amazon Web Services IAM + // Identity Center. + // + // The following application types are supported: + // + // * Studio Classic: &redirect=JupyterServer + // + // * JupyterLab: &redirect=JupyterLab + // + // * Code Editor, based on Code-OSS, Visual Studio Code - Open Source: &redirect=CodeEditor + // +kubebuilder:validation:Optional + URL *string `json:"url,omitempty"` } // Space is the Schema for the Spaces API // +kubebuilder:object:root=true // +kubebuilder:subresource:status +// +kubebuilder:printcolumn:name="FAILURE-REASON",type=string,priority=1,JSONPath=`.status.failureReason` +// +kubebuilder:printcolumn:name="STATUS",type=string,priority=0,JSONPath=`.status.status` type Space struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index ccf79eba..1e903e0b 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -17538,6 +17538,30 @@ func (in *SpaceStatus) DeepCopyInto(out *SpaceStatus) { } } } + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } + if in.FailureReason != nil { + in, out := &in.FailureReason, &out.FailureReason + *out = new(string) + **out = **in + } + if in.HomeEFSFileSystemUID != nil { + in, out := &in.HomeEFSFileSystemUID, &out.HomeEFSFileSystemUID + *out = new(string) + **out = **in + } + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } + if in.URL != nil { + in, out := &in.URL, &out.URL + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SpaceStatus. diff --git a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml index 4acb21f2..c7f8aa74 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml @@ -14,7 +14,15 @@ spec: singular: space scope: Namespaced versions: - - name: v1alpha1 + - additionalPrinterColumns: + - jsonPath: .status.failureReason + name: FAILURE-REASON + priority: 1 + type: string + - jsonPath: .status.status + name: STATUS + type: string + name: v1alpha1 schema: openAPIV3Schema: description: Space is the Schema for the Spaces API @@ -356,6 +364,38 @@ spec: - type type: object type: array + creationTime: + description: The creation time. + format: date-time + type: string + failureReason: + description: The failure reason. + type: string + homeEFSFileSystemUID: + description: |- + The ID of the space's profile in the Amazon EFS volume. + + Regex Pattern: `^\d+$` + type: string + status: + description: The status. + type: string + url: + description: |- + Returns the URL of the space. If the space is created with Amazon Web Services + IAM Identity Center (Successor to Amazon Web Services Single Sign-On) authentication, + users can navigate to the URL after appending the respective redirect parameter + for the application type to be federated through Amazon Web Services IAM + Identity Center. + + The following application types are supported: + + * Studio Classic: &redirect=JupyterServer + + * JupyterLab: &redirect=JupyterLab + + * Code Editor, based on Code-OSS, Visual Studio Code - Open Source: &redirect=CodeEditor + type: string type: object type: object served: true diff --git a/generator.yaml b/generator.yaml index 18ec5979..76b34ce6 100644 --- a/generator.yaml +++ b/generator.yaml @@ -928,6 +928,61 @@ resources: Tags: compare: is_ignored: true + Space: + exceptions: + errors: + 404: + code: ResourceNotFound + terminal_codes: + - ResourceNotFound + - ResourceInUse + - ResourceLimitExceeded + # - InvalidParameterCombination + # - InvalidParameterValue + # - MissingParameter + hooks: + sdk_read_one_post_set_output: + code: rm.customDescribeSpaceSetOutput(ko) + sdk_update_pre_build_request: + template_path: common/sdk_update_pre_build_request.go.tpl + sdk_delete_pre_build_request: + template_path: common/sdk_delete_pre_build_request.go.tpl + sdk_delete_post_request: + template_path: common/sdk_delete_post_request.go.tpl + fields: + Status: + is_read_only: true + print: + name: STATUS + from: + operation: DescribeSpace + path: Status + FailureReason: + is_read_only: true + print: + name: FAILURE-REASON + priority: 1 + from: + operation: DescribeSpace + path: FailureReason + HomeEfsFileSystemUid: + is_read_only: true + from: + operation: DescribeSpace + path: HomeEfsFileSystemUid + CreationTime: + is_read_only: true + from: + operation: DescribeSpace + path: CreationTime + Url: + is_read_only: true + from: + operation: DescribeSpace + path: Url + Tags: + compare: + is_ignored: true TrainingJob: reconcile: requeue_on_success_seconds: 300 diff --git a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml index 4acb21f2..c7f8aa74 100644 --- a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml @@ -14,7 +14,15 @@ spec: singular: space scope: Namespaced versions: - - name: v1alpha1 + - additionalPrinterColumns: + - jsonPath: .status.failureReason + name: FAILURE-REASON + priority: 1 + type: string + - jsonPath: .status.status + name: STATUS + type: string + name: v1alpha1 schema: openAPIV3Schema: description: Space is the Schema for the Spaces API @@ -356,6 +364,38 @@ spec: - type type: object type: array + creationTime: + description: The creation time. + format: date-time + type: string + failureReason: + description: The failure reason. + type: string + homeEFSFileSystemUID: + description: |- + The ID of the space's profile in the Amazon EFS volume. + + Regex Pattern: `^\d+$` + type: string + status: + description: The status. + type: string + url: + description: |- + Returns the URL of the space. If the space is created with Amazon Web Services + IAM Identity Center (Successor to Amazon Web Services Single Sign-On) authentication, + users can navigate to the URL after appending the respective redirect parameter + for the application type to be federated through Amazon Web Services IAM + Identity Center. + + The following application types are supported: + + * Studio Classic: &redirect=JupyterServer + + * JupyterLab: &redirect=JupyterLab + + * Code Editor, based on Code-OSS, Visual Studio Code - Open Source: &redirect=CodeEditor + type: string type: object type: object served: true diff --git a/pkg/resource/space/delta.go b/pkg/resource/space/delta.go index f28408b2..a2a69f03 100644 --- a/pkg/resource/space/delta.go +++ b/pkg/resource/space/delta.go @@ -356,11 +356,6 @@ func newResourceDelta( } } } - desiredACKTags, _ := convertToOrderedACKTags(a.ko.Spec.Tags) - latestACKTags, _ := convertToOrderedACKTags(b.ko.Spec.Tags) - if !ackcompare.MapStringStringEqual(desiredACKTags, latestACKTags) { - delta.Add("Spec.Tags", a.ko.Spec.Tags, b.ko.Spec.Tags) - } return delta } diff --git a/pkg/resource/space/sdk.go b/pkg/resource/space/sdk.go index 19226c22..e40a7ff5 100644 --- a/pkg/resource/space/sdk.go +++ b/pkg/resource/space/sdk.go @@ -81,7 +81,7 @@ func (rm *resourceManager) sdkFind( rm.metrics.RecordAPICall("READ_ONE", "DescribeSpace", err) if err != nil { var awsErr smithy.APIError - if errors.As(err, &awsErr) && awsErr.ErrorCode() == "UNKNOWN" { + if errors.As(err, &awsErr) && awsErr.ErrorCode() == "ResourceNotFound" { return nil, ackerr.NotFound } return nil, err @@ -91,11 +91,26 @@ func (rm *resourceManager) sdkFind( // the original Kubernetes object we passed to the function ko := r.ko.DeepCopy() + if resp.CreationTime != nil { + ko.Status.CreationTime = &metav1.Time{*resp.CreationTime} + } else { + ko.Status.CreationTime = nil + } if resp.DomainId != nil { ko.Spec.DomainID = resp.DomainId } else { ko.Spec.DomainID = nil } + if resp.FailureReason != nil { + ko.Status.FailureReason = resp.FailureReason + } else { + ko.Status.FailureReason = nil + } + if resp.HomeEfsFileSystemUid != nil { + ko.Status.HomeEFSFileSystemUID = resp.HomeEfsFileSystemUid + } else { + ko.Status.HomeEFSFileSystemUID = nil + } if resp.OwnershipSettings != nil { f5 := &svcapitypes.OwnershipSettings{} if resp.OwnershipSettings.OwnerUserProfileName != nil { @@ -333,8 +348,19 @@ func (rm *resourceManager) sdkFind( } else { ko.Spec.SpaceSharingSettings = nil } + if resp.Status != "" { + ko.Status.Status = aws.String(string(resp.Status)) + } else { + ko.Status.Status = nil + } + if resp.Url != nil { + ko.Status.URL = resp.Url + } else { + ko.Status.URL = nil + } rm.setStatusDefaults(ko) + rm.customDescribeSpaceSetOutput(ko) return &resource{ko}, nil } @@ -684,6 +710,9 @@ func (rm *resourceManager) sdkUpdate( defer func() { exit(err) }() + if err = rm.requeueUntilCanModify(ctx, latest); err != nil { + return nil, err + } input, err := rm.newUpdateRequestPayload(ctx, desired, delta) if err != nil { return nil, err @@ -961,6 +990,10 @@ func (rm *resourceManager) sdkDelete( defer func() { exit(err) }() + if err = rm.requeueUntilCanModify(ctx, r); err != nil { + return r, err + } + input, err := rm.newDeleteRequestPayload(r) if err != nil { return nil, err @@ -969,6 +1002,17 @@ func (rm *resourceManager) sdkDelete( _ = resp resp, err = rm.sdkapi.DeleteSpace(ctx, input) rm.metrics.RecordAPICall("DELETE", "DeleteSpace", err) + + if err == nil { + if observed, err := rm.sdkFind(ctx, r); err != ackerr.NotFound { + if err != nil { + return nil, err + } + r.SetStatus(observed) + return r, requeueWaitWhileDeleting + } + } + return nil, err } @@ -1088,6 +1132,20 @@ func (rm *resourceManager) updateConditions( // and if the exception indicates that it is a Terminal exception // 'Terminal' exception are specified in generator configuration func (rm *resourceManager) terminalAWSError(err error) bool { - // No terminal_errors specified for this resource in generator config - return false + if err == nil { + return false + } + + var terminalErr smithy.APIError + if !errors.As(err, &terminalErr) { + return false + } + switch terminalErr.ErrorCode() { + case "ResourceNotFound", + "ResourceInUse", + "ResourceLimitExceeded": + return true + default: + return false + } } From 0f2703c9fb0b78bcb7e81b44f71d0e95e549e531 Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Fri, 26 Sep 2025 22:41:23 +0000 Subject: [PATCH 3/6] add hooks.go --- pkg/resource/space/hooks.go | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 pkg/resource/space/hooks.go diff --git a/pkg/resource/space/hooks.go b/pkg/resource/space/hooks.go new file mode 100644 index 00000000..6d56bbfd --- /dev/null +++ b/pkg/resource/space/hooks.go @@ -0,0 +1,52 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"). You may +// not use this file except in compliance with the License. A copy of the +// License is located at +// +// http://aws.amazon.com/apache2.0/ +// +// or in the "license" file accompanying this file. This file 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 space + +import ( + "context" + "errors" + + ackrequeue "github.com/aws-controllers-k8s/runtime/pkg/requeue" + svcapitypes "github.com/aws-controllers-k8s/sagemaker-controller/apis/v1alpha1" + svccommon "github.com/aws-controllers-k8s/sagemaker-controller/pkg/common" + svcsdktypes "github.com/aws/aws-sdk-go-v2/service/sagemaker/types" +) + +var ( + modifyingStatuses = []string{ + string(svcsdktypes.SpaceStatusPending), + string(svcsdktypes.SpaceStatusUpdating), + string(svcsdktypes.SpaceStatusDeleting), + } + + resourceName = GroupKind.Kind + + requeueWaitWhileDeleting = ackrequeue.NeededAfter( + errors.New(resourceName+" is Deleting."), + ackrequeue.DefaultRequeueAfterDuration, + ) +) + +// requeueUntilCanModify creates and returns an +// ackrequeue error if a resource's latest status matches +// any of the defined modifying statuses below. +func (rm *resourceManager) requeueUntilCanModify(ctx context.Context, r *resource) error { + latestStatus := r.ko.Status.Status + return svccommon.RequeueIfModifying(latestStatus, &resourceName, &modifyingStatuses) +} + +// Sets the ResourceSynced condition to False if resource is being modified by AWS +func (rm *resourceManager) customDescribeSpaceSetOutput(ko *svcapitypes.Space) { + svccommon.SetSyncedCondition(&resource{ko}, ko.Status.Status, &resourceName, &modifyingStatuses) +} From 5afaf9831aed8a790106b813e3887909f125170c Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Mon, 29 Sep 2025 21:05:06 +0000 Subject: [PATCH 4/6] add codegen --- apis/v1alpha1/ack-generate-metadata.yaml | 4 ++-- pkg/resource/app/resource.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index e450d67b..17e0aa84 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,9 +1,9 @@ ack_generate_info: - build_date: "2025-09-26T22:37:19Z" + build_date: "2025-09-26T23:06:23Z" build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd go_version: go1.24.7 version: v0.52.0 -api_directory_checksum: 5cec8e23be2f264730caf3abe98a11c4213a6314 +api_directory_checksum: ad491b46632ad9a731b53a6637976ccffca1aab3 api_version: v1alpha1 aws_sdk_go_version: v1.32.6 generator_config_info: diff --git a/pkg/resource/app/resource.go b/pkg/resource/app/resource.go index d6b44f9e..35b438dc 100644 --- a/pkg/resource/app/resource.go +++ b/pkg/resource/app/resource.go @@ -124,7 +124,7 @@ func (r *resource) PopulateResourceFromAnnotation(fields map[string]string) erro if !ok { return ackerrors.NewTerminalError(fmt.Errorf("required field missing: appType")) } - r.ko.Spec.AppType = aws.String(string(&f1)) + r.ko.Spec.AppType = &f1 f2, ok := fields["domainID"] if !ok { return ackerrors.NewTerminalError(fmt.Errorf("required field missing: domainID")) From 8bb85511c2eb65a36df57d56559d634732f2bcf4 Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Mon, 29 Sep 2025 21:13:52 +0000 Subject: [PATCH 5/6] use code-gen latest --- apis/v1alpha1/ack-generate-metadata.yaml | 6 +++--- config/crd/bases/sagemaker.services.k8s.aws_apps.yaml | 2 +- ...agemaker.services.k8s.aws_dataqualityjobdefinitions.yaml | 2 +- config/crd/bases/sagemaker.services.k8s.aws_domains.yaml | 2 +- .../bases/sagemaker.services.k8s.aws_endpointconfigs.yaml | 2 +- config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_featuregroups.yaml | 2 +- ...sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml | 2 +- .../sagemaker.services.k8s.aws_inferencecomponents.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml | 2 +- .../sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml | 2 +- ....services.k8s.aws_modelexplainabilityjobdefinitions.yaml | 2 +- .../sagemaker.services.k8s.aws_modelpackagegroups.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml | 2 +- ...gemaker.services.k8s.aws_modelqualityjobdefinitions.yaml | 2 +- config/crd/bases/sagemaker.services.k8s.aws_models.yaml | 2 +- .../sagemaker.services.k8s.aws_monitoringschedules.yaml | 2 +- ...r.services.k8s.aws_notebookinstancelifecycleconfigs.yaml | 2 +- .../bases/sagemaker.services.k8s.aws_notebookinstances.yaml | 2 +- .../sagemaker.services.k8s.aws_pipelineexecutions.yaml | 2 +- config/crd/bases/sagemaker.services.k8s.aws_pipelines.yaml | 2 +- .../bases/sagemaker.services.k8s.aws_processingjobs.yaml | 2 +- config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml | 2 +- .../crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_apps.yaml | 2 +- ...agemaker.services.k8s.aws_dataqualityjobdefinitions.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_domains.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_endpoints.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_featuregroups.yaml | 2 +- ...sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml | 2 +- .../sagemaker.services.k8s.aws_inferencecomponents.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml | 2 +- .../sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml | 2 +- ....services.k8s.aws_modelexplainabilityjobdefinitions.yaml | 2 +- .../crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml | 2 +- ...gemaker.services.k8s.aws_modelqualityjobdefinitions.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_models.yaml | 2 +- .../sagemaker.services.k8s.aws_monitoringschedules.yaml | 2 +- ...r.services.k8s.aws_notebookinstancelifecycleconfigs.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml | 2 +- .../crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_pipelines.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_spaces.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml | 2 +- helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml | 2 +- helm/crds/services.k8s.aws_adoptedresources.yaml | 2 +- helm/crds/services.k8s.aws_fieldexports.yaml | 2 +- 53 files changed, 55 insertions(+), 55 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index 17e0aa84..c625ec02 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,8 +1,8 @@ ack_generate_info: - build_date: "2025-09-26T23:06:23Z" - build_hash: 6b4211163dcc34776b01da9a18217bac0f4103fd + build_date: "2025-09-29T21:11:40Z" + build_hash: ef6e2f362a0f93d4a063b0a2b416f7ab0a156843 go_version: go1.24.7 - version: v0.52.0 + version: v0.52.0-4-gef6e2f3 api_directory_checksum: ad491b46632ad9a731b53a6637976ccffca1aab3 api_version: v1alpha1 aws_sdk_go_version: v1.32.6 diff --git a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml index 9e26ff27..92c96058 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: apps.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml index da1d244e..51858f5d 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: dataqualityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml index 01566db7..29088eb0 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: domains.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml index 3cfef099..6726ed68 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: endpointconfigs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml b/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml index a11bb042..4a4803cc 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: endpoints.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_featuregroups.yaml b/config/crd/bases/sagemaker.services.k8s.aws_featuregroups.yaml index 3999f26b..58259aca 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_featuregroups.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_featuregroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: featuregroups.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml index cebc2e5a..7863b3d3 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: hyperparametertuningjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_inferencecomponents.yaml b/config/crd/bases/sagemaker.services.k8s.aws_inferencecomponents.yaml index 94b43623..fbd1d09a 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_inferencecomponents.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_inferencecomponents.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: inferencecomponents.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml index bc92b22f..ac995a8f 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: labelingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml index 304bc5da..85581ad3 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelbiasjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml index 76e30d6d..fa094e9b 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelexplainabilityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml index 46379668..6400cca1 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelpackagegroups.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml index c5ac190d..582121a6 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelpackages.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml index 6d72c2e7..4222cb12 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelqualityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_models.yaml b/config/crd/bases/sagemaker.services.k8s.aws_models.yaml index 9caecf22..3805e7a5 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_models.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_models.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: models.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_monitoringschedules.yaml b/config/crd/bases/sagemaker.services.k8s.aws_monitoringschedules.yaml index d2f3d6e9..33e62e2c 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_monitoringschedules.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_monitoringschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: monitoringschedules.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml index 14990118..4f468c9e 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: notebookinstancelifecycleconfigs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml index bc6c8d09..072fb7cf 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: notebookinstances.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml index de93945e..23028dfe 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: pipelineexecutions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_pipelines.yaml b/config/crd/bases/sagemaker.services.k8s.aws_pipelines.yaml index c69e8e69..2ddf416a 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_pipelines.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_pipelines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: pipelines.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml index a3ff70b9..aacf1f40 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: processingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml index c7f8aa74..61aae9b8 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: spaces.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml index 60ea2dac..21d6463a 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: trainingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml index 43ae3ba5..082e604d 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: transformjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml index 75b00d23..7b79e17b 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: userprofiles.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_apps.yaml b/helm/crds/sagemaker.services.k8s.aws_apps.yaml index 9e26ff27..92c96058 100644 --- a/helm/crds/sagemaker.services.k8s.aws_apps.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_apps.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: apps.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml index da1d244e..51858f5d 100644 --- a/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: dataqualityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_domains.yaml b/helm/crds/sagemaker.services.k8s.aws_domains.yaml index 66473f03..b7ff02e6 100644 --- a/helm/crds/sagemaker.services.k8s.aws_domains.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_domains.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: domains.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml b/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml index 6ed06535..d656abcb 100644 --- a/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: endpointconfigs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml b/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml index a11bb042..4a4803cc 100644 --- a/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: endpoints.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_featuregroups.yaml b/helm/crds/sagemaker.services.k8s.aws_featuregroups.yaml index 99958054..69cde422 100644 --- a/helm/crds/sagemaker.services.k8s.aws_featuregroups.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_featuregroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: featuregroups.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml index c99ec6bb..1e6742bd 100644 --- a/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: hyperparametertuningjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_inferencecomponents.yaml b/helm/crds/sagemaker.services.k8s.aws_inferencecomponents.yaml index 94b43623..fbd1d09a 100644 --- a/helm/crds/sagemaker.services.k8s.aws_inferencecomponents.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_inferencecomponents.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: inferencecomponents.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml index 97cfe08b..f30442f2 100644 --- a/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: labelingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml index 304bc5da..85581ad3 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelbiasjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml index 76e30d6d..fa094e9b 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelexplainabilityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml b/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml index 46379668..6400cca1 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelpackagegroups.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml b/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml index 48403f82..92ccf7bf 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelpackages.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml index 6d72c2e7..4222cb12 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: modelqualityjobdefinitions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_models.yaml b/helm/crds/sagemaker.services.k8s.aws_models.yaml index 9caecf22..3805e7a5 100644 --- a/helm/crds/sagemaker.services.k8s.aws_models.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_models.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: models.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_monitoringschedules.yaml b/helm/crds/sagemaker.services.k8s.aws_monitoringschedules.yaml index d2f3d6e9..33e62e2c 100644 --- a/helm/crds/sagemaker.services.k8s.aws_monitoringschedules.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_monitoringschedules.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: monitoringschedules.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml b/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml index 14990118..4f468c9e 100644 --- a/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: notebookinstancelifecycleconfigs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml b/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml index bc6c8d09..072fb7cf 100644 --- a/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: notebookinstances.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml b/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml index de93945e..23028dfe 100644 --- a/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: pipelineexecutions.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_pipelines.yaml b/helm/crds/sagemaker.services.k8s.aws_pipelines.yaml index c69e8e69..2ddf416a 100644 --- a/helm/crds/sagemaker.services.k8s.aws_pipelines.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_pipelines.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: pipelines.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml index 42cd5d25..1eabfdcb 100644 --- a/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: processingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml index c7f8aa74..61aae9b8 100644 --- a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: spaces.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml index 5d94f99e..832cbcc6 100644 --- a/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: trainingjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml index 425e3d04..045cc11a 100644 --- a/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: transformjobs.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml index 75b00d23..7b79e17b 100644 --- a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: userprofiles.sagemaker.services.k8s.aws spec: group: sagemaker.services.k8s.aws diff --git a/helm/crds/services.k8s.aws_adoptedresources.yaml b/helm/crds/services.k8s.aws_adoptedresources.yaml index b7be3224..d6cdd10f 100644 --- a/helm/crds/services.k8s.aws_adoptedresources.yaml +++ b/helm/crds/services.k8s.aws_adoptedresources.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: adoptedresources.services.k8s.aws spec: group: services.k8s.aws diff --git a/helm/crds/services.k8s.aws_fieldexports.yaml b/helm/crds/services.k8s.aws_fieldexports.yaml index 49b4f383..6e2c61e6 100644 --- a/helm/crds/services.k8s.aws_fieldexports.yaml +++ b/helm/crds/services.k8s.aws_fieldexports.yaml @@ -3,7 +3,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.2 + controller-gen.kubebuilder.io/version: v0.19.0 name: fieldexports.services.k8s.aws spec: group: services.k8s.aws From 9fcc363ec31933d83fbe6460f0432fd87cc3cb20 Mon Sep 17 00:00:00 2001 From: sirutBuasai Date: Mon, 29 Sep 2025 22:42:37 +0000 Subject: [PATCH 6/6] update sagemaker sdk version --- apis/v1alpha1/ack-generate-metadata.yaml | 8 +- apis/v1alpha1/app.go | 6 +- apis/v1alpha1/data_quality_job_definition.go | 4 +- apis/v1alpha1/domain.go | 21 +- apis/v1alpha1/endpoint_config.go | 8 +- apis/v1alpha1/enums.go | 1655 +++++++++++------ apis/v1alpha1/generator.yaml | 7 +- apis/v1alpha1/labeling_job.go | 23 +- apis/v1alpha1/model_bias_job_definition.go | 4 +- .../model_explainability_job_definition.go | 4 +- apis/v1alpha1/model_package.go | 11 +- apis/v1alpha1/model_package_group.go | 2 +- apis/v1alpha1/model_quality_job_definition.go | 4 +- apis/v1alpha1/notebook_instance.go | 33 +- .../notebook_instance_lifecycle_config.go | 5 + apis/v1alpha1/pipeline_execution.go | 2 + apis/v1alpha1/processing_job.go | 12 + apis/v1alpha1/training_job.go | 20 +- apis/v1alpha1/types.go | 793 ++++++-- apis/v1alpha1/zz_generated.deepcopy.go | 1551 ++++++++++++++- .../sagemaker.services.k8s.aws_apps.yaml | 8 +- ...ces.k8s.aws_dataqualityjobdefinitions.yaml | 4 +- .../sagemaker.services.k8s.aws_domains.yaml | 163 +- ...aker.services.k8s.aws_endpointconfigs.yaml | 24 +- .../sagemaker.services.k8s.aws_endpoints.yaml | 35 + ...ices.k8s.aws_hyperparametertuningjobs.yaml | 100 + ...gemaker.services.k8s.aws_labelingjobs.yaml | 23 +- ...vices.k8s.aws_modelbiasjobdefinitions.yaml | 4 +- ...aws_modelexplainabilityjobdefinitions.yaml | 4 +- ...r.services.k8s.aws_modelpackagegroups.yaml | 2 +- ...emaker.services.k8s.aws_modelpackages.yaml | 23 +- ...es.k8s.aws_modelqualityjobdefinitions.yaml | 4 +- .../sagemaker.services.k8s.aws_models.yaml | 8 + ....aws_notebookinstancelifecycleconfigs.yaml | 28 + ...er.services.k8s.aws_notebookinstances.yaml | 35 +- ...r.services.k8s.aws_pipelineexecutions.yaml | 4 + ...maker.services.k8s.aws_processingjobs.yaml | 12 + .../sagemaker.services.k8s.aws_spaces.yaml | 74 +- ...gemaker.services.k8s.aws_trainingjobs.yaml | 73 +- ...emaker.services.k8s.aws_transformjobs.yaml | 2 + ...gemaker.services.k8s.aws_userprofiles.yaml | 96 +- generator.yaml | 7 +- .../crds/sagemaker.services.k8s.aws_apps.yaml | 8 +- ...ces.k8s.aws_dataqualityjobdefinitions.yaml | 4 +- .../sagemaker.services.k8s.aws_domains.yaml | 163 +- ...aker.services.k8s.aws_endpointconfigs.yaml | 24 +- .../sagemaker.services.k8s.aws_endpoints.yaml | 35 + ...ices.k8s.aws_hyperparametertuningjobs.yaml | 100 + ...gemaker.services.k8s.aws_labelingjobs.yaml | 23 +- ...vices.k8s.aws_modelbiasjobdefinitions.yaml | 4 +- ...aws_modelexplainabilityjobdefinitions.yaml | 4 +- ...r.services.k8s.aws_modelpackagegroups.yaml | 2 +- ...emaker.services.k8s.aws_modelpackages.yaml | 23 +- ...es.k8s.aws_modelqualityjobdefinitions.yaml | 4 +- .../sagemaker.services.k8s.aws_models.yaml | 8 + ....aws_notebookinstancelifecycleconfigs.yaml | 28 + ...er.services.k8s.aws_notebookinstances.yaml | 35 +- ...r.services.k8s.aws_pipelineexecutions.yaml | 4 + ...maker.services.k8s.aws_processingjobs.yaml | 12 + .../sagemaker.services.k8s.aws_spaces.yaml | 74 +- ...gemaker.services.k8s.aws_trainingjobs.yaml | 73 +- ...emaker.services.k8s.aws_transformjobs.yaml | 2 + ...gemaker.services.k8s.aws_userprofiles.yaml | 96 +- pkg/resource/app/delta.go | 7 + pkg/resource/app/sdk.go | 54 +- pkg/resource/domain/delta.go | 85 + pkg/resource/domain/sdk.go | 215 ++- pkg/resource/endpoint/sdk.go | 125 +- pkg/resource/endpoint_config/sdk.go | 88 +- .../hyper_parameter_tuning_job/delta.go | 25 + .../hyper_parameter_tuning_job/sdk.go | 164 ++ pkg/resource/inference_component/sdk.go | 80 +- pkg/resource/model/delta.go | 14 + pkg/resource/model/sdk.go | 48 +- pkg/resource/model_package/sdk.go | 60 +- pkg/resource/notebook_instance/delta.go | 7 + pkg/resource/notebook_instance/sdk.go | 29 +- .../notebook_instance_lifecycle_config/sdk.go | 14 + pkg/resource/pipeline_execution/delta.go | 7 + pkg/resource/pipeline_execution/sdk.go | 48 +- pkg/resource/space/delta.go | 14 + pkg/resource/space/sdk.go | 110 +- pkg/resource/training_job/delta.go | 25 + pkg/resource/training_job/sdk.go | 82 + pkg/resource/transform_job/delta.go | 7 + pkg/resource/transform_job/sdk.go | 6 + pkg/resource/user_profile/sdk.go | 80 + 87 files changed, 5747 insertions(+), 1279 deletions(-) diff --git a/apis/v1alpha1/ack-generate-metadata.yaml b/apis/v1alpha1/ack-generate-metadata.yaml index c625ec02..1bc5998a 100755 --- a/apis/v1alpha1/ack-generate-metadata.yaml +++ b/apis/v1alpha1/ack-generate-metadata.yaml @@ -1,13 +1,13 @@ ack_generate_info: - build_date: "2025-09-29T21:11:40Z" + build_date: "2025-09-29T22:40:44Z" build_hash: ef6e2f362a0f93d4a063b0a2b416f7ab0a156843 go_version: go1.24.7 version: v0.52.0-4-gef6e2f3 -api_directory_checksum: ad491b46632ad9a731b53a6637976ccffca1aab3 +api_directory_checksum: 7235105a091a71624c1e092b9fe8a3f9ab4d0aae api_version: v1alpha1 -aws_sdk_go_version: v1.32.6 +aws_sdk_go_version: v1.39.2 generator_config_info: - file_checksum: 2026f25cbdeceddd056cc5ebe10c5bc8fc043a26 + file_checksum: 244ca38580f536707c0847c046b69b33d7c23b90 original_file_name: generator.yaml last_modification: reason: API generation diff --git a/apis/v1alpha1/app.go b/apis/v1alpha1/app.go index b222b670..9b1b4c95 100644 --- a/apis/v1alpha1/app.go +++ b/apis/v1alpha1/app.go @@ -36,8 +36,10 @@ type AppSpec struct { // Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` // +kubebuilder:validation:Required DomainID *string `json:"domainID"` - // The instance type and the Amazon Resource Name (ARN) of the SageMaker image - // created on the instance. + // Indicates whether the application is launched in recovery mode. + RecoveryMode *bool `json:"recoveryMode,omitempty"` + // The instance type and the Amazon Resource Name (ARN) of the SageMaker AI + // image created on the instance. // // The value of InstanceType passed as part of the ResourceSpec in the CreateApp // call overrides the value passed as part of the ResourceSpec configured for diff --git a/apis/v1alpha1/data_quality_job_definition.go b/apis/v1alpha1/data_quality_job_definition.go index e790acbd..1a5ca60d 100644 --- a/apis/v1alpha1/data_quality_job_definition.go +++ b/apis/v1alpha1/data_quality_job_definition.go @@ -43,8 +43,8 @@ type DataQualityJobDefinitionSpec struct { JobResources *MonitoringResources `json:"jobResources"` // Specifies networking configuration for the monitoring job. NetworkConfig *MonitoringNetworkConfig `json:"networkConfig,omitempty"` - // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - // to perform tasks on your behalf. + // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + // assume to perform tasks on your behalf. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` // +kubebuilder:validation:Required diff --git a/apis/v1alpha1/domain.go b/apis/v1alpha1/domain.go index f3540460..010d3fa3 100644 --- a/apis/v1alpha1/domain.go +++ b/apis/v1alpha1/domain.go @@ -26,7 +26,7 @@ type DomainSpec struct { // Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly. // // - PublicInternetOnly - Non-EFS traffic is through a VPC managed by Amazon - // SageMaker, which allows direct internet access + // SageMaker AI, which allows direct internet access // // - VpcOnly - All traffic is through the specified VPC and subnets AppNetworkAccessType *string `json:"appNetworkAccessType,omitempty"` @@ -58,15 +58,17 @@ type DomainSpec struct { // // Regex Pattern: `^[a-zA-Z0-9:/_-]*$` HomeEFSFileSystemKMSKeyID *string `json:"homeEFSFileSystemKMSKeyID,omitempty"` - // SageMaker uses Amazon Web Services KMS to encrypt EFS and EBS volumes attached - // to the domain with an Amazon Web Services managed key by default. For more - // control, specify a customer managed key. + // SageMaker AI uses Amazon Web Services KMS to encrypt EFS and EBS volumes + // attached to the domain with an Amazon Web Services managed key by default. + // For more control, specify a customer managed key. // // Regex Pattern: `^[a-zA-Z0-9:/_-]*$` KMSKeyID *string `json:"kmsKeyID,omitempty"` // The VPC subnets that the domain uses for communication. - // +kubebuilder:validation:Required - SubnetIDs []*string `json:"subnetIDs"` + // + // The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + // for domains created from Amazon SageMaker Unified Studio. + SubnetIDs []*string `json:"subnetIDs,omitempty"` // Tags to associated with the Domain. Each tag consists of a key and an optional // value. Tag keys must be unique per resource. Tags are searchable using the // Search API. @@ -77,9 +79,11 @@ type DomainSpec struct { // The ID of the Amazon Virtual Private Cloud (VPC) that the domain uses for // communication. // + // The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + // for domains created from Amazon SageMaker Unified Studio. + // // Regex Pattern: `^[-0-9a-zA-Z]+$` - // +kubebuilder:validation:Required - VPCID *string `json:"vpcID"` + VPCID *string `json:"vpcID,omitempty"` } // DomainStatus defines the observed state of Domain @@ -112,6 +116,7 @@ type DomainStatus struct { // +kubebuilder:object:root=true // +kubebuilder:subresource:status // +kubebuilder:printcolumn:name="DOMAIN-ID",type=string,priority=0,JSONPath=`.status.domainID` +// +kubebuilder:printcolumn:name="DOMAIN-ID",type=string,priority=0,JSONPath=`.status.domainID` // +kubebuilder:printcolumn:name="STATUS",type=string,priority=0,JSONPath=`.status.status` type Domain struct { metav1.TypeMeta `json:",inline"` diff --git a/apis/v1alpha1/endpoint_config.go b/apis/v1alpha1/endpoint_config.go index 925a5812..2bc32d27 100644 --- a/apis/v1alpha1/endpoint_config.go +++ b/apis/v1alpha1/endpoint_config.go @@ -39,11 +39,11 @@ type EndpointConfigSpec struct { // Regex Pattern: `^[a-zA-Z0-9](-*[a-zA-Z0-9]){0,62}$` // +kubebuilder:validation:Required EndpointConfigName *string `json:"endpointConfigName"` - // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - // to perform actions on your behalf. For more information, see SageMaker Roles - // (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). + // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + // assume to perform actions on your behalf. For more information, see SageMaker + // AI Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). // - // To be able to pass this role to Amazon SageMaker, the caller of this action + // To be able to pass this role to Amazon SageMaker AI, the caller of this action // must have the iam:PassRole permission. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` diff --git a/apis/v1alpha1/enums.go b/apis/v1alpha1/enums.go index 18b0034e..64017c9f 100644 --- a/apis/v1alpha1/enums.go +++ b/apis/v1alpha1/enums.go @@ -33,6 +33,13 @@ const ( ActionStatus_Unknown ActionStatus = "Unknown" ) +type ActivationState string + +const ( + ActivationState_Disabled ActivationState = "Disabled" + ActivationState_Enabled ActivationState = "Enabled" +) + type AdditionalS3DataSourceDataType string const ( @@ -194,6 +201,8 @@ const ( AppInstanceType_ml_p4d_24xlarge AppInstanceType = "ml.p4d.24xlarge" AppInstanceType_ml_p4de_24xlarge AppInstanceType = "ml.p4de.24xlarge" AppInstanceType_ml_p5_48xlarge AppInstanceType = "ml.p5.48xlarge" + AppInstanceType_ml_p5en_48xlarge AppInstanceType = "ml.p5en.48xlarge" + AppInstanceType_ml_p6_b200_48xlarge AppInstanceType = "ml.p6-b200.48xlarge" AppInstanceType_ml_r5_12xlarge AppInstanceType = "ml.r5.12xlarge" AppInstanceType_ml_r5_16xlarge AppInstanceType = "ml.r5.16xlarge" AppInstanceType_ml_r5_24xlarge AppInstanceType = "ml.r5.24xlarge" @@ -526,6 +535,13 @@ const ( AutotuneMode_Enabled AutotuneMode = "Enabled" ) +type BatchAddClusterNodesErrorCode string + +const ( + BatchAddClusterNodesErrorCode_InstanceGroupNotFound BatchAddClusterNodesErrorCode = "InstanceGroupNotFound" + BatchAddClusterNodesErrorCode_InvalidInstanceGroupStatus BatchAddClusterNodesErrorCode = "InvalidInstanceGroupStatus" +) + type BatchDeleteClusterNodesErrorCode string const ( @@ -574,6 +590,19 @@ const ( CandidateStepType_AWS__SageMaker__TransformJob CandidateStepType = "AWS::SageMaker::TransformJob" ) +type CapacityReservationPreference string + +const ( + CapacityReservationPreference_capacity_reservations_only CapacityReservationPreference = "capacity-reservations-only" +) + +type CapacityReservationType string + +const ( + CapacityReservationType_CRG CapacityReservationType = "CRG" + CapacityReservationType_ODCR CapacityReservationType = "ODCR" +) + type CapacitySizeType string const ( @@ -677,11 +706,49 @@ const ( ClarifyTextLanguage_zh ClarifyTextLanguage = "zh" ) +type ClusterAutoScalerType string + +const ( + ClusterAutoScalerType_Karpenter ClusterAutoScalerType = "Karpenter" +) + +type ClusterAutoScalingMode string + +const ( + ClusterAutoScalingMode_Disable ClusterAutoScalingMode = "Disable" + ClusterAutoScalingMode_Enable ClusterAutoScalingMode = "Enable" +) + +type ClusterAutoScalingStatus string + +const ( + ClusterAutoScalingStatus_Creating ClusterAutoScalingStatus = "Creating" + ClusterAutoScalingStatus_Deleting ClusterAutoScalingStatus = "Deleting" + ClusterAutoScalingStatus_Failed ClusterAutoScalingStatus = "Failed" + ClusterAutoScalingStatus_InService ClusterAutoScalingStatus = "InService" +) + +type ClusterConfigMode string + +const ( + ClusterConfigMode_Disable ClusterConfigMode = "Disable" + ClusterConfigMode_Enable ClusterConfigMode = "Enable" +) + +type ClusterEventResourceType string + +const ( + ClusterEventResourceType_Cluster ClusterEventResourceType = "Cluster" + ClusterEventResourceType_Instance ClusterEventResourceType = "Instance" + ClusterEventResourceType_InstanceGroup ClusterEventResourceType = "InstanceGroup" +) + type ClusterInstanceStatus string const ( ClusterInstanceStatus_DeepHealthCheckInProgress ClusterInstanceStatus = "DeepHealthCheckInProgress" ClusterInstanceStatus_Failure ClusterInstanceStatus = "Failure" + ClusterInstanceStatus_NotFound ClusterInstanceStatus = "NotFound" ClusterInstanceStatus_Pending ClusterInstanceStatus = "Pending" ClusterInstanceStatus_Running ClusterInstanceStatus = "Running" ClusterInstanceStatus_ShuttingDown ClusterInstanceStatus = "ShuttingDown" @@ -691,63 +758,125 @@ const ( type ClusterInstanceType string const ( - ClusterInstanceType_ml_c5_12xlarge ClusterInstanceType = "ml.c5.12xlarge" - ClusterInstanceType_ml_c5_18xlarge ClusterInstanceType = "ml.c5.18xlarge" - ClusterInstanceType_ml_c5_24xlarge ClusterInstanceType = "ml.c5.24xlarge" - ClusterInstanceType_ml_c5_2xlarge ClusterInstanceType = "ml.c5.2xlarge" - ClusterInstanceType_ml_c5_4xlarge ClusterInstanceType = "ml.c5.4xlarge" - ClusterInstanceType_ml_c5_9xlarge ClusterInstanceType = "ml.c5.9xlarge" - ClusterInstanceType_ml_c5_large ClusterInstanceType = "ml.c5.large" - ClusterInstanceType_ml_c5_xlarge ClusterInstanceType = "ml.c5.xlarge" - ClusterInstanceType_ml_c5n_18xlarge ClusterInstanceType = "ml.c5n.18xlarge" - ClusterInstanceType_ml_c5n_2xlarge ClusterInstanceType = "ml.c5n.2xlarge" - ClusterInstanceType_ml_c5n_4xlarge ClusterInstanceType = "ml.c5n.4xlarge" - ClusterInstanceType_ml_c5n_9xlarge ClusterInstanceType = "ml.c5n.9xlarge" - ClusterInstanceType_ml_c5n_large ClusterInstanceType = "ml.c5n.large" - ClusterInstanceType_ml_g5_12xlarge ClusterInstanceType = "ml.g5.12xlarge" - ClusterInstanceType_ml_g5_16xlarge ClusterInstanceType = "ml.g5.16xlarge" - ClusterInstanceType_ml_g5_24xlarge ClusterInstanceType = "ml.g5.24xlarge" - ClusterInstanceType_ml_g5_2xlarge ClusterInstanceType = "ml.g5.2xlarge" - ClusterInstanceType_ml_g5_48xlarge ClusterInstanceType = "ml.g5.48xlarge" - ClusterInstanceType_ml_g5_4xlarge ClusterInstanceType = "ml.g5.4xlarge" - ClusterInstanceType_ml_g5_8xlarge ClusterInstanceType = "ml.g5.8xlarge" - ClusterInstanceType_ml_g5_xlarge ClusterInstanceType = "ml.g5.xlarge" - ClusterInstanceType_ml_g6_12xlarge ClusterInstanceType = "ml.g6.12xlarge" - ClusterInstanceType_ml_g6_16xlarge ClusterInstanceType = "ml.g6.16xlarge" - ClusterInstanceType_ml_g6_24xlarge ClusterInstanceType = "ml.g6.24xlarge" - ClusterInstanceType_ml_g6_2xlarge ClusterInstanceType = "ml.g6.2xlarge" - ClusterInstanceType_ml_g6_48xlarge ClusterInstanceType = "ml.g6.48xlarge" - ClusterInstanceType_ml_g6_4xlarge ClusterInstanceType = "ml.g6.4xlarge" - ClusterInstanceType_ml_g6_8xlarge ClusterInstanceType = "ml.g6.8xlarge" - ClusterInstanceType_ml_g6_xlarge ClusterInstanceType = "ml.g6.xlarge" - ClusterInstanceType_ml_g6e_12xlarge ClusterInstanceType = "ml.g6e.12xlarge" - ClusterInstanceType_ml_g6e_16xlarge ClusterInstanceType = "ml.g6e.16xlarge" - ClusterInstanceType_ml_g6e_24xlarge ClusterInstanceType = "ml.g6e.24xlarge" - ClusterInstanceType_ml_g6e_2xlarge ClusterInstanceType = "ml.g6e.2xlarge" - ClusterInstanceType_ml_g6e_48xlarge ClusterInstanceType = "ml.g6e.48xlarge" - ClusterInstanceType_ml_g6e_4xlarge ClusterInstanceType = "ml.g6e.4xlarge" - ClusterInstanceType_ml_g6e_8xlarge ClusterInstanceType = "ml.g6e.8xlarge" - ClusterInstanceType_ml_g6e_xlarge ClusterInstanceType = "ml.g6e.xlarge" - ClusterInstanceType_ml_gr6_4xlarge ClusterInstanceType = "ml.gr6.4xlarge" - ClusterInstanceType_ml_gr6_8xlarge ClusterInstanceType = "ml.gr6.8xlarge" - ClusterInstanceType_ml_m5_12xlarge ClusterInstanceType = "ml.m5.12xlarge" - ClusterInstanceType_ml_m5_16xlarge ClusterInstanceType = "ml.m5.16xlarge" - ClusterInstanceType_ml_m5_24xlarge ClusterInstanceType = "ml.m5.24xlarge" - ClusterInstanceType_ml_m5_2xlarge ClusterInstanceType = "ml.m5.2xlarge" - ClusterInstanceType_ml_m5_4xlarge ClusterInstanceType = "ml.m5.4xlarge" - ClusterInstanceType_ml_m5_8xlarge ClusterInstanceType = "ml.m5.8xlarge" - ClusterInstanceType_ml_m5_large ClusterInstanceType = "ml.m5.large" - ClusterInstanceType_ml_m5_xlarge ClusterInstanceType = "ml.m5.xlarge" - ClusterInstanceType_ml_p4d_24xlarge ClusterInstanceType = "ml.p4d.24xlarge" - ClusterInstanceType_ml_p4de_24xlarge ClusterInstanceType = "ml.p4de.24xlarge" - ClusterInstanceType_ml_p5_48xlarge ClusterInstanceType = "ml.p5.48xlarge" - ClusterInstanceType_ml_p5e_48xlarge ClusterInstanceType = "ml.p5e.48xlarge" - ClusterInstanceType_ml_t3_2xlarge ClusterInstanceType = "ml.t3.2xlarge" - ClusterInstanceType_ml_t3_large ClusterInstanceType = "ml.t3.large" - ClusterInstanceType_ml_t3_medium ClusterInstanceType = "ml.t3.medium" - ClusterInstanceType_ml_t3_xlarge ClusterInstanceType = "ml.t3.xlarge" - ClusterInstanceType_ml_trn1_32xlarge ClusterInstanceType = "ml.trn1.32xlarge" - ClusterInstanceType_ml_trn1n_32xlarge ClusterInstanceType = "ml.trn1n.32xlarge" + ClusterInstanceType_ml_c5_12xlarge ClusterInstanceType = "ml.c5.12xlarge" + ClusterInstanceType_ml_c5_18xlarge ClusterInstanceType = "ml.c5.18xlarge" + ClusterInstanceType_ml_c5_24xlarge ClusterInstanceType = "ml.c5.24xlarge" + ClusterInstanceType_ml_c5_2xlarge ClusterInstanceType = "ml.c5.2xlarge" + ClusterInstanceType_ml_c5_4xlarge ClusterInstanceType = "ml.c5.4xlarge" + ClusterInstanceType_ml_c5_9xlarge ClusterInstanceType = "ml.c5.9xlarge" + ClusterInstanceType_ml_c5_large ClusterInstanceType = "ml.c5.large" + ClusterInstanceType_ml_c5_xlarge ClusterInstanceType = "ml.c5.xlarge" + ClusterInstanceType_ml_c5n_18xlarge ClusterInstanceType = "ml.c5n.18xlarge" + ClusterInstanceType_ml_c5n_2xlarge ClusterInstanceType = "ml.c5n.2xlarge" + ClusterInstanceType_ml_c5n_4xlarge ClusterInstanceType = "ml.c5n.4xlarge" + ClusterInstanceType_ml_c5n_9xlarge ClusterInstanceType = "ml.c5n.9xlarge" + ClusterInstanceType_ml_c5n_large ClusterInstanceType = "ml.c5n.large" + ClusterInstanceType_ml_c6i_12xlarge ClusterInstanceType = "ml.c6i.12xlarge" + ClusterInstanceType_ml_c6i_16xlarge ClusterInstanceType = "ml.c6i.16xlarge" + ClusterInstanceType_ml_c6i_24xlarge ClusterInstanceType = "ml.c6i.24xlarge" + ClusterInstanceType_ml_c6i_2xlarge ClusterInstanceType = "ml.c6i.2xlarge" + ClusterInstanceType_ml_c6i_32xlarge ClusterInstanceType = "ml.c6i.32xlarge" + ClusterInstanceType_ml_c6i_4xlarge ClusterInstanceType = "ml.c6i.4xlarge" + ClusterInstanceType_ml_c6i_8xlarge ClusterInstanceType = "ml.c6i.8xlarge" + ClusterInstanceType_ml_c6i_large ClusterInstanceType = "ml.c6i.large" + ClusterInstanceType_ml_c6i_xlarge ClusterInstanceType = "ml.c6i.xlarge" + ClusterInstanceType_ml_g5_12xlarge ClusterInstanceType = "ml.g5.12xlarge" + ClusterInstanceType_ml_g5_16xlarge ClusterInstanceType = "ml.g5.16xlarge" + ClusterInstanceType_ml_g5_24xlarge ClusterInstanceType = "ml.g5.24xlarge" + ClusterInstanceType_ml_g5_2xlarge ClusterInstanceType = "ml.g5.2xlarge" + ClusterInstanceType_ml_g5_48xlarge ClusterInstanceType = "ml.g5.48xlarge" + ClusterInstanceType_ml_g5_4xlarge ClusterInstanceType = "ml.g5.4xlarge" + ClusterInstanceType_ml_g5_8xlarge ClusterInstanceType = "ml.g5.8xlarge" + ClusterInstanceType_ml_g5_xlarge ClusterInstanceType = "ml.g5.xlarge" + ClusterInstanceType_ml_g6_12xlarge ClusterInstanceType = "ml.g6.12xlarge" + ClusterInstanceType_ml_g6_16xlarge ClusterInstanceType = "ml.g6.16xlarge" + ClusterInstanceType_ml_g6_24xlarge ClusterInstanceType = "ml.g6.24xlarge" + ClusterInstanceType_ml_g6_2xlarge ClusterInstanceType = "ml.g6.2xlarge" + ClusterInstanceType_ml_g6_48xlarge ClusterInstanceType = "ml.g6.48xlarge" + ClusterInstanceType_ml_g6_4xlarge ClusterInstanceType = "ml.g6.4xlarge" + ClusterInstanceType_ml_g6_8xlarge ClusterInstanceType = "ml.g6.8xlarge" + ClusterInstanceType_ml_g6_xlarge ClusterInstanceType = "ml.g6.xlarge" + ClusterInstanceType_ml_g6e_12xlarge ClusterInstanceType = "ml.g6e.12xlarge" + ClusterInstanceType_ml_g6e_16xlarge ClusterInstanceType = "ml.g6e.16xlarge" + ClusterInstanceType_ml_g6e_24xlarge ClusterInstanceType = "ml.g6e.24xlarge" + ClusterInstanceType_ml_g6e_2xlarge ClusterInstanceType = "ml.g6e.2xlarge" + ClusterInstanceType_ml_g6e_48xlarge ClusterInstanceType = "ml.g6e.48xlarge" + ClusterInstanceType_ml_g6e_4xlarge ClusterInstanceType = "ml.g6e.4xlarge" + ClusterInstanceType_ml_g6e_8xlarge ClusterInstanceType = "ml.g6e.8xlarge" + ClusterInstanceType_ml_g6e_xlarge ClusterInstanceType = "ml.g6e.xlarge" + ClusterInstanceType_ml_gr6_4xlarge ClusterInstanceType = "ml.gr6.4xlarge" + ClusterInstanceType_ml_gr6_8xlarge ClusterInstanceType = "ml.gr6.8xlarge" + ClusterInstanceType_ml_i3en_12xlarge ClusterInstanceType = "ml.i3en.12xlarge" + ClusterInstanceType_ml_i3en_24xlarge ClusterInstanceType = "ml.i3en.24xlarge" + ClusterInstanceType_ml_i3en_2xlarge ClusterInstanceType = "ml.i3en.2xlarge" + ClusterInstanceType_ml_i3en_3xlarge ClusterInstanceType = "ml.i3en.3xlarge" + ClusterInstanceType_ml_i3en_6xlarge ClusterInstanceType = "ml.i3en.6xlarge" + ClusterInstanceType_ml_i3en_large ClusterInstanceType = "ml.i3en.large" + ClusterInstanceType_ml_i3en_xlarge ClusterInstanceType = "ml.i3en.xlarge" + ClusterInstanceType_ml_m5_12xlarge ClusterInstanceType = "ml.m5.12xlarge" + ClusterInstanceType_ml_m5_16xlarge ClusterInstanceType = "ml.m5.16xlarge" + ClusterInstanceType_ml_m5_24xlarge ClusterInstanceType = "ml.m5.24xlarge" + ClusterInstanceType_ml_m5_2xlarge ClusterInstanceType = "ml.m5.2xlarge" + ClusterInstanceType_ml_m5_4xlarge ClusterInstanceType = "ml.m5.4xlarge" + ClusterInstanceType_ml_m5_8xlarge ClusterInstanceType = "ml.m5.8xlarge" + ClusterInstanceType_ml_m5_large ClusterInstanceType = "ml.m5.large" + ClusterInstanceType_ml_m5_xlarge ClusterInstanceType = "ml.m5.xlarge" + ClusterInstanceType_ml_m6i_12xlarge ClusterInstanceType = "ml.m6i.12xlarge" + ClusterInstanceType_ml_m6i_16xlarge ClusterInstanceType = "ml.m6i.16xlarge" + ClusterInstanceType_ml_m6i_24xlarge ClusterInstanceType = "ml.m6i.24xlarge" + ClusterInstanceType_ml_m6i_2xlarge ClusterInstanceType = "ml.m6i.2xlarge" + ClusterInstanceType_ml_m6i_32xlarge ClusterInstanceType = "ml.m6i.32xlarge" + ClusterInstanceType_ml_m6i_4xlarge ClusterInstanceType = "ml.m6i.4xlarge" + ClusterInstanceType_ml_m6i_8xlarge ClusterInstanceType = "ml.m6i.8xlarge" + ClusterInstanceType_ml_m6i_large ClusterInstanceType = "ml.m6i.large" + ClusterInstanceType_ml_m6i_xlarge ClusterInstanceType = "ml.m6i.xlarge" + ClusterInstanceType_ml_m7i_12xlarge ClusterInstanceType = "ml.m7i.12xlarge" + ClusterInstanceType_ml_m7i_16xlarge ClusterInstanceType = "ml.m7i.16xlarge" + ClusterInstanceType_ml_m7i_24xlarge ClusterInstanceType = "ml.m7i.24xlarge" + ClusterInstanceType_ml_m7i_2xlarge ClusterInstanceType = "ml.m7i.2xlarge" + ClusterInstanceType_ml_m7i_48xlarge ClusterInstanceType = "ml.m7i.48xlarge" + ClusterInstanceType_ml_m7i_4xlarge ClusterInstanceType = "ml.m7i.4xlarge" + ClusterInstanceType_ml_m7i_8xlarge ClusterInstanceType = "ml.m7i.8xlarge" + ClusterInstanceType_ml_m7i_large ClusterInstanceType = "ml.m7i.large" + ClusterInstanceType_ml_m7i_xlarge ClusterInstanceType = "ml.m7i.xlarge" + ClusterInstanceType_ml_p4d_24xlarge ClusterInstanceType = "ml.p4d.24xlarge" + ClusterInstanceType_ml_p4de_24xlarge ClusterInstanceType = "ml.p4de.24xlarge" + ClusterInstanceType_ml_p5_48xlarge ClusterInstanceType = "ml.p5.48xlarge" + ClusterInstanceType_ml_p5e_48xlarge ClusterInstanceType = "ml.p5e.48xlarge" + ClusterInstanceType_ml_p5en_48xlarge ClusterInstanceType = "ml.p5en.48xlarge" + ClusterInstanceType_ml_p6_b200_48xlarge ClusterInstanceType = "ml.p6-b200.48xlarge" + ClusterInstanceType_ml_p6e_gb200_36xlarge ClusterInstanceType = "ml.p6e-gb200.36xlarge" + ClusterInstanceType_ml_r6i_12xlarge ClusterInstanceType = "ml.r6i.12xlarge" + ClusterInstanceType_ml_r6i_16xlarge ClusterInstanceType = "ml.r6i.16xlarge" + ClusterInstanceType_ml_r6i_24xlarge ClusterInstanceType = "ml.r6i.24xlarge" + ClusterInstanceType_ml_r6i_2xlarge ClusterInstanceType = "ml.r6i.2xlarge" + ClusterInstanceType_ml_r6i_32xlarge ClusterInstanceType = "ml.r6i.32xlarge" + ClusterInstanceType_ml_r6i_4xlarge ClusterInstanceType = "ml.r6i.4xlarge" + ClusterInstanceType_ml_r6i_8xlarge ClusterInstanceType = "ml.r6i.8xlarge" + ClusterInstanceType_ml_r6i_large ClusterInstanceType = "ml.r6i.large" + ClusterInstanceType_ml_r6i_xlarge ClusterInstanceType = "ml.r6i.xlarge" + ClusterInstanceType_ml_r7i_12xlarge ClusterInstanceType = "ml.r7i.12xlarge" + ClusterInstanceType_ml_r7i_16xlarge ClusterInstanceType = "ml.r7i.16xlarge" + ClusterInstanceType_ml_r7i_24xlarge ClusterInstanceType = "ml.r7i.24xlarge" + ClusterInstanceType_ml_r7i_2xlarge ClusterInstanceType = "ml.r7i.2xlarge" + ClusterInstanceType_ml_r7i_48xlarge ClusterInstanceType = "ml.r7i.48xlarge" + ClusterInstanceType_ml_r7i_4xlarge ClusterInstanceType = "ml.r7i.4xlarge" + ClusterInstanceType_ml_r7i_8xlarge ClusterInstanceType = "ml.r7i.8xlarge" + ClusterInstanceType_ml_r7i_large ClusterInstanceType = "ml.r7i.large" + ClusterInstanceType_ml_r7i_xlarge ClusterInstanceType = "ml.r7i.xlarge" + ClusterInstanceType_ml_t3_2xlarge ClusterInstanceType = "ml.t3.2xlarge" + ClusterInstanceType_ml_t3_large ClusterInstanceType = "ml.t3.large" + ClusterInstanceType_ml_t3_medium ClusterInstanceType = "ml.t3.medium" + ClusterInstanceType_ml_t3_xlarge ClusterInstanceType = "ml.t3.xlarge" + ClusterInstanceType_ml_trn1_32xlarge ClusterInstanceType = "ml.trn1.32xlarge" + ClusterInstanceType_ml_trn1n_32xlarge ClusterInstanceType = "ml.trn1n.32xlarge" + ClusterInstanceType_ml_trn2_48xlarge ClusterInstanceType = "ml.trn2.48xlarge" +) + +type ClusterNodeProvisioningMode string + +const ( + ClusterNodeProvisioningMode_Continuous ClusterNodeProvisioningMode = "Continuous" ) type ClusterNodeRecovery string @@ -997,6 +1126,12 @@ const ( EndpointStatus_SDK_Updating EndpointStatus_SDK = "Updating" ) +type EventSortBy string + +const ( + EventSortBy_EventTime EventSortBy = "EventTime" +) + type ExecutionStatus string const ( @@ -1016,6 +1151,13 @@ const ( FailureHandlingPolicy_ROLLBACK_ON_FAILURE FailureHandlingPolicy = "ROLLBACK_ON_FAILURE" ) +type FairShare string + +const ( + FairShare_Disabled FairShare = "Disabled" + FairShare_Enabled FairShare = "Enabled" +) + type FeatureGroupSortBy string const ( @@ -1136,6 +1278,7 @@ type HubContentSupportStatus string const ( HubContentSupportStatus_Deprecated HubContentSupportStatus = "Deprecated" + HubContentSupportStatus_Restricted HubContentSupportStatus = "Restricted" HubContentSupportStatus_Supported HubContentSupportStatus = "Supported" ) @@ -1233,6 +1376,13 @@ const ( HyperParameterTuningJobWarmStartType_TransferLearning HyperParameterTuningJobWarmStartType = "TransferLearning" ) +type IPAddressType string + +const ( + IPAddressType_dualstack IPAddressType = "dualstack" + IPAddressType_ipv4 IPAddressType = "ipv4" +) + type ImageSortBy string const ( @@ -1285,6 +1435,13 @@ const ( ImageVersionStatus_DELETING ImageVersionStatus = "DELETING" ) +type InferenceComponentCapacitySizeType string + +const ( + InferenceComponentCapacitySizeType_CAPACITY_PERCENT InferenceComponentCapacitySizeType = "CAPACITY_PERCENT" + InferenceComponentCapacitySizeType_COPY_COUNT InferenceComponentCapacitySizeType = "COPY_COUNT" +) + type InferenceComponentSortKey string const ( @@ -1343,181 +1500,194 @@ const ( InputMode_Pipe InputMode = "Pipe" ) +type InstanceGroupStatus string + +const ( + InstanceGroupStatus_Creating InstanceGroupStatus = "Creating" + InstanceGroupStatus_Degraded InstanceGroupStatus = "Degraded" + InstanceGroupStatus_Deleting InstanceGroupStatus = "Deleting" + InstanceGroupStatus_Failed InstanceGroupStatus = "Failed" + InstanceGroupStatus_InService InstanceGroupStatus = "InService" + InstanceGroupStatus_SystemUpdating InstanceGroupStatus = "SystemUpdating" + InstanceGroupStatus_Updating InstanceGroupStatus = "Updating" +) + type InstanceType string const ( - InstanceType_ml_c4_2xlarge InstanceType = "ml.c4.2xlarge" - InstanceType_ml_c4_4xlarge InstanceType = "ml.c4.4xlarge" - InstanceType_ml_c4_8xlarge InstanceType = "ml.c4.8xlarge" - InstanceType_ml_c4_xlarge InstanceType = "ml.c4.xlarge" - InstanceType_ml_c5_18xlarge InstanceType = "ml.c5.18xlarge" - InstanceType_ml_c5_2xlarge InstanceType = "ml.c5.2xlarge" - InstanceType_ml_c5_4xlarge InstanceType = "ml.c5.4xlarge" - InstanceType_ml_c5_9xlarge InstanceType = "ml.c5.9xlarge" - InstanceType_ml_c5_xlarge InstanceType = "ml.c5.xlarge" - InstanceType_ml_c5d_18xlarge InstanceType = "ml.c5d.18xlarge" - InstanceType_ml_c5d_2xlarge InstanceType = "ml.c5d.2xlarge" - InstanceType_ml_c5d_4xlarge InstanceType = "ml.c5d.4xlarge" - InstanceType_ml_c5d_9xlarge InstanceType = "ml.c5d.9xlarge" - InstanceType_ml_c5d_xlarge InstanceType = "ml.c5d.xlarge" - InstanceType_ml_c6i_12xlarge InstanceType = "ml.c6i.12xlarge" - InstanceType_ml_c6i_16xlarge InstanceType = "ml.c6i.16xlarge" - InstanceType_ml_c6i_24xlarge InstanceType = "ml.c6i.24xlarge" - InstanceType_ml_c6i_2xlarge InstanceType = "ml.c6i.2xlarge" - InstanceType_ml_c6i_32xlarge InstanceType = "ml.c6i.32xlarge" - InstanceType_ml_c6i_4xlarge InstanceType = "ml.c6i.4xlarge" - InstanceType_ml_c6i_8xlarge InstanceType = "ml.c6i.8xlarge" - InstanceType_ml_c6i_large InstanceType = "ml.c6i.large" - InstanceType_ml_c6i_xlarge InstanceType = "ml.c6i.xlarge" - InstanceType_ml_c6id_12xlarge InstanceType = "ml.c6id.12xlarge" - InstanceType_ml_c6id_16xlarge InstanceType = "ml.c6id.16xlarge" - InstanceType_ml_c6id_24xlarge InstanceType = "ml.c6id.24xlarge" - InstanceType_ml_c6id_2xlarge InstanceType = "ml.c6id.2xlarge" - InstanceType_ml_c6id_32xlarge InstanceType = "ml.c6id.32xlarge" - InstanceType_ml_c6id_4xlarge InstanceType = "ml.c6id.4xlarge" - InstanceType_ml_c6id_8xlarge InstanceType = "ml.c6id.8xlarge" - InstanceType_ml_c6id_large InstanceType = "ml.c6id.large" - InstanceType_ml_c6id_xlarge InstanceType = "ml.c6id.xlarge" - InstanceType_ml_c7i_12xlarge InstanceType = "ml.c7i.12xlarge" - InstanceType_ml_c7i_16xlarge InstanceType = "ml.c7i.16xlarge" - InstanceType_ml_c7i_24xlarge InstanceType = "ml.c7i.24xlarge" - InstanceType_ml_c7i_2xlarge InstanceType = "ml.c7i.2xlarge" - InstanceType_ml_c7i_48xlarge InstanceType = "ml.c7i.48xlarge" - InstanceType_ml_c7i_4xlarge InstanceType = "ml.c7i.4xlarge" - InstanceType_ml_c7i_8xlarge InstanceType = "ml.c7i.8xlarge" - InstanceType_ml_c7i_large InstanceType = "ml.c7i.large" - InstanceType_ml_c7i_xlarge InstanceType = "ml.c7i.xlarge" - InstanceType_ml_g4dn_12xlarge InstanceType = "ml.g4dn.12xlarge" - InstanceType_ml_g4dn_16xlarge InstanceType = "ml.g4dn.16xlarge" - InstanceType_ml_g4dn_2xlarge InstanceType = "ml.g4dn.2xlarge" - InstanceType_ml_g4dn_4xlarge InstanceType = "ml.g4dn.4xlarge" - InstanceType_ml_g4dn_8xlarge InstanceType = "ml.g4dn.8xlarge" - InstanceType_ml_g4dn_xlarge InstanceType = "ml.g4dn.xlarge" - InstanceType_ml_g5_12xlarge InstanceType = "ml.g5.12xlarge" - InstanceType_ml_g5_16xlarge InstanceType = "ml.g5.16xlarge" - InstanceType_ml_g5_24xlarge InstanceType = "ml.g5.24xlarge" - InstanceType_ml_g5_2xlarge InstanceType = "ml.g5.2xlarge" - InstanceType_ml_g5_48xlarge InstanceType = "ml.g5.48xlarge" - InstanceType_ml_g5_4xlarge InstanceType = "ml.g5.4xlarge" - InstanceType_ml_g5_8xlarge InstanceType = "ml.g5.8xlarge" - InstanceType_ml_g5_xlarge InstanceType = "ml.g5.xlarge" - InstanceType_ml_g6_12xlarge InstanceType = "ml.g6.12xlarge" - InstanceType_ml_g6_16xlarge InstanceType = "ml.g6.16xlarge" - InstanceType_ml_g6_24xlarge InstanceType = "ml.g6.24xlarge" - InstanceType_ml_g6_2xlarge InstanceType = "ml.g6.2xlarge" - InstanceType_ml_g6_48xlarge InstanceType = "ml.g6.48xlarge" - InstanceType_ml_g6_4xlarge InstanceType = "ml.g6.4xlarge" - InstanceType_ml_g6_8xlarge InstanceType = "ml.g6.8xlarge" - InstanceType_ml_g6_xlarge InstanceType = "ml.g6.xlarge" - InstanceType_ml_inf1_24xlarge InstanceType = "ml.inf1.24xlarge" - InstanceType_ml_inf1_2xlarge InstanceType = "ml.inf1.2xlarge" - InstanceType_ml_inf1_6xlarge InstanceType = "ml.inf1.6xlarge" - InstanceType_ml_inf1_xlarge InstanceType = "ml.inf1.xlarge" - InstanceType_ml_inf2_24xlarge InstanceType = "ml.inf2.24xlarge" - InstanceType_ml_inf2_48xlarge InstanceType = "ml.inf2.48xlarge" - InstanceType_ml_inf2_8xlarge InstanceType = "ml.inf2.8xlarge" - InstanceType_ml_inf2_xlarge InstanceType = "ml.inf2.xlarge" - InstanceType_ml_m4_10xlarge InstanceType = "ml.m4.10xlarge" - InstanceType_ml_m4_16xlarge InstanceType = "ml.m4.16xlarge" - InstanceType_ml_m4_2xlarge InstanceType = "ml.m4.2xlarge" - InstanceType_ml_m4_4xlarge InstanceType = "ml.m4.4xlarge" - InstanceType_ml_m4_xlarge InstanceType = "ml.m4.xlarge" - InstanceType_ml_m5_12xlarge InstanceType = "ml.m5.12xlarge" - InstanceType_ml_m5_24xlarge InstanceType = "ml.m5.24xlarge" - InstanceType_ml_m5_2xlarge InstanceType = "ml.m5.2xlarge" - InstanceType_ml_m5_4xlarge InstanceType = "ml.m5.4xlarge" - InstanceType_ml_m5_xlarge InstanceType = "ml.m5.xlarge" - InstanceType_ml_m5d_12xlarge InstanceType = "ml.m5d.12xlarge" - InstanceType_ml_m5d_16xlarge InstanceType = "ml.m5d.16xlarge" - InstanceType_ml_m5d_24xlarge InstanceType = "ml.m5d.24xlarge" - InstanceType_ml_m5d_2xlarge InstanceType = "ml.m5d.2xlarge" - InstanceType_ml_m5d_4xlarge InstanceType = "ml.m5d.4xlarge" - InstanceType_ml_m5d_8xlarge InstanceType = "ml.m5d.8xlarge" - InstanceType_ml_m5d_large InstanceType = "ml.m5d.large" - InstanceType_ml_m5d_xlarge InstanceType = "ml.m5d.xlarge" - InstanceType_ml_m6i_12xlarge InstanceType = "ml.m6i.12xlarge" - InstanceType_ml_m6i_16xlarge InstanceType = "ml.m6i.16xlarge" - InstanceType_ml_m6i_24xlarge InstanceType = "ml.m6i.24xlarge" - InstanceType_ml_m6i_2xlarge InstanceType = "ml.m6i.2xlarge" - InstanceType_ml_m6i_32xlarge InstanceType = "ml.m6i.32xlarge" - InstanceType_ml_m6i_4xlarge InstanceType = "ml.m6i.4xlarge" - InstanceType_ml_m6i_8xlarge InstanceType = "ml.m6i.8xlarge" - InstanceType_ml_m6i_large InstanceType = "ml.m6i.large" - InstanceType_ml_m6i_xlarge InstanceType = "ml.m6i.xlarge" - InstanceType_ml_m6id_12xlarge InstanceType = "ml.m6id.12xlarge" - InstanceType_ml_m6id_16xlarge InstanceType = "ml.m6id.16xlarge" - InstanceType_ml_m6id_24xlarge InstanceType = "ml.m6id.24xlarge" - InstanceType_ml_m6id_2xlarge InstanceType = "ml.m6id.2xlarge" - InstanceType_ml_m6id_32xlarge InstanceType = "ml.m6id.32xlarge" - InstanceType_ml_m6id_4xlarge InstanceType = "ml.m6id.4xlarge" - InstanceType_ml_m6id_8xlarge InstanceType = "ml.m6id.8xlarge" - InstanceType_ml_m6id_large InstanceType = "ml.m6id.large" - InstanceType_ml_m6id_xlarge InstanceType = "ml.m6id.xlarge" - InstanceType_ml_m7i_12xlarge InstanceType = "ml.m7i.12xlarge" - InstanceType_ml_m7i_16xlarge InstanceType = "ml.m7i.16xlarge" - InstanceType_ml_m7i_24xlarge InstanceType = "ml.m7i.24xlarge" - InstanceType_ml_m7i_2xlarge InstanceType = "ml.m7i.2xlarge" - InstanceType_ml_m7i_48xlarge InstanceType = "ml.m7i.48xlarge" - InstanceType_ml_m7i_4xlarge InstanceType = "ml.m7i.4xlarge" - InstanceType_ml_m7i_8xlarge InstanceType = "ml.m7i.8xlarge" - InstanceType_ml_m7i_large InstanceType = "ml.m7i.large" - InstanceType_ml_m7i_xlarge InstanceType = "ml.m7i.xlarge" - InstanceType_ml_p2_16xlarge InstanceType = "ml.p2.16xlarge" - InstanceType_ml_p2_8xlarge InstanceType = "ml.p2.8xlarge" - InstanceType_ml_p2_xlarge InstanceType = "ml.p2.xlarge" - InstanceType_ml_p3_16xlarge InstanceType = "ml.p3.16xlarge" - InstanceType_ml_p3_2xlarge InstanceType = "ml.p3.2xlarge" - InstanceType_ml_p3_8xlarge InstanceType = "ml.p3.8xlarge" - InstanceType_ml_p3dn_24xlarge InstanceType = "ml.p3dn.24xlarge" - InstanceType_ml_p4d_24xlarge InstanceType = "ml.p4d.24xlarge" - InstanceType_ml_p4de_24xlarge InstanceType = "ml.p4de.24xlarge" - InstanceType_ml_p5_48xlarge InstanceType = "ml.p5.48xlarge" - InstanceType_ml_r5_12xlarge InstanceType = "ml.r5.12xlarge" - InstanceType_ml_r5_16xlarge InstanceType = "ml.r5.16xlarge" - InstanceType_ml_r5_24xlarge InstanceType = "ml.r5.24xlarge" - InstanceType_ml_r5_2xlarge InstanceType = "ml.r5.2xlarge" - InstanceType_ml_r5_4xlarge InstanceType = "ml.r5.4xlarge" - InstanceType_ml_r5_8xlarge InstanceType = "ml.r5.8xlarge" - InstanceType_ml_r5_large InstanceType = "ml.r5.large" - InstanceType_ml_r5_xlarge InstanceType = "ml.r5.xlarge" - InstanceType_ml_r6i_12xlarge InstanceType = "ml.r6i.12xlarge" - InstanceType_ml_r6i_16xlarge InstanceType = "ml.r6i.16xlarge" - InstanceType_ml_r6i_24xlarge InstanceType = "ml.r6i.24xlarge" - InstanceType_ml_r6i_2xlarge InstanceType = "ml.r6i.2xlarge" - InstanceType_ml_r6i_32xlarge InstanceType = "ml.r6i.32xlarge" - InstanceType_ml_r6i_4xlarge InstanceType = "ml.r6i.4xlarge" - InstanceType_ml_r6i_8xlarge InstanceType = "ml.r6i.8xlarge" - InstanceType_ml_r6i_large InstanceType = "ml.r6i.large" - InstanceType_ml_r6i_xlarge InstanceType = "ml.r6i.xlarge" - InstanceType_ml_r6id_12xlarge InstanceType = "ml.r6id.12xlarge" - InstanceType_ml_r6id_16xlarge InstanceType = "ml.r6id.16xlarge" - InstanceType_ml_r6id_24xlarge InstanceType = "ml.r6id.24xlarge" - InstanceType_ml_r6id_2xlarge InstanceType = "ml.r6id.2xlarge" - InstanceType_ml_r6id_32xlarge InstanceType = "ml.r6id.32xlarge" - InstanceType_ml_r6id_4xlarge InstanceType = "ml.r6id.4xlarge" - InstanceType_ml_r6id_8xlarge InstanceType = "ml.r6id.8xlarge" - InstanceType_ml_r6id_large InstanceType = "ml.r6id.large" - InstanceType_ml_r6id_xlarge InstanceType = "ml.r6id.xlarge" - InstanceType_ml_r7i_12xlarge InstanceType = "ml.r7i.12xlarge" - InstanceType_ml_r7i_16xlarge InstanceType = "ml.r7i.16xlarge" - InstanceType_ml_r7i_24xlarge InstanceType = "ml.r7i.24xlarge" - InstanceType_ml_r7i_2xlarge InstanceType = "ml.r7i.2xlarge" - InstanceType_ml_r7i_48xlarge InstanceType = "ml.r7i.48xlarge" - InstanceType_ml_r7i_4xlarge InstanceType = "ml.r7i.4xlarge" - InstanceType_ml_r7i_8xlarge InstanceType = "ml.r7i.8xlarge" - InstanceType_ml_r7i_large InstanceType = "ml.r7i.large" - InstanceType_ml_r7i_xlarge InstanceType = "ml.r7i.xlarge" - InstanceType_ml_t2_2xlarge InstanceType = "ml.t2.2xlarge" - InstanceType_ml_t2_large InstanceType = "ml.t2.large" - InstanceType_ml_t2_medium InstanceType = "ml.t2.medium" - InstanceType_ml_t2_xlarge InstanceType = "ml.t2.xlarge" - InstanceType_ml_t3_2xlarge InstanceType = "ml.t3.2xlarge" - InstanceType_ml_t3_large InstanceType = "ml.t3.large" - InstanceType_ml_t3_medium InstanceType = "ml.t3.medium" - InstanceType_ml_t3_xlarge InstanceType = "ml.t3.xlarge" - InstanceType_ml_trn1_2xlarge InstanceType = "ml.trn1.2xlarge" - InstanceType_ml_trn1_32xlarge InstanceType = "ml.trn1.32xlarge" - InstanceType_ml_trn1n_32xlarge InstanceType = "ml.trn1n.32xlarge" + InstanceType_ml_c4_2xlarge InstanceType = "ml.c4.2xlarge" + InstanceType_ml_c4_4xlarge InstanceType = "ml.c4.4xlarge" + InstanceType_ml_c4_8xlarge InstanceType = "ml.c4.8xlarge" + InstanceType_ml_c4_xlarge InstanceType = "ml.c4.xlarge" + InstanceType_ml_c5_18xlarge InstanceType = "ml.c5.18xlarge" + InstanceType_ml_c5_2xlarge InstanceType = "ml.c5.2xlarge" + InstanceType_ml_c5_4xlarge InstanceType = "ml.c5.4xlarge" + InstanceType_ml_c5_9xlarge InstanceType = "ml.c5.9xlarge" + InstanceType_ml_c5_xlarge InstanceType = "ml.c5.xlarge" + InstanceType_ml_c5d_18xlarge InstanceType = "ml.c5d.18xlarge" + InstanceType_ml_c5d_2xlarge InstanceType = "ml.c5d.2xlarge" + InstanceType_ml_c5d_4xlarge InstanceType = "ml.c5d.4xlarge" + InstanceType_ml_c5d_9xlarge InstanceType = "ml.c5d.9xlarge" + InstanceType_ml_c5d_xlarge InstanceType = "ml.c5d.xlarge" + InstanceType_ml_c6i_12xlarge InstanceType = "ml.c6i.12xlarge" + InstanceType_ml_c6i_16xlarge InstanceType = "ml.c6i.16xlarge" + InstanceType_ml_c6i_24xlarge InstanceType = "ml.c6i.24xlarge" + InstanceType_ml_c6i_2xlarge InstanceType = "ml.c6i.2xlarge" + InstanceType_ml_c6i_32xlarge InstanceType = "ml.c6i.32xlarge" + InstanceType_ml_c6i_4xlarge InstanceType = "ml.c6i.4xlarge" + InstanceType_ml_c6i_8xlarge InstanceType = "ml.c6i.8xlarge" + InstanceType_ml_c6i_large InstanceType = "ml.c6i.large" + InstanceType_ml_c6i_xlarge InstanceType = "ml.c6i.xlarge" + InstanceType_ml_c6id_12xlarge InstanceType = "ml.c6id.12xlarge" + InstanceType_ml_c6id_16xlarge InstanceType = "ml.c6id.16xlarge" + InstanceType_ml_c6id_24xlarge InstanceType = "ml.c6id.24xlarge" + InstanceType_ml_c6id_2xlarge InstanceType = "ml.c6id.2xlarge" + InstanceType_ml_c6id_32xlarge InstanceType = "ml.c6id.32xlarge" + InstanceType_ml_c6id_4xlarge InstanceType = "ml.c6id.4xlarge" + InstanceType_ml_c6id_8xlarge InstanceType = "ml.c6id.8xlarge" + InstanceType_ml_c6id_large InstanceType = "ml.c6id.large" + InstanceType_ml_c6id_xlarge InstanceType = "ml.c6id.xlarge" + InstanceType_ml_c7i_12xlarge InstanceType = "ml.c7i.12xlarge" + InstanceType_ml_c7i_16xlarge InstanceType = "ml.c7i.16xlarge" + InstanceType_ml_c7i_24xlarge InstanceType = "ml.c7i.24xlarge" + InstanceType_ml_c7i_2xlarge InstanceType = "ml.c7i.2xlarge" + InstanceType_ml_c7i_48xlarge InstanceType = "ml.c7i.48xlarge" + InstanceType_ml_c7i_4xlarge InstanceType = "ml.c7i.4xlarge" + InstanceType_ml_c7i_8xlarge InstanceType = "ml.c7i.8xlarge" + InstanceType_ml_c7i_large InstanceType = "ml.c7i.large" + InstanceType_ml_c7i_xlarge InstanceType = "ml.c7i.xlarge" + InstanceType_ml_g4dn_12xlarge InstanceType = "ml.g4dn.12xlarge" + InstanceType_ml_g4dn_16xlarge InstanceType = "ml.g4dn.16xlarge" + InstanceType_ml_g4dn_2xlarge InstanceType = "ml.g4dn.2xlarge" + InstanceType_ml_g4dn_4xlarge InstanceType = "ml.g4dn.4xlarge" + InstanceType_ml_g4dn_8xlarge InstanceType = "ml.g4dn.8xlarge" + InstanceType_ml_g4dn_xlarge InstanceType = "ml.g4dn.xlarge" + InstanceType_ml_g5_12xlarge InstanceType = "ml.g5.12xlarge" + InstanceType_ml_g5_16xlarge InstanceType = "ml.g5.16xlarge" + InstanceType_ml_g5_24xlarge InstanceType = "ml.g5.24xlarge" + InstanceType_ml_g5_2xlarge InstanceType = "ml.g5.2xlarge" + InstanceType_ml_g5_48xlarge InstanceType = "ml.g5.48xlarge" + InstanceType_ml_g5_4xlarge InstanceType = "ml.g5.4xlarge" + InstanceType_ml_g5_8xlarge InstanceType = "ml.g5.8xlarge" + InstanceType_ml_g5_xlarge InstanceType = "ml.g5.xlarge" + InstanceType_ml_g6_12xlarge InstanceType = "ml.g6.12xlarge" + InstanceType_ml_g6_16xlarge InstanceType = "ml.g6.16xlarge" + InstanceType_ml_g6_24xlarge InstanceType = "ml.g6.24xlarge" + InstanceType_ml_g6_2xlarge InstanceType = "ml.g6.2xlarge" + InstanceType_ml_g6_48xlarge InstanceType = "ml.g6.48xlarge" + InstanceType_ml_g6_4xlarge InstanceType = "ml.g6.4xlarge" + InstanceType_ml_g6_8xlarge InstanceType = "ml.g6.8xlarge" + InstanceType_ml_g6_xlarge InstanceType = "ml.g6.xlarge" + InstanceType_ml_inf1_24xlarge InstanceType = "ml.inf1.24xlarge" + InstanceType_ml_inf1_2xlarge InstanceType = "ml.inf1.2xlarge" + InstanceType_ml_inf1_6xlarge InstanceType = "ml.inf1.6xlarge" + InstanceType_ml_inf1_xlarge InstanceType = "ml.inf1.xlarge" + InstanceType_ml_inf2_24xlarge InstanceType = "ml.inf2.24xlarge" + InstanceType_ml_inf2_48xlarge InstanceType = "ml.inf2.48xlarge" + InstanceType_ml_inf2_8xlarge InstanceType = "ml.inf2.8xlarge" + InstanceType_ml_inf2_xlarge InstanceType = "ml.inf2.xlarge" + InstanceType_ml_m4_10xlarge InstanceType = "ml.m4.10xlarge" + InstanceType_ml_m4_16xlarge InstanceType = "ml.m4.16xlarge" + InstanceType_ml_m4_2xlarge InstanceType = "ml.m4.2xlarge" + InstanceType_ml_m4_4xlarge InstanceType = "ml.m4.4xlarge" + InstanceType_ml_m4_xlarge InstanceType = "ml.m4.xlarge" + InstanceType_ml_m5_12xlarge InstanceType = "ml.m5.12xlarge" + InstanceType_ml_m5_24xlarge InstanceType = "ml.m5.24xlarge" + InstanceType_ml_m5_2xlarge InstanceType = "ml.m5.2xlarge" + InstanceType_ml_m5_4xlarge InstanceType = "ml.m5.4xlarge" + InstanceType_ml_m5_xlarge InstanceType = "ml.m5.xlarge" + InstanceType_ml_m5d_12xlarge InstanceType = "ml.m5d.12xlarge" + InstanceType_ml_m5d_16xlarge InstanceType = "ml.m5d.16xlarge" + InstanceType_ml_m5d_24xlarge InstanceType = "ml.m5d.24xlarge" + InstanceType_ml_m5d_2xlarge InstanceType = "ml.m5d.2xlarge" + InstanceType_ml_m5d_4xlarge InstanceType = "ml.m5d.4xlarge" + InstanceType_ml_m5d_8xlarge InstanceType = "ml.m5d.8xlarge" + InstanceType_ml_m5d_large InstanceType = "ml.m5d.large" + InstanceType_ml_m5d_xlarge InstanceType = "ml.m5d.xlarge" + InstanceType_ml_m6i_12xlarge InstanceType = "ml.m6i.12xlarge" + InstanceType_ml_m6i_16xlarge InstanceType = "ml.m6i.16xlarge" + InstanceType_ml_m6i_24xlarge InstanceType = "ml.m6i.24xlarge" + InstanceType_ml_m6i_2xlarge InstanceType = "ml.m6i.2xlarge" + InstanceType_ml_m6i_32xlarge InstanceType = "ml.m6i.32xlarge" + InstanceType_ml_m6i_4xlarge InstanceType = "ml.m6i.4xlarge" + InstanceType_ml_m6i_8xlarge InstanceType = "ml.m6i.8xlarge" + InstanceType_ml_m6i_large InstanceType = "ml.m6i.large" + InstanceType_ml_m6i_xlarge InstanceType = "ml.m6i.xlarge" + InstanceType_ml_m6id_12xlarge InstanceType = "ml.m6id.12xlarge" + InstanceType_ml_m6id_16xlarge InstanceType = "ml.m6id.16xlarge" + InstanceType_ml_m6id_24xlarge InstanceType = "ml.m6id.24xlarge" + InstanceType_ml_m6id_2xlarge InstanceType = "ml.m6id.2xlarge" + InstanceType_ml_m6id_32xlarge InstanceType = "ml.m6id.32xlarge" + InstanceType_ml_m6id_4xlarge InstanceType = "ml.m6id.4xlarge" + InstanceType_ml_m6id_8xlarge InstanceType = "ml.m6id.8xlarge" + InstanceType_ml_m6id_large InstanceType = "ml.m6id.large" + InstanceType_ml_m6id_xlarge InstanceType = "ml.m6id.xlarge" + InstanceType_ml_m7i_12xlarge InstanceType = "ml.m7i.12xlarge" + InstanceType_ml_m7i_16xlarge InstanceType = "ml.m7i.16xlarge" + InstanceType_ml_m7i_24xlarge InstanceType = "ml.m7i.24xlarge" + InstanceType_ml_m7i_2xlarge InstanceType = "ml.m7i.2xlarge" + InstanceType_ml_m7i_48xlarge InstanceType = "ml.m7i.48xlarge" + InstanceType_ml_m7i_4xlarge InstanceType = "ml.m7i.4xlarge" + InstanceType_ml_m7i_8xlarge InstanceType = "ml.m7i.8xlarge" + InstanceType_ml_m7i_large InstanceType = "ml.m7i.large" + InstanceType_ml_m7i_xlarge InstanceType = "ml.m7i.xlarge" + InstanceType_ml_p2_16xlarge InstanceType = "ml.p2.16xlarge" + InstanceType_ml_p2_8xlarge InstanceType = "ml.p2.8xlarge" + InstanceType_ml_p2_xlarge InstanceType = "ml.p2.xlarge" + InstanceType_ml_p3_16xlarge InstanceType = "ml.p3.16xlarge" + InstanceType_ml_p3_2xlarge InstanceType = "ml.p3.2xlarge" + InstanceType_ml_p3_8xlarge InstanceType = "ml.p3.8xlarge" + InstanceType_ml_p3dn_24xlarge InstanceType = "ml.p3dn.24xlarge" + InstanceType_ml_p4d_24xlarge InstanceType = "ml.p4d.24xlarge" + InstanceType_ml_p4de_24xlarge InstanceType = "ml.p4de.24xlarge" + InstanceType_ml_p5_48xlarge InstanceType = "ml.p5.48xlarge" + InstanceType_ml_p6_b200_48xlarge InstanceType = "ml.p6-b200.48xlarge" + InstanceType_ml_r5_12xlarge InstanceType = "ml.r5.12xlarge" + InstanceType_ml_r5_16xlarge InstanceType = "ml.r5.16xlarge" + InstanceType_ml_r5_24xlarge InstanceType = "ml.r5.24xlarge" + InstanceType_ml_r5_2xlarge InstanceType = "ml.r5.2xlarge" + InstanceType_ml_r5_4xlarge InstanceType = "ml.r5.4xlarge" + InstanceType_ml_r5_8xlarge InstanceType = "ml.r5.8xlarge" + InstanceType_ml_r5_large InstanceType = "ml.r5.large" + InstanceType_ml_r5_xlarge InstanceType = "ml.r5.xlarge" + InstanceType_ml_r6i_12xlarge InstanceType = "ml.r6i.12xlarge" + InstanceType_ml_r6i_16xlarge InstanceType = "ml.r6i.16xlarge" + InstanceType_ml_r6i_24xlarge InstanceType = "ml.r6i.24xlarge" + InstanceType_ml_r6i_2xlarge InstanceType = "ml.r6i.2xlarge" + InstanceType_ml_r6i_32xlarge InstanceType = "ml.r6i.32xlarge" + InstanceType_ml_r6i_4xlarge InstanceType = "ml.r6i.4xlarge" + InstanceType_ml_r6i_8xlarge InstanceType = "ml.r6i.8xlarge" + InstanceType_ml_r6i_large InstanceType = "ml.r6i.large" + InstanceType_ml_r6i_xlarge InstanceType = "ml.r6i.xlarge" + InstanceType_ml_r6id_12xlarge InstanceType = "ml.r6id.12xlarge" + InstanceType_ml_r6id_16xlarge InstanceType = "ml.r6id.16xlarge" + InstanceType_ml_r6id_24xlarge InstanceType = "ml.r6id.24xlarge" + InstanceType_ml_r6id_2xlarge InstanceType = "ml.r6id.2xlarge" + InstanceType_ml_r6id_32xlarge InstanceType = "ml.r6id.32xlarge" + InstanceType_ml_r6id_4xlarge InstanceType = "ml.r6id.4xlarge" + InstanceType_ml_r6id_8xlarge InstanceType = "ml.r6id.8xlarge" + InstanceType_ml_r6id_large InstanceType = "ml.r6id.large" + InstanceType_ml_r6id_xlarge InstanceType = "ml.r6id.xlarge" + InstanceType_ml_r7i_12xlarge InstanceType = "ml.r7i.12xlarge" + InstanceType_ml_r7i_16xlarge InstanceType = "ml.r7i.16xlarge" + InstanceType_ml_r7i_24xlarge InstanceType = "ml.r7i.24xlarge" + InstanceType_ml_r7i_2xlarge InstanceType = "ml.r7i.2xlarge" + InstanceType_ml_r7i_48xlarge InstanceType = "ml.r7i.48xlarge" + InstanceType_ml_r7i_4xlarge InstanceType = "ml.r7i.4xlarge" + InstanceType_ml_r7i_8xlarge InstanceType = "ml.r7i.8xlarge" + InstanceType_ml_r7i_large InstanceType = "ml.r7i.large" + InstanceType_ml_r7i_xlarge InstanceType = "ml.r7i.xlarge" + InstanceType_ml_t2_2xlarge InstanceType = "ml.t2.2xlarge" + InstanceType_ml_t2_large InstanceType = "ml.t2.large" + InstanceType_ml_t2_medium InstanceType = "ml.t2.medium" + InstanceType_ml_t2_xlarge InstanceType = "ml.t2.xlarge" + InstanceType_ml_t3_2xlarge InstanceType = "ml.t3.2xlarge" + InstanceType_ml_t3_large InstanceType = "ml.t3.large" + InstanceType_ml_t3_medium InstanceType = "ml.t3.medium" + InstanceType_ml_t3_xlarge InstanceType = "ml.t3.xlarge" + InstanceType_ml_trn1_2xlarge InstanceType = "ml.trn1.2xlarge" + InstanceType_ml_trn1_32xlarge InstanceType = "ml.trn1.32xlarge" + InstanceType_ml_trn1n_32xlarge InstanceType = "ml.trn1n.32xlarge" ) type IsTrackingServerActive string @@ -1666,21 +1836,26 @@ const ( type MlTools string const ( - MlTools_AutoMl MlTools = "AutoMl" - MlTools_DataWrangler MlTools = "DataWrangler" - MlTools_EmrClusters MlTools = "EmrClusters" - MlTools_Endpoints MlTools = "Endpoints" - MlTools_Experiments MlTools = "Experiments" - MlTools_FeatureStore MlTools = "FeatureStore" - MlTools_InferenceOptimization MlTools = "InferenceOptimization" - MlTools_InferenceRecommender MlTools = "InferenceRecommender" - MlTools_JumpStart MlTools = "JumpStart" - MlTools_ModelEvaluation MlTools = "ModelEvaluation" - MlTools_Models MlTools = "Models" - MlTools_PerformanceEvaluation MlTools = "PerformanceEvaluation" - MlTools_Pipelines MlTools = "Pipelines" - MlTools_Projects MlTools = "Projects" - MlTools_Training MlTools = "Training" + MlTools_AutoMl MlTools = "AutoMl" + MlTools_Comet MlTools = "Comet" + MlTools_DataWrangler MlTools = "DataWrangler" + MlTools_DeepchecksLLMEvaluation MlTools = "DeepchecksLLMEvaluation" + MlTools_EmrClusters MlTools = "EmrClusters" + MlTools_Endpoints MlTools = "Endpoints" + MlTools_Experiments MlTools = "Experiments" + MlTools_FeatureStore MlTools = "FeatureStore" + MlTools_Fiddler MlTools = "Fiddler" + MlTools_HyperPodClusters MlTools = "HyperPodClusters" + MlTools_InferenceOptimization MlTools = "InferenceOptimization" + MlTools_InferenceRecommender MlTools = "InferenceRecommender" + MlTools_JumpStart MlTools = "JumpStart" + MlTools_LakeraGuard MlTools = "LakeraGuard" + MlTools_ModelEvaluation MlTools = "ModelEvaluation" + MlTools_Models MlTools = "Models" + MlTools_PerformanceEvaluation MlTools = "PerformanceEvaluation" + MlTools_Pipelines MlTools = "Pipelines" + MlTools_Projects MlTools = "Projects" + MlTools_Training MlTools = "Training" ) type ModelApprovalStatus string @@ -1905,6 +2080,13 @@ const ( MonitoringType_ModelQuality MonitoringType = "ModelQuality" ) +type NodeUnavailabilityType string + +const ( + NodeUnavailabilityType_CAPACITY_PERCENTAGE NodeUnavailabilityType = "CAPACITY_PERCENTAGE" + NodeUnavailabilityType_INSTANCE_COUNT NodeUnavailabilityType = "INSTANCE_COUNT" +) + type NotebookInstanceAcceleratorType string const ( @@ -2015,6 +2197,14 @@ const ( OptimizationJobDeploymentInstanceType_ml_g6_4xlarge OptimizationJobDeploymentInstanceType = "ml.g6.4xlarge" OptimizationJobDeploymentInstanceType_ml_g6_8xlarge OptimizationJobDeploymentInstanceType = "ml.g6.8xlarge" OptimizationJobDeploymentInstanceType_ml_g6_xlarge OptimizationJobDeploymentInstanceType = "ml.g6.xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_12xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.12xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_16xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.16xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_24xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.24xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_2xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.2xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_48xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.48xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_4xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.4xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_8xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.8xlarge" + OptimizationJobDeploymentInstanceType_ml_g6e_xlarge OptimizationJobDeploymentInstanceType = "ml.g6e.xlarge" OptimizationJobDeploymentInstanceType_ml_inf2_24xlarge OptimizationJobDeploymentInstanceType = "ml.inf2.24xlarge" OptimizationJobDeploymentInstanceType_ml_inf2_48xlarge OptimizationJobDeploymentInstanceType = "ml.inf2.48xlarge" OptimizationJobDeploymentInstanceType_ml_inf2_8xlarge OptimizationJobDeploymentInstanceType = "ml.inf2.8xlarge" @@ -2061,6 +2251,33 @@ const ( ParameterType_Integer ParameterType = "Integer" ) +type PartnerAppAuthType string + +const ( + PartnerAppAuthType_IAM PartnerAppAuthType = "IAM" +) + +type PartnerAppStatus string + +const ( + PartnerAppStatus_Available PartnerAppStatus = "Available" + PartnerAppStatus_Creating PartnerAppStatus = "Creating" + PartnerAppStatus_Deleted PartnerAppStatus = "Deleted" + PartnerAppStatus_Deleting PartnerAppStatus = "Deleting" + PartnerAppStatus_Failed PartnerAppStatus = "Failed" + PartnerAppStatus_UpdateFailed PartnerAppStatus = "UpdateFailed" + PartnerAppStatus_Updating PartnerAppStatus = "Updating" +) + +type PartnerAppType string + +const ( + PartnerAppType_comet PartnerAppType = "comet" + PartnerAppType_deepchecks_llm_evaluation PartnerAppType = "deepchecks-llm-evaluation" + PartnerAppType_fiddler PartnerAppType = "fiddler" + PartnerAppType_lakera_guard PartnerAppType = "lakera-guard" +) + type PipelineExecutionStatus_SDK string const ( @@ -2078,6 +2295,13 @@ const ( PipelineStatus_SDK_Deleting PipelineStatus_SDK = "Deleting" ) +type PreemptTeamTasks string + +const ( + PreemptTeamTasks_LowerPriority PreemptTeamTasks = "LowerPriority" + PreemptTeamTasks_Never PreemptTeamTasks = "Never" +) + type ProblemType string const ( @@ -2098,6 +2322,23 @@ const ( ProcessingInstanceType_ml_c5_4xlarge ProcessingInstanceType = "ml.c5.4xlarge" ProcessingInstanceType_ml_c5_9xlarge ProcessingInstanceType = "ml.c5.9xlarge" ProcessingInstanceType_ml_c5_xlarge ProcessingInstanceType = "ml.c5.xlarge" + ProcessingInstanceType_ml_c6i_12xlarge ProcessingInstanceType = "ml.c6i.12xlarge" + ProcessingInstanceType_ml_c6i_16xlarge ProcessingInstanceType = "ml.c6i.16xlarge" + ProcessingInstanceType_ml_c6i_24xlarge ProcessingInstanceType = "ml.c6i.24xlarge" + ProcessingInstanceType_ml_c6i_2xlarge ProcessingInstanceType = "ml.c6i.2xlarge" + ProcessingInstanceType_ml_c6i_32xlarge ProcessingInstanceType = "ml.c6i.32xlarge" + ProcessingInstanceType_ml_c6i_4xlarge ProcessingInstanceType = "ml.c6i.4xlarge" + ProcessingInstanceType_ml_c6i_8xlarge ProcessingInstanceType = "ml.c6i.8xlarge" + ProcessingInstanceType_ml_c6i_xlarge ProcessingInstanceType = "ml.c6i.xlarge" + ProcessingInstanceType_ml_c7i_12xlarge ProcessingInstanceType = "ml.c7i.12xlarge" + ProcessingInstanceType_ml_c7i_16xlarge ProcessingInstanceType = "ml.c7i.16xlarge" + ProcessingInstanceType_ml_c7i_24xlarge ProcessingInstanceType = "ml.c7i.24xlarge" + ProcessingInstanceType_ml_c7i_2xlarge ProcessingInstanceType = "ml.c7i.2xlarge" + ProcessingInstanceType_ml_c7i_48xlarge ProcessingInstanceType = "ml.c7i.48xlarge" + ProcessingInstanceType_ml_c7i_4xlarge ProcessingInstanceType = "ml.c7i.4xlarge" + ProcessingInstanceType_ml_c7i_8xlarge ProcessingInstanceType = "ml.c7i.8xlarge" + ProcessingInstanceType_ml_c7i_large ProcessingInstanceType = "ml.c7i.large" + ProcessingInstanceType_ml_c7i_xlarge ProcessingInstanceType = "ml.c7i.xlarge" ProcessingInstanceType_ml_g4dn_12xlarge ProcessingInstanceType = "ml.g4dn.12xlarge" ProcessingInstanceType_ml_g4dn_16xlarge ProcessingInstanceType = "ml.g4dn.16xlarge" ProcessingInstanceType_ml_g4dn_2xlarge ProcessingInstanceType = "ml.g4dn.2xlarge" @@ -2112,6 +2353,22 @@ const ( ProcessingInstanceType_ml_g5_4xlarge ProcessingInstanceType = "ml.g5.4xlarge" ProcessingInstanceType_ml_g5_8xlarge ProcessingInstanceType = "ml.g5.8xlarge" ProcessingInstanceType_ml_g5_xlarge ProcessingInstanceType = "ml.g5.xlarge" + ProcessingInstanceType_ml_g6_12xlarge ProcessingInstanceType = "ml.g6.12xlarge" + ProcessingInstanceType_ml_g6_16xlarge ProcessingInstanceType = "ml.g6.16xlarge" + ProcessingInstanceType_ml_g6_24xlarge ProcessingInstanceType = "ml.g6.24xlarge" + ProcessingInstanceType_ml_g6_2xlarge ProcessingInstanceType = "ml.g6.2xlarge" + ProcessingInstanceType_ml_g6_48xlarge ProcessingInstanceType = "ml.g6.48xlarge" + ProcessingInstanceType_ml_g6_4xlarge ProcessingInstanceType = "ml.g6.4xlarge" + ProcessingInstanceType_ml_g6_8xlarge ProcessingInstanceType = "ml.g6.8xlarge" + ProcessingInstanceType_ml_g6_xlarge ProcessingInstanceType = "ml.g6.xlarge" + ProcessingInstanceType_ml_g6e_12xlarge ProcessingInstanceType = "ml.g6e.12xlarge" + ProcessingInstanceType_ml_g6e_16xlarge ProcessingInstanceType = "ml.g6e.16xlarge" + ProcessingInstanceType_ml_g6e_24xlarge ProcessingInstanceType = "ml.g6e.24xlarge" + ProcessingInstanceType_ml_g6e_2xlarge ProcessingInstanceType = "ml.g6e.2xlarge" + ProcessingInstanceType_ml_g6e_48xlarge ProcessingInstanceType = "ml.g6e.48xlarge" + ProcessingInstanceType_ml_g6e_4xlarge ProcessingInstanceType = "ml.g6e.4xlarge" + ProcessingInstanceType_ml_g6e_8xlarge ProcessingInstanceType = "ml.g6e.8xlarge" + ProcessingInstanceType_ml_g6e_xlarge ProcessingInstanceType = "ml.g6e.xlarge" ProcessingInstanceType_ml_m4_10xlarge ProcessingInstanceType = "ml.m4.10xlarge" ProcessingInstanceType_ml_m4_16xlarge ProcessingInstanceType = "ml.m4.16xlarge" ProcessingInstanceType_ml_m4_2xlarge ProcessingInstanceType = "ml.m4.2xlarge" @@ -2123,12 +2380,31 @@ const ( ProcessingInstanceType_ml_m5_4xlarge ProcessingInstanceType = "ml.m5.4xlarge" ProcessingInstanceType_ml_m5_large ProcessingInstanceType = "ml.m5.large" ProcessingInstanceType_ml_m5_xlarge ProcessingInstanceType = "ml.m5.xlarge" + ProcessingInstanceType_ml_m6i_12xlarge ProcessingInstanceType = "ml.m6i.12xlarge" + ProcessingInstanceType_ml_m6i_16xlarge ProcessingInstanceType = "ml.m6i.16xlarge" + ProcessingInstanceType_ml_m6i_24xlarge ProcessingInstanceType = "ml.m6i.24xlarge" + ProcessingInstanceType_ml_m6i_2xlarge ProcessingInstanceType = "ml.m6i.2xlarge" + ProcessingInstanceType_ml_m6i_32xlarge ProcessingInstanceType = "ml.m6i.32xlarge" + ProcessingInstanceType_ml_m6i_4xlarge ProcessingInstanceType = "ml.m6i.4xlarge" + ProcessingInstanceType_ml_m6i_8xlarge ProcessingInstanceType = "ml.m6i.8xlarge" + ProcessingInstanceType_ml_m6i_large ProcessingInstanceType = "ml.m6i.large" + ProcessingInstanceType_ml_m6i_xlarge ProcessingInstanceType = "ml.m6i.xlarge" + ProcessingInstanceType_ml_m7i_12xlarge ProcessingInstanceType = "ml.m7i.12xlarge" + ProcessingInstanceType_ml_m7i_16xlarge ProcessingInstanceType = "ml.m7i.16xlarge" + ProcessingInstanceType_ml_m7i_24xlarge ProcessingInstanceType = "ml.m7i.24xlarge" + ProcessingInstanceType_ml_m7i_2xlarge ProcessingInstanceType = "ml.m7i.2xlarge" + ProcessingInstanceType_ml_m7i_48xlarge ProcessingInstanceType = "ml.m7i.48xlarge" + ProcessingInstanceType_ml_m7i_4xlarge ProcessingInstanceType = "ml.m7i.4xlarge" + ProcessingInstanceType_ml_m7i_8xlarge ProcessingInstanceType = "ml.m7i.8xlarge" + ProcessingInstanceType_ml_m7i_large ProcessingInstanceType = "ml.m7i.large" + ProcessingInstanceType_ml_m7i_xlarge ProcessingInstanceType = "ml.m7i.xlarge" ProcessingInstanceType_ml_p2_16xlarge ProcessingInstanceType = "ml.p2.16xlarge" ProcessingInstanceType_ml_p2_8xlarge ProcessingInstanceType = "ml.p2.8xlarge" ProcessingInstanceType_ml_p2_xlarge ProcessingInstanceType = "ml.p2.xlarge" ProcessingInstanceType_ml_p3_16xlarge ProcessingInstanceType = "ml.p3.16xlarge" ProcessingInstanceType_ml_p3_2xlarge ProcessingInstanceType = "ml.p3.2xlarge" ProcessingInstanceType_ml_p3_8xlarge ProcessingInstanceType = "ml.p3.8xlarge" + ProcessingInstanceType_ml_p5_4xlarge ProcessingInstanceType = "ml.p5.4xlarge" ProcessingInstanceType_ml_r5_12xlarge ProcessingInstanceType = "ml.r5.12xlarge" ProcessingInstanceType_ml_r5_16xlarge ProcessingInstanceType = "ml.r5.16xlarge" ProcessingInstanceType_ml_r5_24xlarge ProcessingInstanceType = "ml.r5.24xlarge" @@ -2145,6 +2421,15 @@ const ( ProcessingInstanceType_ml_r5d_8xlarge ProcessingInstanceType = "ml.r5d.8xlarge" ProcessingInstanceType_ml_r5d_large ProcessingInstanceType = "ml.r5d.large" ProcessingInstanceType_ml_r5d_xlarge ProcessingInstanceType = "ml.r5d.xlarge" + ProcessingInstanceType_ml_r7i_12xlarge ProcessingInstanceType = "ml.r7i.12xlarge" + ProcessingInstanceType_ml_r7i_16xlarge ProcessingInstanceType = "ml.r7i.16xlarge" + ProcessingInstanceType_ml_r7i_24xlarge ProcessingInstanceType = "ml.r7i.24xlarge" + ProcessingInstanceType_ml_r7i_2xlarge ProcessingInstanceType = "ml.r7i.2xlarge" + ProcessingInstanceType_ml_r7i_48xlarge ProcessingInstanceType = "ml.r7i.48xlarge" + ProcessingInstanceType_ml_r7i_4xlarge ProcessingInstanceType = "ml.r7i.4xlarge" + ProcessingInstanceType_ml_r7i_8xlarge ProcessingInstanceType = "ml.r7i.8xlarge" + ProcessingInstanceType_ml_r7i_large ProcessingInstanceType = "ml.r7i.large" + ProcessingInstanceType_ml_r7i_xlarge ProcessingInstanceType = "ml.r7i.xlarge" ProcessingInstanceType_ml_t3_2xlarge ProcessingInstanceType = "ml.t3.2xlarge" ProcessingInstanceType_ml_t3_large ProcessingInstanceType = "ml.t3.large" ProcessingInstanceType_ml_t3_medium ProcessingInstanceType = "ml.t3.medium" @@ -2217,225 +2502,279 @@ const ( type ProductionVariantInferenceAMIVersion string const ( - ProductionVariantInferenceAMIVersion_al2_ami_sagemaker_inference_gpu_2 ProductionVariantInferenceAMIVersion = "al2-ami-sagemaker-inference-gpu-2" + ProductionVariantInferenceAMIVersion_al2_ami_sagemaker_inference_gpu_2 ProductionVariantInferenceAMIVersion = "al2-ami-sagemaker-inference-gpu-2" + ProductionVariantInferenceAMIVersion_al2_ami_sagemaker_inference_gpu_2_1 ProductionVariantInferenceAMIVersion = "al2-ami-sagemaker-inference-gpu-2-1" + ProductionVariantInferenceAMIVersion_al2_ami_sagemaker_inference_gpu_3_1 ProductionVariantInferenceAMIVersion = "al2-ami-sagemaker-inference-gpu-3-1" + ProductionVariantInferenceAMIVersion_al2_ami_sagemaker_inference_neuron_2 ProductionVariantInferenceAMIVersion = "al2-ami-sagemaker-inference-neuron-2" ) type ProductionVariantInstanceType string const ( - ProductionVariantInstanceType_ml_c4_2xlarge ProductionVariantInstanceType = "ml.c4.2xlarge" - ProductionVariantInstanceType_ml_c4_4xlarge ProductionVariantInstanceType = "ml.c4.4xlarge" - ProductionVariantInstanceType_ml_c4_8xlarge ProductionVariantInstanceType = "ml.c4.8xlarge" - ProductionVariantInstanceType_ml_c4_large ProductionVariantInstanceType = "ml.c4.large" - ProductionVariantInstanceType_ml_c4_xlarge ProductionVariantInstanceType = "ml.c4.xlarge" - ProductionVariantInstanceType_ml_c5_18xlarge ProductionVariantInstanceType = "ml.c5.18xlarge" - ProductionVariantInstanceType_ml_c5_2xlarge ProductionVariantInstanceType = "ml.c5.2xlarge" - ProductionVariantInstanceType_ml_c5_4xlarge ProductionVariantInstanceType = "ml.c5.4xlarge" - ProductionVariantInstanceType_ml_c5_9xlarge ProductionVariantInstanceType = "ml.c5.9xlarge" - ProductionVariantInstanceType_ml_c5_large ProductionVariantInstanceType = "ml.c5.large" - ProductionVariantInstanceType_ml_c5_xlarge ProductionVariantInstanceType = "ml.c5.xlarge" - ProductionVariantInstanceType_ml_c5d_18xlarge ProductionVariantInstanceType = "ml.c5d.18xlarge" - ProductionVariantInstanceType_ml_c5d_2xlarge ProductionVariantInstanceType = "ml.c5d.2xlarge" - ProductionVariantInstanceType_ml_c5d_4xlarge ProductionVariantInstanceType = "ml.c5d.4xlarge" - ProductionVariantInstanceType_ml_c5d_9xlarge ProductionVariantInstanceType = "ml.c5d.9xlarge" - ProductionVariantInstanceType_ml_c5d_large ProductionVariantInstanceType = "ml.c5d.large" - ProductionVariantInstanceType_ml_c5d_xlarge ProductionVariantInstanceType = "ml.c5d.xlarge" - ProductionVariantInstanceType_ml_c6g_12xlarge ProductionVariantInstanceType = "ml.c6g.12xlarge" - ProductionVariantInstanceType_ml_c6g_16xlarge ProductionVariantInstanceType = "ml.c6g.16xlarge" - ProductionVariantInstanceType_ml_c6g_2xlarge ProductionVariantInstanceType = "ml.c6g.2xlarge" - ProductionVariantInstanceType_ml_c6g_4xlarge ProductionVariantInstanceType = "ml.c6g.4xlarge" - ProductionVariantInstanceType_ml_c6g_8xlarge ProductionVariantInstanceType = "ml.c6g.8xlarge" - ProductionVariantInstanceType_ml_c6g_large ProductionVariantInstanceType = "ml.c6g.large" - ProductionVariantInstanceType_ml_c6g_xlarge ProductionVariantInstanceType = "ml.c6g.xlarge" - ProductionVariantInstanceType_ml_c6gd_12xlarge ProductionVariantInstanceType = "ml.c6gd.12xlarge" - ProductionVariantInstanceType_ml_c6gd_16xlarge ProductionVariantInstanceType = "ml.c6gd.16xlarge" - ProductionVariantInstanceType_ml_c6gd_2xlarge ProductionVariantInstanceType = "ml.c6gd.2xlarge" - ProductionVariantInstanceType_ml_c6gd_4xlarge ProductionVariantInstanceType = "ml.c6gd.4xlarge" - ProductionVariantInstanceType_ml_c6gd_8xlarge ProductionVariantInstanceType = "ml.c6gd.8xlarge" - ProductionVariantInstanceType_ml_c6gd_large ProductionVariantInstanceType = "ml.c6gd.large" - ProductionVariantInstanceType_ml_c6gd_xlarge ProductionVariantInstanceType = "ml.c6gd.xlarge" - ProductionVariantInstanceType_ml_c6gn_12xlarge ProductionVariantInstanceType = "ml.c6gn.12xlarge" - ProductionVariantInstanceType_ml_c6gn_16xlarge ProductionVariantInstanceType = "ml.c6gn.16xlarge" - ProductionVariantInstanceType_ml_c6gn_2xlarge ProductionVariantInstanceType = "ml.c6gn.2xlarge" - ProductionVariantInstanceType_ml_c6gn_4xlarge ProductionVariantInstanceType = "ml.c6gn.4xlarge" - ProductionVariantInstanceType_ml_c6gn_8xlarge ProductionVariantInstanceType = "ml.c6gn.8xlarge" - ProductionVariantInstanceType_ml_c6gn_large ProductionVariantInstanceType = "ml.c6gn.large" - ProductionVariantInstanceType_ml_c6gn_xlarge ProductionVariantInstanceType = "ml.c6gn.xlarge" - ProductionVariantInstanceType_ml_c6i_12xlarge ProductionVariantInstanceType = "ml.c6i.12xlarge" - ProductionVariantInstanceType_ml_c6i_16xlarge ProductionVariantInstanceType = "ml.c6i.16xlarge" - ProductionVariantInstanceType_ml_c6i_24xlarge ProductionVariantInstanceType = "ml.c6i.24xlarge" - ProductionVariantInstanceType_ml_c6i_2xlarge ProductionVariantInstanceType = "ml.c6i.2xlarge" - ProductionVariantInstanceType_ml_c6i_32xlarge ProductionVariantInstanceType = "ml.c6i.32xlarge" - ProductionVariantInstanceType_ml_c6i_4xlarge ProductionVariantInstanceType = "ml.c6i.4xlarge" - ProductionVariantInstanceType_ml_c6i_8xlarge ProductionVariantInstanceType = "ml.c6i.8xlarge" - ProductionVariantInstanceType_ml_c6i_large ProductionVariantInstanceType = "ml.c6i.large" - ProductionVariantInstanceType_ml_c6i_xlarge ProductionVariantInstanceType = "ml.c6i.xlarge" - ProductionVariantInstanceType_ml_c7g_12xlarge ProductionVariantInstanceType = "ml.c7g.12xlarge" - ProductionVariantInstanceType_ml_c7g_16xlarge ProductionVariantInstanceType = "ml.c7g.16xlarge" - ProductionVariantInstanceType_ml_c7g_2xlarge ProductionVariantInstanceType = "ml.c7g.2xlarge" - ProductionVariantInstanceType_ml_c7g_4xlarge ProductionVariantInstanceType = "ml.c7g.4xlarge" - ProductionVariantInstanceType_ml_c7g_8xlarge ProductionVariantInstanceType = "ml.c7g.8xlarge" - ProductionVariantInstanceType_ml_c7g_large ProductionVariantInstanceType = "ml.c7g.large" - ProductionVariantInstanceType_ml_c7g_xlarge ProductionVariantInstanceType = "ml.c7g.xlarge" - ProductionVariantInstanceType_ml_c7i_12xlarge ProductionVariantInstanceType = "ml.c7i.12xlarge" - ProductionVariantInstanceType_ml_c7i_16xlarge ProductionVariantInstanceType = "ml.c7i.16xlarge" - ProductionVariantInstanceType_ml_c7i_24xlarge ProductionVariantInstanceType = "ml.c7i.24xlarge" - ProductionVariantInstanceType_ml_c7i_2xlarge ProductionVariantInstanceType = "ml.c7i.2xlarge" - ProductionVariantInstanceType_ml_c7i_48xlarge ProductionVariantInstanceType = "ml.c7i.48xlarge" - ProductionVariantInstanceType_ml_c7i_4xlarge ProductionVariantInstanceType = "ml.c7i.4xlarge" - ProductionVariantInstanceType_ml_c7i_8xlarge ProductionVariantInstanceType = "ml.c7i.8xlarge" - ProductionVariantInstanceType_ml_c7i_large ProductionVariantInstanceType = "ml.c7i.large" - ProductionVariantInstanceType_ml_c7i_xlarge ProductionVariantInstanceType = "ml.c7i.xlarge" - ProductionVariantInstanceType_ml_dl1_24xlarge ProductionVariantInstanceType = "ml.dl1.24xlarge" - ProductionVariantInstanceType_ml_g4dn_12xlarge ProductionVariantInstanceType = "ml.g4dn.12xlarge" - ProductionVariantInstanceType_ml_g4dn_16xlarge ProductionVariantInstanceType = "ml.g4dn.16xlarge" - ProductionVariantInstanceType_ml_g4dn_2xlarge ProductionVariantInstanceType = "ml.g4dn.2xlarge" - ProductionVariantInstanceType_ml_g4dn_4xlarge ProductionVariantInstanceType = "ml.g4dn.4xlarge" - ProductionVariantInstanceType_ml_g4dn_8xlarge ProductionVariantInstanceType = "ml.g4dn.8xlarge" - ProductionVariantInstanceType_ml_g4dn_xlarge ProductionVariantInstanceType = "ml.g4dn.xlarge" - ProductionVariantInstanceType_ml_g5_12xlarge ProductionVariantInstanceType = "ml.g5.12xlarge" - ProductionVariantInstanceType_ml_g5_16xlarge ProductionVariantInstanceType = "ml.g5.16xlarge" - ProductionVariantInstanceType_ml_g5_24xlarge ProductionVariantInstanceType = "ml.g5.24xlarge" - ProductionVariantInstanceType_ml_g5_2xlarge ProductionVariantInstanceType = "ml.g5.2xlarge" - ProductionVariantInstanceType_ml_g5_48xlarge ProductionVariantInstanceType = "ml.g5.48xlarge" - ProductionVariantInstanceType_ml_g5_4xlarge ProductionVariantInstanceType = "ml.g5.4xlarge" - ProductionVariantInstanceType_ml_g5_8xlarge ProductionVariantInstanceType = "ml.g5.8xlarge" - ProductionVariantInstanceType_ml_g5_xlarge ProductionVariantInstanceType = "ml.g5.xlarge" - ProductionVariantInstanceType_ml_g6_12xlarge ProductionVariantInstanceType = "ml.g6.12xlarge" - ProductionVariantInstanceType_ml_g6_16xlarge ProductionVariantInstanceType = "ml.g6.16xlarge" - ProductionVariantInstanceType_ml_g6_24xlarge ProductionVariantInstanceType = "ml.g6.24xlarge" - ProductionVariantInstanceType_ml_g6_2xlarge ProductionVariantInstanceType = "ml.g6.2xlarge" - ProductionVariantInstanceType_ml_g6_48xlarge ProductionVariantInstanceType = "ml.g6.48xlarge" - ProductionVariantInstanceType_ml_g6_4xlarge ProductionVariantInstanceType = "ml.g6.4xlarge" - ProductionVariantInstanceType_ml_g6_8xlarge ProductionVariantInstanceType = "ml.g6.8xlarge" - ProductionVariantInstanceType_ml_g6_xlarge ProductionVariantInstanceType = "ml.g6.xlarge" - ProductionVariantInstanceType_ml_g6e_12xlarge ProductionVariantInstanceType = "ml.g6e.12xlarge" - ProductionVariantInstanceType_ml_g6e_16xlarge ProductionVariantInstanceType = "ml.g6e.16xlarge" - ProductionVariantInstanceType_ml_g6e_24xlarge ProductionVariantInstanceType = "ml.g6e.24xlarge" - ProductionVariantInstanceType_ml_g6e_2xlarge ProductionVariantInstanceType = "ml.g6e.2xlarge" - ProductionVariantInstanceType_ml_g6e_48xlarge ProductionVariantInstanceType = "ml.g6e.48xlarge" - ProductionVariantInstanceType_ml_g6e_4xlarge ProductionVariantInstanceType = "ml.g6e.4xlarge" - ProductionVariantInstanceType_ml_g6e_8xlarge ProductionVariantInstanceType = "ml.g6e.8xlarge" - ProductionVariantInstanceType_ml_g6e_xlarge ProductionVariantInstanceType = "ml.g6e.xlarge" - ProductionVariantInstanceType_ml_inf1_24xlarge ProductionVariantInstanceType = "ml.inf1.24xlarge" - ProductionVariantInstanceType_ml_inf1_2xlarge ProductionVariantInstanceType = "ml.inf1.2xlarge" - ProductionVariantInstanceType_ml_inf1_6xlarge ProductionVariantInstanceType = "ml.inf1.6xlarge" - ProductionVariantInstanceType_ml_inf1_xlarge ProductionVariantInstanceType = "ml.inf1.xlarge" - ProductionVariantInstanceType_ml_inf2_24xlarge ProductionVariantInstanceType = "ml.inf2.24xlarge" - ProductionVariantInstanceType_ml_inf2_48xlarge ProductionVariantInstanceType = "ml.inf2.48xlarge" - ProductionVariantInstanceType_ml_inf2_8xlarge ProductionVariantInstanceType = "ml.inf2.8xlarge" - ProductionVariantInstanceType_ml_inf2_xlarge ProductionVariantInstanceType = "ml.inf2.xlarge" - ProductionVariantInstanceType_ml_m4_10xlarge ProductionVariantInstanceType = "ml.m4.10xlarge" - ProductionVariantInstanceType_ml_m4_16xlarge ProductionVariantInstanceType = "ml.m4.16xlarge" - ProductionVariantInstanceType_ml_m4_2xlarge ProductionVariantInstanceType = "ml.m4.2xlarge" - ProductionVariantInstanceType_ml_m4_4xlarge ProductionVariantInstanceType = "ml.m4.4xlarge" - ProductionVariantInstanceType_ml_m4_xlarge ProductionVariantInstanceType = "ml.m4.xlarge" - ProductionVariantInstanceType_ml_m5_12xlarge ProductionVariantInstanceType = "ml.m5.12xlarge" - ProductionVariantInstanceType_ml_m5_24xlarge ProductionVariantInstanceType = "ml.m5.24xlarge" - ProductionVariantInstanceType_ml_m5_2xlarge ProductionVariantInstanceType = "ml.m5.2xlarge" - ProductionVariantInstanceType_ml_m5_4xlarge ProductionVariantInstanceType = "ml.m5.4xlarge" - ProductionVariantInstanceType_ml_m5_large ProductionVariantInstanceType = "ml.m5.large" - ProductionVariantInstanceType_ml_m5_xlarge ProductionVariantInstanceType = "ml.m5.xlarge" - ProductionVariantInstanceType_ml_m5d_12xlarge ProductionVariantInstanceType = "ml.m5d.12xlarge" - ProductionVariantInstanceType_ml_m5d_24xlarge ProductionVariantInstanceType = "ml.m5d.24xlarge" - ProductionVariantInstanceType_ml_m5d_2xlarge ProductionVariantInstanceType = "ml.m5d.2xlarge" - ProductionVariantInstanceType_ml_m5d_4xlarge ProductionVariantInstanceType = "ml.m5d.4xlarge" - ProductionVariantInstanceType_ml_m5d_large ProductionVariantInstanceType = "ml.m5d.large" - ProductionVariantInstanceType_ml_m5d_xlarge ProductionVariantInstanceType = "ml.m5d.xlarge" - ProductionVariantInstanceType_ml_m6g_12xlarge ProductionVariantInstanceType = "ml.m6g.12xlarge" - ProductionVariantInstanceType_ml_m6g_16xlarge ProductionVariantInstanceType = "ml.m6g.16xlarge" - ProductionVariantInstanceType_ml_m6g_2xlarge ProductionVariantInstanceType = "ml.m6g.2xlarge" - ProductionVariantInstanceType_ml_m6g_4xlarge ProductionVariantInstanceType = "ml.m6g.4xlarge" - ProductionVariantInstanceType_ml_m6g_8xlarge ProductionVariantInstanceType = "ml.m6g.8xlarge" - ProductionVariantInstanceType_ml_m6g_large ProductionVariantInstanceType = "ml.m6g.large" - ProductionVariantInstanceType_ml_m6g_xlarge ProductionVariantInstanceType = "ml.m6g.xlarge" - ProductionVariantInstanceType_ml_m6gd_12xlarge ProductionVariantInstanceType = "ml.m6gd.12xlarge" - ProductionVariantInstanceType_ml_m6gd_16xlarge ProductionVariantInstanceType = "ml.m6gd.16xlarge" - ProductionVariantInstanceType_ml_m6gd_2xlarge ProductionVariantInstanceType = "ml.m6gd.2xlarge" - ProductionVariantInstanceType_ml_m6gd_4xlarge ProductionVariantInstanceType = "ml.m6gd.4xlarge" - ProductionVariantInstanceType_ml_m6gd_8xlarge ProductionVariantInstanceType = "ml.m6gd.8xlarge" - ProductionVariantInstanceType_ml_m6gd_large ProductionVariantInstanceType = "ml.m6gd.large" - ProductionVariantInstanceType_ml_m6gd_xlarge ProductionVariantInstanceType = "ml.m6gd.xlarge" - ProductionVariantInstanceType_ml_m6i_12xlarge ProductionVariantInstanceType = "ml.m6i.12xlarge" - ProductionVariantInstanceType_ml_m6i_16xlarge ProductionVariantInstanceType = "ml.m6i.16xlarge" - ProductionVariantInstanceType_ml_m6i_24xlarge ProductionVariantInstanceType = "ml.m6i.24xlarge" - ProductionVariantInstanceType_ml_m6i_2xlarge ProductionVariantInstanceType = "ml.m6i.2xlarge" - ProductionVariantInstanceType_ml_m6i_32xlarge ProductionVariantInstanceType = "ml.m6i.32xlarge" - ProductionVariantInstanceType_ml_m6i_4xlarge ProductionVariantInstanceType = "ml.m6i.4xlarge" - ProductionVariantInstanceType_ml_m6i_8xlarge ProductionVariantInstanceType = "ml.m6i.8xlarge" - ProductionVariantInstanceType_ml_m6i_large ProductionVariantInstanceType = "ml.m6i.large" - ProductionVariantInstanceType_ml_m6i_xlarge ProductionVariantInstanceType = "ml.m6i.xlarge" - ProductionVariantInstanceType_ml_m7i_12xlarge ProductionVariantInstanceType = "ml.m7i.12xlarge" - ProductionVariantInstanceType_ml_m7i_16xlarge ProductionVariantInstanceType = "ml.m7i.16xlarge" - ProductionVariantInstanceType_ml_m7i_24xlarge ProductionVariantInstanceType = "ml.m7i.24xlarge" - ProductionVariantInstanceType_ml_m7i_2xlarge ProductionVariantInstanceType = "ml.m7i.2xlarge" - ProductionVariantInstanceType_ml_m7i_48xlarge ProductionVariantInstanceType = "ml.m7i.48xlarge" - ProductionVariantInstanceType_ml_m7i_4xlarge ProductionVariantInstanceType = "ml.m7i.4xlarge" - ProductionVariantInstanceType_ml_m7i_8xlarge ProductionVariantInstanceType = "ml.m7i.8xlarge" - ProductionVariantInstanceType_ml_m7i_large ProductionVariantInstanceType = "ml.m7i.large" - ProductionVariantInstanceType_ml_m7i_xlarge ProductionVariantInstanceType = "ml.m7i.xlarge" - ProductionVariantInstanceType_ml_p2_16xlarge ProductionVariantInstanceType = "ml.p2.16xlarge" - ProductionVariantInstanceType_ml_p2_8xlarge ProductionVariantInstanceType = "ml.p2.8xlarge" - ProductionVariantInstanceType_ml_p2_xlarge ProductionVariantInstanceType = "ml.p2.xlarge" - ProductionVariantInstanceType_ml_p3_16xlarge ProductionVariantInstanceType = "ml.p3.16xlarge" - ProductionVariantInstanceType_ml_p3_2xlarge ProductionVariantInstanceType = "ml.p3.2xlarge" - ProductionVariantInstanceType_ml_p3_8xlarge ProductionVariantInstanceType = "ml.p3.8xlarge" - ProductionVariantInstanceType_ml_p4d_24xlarge ProductionVariantInstanceType = "ml.p4d.24xlarge" - ProductionVariantInstanceType_ml_p4de_24xlarge ProductionVariantInstanceType = "ml.p4de.24xlarge" - ProductionVariantInstanceType_ml_p5_48xlarge ProductionVariantInstanceType = "ml.p5.48xlarge" - ProductionVariantInstanceType_ml_p5e_48xlarge ProductionVariantInstanceType = "ml.p5e.48xlarge" - ProductionVariantInstanceType_ml_r5_12xlarge ProductionVariantInstanceType = "ml.r5.12xlarge" - ProductionVariantInstanceType_ml_r5_24xlarge ProductionVariantInstanceType = "ml.r5.24xlarge" - ProductionVariantInstanceType_ml_r5_2xlarge ProductionVariantInstanceType = "ml.r5.2xlarge" - ProductionVariantInstanceType_ml_r5_4xlarge ProductionVariantInstanceType = "ml.r5.4xlarge" - ProductionVariantInstanceType_ml_r5_large ProductionVariantInstanceType = "ml.r5.large" - ProductionVariantInstanceType_ml_r5_xlarge ProductionVariantInstanceType = "ml.r5.xlarge" - ProductionVariantInstanceType_ml_r5d_12xlarge ProductionVariantInstanceType = "ml.r5d.12xlarge" - ProductionVariantInstanceType_ml_r5d_24xlarge ProductionVariantInstanceType = "ml.r5d.24xlarge" - ProductionVariantInstanceType_ml_r5d_2xlarge ProductionVariantInstanceType = "ml.r5d.2xlarge" - ProductionVariantInstanceType_ml_r5d_4xlarge ProductionVariantInstanceType = "ml.r5d.4xlarge" - ProductionVariantInstanceType_ml_r5d_large ProductionVariantInstanceType = "ml.r5d.large" - ProductionVariantInstanceType_ml_r5d_xlarge ProductionVariantInstanceType = "ml.r5d.xlarge" - ProductionVariantInstanceType_ml_r6g_12xlarge ProductionVariantInstanceType = "ml.r6g.12xlarge" - ProductionVariantInstanceType_ml_r6g_16xlarge ProductionVariantInstanceType = "ml.r6g.16xlarge" - ProductionVariantInstanceType_ml_r6g_2xlarge ProductionVariantInstanceType = "ml.r6g.2xlarge" - ProductionVariantInstanceType_ml_r6g_4xlarge ProductionVariantInstanceType = "ml.r6g.4xlarge" - ProductionVariantInstanceType_ml_r6g_8xlarge ProductionVariantInstanceType = "ml.r6g.8xlarge" - ProductionVariantInstanceType_ml_r6g_large ProductionVariantInstanceType = "ml.r6g.large" - ProductionVariantInstanceType_ml_r6g_xlarge ProductionVariantInstanceType = "ml.r6g.xlarge" - ProductionVariantInstanceType_ml_r6gd_12xlarge ProductionVariantInstanceType = "ml.r6gd.12xlarge" - ProductionVariantInstanceType_ml_r6gd_16xlarge ProductionVariantInstanceType = "ml.r6gd.16xlarge" - ProductionVariantInstanceType_ml_r6gd_2xlarge ProductionVariantInstanceType = "ml.r6gd.2xlarge" - ProductionVariantInstanceType_ml_r6gd_4xlarge ProductionVariantInstanceType = "ml.r6gd.4xlarge" - ProductionVariantInstanceType_ml_r6gd_8xlarge ProductionVariantInstanceType = "ml.r6gd.8xlarge" - ProductionVariantInstanceType_ml_r6gd_large ProductionVariantInstanceType = "ml.r6gd.large" - ProductionVariantInstanceType_ml_r6gd_xlarge ProductionVariantInstanceType = "ml.r6gd.xlarge" - ProductionVariantInstanceType_ml_r6i_12xlarge ProductionVariantInstanceType = "ml.r6i.12xlarge" - ProductionVariantInstanceType_ml_r6i_16xlarge ProductionVariantInstanceType = "ml.r6i.16xlarge" - ProductionVariantInstanceType_ml_r6i_24xlarge ProductionVariantInstanceType = "ml.r6i.24xlarge" - ProductionVariantInstanceType_ml_r6i_2xlarge ProductionVariantInstanceType = "ml.r6i.2xlarge" - ProductionVariantInstanceType_ml_r6i_32xlarge ProductionVariantInstanceType = "ml.r6i.32xlarge" - ProductionVariantInstanceType_ml_r6i_4xlarge ProductionVariantInstanceType = "ml.r6i.4xlarge" - ProductionVariantInstanceType_ml_r6i_8xlarge ProductionVariantInstanceType = "ml.r6i.8xlarge" - ProductionVariantInstanceType_ml_r6i_large ProductionVariantInstanceType = "ml.r6i.large" - ProductionVariantInstanceType_ml_r6i_xlarge ProductionVariantInstanceType = "ml.r6i.xlarge" - ProductionVariantInstanceType_ml_r7i_12xlarge ProductionVariantInstanceType = "ml.r7i.12xlarge" - ProductionVariantInstanceType_ml_r7i_16xlarge ProductionVariantInstanceType = "ml.r7i.16xlarge" - ProductionVariantInstanceType_ml_r7i_24xlarge ProductionVariantInstanceType = "ml.r7i.24xlarge" - ProductionVariantInstanceType_ml_r7i_2xlarge ProductionVariantInstanceType = "ml.r7i.2xlarge" - ProductionVariantInstanceType_ml_r7i_48xlarge ProductionVariantInstanceType = "ml.r7i.48xlarge" - ProductionVariantInstanceType_ml_r7i_4xlarge ProductionVariantInstanceType = "ml.r7i.4xlarge" - ProductionVariantInstanceType_ml_r7i_8xlarge ProductionVariantInstanceType = "ml.r7i.8xlarge" - ProductionVariantInstanceType_ml_r7i_large ProductionVariantInstanceType = "ml.r7i.large" - ProductionVariantInstanceType_ml_r7i_xlarge ProductionVariantInstanceType = "ml.r7i.xlarge" - ProductionVariantInstanceType_ml_t2_2xlarge ProductionVariantInstanceType = "ml.t2.2xlarge" - ProductionVariantInstanceType_ml_t2_large ProductionVariantInstanceType = "ml.t2.large" - ProductionVariantInstanceType_ml_t2_medium ProductionVariantInstanceType = "ml.t2.medium" - ProductionVariantInstanceType_ml_t2_xlarge ProductionVariantInstanceType = "ml.t2.xlarge" - ProductionVariantInstanceType_ml_trn1_2xlarge ProductionVariantInstanceType = "ml.trn1.2xlarge" - ProductionVariantInstanceType_ml_trn1_32xlarge ProductionVariantInstanceType = "ml.trn1.32xlarge" - ProductionVariantInstanceType_ml_trn1n_32xlarge ProductionVariantInstanceType = "ml.trn1n.32xlarge" - ProductionVariantInstanceType_ml_trn2_48xlarge ProductionVariantInstanceType = "ml.trn2.48xlarge" + ProductionVariantInstanceType_ml_c4_2xlarge ProductionVariantInstanceType = "ml.c4.2xlarge" + ProductionVariantInstanceType_ml_c4_4xlarge ProductionVariantInstanceType = "ml.c4.4xlarge" + ProductionVariantInstanceType_ml_c4_8xlarge ProductionVariantInstanceType = "ml.c4.8xlarge" + ProductionVariantInstanceType_ml_c4_large ProductionVariantInstanceType = "ml.c4.large" + ProductionVariantInstanceType_ml_c4_xlarge ProductionVariantInstanceType = "ml.c4.xlarge" + ProductionVariantInstanceType_ml_c5_18xlarge ProductionVariantInstanceType = "ml.c5.18xlarge" + ProductionVariantInstanceType_ml_c5_2xlarge ProductionVariantInstanceType = "ml.c5.2xlarge" + ProductionVariantInstanceType_ml_c5_4xlarge ProductionVariantInstanceType = "ml.c5.4xlarge" + ProductionVariantInstanceType_ml_c5_9xlarge ProductionVariantInstanceType = "ml.c5.9xlarge" + ProductionVariantInstanceType_ml_c5_large ProductionVariantInstanceType = "ml.c5.large" + ProductionVariantInstanceType_ml_c5_xlarge ProductionVariantInstanceType = "ml.c5.xlarge" + ProductionVariantInstanceType_ml_c5d_18xlarge ProductionVariantInstanceType = "ml.c5d.18xlarge" + ProductionVariantInstanceType_ml_c5d_2xlarge ProductionVariantInstanceType = "ml.c5d.2xlarge" + ProductionVariantInstanceType_ml_c5d_4xlarge ProductionVariantInstanceType = "ml.c5d.4xlarge" + ProductionVariantInstanceType_ml_c5d_9xlarge ProductionVariantInstanceType = "ml.c5d.9xlarge" + ProductionVariantInstanceType_ml_c5d_large ProductionVariantInstanceType = "ml.c5d.large" + ProductionVariantInstanceType_ml_c5d_xlarge ProductionVariantInstanceType = "ml.c5d.xlarge" + ProductionVariantInstanceType_ml_c6g_12xlarge ProductionVariantInstanceType = "ml.c6g.12xlarge" + ProductionVariantInstanceType_ml_c6g_16xlarge ProductionVariantInstanceType = "ml.c6g.16xlarge" + ProductionVariantInstanceType_ml_c6g_2xlarge ProductionVariantInstanceType = "ml.c6g.2xlarge" + ProductionVariantInstanceType_ml_c6g_4xlarge ProductionVariantInstanceType = "ml.c6g.4xlarge" + ProductionVariantInstanceType_ml_c6g_8xlarge ProductionVariantInstanceType = "ml.c6g.8xlarge" + ProductionVariantInstanceType_ml_c6g_large ProductionVariantInstanceType = "ml.c6g.large" + ProductionVariantInstanceType_ml_c6g_xlarge ProductionVariantInstanceType = "ml.c6g.xlarge" + ProductionVariantInstanceType_ml_c6gd_12xlarge ProductionVariantInstanceType = "ml.c6gd.12xlarge" + ProductionVariantInstanceType_ml_c6gd_16xlarge ProductionVariantInstanceType = "ml.c6gd.16xlarge" + ProductionVariantInstanceType_ml_c6gd_2xlarge ProductionVariantInstanceType = "ml.c6gd.2xlarge" + ProductionVariantInstanceType_ml_c6gd_4xlarge ProductionVariantInstanceType = "ml.c6gd.4xlarge" + ProductionVariantInstanceType_ml_c6gd_8xlarge ProductionVariantInstanceType = "ml.c6gd.8xlarge" + ProductionVariantInstanceType_ml_c6gd_large ProductionVariantInstanceType = "ml.c6gd.large" + ProductionVariantInstanceType_ml_c6gd_xlarge ProductionVariantInstanceType = "ml.c6gd.xlarge" + ProductionVariantInstanceType_ml_c6gn_12xlarge ProductionVariantInstanceType = "ml.c6gn.12xlarge" + ProductionVariantInstanceType_ml_c6gn_16xlarge ProductionVariantInstanceType = "ml.c6gn.16xlarge" + ProductionVariantInstanceType_ml_c6gn_2xlarge ProductionVariantInstanceType = "ml.c6gn.2xlarge" + ProductionVariantInstanceType_ml_c6gn_4xlarge ProductionVariantInstanceType = "ml.c6gn.4xlarge" + ProductionVariantInstanceType_ml_c6gn_8xlarge ProductionVariantInstanceType = "ml.c6gn.8xlarge" + ProductionVariantInstanceType_ml_c6gn_large ProductionVariantInstanceType = "ml.c6gn.large" + ProductionVariantInstanceType_ml_c6gn_xlarge ProductionVariantInstanceType = "ml.c6gn.xlarge" + ProductionVariantInstanceType_ml_c6i_12xlarge ProductionVariantInstanceType = "ml.c6i.12xlarge" + ProductionVariantInstanceType_ml_c6i_16xlarge ProductionVariantInstanceType = "ml.c6i.16xlarge" + ProductionVariantInstanceType_ml_c6i_24xlarge ProductionVariantInstanceType = "ml.c6i.24xlarge" + ProductionVariantInstanceType_ml_c6i_2xlarge ProductionVariantInstanceType = "ml.c6i.2xlarge" + ProductionVariantInstanceType_ml_c6i_32xlarge ProductionVariantInstanceType = "ml.c6i.32xlarge" + ProductionVariantInstanceType_ml_c6i_4xlarge ProductionVariantInstanceType = "ml.c6i.4xlarge" + ProductionVariantInstanceType_ml_c6i_8xlarge ProductionVariantInstanceType = "ml.c6i.8xlarge" + ProductionVariantInstanceType_ml_c6i_large ProductionVariantInstanceType = "ml.c6i.large" + ProductionVariantInstanceType_ml_c6i_xlarge ProductionVariantInstanceType = "ml.c6i.xlarge" + ProductionVariantInstanceType_ml_c6in_12xlarge ProductionVariantInstanceType = "ml.c6in.12xlarge" + ProductionVariantInstanceType_ml_c6in_16xlarge ProductionVariantInstanceType = "ml.c6in.16xlarge" + ProductionVariantInstanceType_ml_c6in_24xlarge ProductionVariantInstanceType = "ml.c6in.24xlarge" + ProductionVariantInstanceType_ml_c6in_2xlarge ProductionVariantInstanceType = "ml.c6in.2xlarge" + ProductionVariantInstanceType_ml_c6in_32xlarge ProductionVariantInstanceType = "ml.c6in.32xlarge" + ProductionVariantInstanceType_ml_c6in_4xlarge ProductionVariantInstanceType = "ml.c6in.4xlarge" + ProductionVariantInstanceType_ml_c6in_8xlarge ProductionVariantInstanceType = "ml.c6in.8xlarge" + ProductionVariantInstanceType_ml_c6in_large ProductionVariantInstanceType = "ml.c6in.large" + ProductionVariantInstanceType_ml_c6in_xlarge ProductionVariantInstanceType = "ml.c6in.xlarge" + ProductionVariantInstanceType_ml_c7g_12xlarge ProductionVariantInstanceType = "ml.c7g.12xlarge" + ProductionVariantInstanceType_ml_c7g_16xlarge ProductionVariantInstanceType = "ml.c7g.16xlarge" + ProductionVariantInstanceType_ml_c7g_2xlarge ProductionVariantInstanceType = "ml.c7g.2xlarge" + ProductionVariantInstanceType_ml_c7g_4xlarge ProductionVariantInstanceType = "ml.c7g.4xlarge" + ProductionVariantInstanceType_ml_c7g_8xlarge ProductionVariantInstanceType = "ml.c7g.8xlarge" + ProductionVariantInstanceType_ml_c7g_large ProductionVariantInstanceType = "ml.c7g.large" + ProductionVariantInstanceType_ml_c7g_xlarge ProductionVariantInstanceType = "ml.c7g.xlarge" + ProductionVariantInstanceType_ml_c7i_12xlarge ProductionVariantInstanceType = "ml.c7i.12xlarge" + ProductionVariantInstanceType_ml_c7i_16xlarge ProductionVariantInstanceType = "ml.c7i.16xlarge" + ProductionVariantInstanceType_ml_c7i_24xlarge ProductionVariantInstanceType = "ml.c7i.24xlarge" + ProductionVariantInstanceType_ml_c7i_2xlarge ProductionVariantInstanceType = "ml.c7i.2xlarge" + ProductionVariantInstanceType_ml_c7i_48xlarge ProductionVariantInstanceType = "ml.c7i.48xlarge" + ProductionVariantInstanceType_ml_c7i_4xlarge ProductionVariantInstanceType = "ml.c7i.4xlarge" + ProductionVariantInstanceType_ml_c7i_8xlarge ProductionVariantInstanceType = "ml.c7i.8xlarge" + ProductionVariantInstanceType_ml_c7i_large ProductionVariantInstanceType = "ml.c7i.large" + ProductionVariantInstanceType_ml_c7i_xlarge ProductionVariantInstanceType = "ml.c7i.xlarge" + ProductionVariantInstanceType_ml_c8g_12xlarge ProductionVariantInstanceType = "ml.c8g.12xlarge" + ProductionVariantInstanceType_ml_c8g_16xlarge ProductionVariantInstanceType = "ml.c8g.16xlarge" + ProductionVariantInstanceType_ml_c8g_24xlarge ProductionVariantInstanceType = "ml.c8g.24xlarge" + ProductionVariantInstanceType_ml_c8g_2xlarge ProductionVariantInstanceType = "ml.c8g.2xlarge" + ProductionVariantInstanceType_ml_c8g_48xlarge ProductionVariantInstanceType = "ml.c8g.48xlarge" + ProductionVariantInstanceType_ml_c8g_4xlarge ProductionVariantInstanceType = "ml.c8g.4xlarge" + ProductionVariantInstanceType_ml_c8g_8xlarge ProductionVariantInstanceType = "ml.c8g.8xlarge" + ProductionVariantInstanceType_ml_c8g_large ProductionVariantInstanceType = "ml.c8g.large" + ProductionVariantInstanceType_ml_c8g_medium ProductionVariantInstanceType = "ml.c8g.medium" + ProductionVariantInstanceType_ml_c8g_xlarge ProductionVariantInstanceType = "ml.c8g.xlarge" + ProductionVariantInstanceType_ml_dl1_24xlarge ProductionVariantInstanceType = "ml.dl1.24xlarge" + ProductionVariantInstanceType_ml_g4dn_12xlarge ProductionVariantInstanceType = "ml.g4dn.12xlarge" + ProductionVariantInstanceType_ml_g4dn_16xlarge ProductionVariantInstanceType = "ml.g4dn.16xlarge" + ProductionVariantInstanceType_ml_g4dn_2xlarge ProductionVariantInstanceType = "ml.g4dn.2xlarge" + ProductionVariantInstanceType_ml_g4dn_4xlarge ProductionVariantInstanceType = "ml.g4dn.4xlarge" + ProductionVariantInstanceType_ml_g4dn_8xlarge ProductionVariantInstanceType = "ml.g4dn.8xlarge" + ProductionVariantInstanceType_ml_g4dn_xlarge ProductionVariantInstanceType = "ml.g4dn.xlarge" + ProductionVariantInstanceType_ml_g5_12xlarge ProductionVariantInstanceType = "ml.g5.12xlarge" + ProductionVariantInstanceType_ml_g5_16xlarge ProductionVariantInstanceType = "ml.g5.16xlarge" + ProductionVariantInstanceType_ml_g5_24xlarge ProductionVariantInstanceType = "ml.g5.24xlarge" + ProductionVariantInstanceType_ml_g5_2xlarge ProductionVariantInstanceType = "ml.g5.2xlarge" + ProductionVariantInstanceType_ml_g5_48xlarge ProductionVariantInstanceType = "ml.g5.48xlarge" + ProductionVariantInstanceType_ml_g5_4xlarge ProductionVariantInstanceType = "ml.g5.4xlarge" + ProductionVariantInstanceType_ml_g5_8xlarge ProductionVariantInstanceType = "ml.g5.8xlarge" + ProductionVariantInstanceType_ml_g5_xlarge ProductionVariantInstanceType = "ml.g5.xlarge" + ProductionVariantInstanceType_ml_g6_12xlarge ProductionVariantInstanceType = "ml.g6.12xlarge" + ProductionVariantInstanceType_ml_g6_16xlarge ProductionVariantInstanceType = "ml.g6.16xlarge" + ProductionVariantInstanceType_ml_g6_24xlarge ProductionVariantInstanceType = "ml.g6.24xlarge" + ProductionVariantInstanceType_ml_g6_2xlarge ProductionVariantInstanceType = "ml.g6.2xlarge" + ProductionVariantInstanceType_ml_g6_48xlarge ProductionVariantInstanceType = "ml.g6.48xlarge" + ProductionVariantInstanceType_ml_g6_4xlarge ProductionVariantInstanceType = "ml.g6.4xlarge" + ProductionVariantInstanceType_ml_g6_8xlarge ProductionVariantInstanceType = "ml.g6.8xlarge" + ProductionVariantInstanceType_ml_g6_xlarge ProductionVariantInstanceType = "ml.g6.xlarge" + ProductionVariantInstanceType_ml_g6e_12xlarge ProductionVariantInstanceType = "ml.g6e.12xlarge" + ProductionVariantInstanceType_ml_g6e_16xlarge ProductionVariantInstanceType = "ml.g6e.16xlarge" + ProductionVariantInstanceType_ml_g6e_24xlarge ProductionVariantInstanceType = "ml.g6e.24xlarge" + ProductionVariantInstanceType_ml_g6e_2xlarge ProductionVariantInstanceType = "ml.g6e.2xlarge" + ProductionVariantInstanceType_ml_g6e_48xlarge ProductionVariantInstanceType = "ml.g6e.48xlarge" + ProductionVariantInstanceType_ml_g6e_4xlarge ProductionVariantInstanceType = "ml.g6e.4xlarge" + ProductionVariantInstanceType_ml_g6e_8xlarge ProductionVariantInstanceType = "ml.g6e.8xlarge" + ProductionVariantInstanceType_ml_g6e_xlarge ProductionVariantInstanceType = "ml.g6e.xlarge" + ProductionVariantInstanceType_ml_inf1_24xlarge ProductionVariantInstanceType = "ml.inf1.24xlarge" + ProductionVariantInstanceType_ml_inf1_2xlarge ProductionVariantInstanceType = "ml.inf1.2xlarge" + ProductionVariantInstanceType_ml_inf1_6xlarge ProductionVariantInstanceType = "ml.inf1.6xlarge" + ProductionVariantInstanceType_ml_inf1_xlarge ProductionVariantInstanceType = "ml.inf1.xlarge" + ProductionVariantInstanceType_ml_inf2_24xlarge ProductionVariantInstanceType = "ml.inf2.24xlarge" + ProductionVariantInstanceType_ml_inf2_48xlarge ProductionVariantInstanceType = "ml.inf2.48xlarge" + ProductionVariantInstanceType_ml_inf2_8xlarge ProductionVariantInstanceType = "ml.inf2.8xlarge" + ProductionVariantInstanceType_ml_inf2_xlarge ProductionVariantInstanceType = "ml.inf2.xlarge" + ProductionVariantInstanceType_ml_m4_10xlarge ProductionVariantInstanceType = "ml.m4.10xlarge" + ProductionVariantInstanceType_ml_m4_16xlarge ProductionVariantInstanceType = "ml.m4.16xlarge" + ProductionVariantInstanceType_ml_m4_2xlarge ProductionVariantInstanceType = "ml.m4.2xlarge" + ProductionVariantInstanceType_ml_m4_4xlarge ProductionVariantInstanceType = "ml.m4.4xlarge" + ProductionVariantInstanceType_ml_m4_xlarge ProductionVariantInstanceType = "ml.m4.xlarge" + ProductionVariantInstanceType_ml_m5_12xlarge ProductionVariantInstanceType = "ml.m5.12xlarge" + ProductionVariantInstanceType_ml_m5_24xlarge ProductionVariantInstanceType = "ml.m5.24xlarge" + ProductionVariantInstanceType_ml_m5_2xlarge ProductionVariantInstanceType = "ml.m5.2xlarge" + ProductionVariantInstanceType_ml_m5_4xlarge ProductionVariantInstanceType = "ml.m5.4xlarge" + ProductionVariantInstanceType_ml_m5_large ProductionVariantInstanceType = "ml.m5.large" + ProductionVariantInstanceType_ml_m5_xlarge ProductionVariantInstanceType = "ml.m5.xlarge" + ProductionVariantInstanceType_ml_m5d_12xlarge ProductionVariantInstanceType = "ml.m5d.12xlarge" + ProductionVariantInstanceType_ml_m5d_24xlarge ProductionVariantInstanceType = "ml.m5d.24xlarge" + ProductionVariantInstanceType_ml_m5d_2xlarge ProductionVariantInstanceType = "ml.m5d.2xlarge" + ProductionVariantInstanceType_ml_m5d_4xlarge ProductionVariantInstanceType = "ml.m5d.4xlarge" + ProductionVariantInstanceType_ml_m5d_large ProductionVariantInstanceType = "ml.m5d.large" + ProductionVariantInstanceType_ml_m5d_xlarge ProductionVariantInstanceType = "ml.m5d.xlarge" + ProductionVariantInstanceType_ml_m6g_12xlarge ProductionVariantInstanceType = "ml.m6g.12xlarge" + ProductionVariantInstanceType_ml_m6g_16xlarge ProductionVariantInstanceType = "ml.m6g.16xlarge" + ProductionVariantInstanceType_ml_m6g_2xlarge ProductionVariantInstanceType = "ml.m6g.2xlarge" + ProductionVariantInstanceType_ml_m6g_4xlarge ProductionVariantInstanceType = "ml.m6g.4xlarge" + ProductionVariantInstanceType_ml_m6g_8xlarge ProductionVariantInstanceType = "ml.m6g.8xlarge" + ProductionVariantInstanceType_ml_m6g_large ProductionVariantInstanceType = "ml.m6g.large" + ProductionVariantInstanceType_ml_m6g_xlarge ProductionVariantInstanceType = "ml.m6g.xlarge" + ProductionVariantInstanceType_ml_m6gd_12xlarge ProductionVariantInstanceType = "ml.m6gd.12xlarge" + ProductionVariantInstanceType_ml_m6gd_16xlarge ProductionVariantInstanceType = "ml.m6gd.16xlarge" + ProductionVariantInstanceType_ml_m6gd_2xlarge ProductionVariantInstanceType = "ml.m6gd.2xlarge" + ProductionVariantInstanceType_ml_m6gd_4xlarge ProductionVariantInstanceType = "ml.m6gd.4xlarge" + ProductionVariantInstanceType_ml_m6gd_8xlarge ProductionVariantInstanceType = "ml.m6gd.8xlarge" + ProductionVariantInstanceType_ml_m6gd_large ProductionVariantInstanceType = "ml.m6gd.large" + ProductionVariantInstanceType_ml_m6gd_xlarge ProductionVariantInstanceType = "ml.m6gd.xlarge" + ProductionVariantInstanceType_ml_m6i_12xlarge ProductionVariantInstanceType = "ml.m6i.12xlarge" + ProductionVariantInstanceType_ml_m6i_16xlarge ProductionVariantInstanceType = "ml.m6i.16xlarge" + ProductionVariantInstanceType_ml_m6i_24xlarge ProductionVariantInstanceType = "ml.m6i.24xlarge" + ProductionVariantInstanceType_ml_m6i_2xlarge ProductionVariantInstanceType = "ml.m6i.2xlarge" + ProductionVariantInstanceType_ml_m6i_32xlarge ProductionVariantInstanceType = "ml.m6i.32xlarge" + ProductionVariantInstanceType_ml_m6i_4xlarge ProductionVariantInstanceType = "ml.m6i.4xlarge" + ProductionVariantInstanceType_ml_m6i_8xlarge ProductionVariantInstanceType = "ml.m6i.8xlarge" + ProductionVariantInstanceType_ml_m6i_large ProductionVariantInstanceType = "ml.m6i.large" + ProductionVariantInstanceType_ml_m6i_xlarge ProductionVariantInstanceType = "ml.m6i.xlarge" + ProductionVariantInstanceType_ml_m7i_12xlarge ProductionVariantInstanceType = "ml.m7i.12xlarge" + ProductionVariantInstanceType_ml_m7i_16xlarge ProductionVariantInstanceType = "ml.m7i.16xlarge" + ProductionVariantInstanceType_ml_m7i_24xlarge ProductionVariantInstanceType = "ml.m7i.24xlarge" + ProductionVariantInstanceType_ml_m7i_2xlarge ProductionVariantInstanceType = "ml.m7i.2xlarge" + ProductionVariantInstanceType_ml_m7i_48xlarge ProductionVariantInstanceType = "ml.m7i.48xlarge" + ProductionVariantInstanceType_ml_m7i_4xlarge ProductionVariantInstanceType = "ml.m7i.4xlarge" + ProductionVariantInstanceType_ml_m7i_8xlarge ProductionVariantInstanceType = "ml.m7i.8xlarge" + ProductionVariantInstanceType_ml_m7i_large ProductionVariantInstanceType = "ml.m7i.large" + ProductionVariantInstanceType_ml_m7i_xlarge ProductionVariantInstanceType = "ml.m7i.xlarge" + ProductionVariantInstanceType_ml_m8g_12xlarge ProductionVariantInstanceType = "ml.m8g.12xlarge" + ProductionVariantInstanceType_ml_m8g_16xlarge ProductionVariantInstanceType = "ml.m8g.16xlarge" + ProductionVariantInstanceType_ml_m8g_24xlarge ProductionVariantInstanceType = "ml.m8g.24xlarge" + ProductionVariantInstanceType_ml_m8g_2xlarge ProductionVariantInstanceType = "ml.m8g.2xlarge" + ProductionVariantInstanceType_ml_m8g_48xlarge ProductionVariantInstanceType = "ml.m8g.48xlarge" + ProductionVariantInstanceType_ml_m8g_4xlarge ProductionVariantInstanceType = "ml.m8g.4xlarge" + ProductionVariantInstanceType_ml_m8g_8xlarge ProductionVariantInstanceType = "ml.m8g.8xlarge" + ProductionVariantInstanceType_ml_m8g_large ProductionVariantInstanceType = "ml.m8g.large" + ProductionVariantInstanceType_ml_m8g_medium ProductionVariantInstanceType = "ml.m8g.medium" + ProductionVariantInstanceType_ml_m8g_xlarge ProductionVariantInstanceType = "ml.m8g.xlarge" + ProductionVariantInstanceType_ml_p2_16xlarge ProductionVariantInstanceType = "ml.p2.16xlarge" + ProductionVariantInstanceType_ml_p2_8xlarge ProductionVariantInstanceType = "ml.p2.8xlarge" + ProductionVariantInstanceType_ml_p2_xlarge ProductionVariantInstanceType = "ml.p2.xlarge" + ProductionVariantInstanceType_ml_p3_16xlarge ProductionVariantInstanceType = "ml.p3.16xlarge" + ProductionVariantInstanceType_ml_p3_2xlarge ProductionVariantInstanceType = "ml.p3.2xlarge" + ProductionVariantInstanceType_ml_p3_8xlarge ProductionVariantInstanceType = "ml.p3.8xlarge" + ProductionVariantInstanceType_ml_p4d_24xlarge ProductionVariantInstanceType = "ml.p4d.24xlarge" + ProductionVariantInstanceType_ml_p4de_24xlarge ProductionVariantInstanceType = "ml.p4de.24xlarge" + ProductionVariantInstanceType_ml_p5_48xlarge ProductionVariantInstanceType = "ml.p5.48xlarge" + ProductionVariantInstanceType_ml_p5_4xlarge ProductionVariantInstanceType = "ml.p5.4xlarge" + ProductionVariantInstanceType_ml_p5e_48xlarge ProductionVariantInstanceType = "ml.p5e.48xlarge" + ProductionVariantInstanceType_ml_p5en_48xlarge ProductionVariantInstanceType = "ml.p5en.48xlarge" + ProductionVariantInstanceType_ml_p6_b200_48xlarge ProductionVariantInstanceType = "ml.p6-b200.48xlarge" + ProductionVariantInstanceType_ml_p6e_gb200_36xlarge ProductionVariantInstanceType = "ml.p6e-gb200.36xlarge" + ProductionVariantInstanceType_ml_r5_12xlarge ProductionVariantInstanceType = "ml.r5.12xlarge" + ProductionVariantInstanceType_ml_r5_24xlarge ProductionVariantInstanceType = "ml.r5.24xlarge" + ProductionVariantInstanceType_ml_r5_2xlarge ProductionVariantInstanceType = "ml.r5.2xlarge" + ProductionVariantInstanceType_ml_r5_4xlarge ProductionVariantInstanceType = "ml.r5.4xlarge" + ProductionVariantInstanceType_ml_r5_large ProductionVariantInstanceType = "ml.r5.large" + ProductionVariantInstanceType_ml_r5_xlarge ProductionVariantInstanceType = "ml.r5.xlarge" + ProductionVariantInstanceType_ml_r5d_12xlarge ProductionVariantInstanceType = "ml.r5d.12xlarge" + ProductionVariantInstanceType_ml_r5d_24xlarge ProductionVariantInstanceType = "ml.r5d.24xlarge" + ProductionVariantInstanceType_ml_r5d_2xlarge ProductionVariantInstanceType = "ml.r5d.2xlarge" + ProductionVariantInstanceType_ml_r5d_4xlarge ProductionVariantInstanceType = "ml.r5d.4xlarge" + ProductionVariantInstanceType_ml_r5d_large ProductionVariantInstanceType = "ml.r5d.large" + ProductionVariantInstanceType_ml_r5d_xlarge ProductionVariantInstanceType = "ml.r5d.xlarge" + ProductionVariantInstanceType_ml_r6g_12xlarge ProductionVariantInstanceType = "ml.r6g.12xlarge" + ProductionVariantInstanceType_ml_r6g_16xlarge ProductionVariantInstanceType = "ml.r6g.16xlarge" + ProductionVariantInstanceType_ml_r6g_2xlarge ProductionVariantInstanceType = "ml.r6g.2xlarge" + ProductionVariantInstanceType_ml_r6g_4xlarge ProductionVariantInstanceType = "ml.r6g.4xlarge" + ProductionVariantInstanceType_ml_r6g_8xlarge ProductionVariantInstanceType = "ml.r6g.8xlarge" + ProductionVariantInstanceType_ml_r6g_large ProductionVariantInstanceType = "ml.r6g.large" + ProductionVariantInstanceType_ml_r6g_xlarge ProductionVariantInstanceType = "ml.r6g.xlarge" + ProductionVariantInstanceType_ml_r6gd_12xlarge ProductionVariantInstanceType = "ml.r6gd.12xlarge" + ProductionVariantInstanceType_ml_r6gd_16xlarge ProductionVariantInstanceType = "ml.r6gd.16xlarge" + ProductionVariantInstanceType_ml_r6gd_2xlarge ProductionVariantInstanceType = "ml.r6gd.2xlarge" + ProductionVariantInstanceType_ml_r6gd_4xlarge ProductionVariantInstanceType = "ml.r6gd.4xlarge" + ProductionVariantInstanceType_ml_r6gd_8xlarge ProductionVariantInstanceType = "ml.r6gd.8xlarge" + ProductionVariantInstanceType_ml_r6gd_large ProductionVariantInstanceType = "ml.r6gd.large" + ProductionVariantInstanceType_ml_r6gd_xlarge ProductionVariantInstanceType = "ml.r6gd.xlarge" + ProductionVariantInstanceType_ml_r6i_12xlarge ProductionVariantInstanceType = "ml.r6i.12xlarge" + ProductionVariantInstanceType_ml_r6i_16xlarge ProductionVariantInstanceType = "ml.r6i.16xlarge" + ProductionVariantInstanceType_ml_r6i_24xlarge ProductionVariantInstanceType = "ml.r6i.24xlarge" + ProductionVariantInstanceType_ml_r6i_2xlarge ProductionVariantInstanceType = "ml.r6i.2xlarge" + ProductionVariantInstanceType_ml_r6i_32xlarge ProductionVariantInstanceType = "ml.r6i.32xlarge" + ProductionVariantInstanceType_ml_r6i_4xlarge ProductionVariantInstanceType = "ml.r6i.4xlarge" + ProductionVariantInstanceType_ml_r6i_8xlarge ProductionVariantInstanceType = "ml.r6i.8xlarge" + ProductionVariantInstanceType_ml_r6i_large ProductionVariantInstanceType = "ml.r6i.large" + ProductionVariantInstanceType_ml_r6i_xlarge ProductionVariantInstanceType = "ml.r6i.xlarge" + ProductionVariantInstanceType_ml_r7gd_12xlarge ProductionVariantInstanceType = "ml.r7gd.12xlarge" + ProductionVariantInstanceType_ml_r7gd_16xlarge ProductionVariantInstanceType = "ml.r7gd.16xlarge" + ProductionVariantInstanceType_ml_r7gd_2xlarge ProductionVariantInstanceType = "ml.r7gd.2xlarge" + ProductionVariantInstanceType_ml_r7gd_4xlarge ProductionVariantInstanceType = "ml.r7gd.4xlarge" + ProductionVariantInstanceType_ml_r7gd_8xlarge ProductionVariantInstanceType = "ml.r7gd.8xlarge" + ProductionVariantInstanceType_ml_r7gd_large ProductionVariantInstanceType = "ml.r7gd.large" + ProductionVariantInstanceType_ml_r7gd_medium ProductionVariantInstanceType = "ml.r7gd.medium" + ProductionVariantInstanceType_ml_r7gd_xlarge ProductionVariantInstanceType = "ml.r7gd.xlarge" + ProductionVariantInstanceType_ml_r7i_12xlarge ProductionVariantInstanceType = "ml.r7i.12xlarge" + ProductionVariantInstanceType_ml_r7i_16xlarge ProductionVariantInstanceType = "ml.r7i.16xlarge" + ProductionVariantInstanceType_ml_r7i_24xlarge ProductionVariantInstanceType = "ml.r7i.24xlarge" + ProductionVariantInstanceType_ml_r7i_2xlarge ProductionVariantInstanceType = "ml.r7i.2xlarge" + ProductionVariantInstanceType_ml_r7i_48xlarge ProductionVariantInstanceType = "ml.r7i.48xlarge" + ProductionVariantInstanceType_ml_r7i_4xlarge ProductionVariantInstanceType = "ml.r7i.4xlarge" + ProductionVariantInstanceType_ml_r7i_8xlarge ProductionVariantInstanceType = "ml.r7i.8xlarge" + ProductionVariantInstanceType_ml_r7i_large ProductionVariantInstanceType = "ml.r7i.large" + ProductionVariantInstanceType_ml_r7i_xlarge ProductionVariantInstanceType = "ml.r7i.xlarge" + ProductionVariantInstanceType_ml_r8g_12xlarge ProductionVariantInstanceType = "ml.r8g.12xlarge" + ProductionVariantInstanceType_ml_r8g_16xlarge ProductionVariantInstanceType = "ml.r8g.16xlarge" + ProductionVariantInstanceType_ml_r8g_24xlarge ProductionVariantInstanceType = "ml.r8g.24xlarge" + ProductionVariantInstanceType_ml_r8g_2xlarge ProductionVariantInstanceType = "ml.r8g.2xlarge" + ProductionVariantInstanceType_ml_r8g_48xlarge ProductionVariantInstanceType = "ml.r8g.48xlarge" + ProductionVariantInstanceType_ml_r8g_4xlarge ProductionVariantInstanceType = "ml.r8g.4xlarge" + ProductionVariantInstanceType_ml_r8g_8xlarge ProductionVariantInstanceType = "ml.r8g.8xlarge" + ProductionVariantInstanceType_ml_r8g_large ProductionVariantInstanceType = "ml.r8g.large" + ProductionVariantInstanceType_ml_r8g_medium ProductionVariantInstanceType = "ml.r8g.medium" + ProductionVariantInstanceType_ml_r8g_xlarge ProductionVariantInstanceType = "ml.r8g.xlarge" + ProductionVariantInstanceType_ml_t2_2xlarge ProductionVariantInstanceType = "ml.t2.2xlarge" + ProductionVariantInstanceType_ml_t2_large ProductionVariantInstanceType = "ml.t2.large" + ProductionVariantInstanceType_ml_t2_medium ProductionVariantInstanceType = "ml.t2.medium" + ProductionVariantInstanceType_ml_t2_xlarge ProductionVariantInstanceType = "ml.t2.xlarge" + ProductionVariantInstanceType_ml_trn1_2xlarge ProductionVariantInstanceType = "ml.trn1.2xlarge" + ProductionVariantInstanceType_ml_trn1_32xlarge ProductionVariantInstanceType = "ml.trn1.32xlarge" + ProductionVariantInstanceType_ml_trn1n_32xlarge ProductionVariantInstanceType = "ml.trn1n.32xlarge" + ProductionVariantInstanceType_ml_trn2_48xlarge ProductionVariantInstanceType = "ml.trn2.48xlarge" ) type ProfilingStatus string @@ -2554,6 +2893,13 @@ const ( RedshiftResultFormat_PARQUET RedshiftResultFormat = "PARQUET" ) +type Relation string + +const ( + Relation_EqualTo Relation = "EqualTo" + Relation_GreaterThanOrEqualTo Relation = "GreaterThanOrEqualTo" +) + type RepositoryAccessMode string const ( @@ -2561,6 +2907,38 @@ const ( RepositoryAccessMode_Vpc RepositoryAccessMode = "Vpc" ) +type ReservedCapacityInstanceType string + +const ( + ReservedCapacityInstanceType_ml_p4d_24xlarge ReservedCapacityInstanceType = "ml.p4d.24xlarge" + ReservedCapacityInstanceType_ml_p4de_24xlarge ReservedCapacityInstanceType = "ml.p4de.24xlarge" + ReservedCapacityInstanceType_ml_p5_48xlarge ReservedCapacityInstanceType = "ml.p5.48xlarge" + ReservedCapacityInstanceType_ml_p5_4xlarge ReservedCapacityInstanceType = "ml.p5.4xlarge" + ReservedCapacityInstanceType_ml_p5e_48xlarge ReservedCapacityInstanceType = "ml.p5e.48xlarge" + ReservedCapacityInstanceType_ml_p5en_48xlarge ReservedCapacityInstanceType = "ml.p5en.48xlarge" + ReservedCapacityInstanceType_ml_p6_b200_48xlarge ReservedCapacityInstanceType = "ml.p6-b200.48xlarge" + ReservedCapacityInstanceType_ml_p6e_gb200_36xlarge ReservedCapacityInstanceType = "ml.p6e-gb200.36xlarge" + ReservedCapacityInstanceType_ml_trn1_32xlarge ReservedCapacityInstanceType = "ml.trn1.32xlarge" + ReservedCapacityInstanceType_ml_trn2_48xlarge ReservedCapacityInstanceType = "ml.trn2.48xlarge" +) + +type ReservedCapacityStatus string + +const ( + ReservedCapacityStatus_Active ReservedCapacityStatus = "Active" + ReservedCapacityStatus_Expired ReservedCapacityStatus = "Expired" + ReservedCapacityStatus_Failed ReservedCapacityStatus = "Failed" + ReservedCapacityStatus_Pending ReservedCapacityStatus = "Pending" + ReservedCapacityStatus_Scheduled ReservedCapacityStatus = "Scheduled" +) + +type ReservedCapacityType string + +const ( + ReservedCapacityType_Instance ReservedCapacityType = "Instance" + ReservedCapacityType_UltraServer ReservedCapacityType = "UltraServer" +) + type ResourceCatalogSortBy string const ( @@ -2574,6 +2952,14 @@ const ( ResourceCatalogSortOrder_Descending ResourceCatalogSortOrder = "Descending" ) +type ResourceSharingStrategy string + +const ( + ResourceSharingStrategy_DontLend ResourceSharingStrategy = "DontLend" + ResourceSharingStrategy_Lend ResourceSharingStrategy = "Lend" + ResourceSharingStrategy_LendAndBorrow ResourceSharingStrategy = "LendAndBorrow" +) + type ResourceType string const ( @@ -2592,6 +2978,7 @@ const ( ResourceType_ModelPackageGroup ResourceType = "ModelPackageGroup" ResourceType_Pipeline ResourceType = "Pipeline" ResourceType_PipelineExecution ResourceType = "PipelineExecution" + ResourceType_PipelineVersion ResourceType = "PipelineVersion" ResourceType_Project ResourceType = "Project" ResourceType_TrainingJob ResourceType = "TrainingJob" ) @@ -2639,6 +3026,7 @@ type S3DataType string const ( S3DataType_AugmentedManifestFile S3DataType = "AugmentedManifestFile" + S3DataType_Converse S3DataType = "Converse" S3DataType_ManifestFile S3DataType = "ManifestFile" S3DataType_S3Prefix S3DataType = "S3Prefix" ) @@ -2656,6 +3044,13 @@ const ( SageMakerImageName_sagemaker_distribution SageMakerImageName = "sagemaker_distribution" ) +type SageMakerResourceName string + +const ( + SageMakerResourceName_hyperpod_cluster SageMakerResourceName = "hyperpod-cluster" + SageMakerResourceName_training_job SageMakerResourceName = "training-job" +) + type SagemakerServicecatalogStatus string const ( @@ -2672,6 +3067,23 @@ const ( ScheduleStatus_Stopped ScheduleStatus = "Stopped" ) +type SchedulerResourceStatus string + +const ( + SchedulerResourceStatus_CreateFailed SchedulerResourceStatus = "CreateFailed" + SchedulerResourceStatus_CreateRollbackFailed SchedulerResourceStatus = "CreateRollbackFailed" + SchedulerResourceStatus_Created SchedulerResourceStatus = "Created" + SchedulerResourceStatus_Creating SchedulerResourceStatus = "Creating" + SchedulerResourceStatus_DeleteFailed SchedulerResourceStatus = "DeleteFailed" + SchedulerResourceStatus_DeleteRollbackFailed SchedulerResourceStatus = "DeleteRollbackFailed" + SchedulerResourceStatus_Deleted SchedulerResourceStatus = "Deleted" + SchedulerResourceStatus_Deleting SchedulerResourceStatus = "Deleting" + SchedulerResourceStatus_UpdateFailed SchedulerResourceStatus = "UpdateFailed" + SchedulerResourceStatus_UpdateRollbackFailed SchedulerResourceStatus = "UpdateRollbackFailed" + SchedulerResourceStatus_Updated SchedulerResourceStatus = "Updated" + SchedulerResourceStatus_Updating SchedulerResourceStatus = "Updating" +) + type SearchSortOrder string const ( @@ -2746,6 +3158,14 @@ const ( SortBy_Status SortBy = "Status" ) +type SortClusterSchedulerConfigBy string + +const ( + SortClusterSchedulerConfigBy_CreationTime SortClusterSchedulerConfigBy = "CreationTime" + SortClusterSchedulerConfigBy_Name SortClusterSchedulerConfigBy = "Name" + SortClusterSchedulerConfigBy_Status SortClusterSchedulerConfigBy = "Status" +) + type SortContextsBy string const ( @@ -2796,6 +3216,15 @@ const ( SortPipelinesBy_Name SortPipelinesBy = "Name" ) +type SortQuotaBy string + +const ( + SortQuotaBy_ClusterArn SortQuotaBy = "ClusterArn" + SortQuotaBy_CreationTime SortQuotaBy = "CreationTime" + SortQuotaBy_Name SortQuotaBy = "Name" + SortQuotaBy_Status SortQuotaBy = "Status" +) + type SortTrackingServerBy string const ( @@ -3003,6 +3432,14 @@ const ( ThroughputMode_Provisioned ThroughputMode = "Provisioned" ) +type TrackingServerMaintenanceStatus string + +const ( + TrackingServerMaintenanceStatus_MaintenanceComplete TrackingServerMaintenanceStatus = "MaintenanceComplete" + TrackingServerMaintenanceStatus_MaintenanceFailed TrackingServerMaintenanceStatus = "MaintenanceFailed" + TrackingServerMaintenanceStatus_MaintenanceInProgress TrackingServerMaintenanceStatus = "MaintenanceInProgress" +) + type TrackingServerSize string const ( @@ -3059,112 +3496,144 @@ const ( type TrainingInstanceType string const ( - TrainingInstanceType_ml_c4_2xlarge TrainingInstanceType = "ml.c4.2xlarge" - TrainingInstanceType_ml_c4_4xlarge TrainingInstanceType = "ml.c4.4xlarge" - TrainingInstanceType_ml_c4_8xlarge TrainingInstanceType = "ml.c4.8xlarge" - TrainingInstanceType_ml_c4_xlarge TrainingInstanceType = "ml.c4.xlarge" - TrainingInstanceType_ml_c5_18xlarge TrainingInstanceType = "ml.c5.18xlarge" - TrainingInstanceType_ml_c5_2xlarge TrainingInstanceType = "ml.c5.2xlarge" - TrainingInstanceType_ml_c5_4xlarge TrainingInstanceType = "ml.c5.4xlarge" - TrainingInstanceType_ml_c5_9xlarge TrainingInstanceType = "ml.c5.9xlarge" - TrainingInstanceType_ml_c5_xlarge TrainingInstanceType = "ml.c5.xlarge" - TrainingInstanceType_ml_c5n_18xlarge TrainingInstanceType = "ml.c5n.18xlarge" - TrainingInstanceType_ml_c5n_2xlarge TrainingInstanceType = "ml.c5n.2xlarge" - TrainingInstanceType_ml_c5n_4xlarge TrainingInstanceType = "ml.c5n.4xlarge" - TrainingInstanceType_ml_c5n_9xlarge TrainingInstanceType = "ml.c5n.9xlarge" - TrainingInstanceType_ml_c5n_xlarge TrainingInstanceType = "ml.c5n.xlarge" - TrainingInstanceType_ml_c6i_12xlarge TrainingInstanceType = "ml.c6i.12xlarge" - TrainingInstanceType_ml_c6i_16xlarge TrainingInstanceType = "ml.c6i.16xlarge" - TrainingInstanceType_ml_c6i_24xlarge TrainingInstanceType = "ml.c6i.24xlarge" - TrainingInstanceType_ml_c6i_2xlarge TrainingInstanceType = "ml.c6i.2xlarge" - TrainingInstanceType_ml_c6i_32xlarge TrainingInstanceType = "ml.c6i.32xlarge" - TrainingInstanceType_ml_c6i_4xlarge TrainingInstanceType = "ml.c6i.4xlarge" - TrainingInstanceType_ml_c6i_8xlarge TrainingInstanceType = "ml.c6i.8xlarge" - TrainingInstanceType_ml_c6i_xlarge TrainingInstanceType = "ml.c6i.xlarge" - TrainingInstanceType_ml_g4dn_12xlarge TrainingInstanceType = "ml.g4dn.12xlarge" - TrainingInstanceType_ml_g4dn_16xlarge TrainingInstanceType = "ml.g4dn.16xlarge" - TrainingInstanceType_ml_g4dn_2xlarge TrainingInstanceType = "ml.g4dn.2xlarge" - TrainingInstanceType_ml_g4dn_4xlarge TrainingInstanceType = "ml.g4dn.4xlarge" - TrainingInstanceType_ml_g4dn_8xlarge TrainingInstanceType = "ml.g4dn.8xlarge" - TrainingInstanceType_ml_g4dn_xlarge TrainingInstanceType = "ml.g4dn.xlarge" - TrainingInstanceType_ml_g5_12xlarge TrainingInstanceType = "ml.g5.12xlarge" - TrainingInstanceType_ml_g5_16xlarge TrainingInstanceType = "ml.g5.16xlarge" - TrainingInstanceType_ml_g5_24xlarge TrainingInstanceType = "ml.g5.24xlarge" - TrainingInstanceType_ml_g5_2xlarge TrainingInstanceType = "ml.g5.2xlarge" - TrainingInstanceType_ml_g5_48xlarge TrainingInstanceType = "ml.g5.48xlarge" - TrainingInstanceType_ml_g5_4xlarge TrainingInstanceType = "ml.g5.4xlarge" - TrainingInstanceType_ml_g5_8xlarge TrainingInstanceType = "ml.g5.8xlarge" - TrainingInstanceType_ml_g5_xlarge TrainingInstanceType = "ml.g5.xlarge" - TrainingInstanceType_ml_g6_12xlarge TrainingInstanceType = "ml.g6.12xlarge" - TrainingInstanceType_ml_g6_16xlarge TrainingInstanceType = "ml.g6.16xlarge" - TrainingInstanceType_ml_g6_24xlarge TrainingInstanceType = "ml.g6.24xlarge" - TrainingInstanceType_ml_g6_2xlarge TrainingInstanceType = "ml.g6.2xlarge" - TrainingInstanceType_ml_g6_48xlarge TrainingInstanceType = "ml.g6.48xlarge" - TrainingInstanceType_ml_g6_4xlarge TrainingInstanceType = "ml.g6.4xlarge" - TrainingInstanceType_ml_g6_8xlarge TrainingInstanceType = "ml.g6.8xlarge" - TrainingInstanceType_ml_g6_xlarge TrainingInstanceType = "ml.g6.xlarge" - TrainingInstanceType_ml_g6e_12xlarge TrainingInstanceType = "ml.g6e.12xlarge" - TrainingInstanceType_ml_g6e_16xlarge TrainingInstanceType = "ml.g6e.16xlarge" - TrainingInstanceType_ml_g6e_24xlarge TrainingInstanceType = "ml.g6e.24xlarge" - TrainingInstanceType_ml_g6e_2xlarge TrainingInstanceType = "ml.g6e.2xlarge" - TrainingInstanceType_ml_g6e_48xlarge TrainingInstanceType = "ml.g6e.48xlarge" - TrainingInstanceType_ml_g6e_4xlarge TrainingInstanceType = "ml.g6e.4xlarge" - TrainingInstanceType_ml_g6e_8xlarge TrainingInstanceType = "ml.g6e.8xlarge" - TrainingInstanceType_ml_g6e_xlarge TrainingInstanceType = "ml.g6e.xlarge" - TrainingInstanceType_ml_m4_10xlarge TrainingInstanceType = "ml.m4.10xlarge" - TrainingInstanceType_ml_m4_16xlarge TrainingInstanceType = "ml.m4.16xlarge" - TrainingInstanceType_ml_m4_2xlarge TrainingInstanceType = "ml.m4.2xlarge" - TrainingInstanceType_ml_m4_4xlarge TrainingInstanceType = "ml.m4.4xlarge" - TrainingInstanceType_ml_m4_xlarge TrainingInstanceType = "ml.m4.xlarge" - TrainingInstanceType_ml_m5_12xlarge TrainingInstanceType = "ml.m5.12xlarge" - TrainingInstanceType_ml_m5_24xlarge TrainingInstanceType = "ml.m5.24xlarge" - TrainingInstanceType_ml_m5_2xlarge TrainingInstanceType = "ml.m5.2xlarge" - TrainingInstanceType_ml_m5_4xlarge TrainingInstanceType = "ml.m5.4xlarge" - TrainingInstanceType_ml_m5_large TrainingInstanceType = "ml.m5.large" - TrainingInstanceType_ml_m5_xlarge TrainingInstanceType = "ml.m5.xlarge" - TrainingInstanceType_ml_m6i_12xlarge TrainingInstanceType = "ml.m6i.12xlarge" - TrainingInstanceType_ml_m6i_16xlarge TrainingInstanceType = "ml.m6i.16xlarge" - TrainingInstanceType_ml_m6i_24xlarge TrainingInstanceType = "ml.m6i.24xlarge" - TrainingInstanceType_ml_m6i_2xlarge TrainingInstanceType = "ml.m6i.2xlarge" - TrainingInstanceType_ml_m6i_32xlarge TrainingInstanceType = "ml.m6i.32xlarge" - TrainingInstanceType_ml_m6i_4xlarge TrainingInstanceType = "ml.m6i.4xlarge" - TrainingInstanceType_ml_m6i_8xlarge TrainingInstanceType = "ml.m6i.8xlarge" - TrainingInstanceType_ml_m6i_large TrainingInstanceType = "ml.m6i.large" - TrainingInstanceType_ml_m6i_xlarge TrainingInstanceType = "ml.m6i.xlarge" - TrainingInstanceType_ml_p2_16xlarge TrainingInstanceType = "ml.p2.16xlarge" - TrainingInstanceType_ml_p2_8xlarge TrainingInstanceType = "ml.p2.8xlarge" - TrainingInstanceType_ml_p2_xlarge TrainingInstanceType = "ml.p2.xlarge" - TrainingInstanceType_ml_p3_16xlarge TrainingInstanceType = "ml.p3.16xlarge" - TrainingInstanceType_ml_p3_2xlarge TrainingInstanceType = "ml.p3.2xlarge" - TrainingInstanceType_ml_p3_8xlarge TrainingInstanceType = "ml.p3.8xlarge" - TrainingInstanceType_ml_p3dn_24xlarge TrainingInstanceType = "ml.p3dn.24xlarge" - TrainingInstanceType_ml_p4d_24xlarge TrainingInstanceType = "ml.p4d.24xlarge" - TrainingInstanceType_ml_p4de_24xlarge TrainingInstanceType = "ml.p4de.24xlarge" - TrainingInstanceType_ml_p5_48xlarge TrainingInstanceType = "ml.p5.48xlarge" - TrainingInstanceType_ml_p5e_48xlarge TrainingInstanceType = "ml.p5e.48xlarge" - TrainingInstanceType_ml_r5_12xlarge TrainingInstanceType = "ml.r5.12xlarge" - TrainingInstanceType_ml_r5_16xlarge TrainingInstanceType = "ml.r5.16xlarge" - TrainingInstanceType_ml_r5_24xlarge TrainingInstanceType = "ml.r5.24xlarge" - TrainingInstanceType_ml_r5_2xlarge TrainingInstanceType = "ml.r5.2xlarge" - TrainingInstanceType_ml_r5_4xlarge TrainingInstanceType = "ml.r5.4xlarge" - TrainingInstanceType_ml_r5_8xlarge TrainingInstanceType = "ml.r5.8xlarge" - TrainingInstanceType_ml_r5_large TrainingInstanceType = "ml.r5.large" - TrainingInstanceType_ml_r5_xlarge TrainingInstanceType = "ml.r5.xlarge" - TrainingInstanceType_ml_r5d_12xlarge TrainingInstanceType = "ml.r5d.12xlarge" - TrainingInstanceType_ml_r5d_16xlarge TrainingInstanceType = "ml.r5d.16xlarge" - TrainingInstanceType_ml_r5d_24xlarge TrainingInstanceType = "ml.r5d.24xlarge" - TrainingInstanceType_ml_r5d_2xlarge TrainingInstanceType = "ml.r5d.2xlarge" - TrainingInstanceType_ml_r5d_4xlarge TrainingInstanceType = "ml.r5d.4xlarge" - TrainingInstanceType_ml_r5d_8xlarge TrainingInstanceType = "ml.r5d.8xlarge" - TrainingInstanceType_ml_r5d_large TrainingInstanceType = "ml.r5d.large" - TrainingInstanceType_ml_r5d_xlarge TrainingInstanceType = "ml.r5d.xlarge" - TrainingInstanceType_ml_t3_2xlarge TrainingInstanceType = "ml.t3.2xlarge" - TrainingInstanceType_ml_t3_large TrainingInstanceType = "ml.t3.large" - TrainingInstanceType_ml_t3_medium TrainingInstanceType = "ml.t3.medium" - TrainingInstanceType_ml_t3_xlarge TrainingInstanceType = "ml.t3.xlarge" - TrainingInstanceType_ml_trn1_2xlarge TrainingInstanceType = "ml.trn1.2xlarge" - TrainingInstanceType_ml_trn1_32xlarge TrainingInstanceType = "ml.trn1.32xlarge" - TrainingInstanceType_ml_trn1n_32xlarge TrainingInstanceType = "ml.trn1n.32xlarge" + TrainingInstanceType_ml_c4_2xlarge TrainingInstanceType = "ml.c4.2xlarge" + TrainingInstanceType_ml_c4_4xlarge TrainingInstanceType = "ml.c4.4xlarge" + TrainingInstanceType_ml_c4_8xlarge TrainingInstanceType = "ml.c4.8xlarge" + TrainingInstanceType_ml_c4_xlarge TrainingInstanceType = "ml.c4.xlarge" + TrainingInstanceType_ml_c5_18xlarge TrainingInstanceType = "ml.c5.18xlarge" + TrainingInstanceType_ml_c5_2xlarge TrainingInstanceType = "ml.c5.2xlarge" + TrainingInstanceType_ml_c5_4xlarge TrainingInstanceType = "ml.c5.4xlarge" + TrainingInstanceType_ml_c5_9xlarge TrainingInstanceType = "ml.c5.9xlarge" + TrainingInstanceType_ml_c5_xlarge TrainingInstanceType = "ml.c5.xlarge" + TrainingInstanceType_ml_c5n_18xlarge TrainingInstanceType = "ml.c5n.18xlarge" + TrainingInstanceType_ml_c5n_2xlarge TrainingInstanceType = "ml.c5n.2xlarge" + TrainingInstanceType_ml_c5n_4xlarge TrainingInstanceType = "ml.c5n.4xlarge" + TrainingInstanceType_ml_c5n_9xlarge TrainingInstanceType = "ml.c5n.9xlarge" + TrainingInstanceType_ml_c5n_xlarge TrainingInstanceType = "ml.c5n.xlarge" + TrainingInstanceType_ml_c6i_12xlarge TrainingInstanceType = "ml.c6i.12xlarge" + TrainingInstanceType_ml_c6i_16xlarge TrainingInstanceType = "ml.c6i.16xlarge" + TrainingInstanceType_ml_c6i_24xlarge TrainingInstanceType = "ml.c6i.24xlarge" + TrainingInstanceType_ml_c6i_2xlarge TrainingInstanceType = "ml.c6i.2xlarge" + TrainingInstanceType_ml_c6i_32xlarge TrainingInstanceType = "ml.c6i.32xlarge" + TrainingInstanceType_ml_c6i_4xlarge TrainingInstanceType = "ml.c6i.4xlarge" + TrainingInstanceType_ml_c6i_8xlarge TrainingInstanceType = "ml.c6i.8xlarge" + TrainingInstanceType_ml_c6i_xlarge TrainingInstanceType = "ml.c6i.xlarge" + TrainingInstanceType_ml_c7i_12xlarge TrainingInstanceType = "ml.c7i.12xlarge" + TrainingInstanceType_ml_c7i_16xlarge TrainingInstanceType = "ml.c7i.16xlarge" + TrainingInstanceType_ml_c7i_24xlarge TrainingInstanceType = "ml.c7i.24xlarge" + TrainingInstanceType_ml_c7i_2xlarge TrainingInstanceType = "ml.c7i.2xlarge" + TrainingInstanceType_ml_c7i_48xlarge TrainingInstanceType = "ml.c7i.48xlarge" + TrainingInstanceType_ml_c7i_4xlarge TrainingInstanceType = "ml.c7i.4xlarge" + TrainingInstanceType_ml_c7i_8xlarge TrainingInstanceType = "ml.c7i.8xlarge" + TrainingInstanceType_ml_c7i_large TrainingInstanceType = "ml.c7i.large" + TrainingInstanceType_ml_c7i_xlarge TrainingInstanceType = "ml.c7i.xlarge" + TrainingInstanceType_ml_g4dn_12xlarge TrainingInstanceType = "ml.g4dn.12xlarge" + TrainingInstanceType_ml_g4dn_16xlarge TrainingInstanceType = "ml.g4dn.16xlarge" + TrainingInstanceType_ml_g4dn_2xlarge TrainingInstanceType = "ml.g4dn.2xlarge" + TrainingInstanceType_ml_g4dn_4xlarge TrainingInstanceType = "ml.g4dn.4xlarge" + TrainingInstanceType_ml_g4dn_8xlarge TrainingInstanceType = "ml.g4dn.8xlarge" + TrainingInstanceType_ml_g4dn_xlarge TrainingInstanceType = "ml.g4dn.xlarge" + TrainingInstanceType_ml_g5_12xlarge TrainingInstanceType = "ml.g5.12xlarge" + TrainingInstanceType_ml_g5_16xlarge TrainingInstanceType = "ml.g5.16xlarge" + TrainingInstanceType_ml_g5_24xlarge TrainingInstanceType = "ml.g5.24xlarge" + TrainingInstanceType_ml_g5_2xlarge TrainingInstanceType = "ml.g5.2xlarge" + TrainingInstanceType_ml_g5_48xlarge TrainingInstanceType = "ml.g5.48xlarge" + TrainingInstanceType_ml_g5_4xlarge TrainingInstanceType = "ml.g5.4xlarge" + TrainingInstanceType_ml_g5_8xlarge TrainingInstanceType = "ml.g5.8xlarge" + TrainingInstanceType_ml_g5_xlarge TrainingInstanceType = "ml.g5.xlarge" + TrainingInstanceType_ml_g6_12xlarge TrainingInstanceType = "ml.g6.12xlarge" + TrainingInstanceType_ml_g6_16xlarge TrainingInstanceType = "ml.g6.16xlarge" + TrainingInstanceType_ml_g6_24xlarge TrainingInstanceType = "ml.g6.24xlarge" + TrainingInstanceType_ml_g6_2xlarge TrainingInstanceType = "ml.g6.2xlarge" + TrainingInstanceType_ml_g6_48xlarge TrainingInstanceType = "ml.g6.48xlarge" + TrainingInstanceType_ml_g6_4xlarge TrainingInstanceType = "ml.g6.4xlarge" + TrainingInstanceType_ml_g6_8xlarge TrainingInstanceType = "ml.g6.8xlarge" + TrainingInstanceType_ml_g6_xlarge TrainingInstanceType = "ml.g6.xlarge" + TrainingInstanceType_ml_g6e_12xlarge TrainingInstanceType = "ml.g6e.12xlarge" + TrainingInstanceType_ml_g6e_16xlarge TrainingInstanceType = "ml.g6e.16xlarge" + TrainingInstanceType_ml_g6e_24xlarge TrainingInstanceType = "ml.g6e.24xlarge" + TrainingInstanceType_ml_g6e_2xlarge TrainingInstanceType = "ml.g6e.2xlarge" + TrainingInstanceType_ml_g6e_48xlarge TrainingInstanceType = "ml.g6e.48xlarge" + TrainingInstanceType_ml_g6e_4xlarge TrainingInstanceType = "ml.g6e.4xlarge" + TrainingInstanceType_ml_g6e_8xlarge TrainingInstanceType = "ml.g6e.8xlarge" + TrainingInstanceType_ml_g6e_xlarge TrainingInstanceType = "ml.g6e.xlarge" + TrainingInstanceType_ml_m4_10xlarge TrainingInstanceType = "ml.m4.10xlarge" + TrainingInstanceType_ml_m4_16xlarge TrainingInstanceType = "ml.m4.16xlarge" + TrainingInstanceType_ml_m4_2xlarge TrainingInstanceType = "ml.m4.2xlarge" + TrainingInstanceType_ml_m4_4xlarge TrainingInstanceType = "ml.m4.4xlarge" + TrainingInstanceType_ml_m4_xlarge TrainingInstanceType = "ml.m4.xlarge" + TrainingInstanceType_ml_m5_12xlarge TrainingInstanceType = "ml.m5.12xlarge" + TrainingInstanceType_ml_m5_24xlarge TrainingInstanceType = "ml.m5.24xlarge" + TrainingInstanceType_ml_m5_2xlarge TrainingInstanceType = "ml.m5.2xlarge" + TrainingInstanceType_ml_m5_4xlarge TrainingInstanceType = "ml.m5.4xlarge" + TrainingInstanceType_ml_m5_large TrainingInstanceType = "ml.m5.large" + TrainingInstanceType_ml_m5_xlarge TrainingInstanceType = "ml.m5.xlarge" + TrainingInstanceType_ml_m6i_12xlarge TrainingInstanceType = "ml.m6i.12xlarge" + TrainingInstanceType_ml_m6i_16xlarge TrainingInstanceType = "ml.m6i.16xlarge" + TrainingInstanceType_ml_m6i_24xlarge TrainingInstanceType = "ml.m6i.24xlarge" + TrainingInstanceType_ml_m6i_2xlarge TrainingInstanceType = "ml.m6i.2xlarge" + TrainingInstanceType_ml_m6i_32xlarge TrainingInstanceType = "ml.m6i.32xlarge" + TrainingInstanceType_ml_m6i_4xlarge TrainingInstanceType = "ml.m6i.4xlarge" + TrainingInstanceType_ml_m6i_8xlarge TrainingInstanceType = "ml.m6i.8xlarge" + TrainingInstanceType_ml_m6i_large TrainingInstanceType = "ml.m6i.large" + TrainingInstanceType_ml_m6i_xlarge TrainingInstanceType = "ml.m6i.xlarge" + TrainingInstanceType_ml_m7i_12xlarge TrainingInstanceType = "ml.m7i.12xlarge" + TrainingInstanceType_ml_m7i_16xlarge TrainingInstanceType = "ml.m7i.16xlarge" + TrainingInstanceType_ml_m7i_24xlarge TrainingInstanceType = "ml.m7i.24xlarge" + TrainingInstanceType_ml_m7i_2xlarge TrainingInstanceType = "ml.m7i.2xlarge" + TrainingInstanceType_ml_m7i_48xlarge TrainingInstanceType = "ml.m7i.48xlarge" + TrainingInstanceType_ml_m7i_4xlarge TrainingInstanceType = "ml.m7i.4xlarge" + TrainingInstanceType_ml_m7i_8xlarge TrainingInstanceType = "ml.m7i.8xlarge" + TrainingInstanceType_ml_m7i_large TrainingInstanceType = "ml.m7i.large" + TrainingInstanceType_ml_m7i_xlarge TrainingInstanceType = "ml.m7i.xlarge" + TrainingInstanceType_ml_p2_16xlarge TrainingInstanceType = "ml.p2.16xlarge" + TrainingInstanceType_ml_p2_8xlarge TrainingInstanceType = "ml.p2.8xlarge" + TrainingInstanceType_ml_p2_xlarge TrainingInstanceType = "ml.p2.xlarge" + TrainingInstanceType_ml_p3_16xlarge TrainingInstanceType = "ml.p3.16xlarge" + TrainingInstanceType_ml_p3_2xlarge TrainingInstanceType = "ml.p3.2xlarge" + TrainingInstanceType_ml_p3_8xlarge TrainingInstanceType = "ml.p3.8xlarge" + TrainingInstanceType_ml_p3dn_24xlarge TrainingInstanceType = "ml.p3dn.24xlarge" + TrainingInstanceType_ml_p4d_24xlarge TrainingInstanceType = "ml.p4d.24xlarge" + TrainingInstanceType_ml_p4de_24xlarge TrainingInstanceType = "ml.p4de.24xlarge" + TrainingInstanceType_ml_p5_48xlarge TrainingInstanceType = "ml.p5.48xlarge" + TrainingInstanceType_ml_p5_4xlarge TrainingInstanceType = "ml.p5.4xlarge" + TrainingInstanceType_ml_p5e_48xlarge TrainingInstanceType = "ml.p5e.48xlarge" + TrainingInstanceType_ml_p5en_48xlarge TrainingInstanceType = "ml.p5en.48xlarge" + TrainingInstanceType_ml_p6_b200_48xlarge TrainingInstanceType = "ml.p6-b200.48xlarge" + TrainingInstanceType_ml_p6e_gb200_36xlarge TrainingInstanceType = "ml.p6e-gb200.36xlarge" + TrainingInstanceType_ml_r5_12xlarge TrainingInstanceType = "ml.r5.12xlarge" + TrainingInstanceType_ml_r5_16xlarge TrainingInstanceType = "ml.r5.16xlarge" + TrainingInstanceType_ml_r5_24xlarge TrainingInstanceType = "ml.r5.24xlarge" + TrainingInstanceType_ml_r5_2xlarge TrainingInstanceType = "ml.r5.2xlarge" + TrainingInstanceType_ml_r5_4xlarge TrainingInstanceType = "ml.r5.4xlarge" + TrainingInstanceType_ml_r5_8xlarge TrainingInstanceType = "ml.r5.8xlarge" + TrainingInstanceType_ml_r5_large TrainingInstanceType = "ml.r5.large" + TrainingInstanceType_ml_r5_xlarge TrainingInstanceType = "ml.r5.xlarge" + TrainingInstanceType_ml_r5d_12xlarge TrainingInstanceType = "ml.r5d.12xlarge" + TrainingInstanceType_ml_r5d_16xlarge TrainingInstanceType = "ml.r5d.16xlarge" + TrainingInstanceType_ml_r5d_24xlarge TrainingInstanceType = "ml.r5d.24xlarge" + TrainingInstanceType_ml_r5d_2xlarge TrainingInstanceType = "ml.r5d.2xlarge" + TrainingInstanceType_ml_r5d_4xlarge TrainingInstanceType = "ml.r5d.4xlarge" + TrainingInstanceType_ml_r5d_8xlarge TrainingInstanceType = "ml.r5d.8xlarge" + TrainingInstanceType_ml_r5d_large TrainingInstanceType = "ml.r5d.large" + TrainingInstanceType_ml_r5d_xlarge TrainingInstanceType = "ml.r5d.xlarge" + TrainingInstanceType_ml_r7i_12xlarge TrainingInstanceType = "ml.r7i.12xlarge" + TrainingInstanceType_ml_r7i_16xlarge TrainingInstanceType = "ml.r7i.16xlarge" + TrainingInstanceType_ml_r7i_24xlarge TrainingInstanceType = "ml.r7i.24xlarge" + TrainingInstanceType_ml_r7i_2xlarge TrainingInstanceType = "ml.r7i.2xlarge" + TrainingInstanceType_ml_r7i_48xlarge TrainingInstanceType = "ml.r7i.48xlarge" + TrainingInstanceType_ml_r7i_4xlarge TrainingInstanceType = "ml.r7i.4xlarge" + TrainingInstanceType_ml_r7i_8xlarge TrainingInstanceType = "ml.r7i.8xlarge" + TrainingInstanceType_ml_r7i_large TrainingInstanceType = "ml.r7i.large" + TrainingInstanceType_ml_r7i_xlarge TrainingInstanceType = "ml.r7i.xlarge" + TrainingInstanceType_ml_t3_2xlarge TrainingInstanceType = "ml.t3.2xlarge" + TrainingInstanceType_ml_t3_large TrainingInstanceType = "ml.t3.large" + TrainingInstanceType_ml_t3_medium TrainingInstanceType = "ml.t3.medium" + TrainingInstanceType_ml_t3_xlarge TrainingInstanceType = "ml.t3.xlarge" + TrainingInstanceType_ml_trn1_2xlarge TrainingInstanceType = "ml.trn1.2xlarge" + TrainingInstanceType_ml_trn1_32xlarge TrainingInstanceType = "ml.trn1.32xlarge" + TrainingInstanceType_ml_trn1n_32xlarge TrainingInstanceType = "ml.trn1n.32xlarge" + TrainingInstanceType_ml_trn2_48xlarge TrainingInstanceType = "ml.trn2.48xlarge" ) type TrainingJobEarlyStoppingType string @@ -3193,6 +3662,37 @@ const ( TrainingJobStatus_SDK_Stopping TrainingJobStatus_SDK = "Stopping" ) +type TrainingPlanFilterName string + +const ( + TrainingPlanFilterName_Status TrainingPlanFilterName = "Status" +) + +type TrainingPlanSortBy string + +const ( + TrainingPlanSortBy_StartTime TrainingPlanSortBy = "StartTime" + TrainingPlanSortBy_Status TrainingPlanSortBy = "Status" + TrainingPlanSortBy_TrainingPlanName TrainingPlanSortBy = "TrainingPlanName" +) + +type TrainingPlanSortOrder string + +const ( + TrainingPlanSortOrder_Ascending TrainingPlanSortOrder = "Ascending" + TrainingPlanSortOrder_Descending TrainingPlanSortOrder = "Descending" +) + +type TrainingPlanStatus string + +const ( + TrainingPlanStatus_Active TrainingPlanStatus = "Active" + TrainingPlanStatus_Expired TrainingPlanStatus = "Expired" + TrainingPlanStatus_Failed TrainingPlanStatus = "Failed" + TrainingPlanStatus_Pending TrainingPlanStatus = "Pending" + TrainingPlanStatus_Scheduled TrainingPlanStatus = "Scheduled" +) + type TrainingRepositoryAccessMode string const ( @@ -3301,6 +3801,8 @@ const ( TransformInstanceType_ml_r7i_8xlarge TransformInstanceType = "ml.r7i.8xlarge" TransformInstanceType_ml_r7i_large TransformInstanceType = "ml.r7i.large" TransformInstanceType_ml_r7i_xlarge TransformInstanceType = "ml.r7i.xlarge" + TransformInstanceType_ml_trn1_2xlarge TransformInstanceType = "ml.trn1.2xlarge" + TransformInstanceType_ml_trn1_32xlarge TransformInstanceType = "ml.trn1.32xlarge" ) type TransformJobStatus_SDK string @@ -3323,6 +3825,14 @@ const ( TrialComponentPrimaryStatus_Stopping TrialComponentPrimaryStatus = "Stopping" ) +type UltraServerHealthStatus string + +const ( + UltraServerHealthStatus_Impaired UltraServerHealthStatus = "Impaired" + UltraServerHealthStatus_Insufficient_Data UltraServerHealthStatus = "Insufficient-Data" + UltraServerHealthStatus_OK UltraServerHealthStatus = "OK" +) + type UserProfileSortKey string const ( @@ -3369,6 +3879,16 @@ const ( VendorGuidance_TO_BE_ARCHIVED VendorGuidance = "TO_BE_ARCHIVED" ) +type VolumeAttachmentStatus string + +const ( + VolumeAttachmentStatus_attached VolumeAttachmentStatus = "attached" + VolumeAttachmentStatus_attaching VolumeAttachmentStatus = "attaching" + VolumeAttachmentStatus_busy VolumeAttachmentStatus = "busy" + VolumeAttachmentStatus_detached VolumeAttachmentStatus = "detached" + VolumeAttachmentStatus_detaching VolumeAttachmentStatus = "detaching" +) + type WarmPoolResourceStatus string const ( @@ -3378,6 +3898,13 @@ const ( WarmPoolResourceStatus_Terminated WarmPoolResourceStatus = "Terminated" ) +type WorkforceIPAddressType string + +const ( + WorkforceIPAddressType_dualstack WorkforceIPAddressType = "dualstack" + WorkforceIPAddressType_ipv4 WorkforceIPAddressType = "ipv4" +) + type WorkforceStatus string const ( diff --git a/apis/v1alpha1/generator.yaml b/apis/v1alpha1/generator.yaml index 76b34ce6..6a6b5870 100644 --- a/apis/v1alpha1/generator.yaml +++ b/apis/v1alpha1/generator.yaml @@ -1186,8 +1186,10 @@ ignore: - AppImageConfig - Artifact - Cluster + - ClusterSchedulerConfig - CodeRepository - CompilationJob + - ComputeQuota - Context # - DataQualityJobDefinition - DeviceFleet @@ -1222,8 +1224,10 @@ ignore: # - MonitoringSchedule # - NotebookInstanceLifecycleConfig # - NotebookInstance - # - Pipeline - OptimizationJob + - PartnerAppPresignedUrl + - PartnerApp + # - Pipeline - PresignedDomainUrl - PresignedNotebookInstanceUrl - PresignedMlflowTrackingServerUrl @@ -1232,6 +1236,7 @@ ignore: # - Space - StudioLifecycleConfig # - TrainingJob + - TrainingPlan # - TransformJob - TrialComponent - Trial diff --git a/apis/v1alpha1/labeling_job.go b/apis/v1alpha1/labeling_job.go index b738a63b..048ff54b 100644 --- a/apis/v1alpha1/labeling_job.go +++ b/apis/v1alpha1/labeling_job.go @@ -53,13 +53,12 @@ type LabelingJobSpec struct { // // - The name can't end with "-metadata". // - // - If you are using one of the following built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html), - // the attribute name must end with "-ref". If the task type you are using - // is not listed below, the attribute name must not end with "-ref". Image - // semantic segmentation (SemanticSegmentation), and adjustment (AdjustmentSemanticSegmentation) - // and verification (VerificationSemanticSegmentation) labeling jobs for - // this task type. Video frame object detection (VideoObjectDetection), and - // adjustment and verification (AdjustmentVideoObjectDetection) labeling + // - If you are using one of the built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) + // or one of the following, the attribute name must end with "-ref". Image + // semantic segmentation (SemanticSegmentation) and adjustment (AdjustmentSemanticSegmentation) + // labeling jobs for this task type. One exception is that verification (VerificationSemanticSegmentation) + // must not end with -"ref". Video frame object detection (VideoObjectDetection), + // and adjustment and verification (AdjustmentVideoObjectDetection) labeling // jobs for this task type. Video frame object tracking (VideoObjectTracking), // and adjustment and verification (AdjustmentVideoObjectTracking) labeling // jobs for this task type. 3D point cloud semantic segmentation (3DPointCloudSemanticSegmentation), @@ -87,13 +86,9 @@ type LabelingJobSpec struct { // // For named entity recognition jobs, in addition to "labels", you must provide // worker instructions in the label category configuration file using the "instructions" - // parameter: "instructions": {"shortInstruction":" - // Add header - // - // Add Instructions - // ", "fullInstruction":" - // Add additional instructions. - // "}. For details and an example, see Create a Named Entity Recognition Labeling + // parameter: "instructions": {"shortInstruction":"

Add header

Add + // Instructions

", "fullInstruction":"

Add additional instructions.

"}. + // For details and an example, see Create a Named Entity Recognition Labeling // Job (API) (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api). // // For all other built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) diff --git a/apis/v1alpha1/model_bias_job_definition.go b/apis/v1alpha1/model_bias_job_definition.go index d2fcb0c4..55cdfd9c 100644 --- a/apis/v1alpha1/model_bias_job_definition.go +++ b/apis/v1alpha1/model_bias_job_definition.go @@ -43,8 +43,8 @@ type ModelBiasJobDefinitionSpec struct { ModelBiasJobOutputConfig *MonitoringOutputConfig `json:"modelBiasJobOutputConfig"` // Networking options for a model bias job. NetworkConfig *MonitoringNetworkConfig `json:"networkConfig,omitempty"` - // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - // to perform tasks on your behalf. + // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + // assume to perform tasks on your behalf. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` // +kubebuilder:validation:Required diff --git a/apis/v1alpha1/model_explainability_job_definition.go b/apis/v1alpha1/model_explainability_job_definition.go index 5c0da32e..52684874 100644 --- a/apis/v1alpha1/model_explainability_job_definition.go +++ b/apis/v1alpha1/model_explainability_job_definition.go @@ -44,8 +44,8 @@ type ModelExplainabilityJobDefinitionSpec struct { ModelExplainabilityJobOutputConfig *MonitoringOutputConfig `json:"modelExplainabilityJobOutputConfig"` // Networking options for a model explainability job. NetworkConfig *MonitoringNetworkConfig `json:"networkConfig,omitempty"` - // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - // to perform tasks on your behalf. + // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + // assume to perform tasks on your behalf. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` // +kubebuilder:validation:Required diff --git a/apis/v1alpha1/model_package.go b/apis/v1alpha1/model_package.go index 0d8a9bc2..334fc04e 100644 --- a/apis/v1alpha1/model_package.go +++ b/apis/v1alpha1/model_package.go @@ -22,7 +22,16 @@ import ( // ModelPackageSpec defines the desired state of ModelPackage. // -// A versioned model that can be deployed for SageMaker inference. +// A container for your trained model that can be deployed for SageMaker inference. +// This can include inference code, artifacts, and metadata. The model package +// type can be one of the following. +// +// - Versioned model: A part of a model package group in Model Registry. +// +// - Unversioned model: Not part of a model package group and used in Amazon +// Web Services Marketplace. +// +// For more information, see CreateModelPackage (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html). type ModelPackageSpec struct { // An array of additional Inference Specification objects. Each additional Inference diff --git a/apis/v1alpha1/model_package_group.go b/apis/v1alpha1/model_package_group.go index 4330a5cd..f5400766 100644 --- a/apis/v1alpha1/model_package_group.go +++ b/apis/v1alpha1/model_package_group.go @@ -22,7 +22,7 @@ import ( // ModelPackageGroupSpec defines the desired state of ModelPackageGroup. // -// A group of versioned models in the model registry. +// A group of versioned models in the Model Registry. type ModelPackageGroupSpec struct { // A description for the model group. diff --git a/apis/v1alpha1/model_quality_job_definition.go b/apis/v1alpha1/model_quality_job_definition.go index e9a0d90c..fcbe1b4d 100644 --- a/apis/v1alpha1/model_quality_job_definition.go +++ b/apis/v1alpha1/model_quality_job_definition.go @@ -42,8 +42,8 @@ type ModelQualityJobDefinitionSpec struct { ModelQualityJobOutputConfig *MonitoringOutputConfig `json:"modelQualityJobOutputConfig"` // Specifies the network configuration for the monitoring job. NetworkConfig *MonitoringNetworkConfig `json:"networkConfig,omitempty"` - // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - // to perform tasks on your behalf. + // The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + // assume to perform tasks on your behalf. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` // +kubebuilder:validation:Required diff --git a/apis/v1alpha1/notebook_instance.go b/apis/v1alpha1/notebook_instance.go index e9b6e4a5..ccde57b5 100644 --- a/apis/v1alpha1/notebook_instance.go +++ b/apis/v1alpha1/notebook_instance.go @@ -35,7 +35,7 @@ type NotebookInstanceSpec struct { // (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or // in any other Git repository. These repositories are cloned at the same level // as the default repository of your notebook instance. For more information, - // see Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + // see Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). AdditionalCodeRepositories []*string `json:"additionalCodeRepositories,omitempty"` // A Git repository to associate with the notebook instance as its default code // repository. This can be either the name of a Git repository stored as a resource @@ -43,14 +43,14 @@ type NotebookInstanceSpec struct { // (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or // in any other Git repository. When you open a notebook instance, it opens // in the directory that contains this repository. For more information, see - // Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + // Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). // // Regex Pattern: `^https://([^/]+)/?(.*)$|^[a-zA-Z0-9](-*[a-zA-Z0-9])*$` DefaultCodeRepository *string `json:"defaultCodeRepository,omitempty"` - // Sets whether SageMaker provides internet access to the notebook instance. + // Sets whether SageMaker AI provides internet access to the notebook instance. // If you set this to Disabled this notebook instance is able to access resources - // only in your VPC, and is not be able to connect to SageMaker training and - // endpoint services unless you configure a NAT Gateway in your VPC. + // only in your VPC, and is not be able to connect to SageMaker AI training + // and endpoint services unless you configure a NAT Gateway in your VPC. // // For more information, see Notebook Instances Are Internet-Enabled by Default // (https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access). @@ -60,9 +60,14 @@ type NotebookInstanceSpec struct { // The type of ML compute instance to launch for the notebook instance. // +kubebuilder:validation:Required InstanceType *string `json:"instanceType"` + // The IP address type for the notebook instance. Specify ipv4 for IPv4-only + // connectivity or dualstack for both IPv4 and IPv6 connectivity. When you specify + // dualstack, the subnet must support IPv6 CIDR blocks. If not specified, defaults + // to ipv4. + IPAddressType *string `json:"ipAddressType,omitempty"` // The Amazon Resource Name (ARN) of a Amazon Web Services Key Management Service - // key that SageMaker uses to encrypt data on the storage volume attached to - // your notebook instance. The KMS key you provide must be enabled. For information, + // key that SageMaker AI uses to encrypt data on the storage volume attached + // to your notebook instance. The KMS key you provide must be enabled. For information, // see Enabling and Disabling Keys (https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) // in the Amazon Web Services Key Management Service Developer Guide. // @@ -81,17 +86,17 @@ type NotebookInstanceSpec struct { NotebookInstanceName *string `json:"notebookInstanceName"` // The platform identifier of the notebook instance runtime environment. // - // Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3)$` + // Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3|notebook-al2023-v1)$` PlatformIdentifier *string `json:"platformIdentifier,omitempty"` // When you send any requests to Amazon Web Services resources from the notebook - // instance, SageMaker assumes this role to perform tasks on your behalf. You - // must grant this role necessary permissions so SageMaker can perform these - // tasks. The policy must allow the SageMaker service principal (sagemaker.amazonaws.com) - // permissions to assume this role. For more information, see SageMaker Roles + // instance, SageMaker AI assumes this role to perform tasks on your behalf. + // You must grant this role necessary permissions so SageMaker AI can perform + // these tasks. The policy must allow the SageMaker AI service principal (sagemaker.amazonaws.com) + // permissions to assume this role. For more information, see SageMaker AI Roles // (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). // - // To be able to pass this role to SageMaker, the caller of this API must have - // the iam:PassRole permission. + // To be able to pass this role to SageMaker AI, the caller of this API must + // have the iam:PassRole permission. // // Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` // +kubebuilder:validation:Required diff --git a/apis/v1alpha1/notebook_instance_lifecycle_config.go b/apis/v1alpha1/notebook_instance_lifecycle_config.go index 9bbea577..c0fd4f97 100644 --- a/apis/v1alpha1/notebook_instance_lifecycle_config.go +++ b/apis/v1alpha1/notebook_instance_lifecycle_config.go @@ -35,6 +35,11 @@ type NotebookInstanceLifecycleConfigSpec struct { // when you create the notebook instance. The shell script must be a base64-encoded // string. OnStart []*NotebookInstanceLifecycleHook `json:"onStart,omitempty"` + // An array of key-value pairs. You can use tags to categorize your Amazon Web + // Services resources in different ways, for example, by purpose, owner, or + // environment. For more information, see Tagging Amazon Web Services Resources + // (https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html). + Tags []*Tag `json:"tags,omitempty"` } // NotebookInstanceLifecycleConfigStatus defines the observed state of NotebookInstanceLifecycleConfig diff --git a/apis/v1alpha1/pipeline_execution.go b/apis/v1alpha1/pipeline_execution.go index ef4c4a96..cd1ae40e 100644 --- a/apis/v1alpha1/pipeline_execution.go +++ b/apis/v1alpha1/pipeline_execution.go @@ -43,6 +43,8 @@ type PipelineExecutionSpec struct { PipelineName *string `json:"pipelineName"` // Contains a list of pipeline parameters. This list can be empty. PipelineParameters []*Parameter `json:"pipelineParameters,omitempty"` + // The ID of the pipeline version to start execution from. + PipelineVersionID *int64 `json:"pipelineVersionID,omitempty"` // The selective execution configuration applied to the pipeline run. SelectiveExecutionConfig *SelectiveExecutionConfig `json:"selectiveExecutionConfig,omitempty"` } diff --git a/apis/v1alpha1/processing_job.go b/apis/v1alpha1/processing_job.go index 3ae0346b..0923471d 100644 --- a/apis/v1alpha1/processing_job.go +++ b/apis/v1alpha1/processing_job.go @@ -31,6 +31,12 @@ type ProcessingJobSpec struct { AppSpecification *AppSpecification `json:"appSpecification"` // The environment variables to set in the Docker container. Up to 100 key and // values entries in the map are supported. + // + // Do not include any security-sensitive information including account access + // IDs, secrets, or tokens in any environment fields. As part of the shared + // responsibility model, you are responsible for any potential exposure, unauthorized + // access, or compromise of your sensitive data if caused by security-sensitive + // information included in the request environment variable or plain text fields. Environment map[string]*string `json:"environment,omitempty"` ExperimentConfig *ExperimentConfig `json:"experimentConfig,omitempty"` // Networking options for a processing job, such as whether to allow inbound @@ -63,6 +69,12 @@ type ProcessingJobSpec struct { // (Optional) An array of key-value pairs. For more information, see Using Cost // Allocation Tags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL) // in the Amazon Web Services Billing and Cost Management User Guide. + // + // Do not include any security-sensitive information including account access + // IDs, secrets, or tokens in any tags. As part of the shared responsibility + // model, you are responsible for any potential exposure, unauthorized access, + // or compromise of your sensitive data if caused by security-sensitive information + // included in the request tag variable or plain text fields. Tags []*Tag `json:"tags,omitempty"` } diff --git a/apis/v1alpha1/training_job.go b/apis/v1alpha1/training_job.go index 66e74cc2..ba8396aa 100644 --- a/apis/v1alpha1/training_job.go +++ b/apis/v1alpha1/training_job.go @@ -66,6 +66,12 @@ type TrainingJobSpec struct { // access. EnableNetworkIsolation *bool `json:"enableNetworkIsolation,omitempty"` // The environment variables to set in the Docker container. + // + // Do not include any security-sensitive information including account access + // IDs, secrets, or tokens in any environment fields. As part of the shared + // responsibility model, you are responsible for any potential exposure, unauthorized + // access, or compromise of your sensitive data if caused by security-sensitive + // information included in the request environment variable or plain text fields. Environment map[string]*string `json:"environment,omitempty"` ExperimentConfig *ExperimentConfig `json:"experimentConfig,omitempty"` // Algorithm-specific parameters that influence the quality of the model. You @@ -78,9 +84,11 @@ type TrainingJobSpec struct { // by the Length Constraint. // // Do not include any security-sensitive information including account access - // IDs, secrets or tokens in any hyperparameter field. If the use of security-sensitive - // credentials are detected, SageMaker will reject your training job request - // and return an exception error. + // IDs, secrets, or tokens in any hyperparameter fields. As part of the shared + // responsibility model, you are responsible for any potential exposure, unauthorized + // access, or compromise of your sensitive data if caused by any security-sensitive + // information included in the request hyperparameter variable or plain text + // fields. HyperParameters map[string]*string `json:"hyperParameters,omitempty"` // Contains information about the infrastructure health check configuration // for the training job. @@ -157,6 +165,12 @@ type TrainingJobSpec struct { // Services resources in different ways, for example, by purpose, owner, or // environment. For more information, see Tagging Amazon Web Services Resources // (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + // + // Do not include any security-sensitive information including account access + // IDs, secrets, or tokens in any tags. As part of the shared responsibility + // model, you are responsible for any potential exposure, unauthorized access, + // or compromise of your sensitive data if caused by any security-sensitive + // information included in the request tag variable or plain text fields. Tags []*Tag `json:"tags,omitempty"` TensorBoardOutputConfig *TensorBoardOutputConfig `json:"tensorBoardOutputConfig,omitempty"` // The name of the training job. The name must be unique within an Amazon Web diff --git a/apis/v1alpha1/types.go b/apis/v1alpha1/types.go index 7af65741..3ffea38d 100644 --- a/apis/v1alpha1/types.go +++ b/apis/v1alpha1/types.go @@ -67,6 +67,7 @@ type AdditionalModelDataSource struct { // dataset or model data. type AdditionalS3DataSource struct { CompressionType *string `json:"compressionType,omitempty"` + ETag *string `json:"eTag,omitempty"` S3DataType *string `json:"s3DataType,omitempty"` S3URI *string `json:"s3URI,omitempty"` } @@ -76,9 +77,20 @@ type Alarm struct { AlarmName *string `json:"alarmName,omitempty"` } +// The details of the alarm to monitor during the AMI update. +type AlarmDetails struct { + AlarmName *string `json:"alarmName,omitempty"` +} + // Specifies the training algorithm to use in a CreateTrainingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) // request. // +// SageMaker uses its own SageMaker account credentials to pull and access built-in +// algorithms so built-in algorithms are universally accessible across all Amazon +// Web Services accounts. As a result, built-in algorithms have standard, unrestricted +// access. You cannot restrict built-in algorithms using IAM roles. Use custom +// algorithms if you require specific access controls. +// // For more information about algorithms provided by SageMaker, see Algorithms // (https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html). For information // about using your own algorithms, see Using Your Own Algorithms with Amazon @@ -171,21 +183,27 @@ type AnnotationConsolidationConfig struct { AnnotationConsolidationLambdaARN *string `json:"annotationConsolidationLambdaARN,omitempty"` } -// Details about an Amazon SageMaker app. +// Details about an Amazon SageMaker AI app. type AppDetails struct { AppName *string `json:"appName,omitempty"` AppType *string `json:"appType,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DomainID *string `json:"domainID,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. ResourceSpec *ResourceSpec `json:"resourceSpec,omitempty"` SpaceName *string `json:"spaceName,omitempty"` Status *string `json:"status,omitempty"` UserProfileName *string `json:"userProfileName,omitempty"` } -// The configuration for running a SageMaker image as a KernelGateway app. +// The configuration for running a SageMaker AI image as a KernelGateway app. type AppImageConfigDetails struct { AppImageConfigName *string `json:"appImageConfigName,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` @@ -217,8 +235,7 @@ type ArtifactSummary struct { // entity that links other lineage or experiment entities. An example would // be an association between a training job and a model. type AssociationSummary struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DestinationName *string `json:"destinationName,omitempty"` @@ -400,6 +417,18 @@ type Autotune struct { Mode *string `json:"mode,omitempty"` } +// Information about an error that occurred during the node addition operation. +type BatchAddClusterNodesError struct { + InstanceGroupName *string `json:"instanceGroupName,omitempty"` + Message *string `json:"message,omitempty"` +} + +// Information about an error that occurred when attempting to delete a node +// identified by its NodeLogicalId. +type BatchDeleteClusterNodeLogicalIDsError struct { + Message *string `json:"message,omitempty"` +} + // Represents an error encountered when deleting a node from a SageMaker HyperPod // cluster. type BatchDeleteClusterNodesError struct { @@ -459,6 +488,12 @@ type CallbackStepMetadata struct { SQSQueueURL *string `json:"sqsQueueURL,omitempty"` } +// Information about the Capacity Reservation used by an instance or instance +// group. +type CapacityReservation struct { + ARN *string `json:"arn,omitempty"` +} + // Specifies the type and size of the endpoint capacity to activate for a blue/green // deployment, a rolling deployment, or a rollback strategy. You can specify // your batches as either instance count or the overall percentage or your fleet. @@ -472,8 +507,8 @@ type CapacitySize struct { } // Configuration specifying how to treat different headers. If no headers are -// specified Amazon SageMaker will by default base64 encode when capturing the -// data. +// specified Amazon SageMaker AI will by default base64 encode when capturing +// the data. type CaptureContentTypeHeader struct { CsvContentTypes []*string `json:"csvContentTypes,omitempty"` JSONContentTypes []*string `json:"jsonContentTypes,omitempty"` @@ -495,6 +530,18 @@ type CategoricalParameterRangeSpecification struct { Values []*string `json:"values,omitempty"` } +// The CloudFormation template provider configuration for creating infrastructure +// resources. +type CfnCreateTemplateProvider struct { + RoleARN *string `json:"roleARN,omitempty"` +} + +// Details about a CloudFormation template provider configuration and associated +// provisioning information. +type CfnTemplateProviderDetail struct { + RoleARN *string `json:"roleARN,omitempty"` +} + // A channel is a named input source that training algorithms can consume. type Channel struct { ChannelName *string `json:"channelName,omitempty"` @@ -600,6 +647,34 @@ type ClarifyShapBaselineConfig struct { ShapBaselineURI *string `json:"shapBaselineURI,omitempty"` } +// The autoscaling configuration and status information for a HyperPod cluster. +type ClusterAutoScalingConfigOutput struct { + FailureMessage *string `json:"failureMessage,omitempty"` +} + +// Defines the configuration for attaching an additional Amazon Elastic Block +// Store (EBS) volume to each instance of the SageMaker HyperPod cluster instance +// group. To learn more, see SageMaker HyperPod release notes: June 20, 2024 +// (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-hyperpod-release-notes.html#sagemaker-hyperpod-release-notes-20240620). +type ClusterEBSVolumeConfig struct { + RootVolume *bool `json:"rootVolume,omitempty"` + VolumeKMSKeyID *string `json:"volumeKMSKeyID,omitempty"` +} + +// Detailed information about a specific event in a HyperPod cluster. +type ClusterEventDetail struct { + Description *string `json:"description,omitempty"` + EventTime *metav1.Time `json:"eventTime,omitempty"` + InstanceID *string `json:"instanceID,omitempty"` +} + +// A summary of an event in a HyperPod cluster. +type ClusterEventSummary struct { + Description *string `json:"description,omitempty"` + EventTime *metav1.Time `json:"eventTime,omitempty"` + InstanceID *string `json:"instanceID,omitempty"` +} + // Details of an instance group in a SageMaker HyperPod cluster. type ClusterInstanceGroupDetails struct { ExecutionRole *string `json:"executionRole,omitempty"` @@ -608,6 +683,7 @@ type ClusterInstanceGroupDetails struct { // to and from your resources by configuring a VPC. For more information, see // Give SageMaker Access to Resources in your Amazon VPC (https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html). OverrideVPCConfig *VPCConfig `json:"overrideVPCConfig,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` } // The specifications of an instance group that you need to define. @@ -618,6 +694,7 @@ type ClusterInstanceGroupSpecification struct { // to and from your resources by configuring a VPC. For more information, see // Give SageMaker Access to Resources in your Amazon VPC (https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html). OverrideVPCConfig *VPCConfig `json:"overrideVPCConfig,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` } // Details of an instance in a SageMaker HyperPod cluster. @@ -630,11 +707,19 @@ type ClusterLifeCycleConfig struct { SourceS3URI *string `json:"sourceS3URI,omitempty"` } +// Metadata information about a HyperPod cluster showing information about the +// cluster level operations, such as creating, updating, and deleting. +type ClusterMetadata struct { + FailureMessage *string `json:"failureMessage,omitempty"` + SlrAccessEntry *string `json:"slrAccessEntry,omitempty"` +} + // Details of an instance (also called a node interchangeably) in a SageMaker // HyperPod cluster. type ClusterNodeDetails struct { - InstanceID *string `json:"instanceID,omitempty"` - LaunchTime *metav1.Time `json:"launchTime,omitempty"` + InstanceID *string `json:"instanceID,omitempty"` + LastSoftwareUpdateTime *metav1.Time `json:"lastSoftwareUpdateTime,omitempty"` + LaunchTime *metav1.Time `json:"launchTime,omitempty"` // Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, // hosted models, and compute resources have access to. You can control access // to and from your resources by configuring a VPC. For more information, see @@ -645,8 +730,40 @@ type ClusterNodeDetails struct { // Lists a summary of the properties of an instance (also called a node interchangeably) // of a SageMaker HyperPod cluster. type ClusterNodeSummary struct { - InstanceID *string `json:"instanceID,omitempty"` - LaunchTime *metav1.Time `json:"launchTime,omitempty"` + InstanceID *string `json:"instanceID,omitempty"` + LastSoftwareUpdateTime *metav1.Time `json:"lastSoftwareUpdateTime,omitempty"` + LaunchTime *metav1.Time `json:"launchTime,omitempty"` + NodeLogicalID *string `json:"nodeLogicalID,omitempty"` +} + +// The instance group details of the restricted instance group (RIG). +type ClusterRestrictedInstanceGroupDetails struct { + ExecutionRole *string `json:"executionRole,omitempty"` + // Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, + // hosted models, and compute resources have access to. You can control access + // to and from your resources by configuring a VPC. For more information, see + // Give SageMaker Access to Resources in your Amazon VPC (https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html). + OverrideVPCConfig *VPCConfig `json:"overrideVPCConfig,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` +} + +// The specifications of a restricted instance group that you need to define. +type ClusterRestrictedInstanceGroupSpecification struct { + ExecutionRole *string `json:"executionRole,omitempty"` + // Specifies an Amazon Virtual Private Cloud (VPC) that your SageMaker jobs, + // hosted models, and compute resources have access to. You can control access + // to and from your resources by configuring a VPC. For more information, see + // Give SageMaker Access to Resources in your Amazon VPC (https://docs.aws.amazon.com/sagemaker/latest/dg/infrastructure-give-access.html). + OverrideVPCConfig *VPCConfig `json:"overrideVPCConfig,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` +} + +// Summary of the cluster policy. +type ClusterSchedulerConfigSummary struct { + ClusterSchedulerConfigVersion *int64 `json:"clusterSchedulerConfigVersion,omitempty"` + CreationTime *metav1.Time `json:"creationTime,omitempty"` + LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` + Name *string `json:"name,omitempty"` } // Lists a summary of the properties of a SageMaker HyperPod cluster. @@ -659,13 +776,19 @@ type ClusterSummary struct { // For more information about Code Editor, see Get started with Code Editor // in Amazon SageMaker (https://docs.aws.amazon.com/sagemaker/latest/dg/code-editor.html). type CodeEditorAppSettings struct { - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` LifecycleConfigARNs []*string `json:"lifecycleConfigARNs,omitempty"` } -// A Git repository that SageMaker automatically displays to users for cloning +// A Git repository that SageMaker AI automatically displays to users for cloning // in the JupyterServer application. type CodeRepository struct { RepositoryURL *string `json:"repositoryURL,omitempty"` @@ -700,6 +823,14 @@ type CompilationJobSummary struct { LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` } +// Summary of the compute allocation definition. +type ComputeQuotaSummary struct { + ComputeQuotaVersion *int64 `json:"computeQuotaVersion,omitempty"` + CreationTime *metav1.Time `json:"creationTime,omitempty"` + LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` + Name *string `json:"name,omitempty"` +} + // Describes the container, as part of model definition. type ContainerDefinition struct { ContainerHostname *string `json:"containerHostname,omitempty"` @@ -748,26 +879,36 @@ type ContinuousParameterRangeSpecification struct { } // A file system, created by you, that you assign to a user profile or space -// for an Amazon SageMaker Domain. Permitted users can access this file system -// in Amazon SageMaker Studio. +// for an Amazon SageMaker AI Domain. Permitted users can access this file system +// in Amazon SageMaker AI Studio. type CustomFileSystem struct { // A file system, created by you in Amazon EFS, that you assign to a user profile - // or space for an Amazon SageMaker Domain. Permitted users can access this - // file system in Amazon SageMaker Studio. + // or space for an Amazon SageMaker AI Domain. Permitted users can access this + // file system in Amazon SageMaker AI Studio. EFSFileSystem *EFSFileSystem `json:"efsFileSystem,omitempty"` + // A custom file system in Amazon FSx for Lustre. + FSxLustreFileSystem *FSxLustreFileSystem `json:"fSxLustreFileSystem,omitempty"` + // A custom file system in Amazon S3. This is only supported in Amazon SageMaker + // Unified Studio. + S3FileSystem *S3FileSystem `json:"s3FileSystem,omitempty"` } // The settings for assigning a custom file system to a user profile or space -// for an Amazon SageMaker Domain. Permitted users can access this file system -// in Amazon SageMaker Studio. +// for an Amazon SageMaker AI Domain. Permitted users can access this file system +// in Amazon SageMaker AI Studio. type CustomFileSystemConfig struct { // The settings for assigning a custom Amazon EFS file system to a user profile - // or space for an Amazon SageMaker Domain. + // or space for an Amazon SageMaker AI Domain. EFSFileSystemConfig *EFSFileSystemConfig `json:"efsFileSystemConfig,omitempty"` + // The settings for assigning a custom Amazon FSx for Lustre file system to + // a user profile or space for an Amazon SageMaker Domain. + FSxLustreFileSystemConfig *FSxLustreFileSystemConfig `json:"fSxLustreFileSystemConfig,omitempty"` + // Configuration for the custom Amazon S3 file system. + S3FileSystemConfig *S3FileSystemConfig `json:"s3FileSystemConfig,omitempty"` } -// A custom SageMaker image. For more information, see Bring your own SageMaker -// image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). +// A custom SageMaker AI image. For more information, see Bring your own SageMaker +// AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). type CustomImage struct { AppImageConfigName *string `json:"appImageConfigName,omitempty"` ImageName *string `json:"imageName,omitempty"` @@ -786,11 +927,11 @@ type CustomizedMetricSpecification struct { Namespace *string `json:"namespace,omitempty"` } -// Configuration to control how SageMaker captures inference data. +// Configuration to control how SageMaker AI captures inference data. type DataCaptureConfig struct { // Configuration specifying how to treat different headers. If no headers are - // specified Amazon SageMaker will by default base64 encode when capturing the - // data. + // specified Amazon SageMaker AI will by default base64 encode when capturing + // the data. CaptureContentTypeHeader *CaptureContentTypeHeader `json:"captureContentTypeHeader,omitempty"` CaptureOptions []*CaptureOption `json:"captureOptions,omitempty"` DestinationS3URI *string `json:"destinationS3URI,omitempty"` @@ -1029,6 +1170,7 @@ type DirectDeploySettings struct { // A collection of settings that configure the domain's Docker interaction. type DockerSettings struct { EnableDockerAccess *string `json:"enableDockerAccess,omitempty"` + RootlessDocker *string `json:"rootlessDocker,omitempty"` VPCOnlyTrustedAccounts []*string `json:"vpcOnlyTrustedAccounts,omitempty"` } @@ -1048,10 +1190,18 @@ type DomainDetails struct { type DomainSettings struct { // A collection of settings that configure the domain's Docker interaction. DockerSettings *DockerSettings `json:"dockerSettings,omitempty"` + IPAddressType *string `json:"ipAddressType,omitempty"` // A collection of settings that configure the RStudioServerPro Domain-level // app. RStudioServerProDomainSettings *RStudioServerProDomainSettings `json:"rStudioServerProDomainSettings,omitempty"` SecurityGroupIDs []*string `json:"securityGroupIDs,omitempty"` + // The Trusted Identity Propagation (TIP) settings for the SageMaker domain. + // These settings determine how user identities from IAM Identity Center are + // propagated through the domain to TIP enabled Amazon Web Services services. + TrustedIdentityPropagationSettings *TrustedIdentityPropagationSettings `json:"trustedIdentityPropagationSettings,omitempty"` + // The settings that apply to an Amazon SageMaker AI domain when you use it + // in Amazon SageMaker Unified Studio. + UnifiedStudioSettings *UnifiedStudioSettings `json:"unifiedStudioSettings,omitempty"` } // A collection of Domain configuration settings to update. @@ -1061,10 +1211,18 @@ type DomainSettingsForUpdate struct { AmazonQSettings *AmazonQSettings `json:"amazonQSettings,omitempty"` // A collection of settings that configure the domain's Docker interaction. DockerSettings *DockerSettings `json:"dockerSettings,omitempty"` + IPAddressType *string `json:"ipAddressType,omitempty"` // A collection of settings that update the current configuration for the RStudioServerPro // Domain-level app. RStudioServerProDomainSettingsForUpdate *RStudioServerProDomainSettingsForUpdate `json:"rStudioServerProDomainSettingsForUpdate,omitempty"` SecurityGroupIDs []*string `json:"securityGroupIDs,omitempty"` + // The Trusted Identity Propagation (TIP) settings for the SageMaker domain. + // These settings determine how user identities from IAM Identity Center are + // propagated through the domain to TIP enabled Amazon Web Services services. + TrustedIdentityPropagationSettings *TrustedIdentityPropagationSettings `json:"trustedIdentityPropagationSettings,omitempty"` + // The settings that apply to an Amazon SageMaker AI domain when you use it + // in Amazon SageMaker Unified Studio. + UnifiedStudioSettings *UnifiedStudioSettings `json:"unifiedStudioSettings,omitempty"` } // Represents the drift check baselines that can be used when the model monitor @@ -1137,15 +1295,23 @@ type EBSStorageSettings struct { EBSVolumeSizeInGb *int64 `json:"ebsVolumeSizeInGb,omitempty"` } +// The EC2 capacity reservations that are shared to an ML capacity reservation. +type EC2CapacityReservation struct { + AvailableInstanceCount *int64 `json:"availableInstanceCount,omitempty"` + EC2CapacityReservationID *string `json:"ec2CapacityReservationID,omitempty"` + TotalInstanceCount *int64 `json:"totalInstanceCount,omitempty"` + UsedByCurrentEndpoint *int64 `json:"usedByCurrentEndpoint,omitempty"` +} + // A file system, created by you in Amazon EFS, that you assign to a user profile -// or space for an Amazon SageMaker Domain. Permitted users can access this -// file system in Amazon SageMaker Studio. +// or space for an Amazon SageMaker AI Domain. Permitted users can access this +// file system in Amazon SageMaker AI Studio. type EFSFileSystem struct { FileSystemID *string `json:"fileSystemID,omitempty"` } // The settings for assigning a custom Amazon EFS file system to a user profile -// or space for an Amazon SageMaker Domain. +// or space for an Amazon SageMaker AI Domain. type EFSFileSystemConfig struct { FileSystemID *string `json:"fileSystemID,omitempty"` FileSystemPath *string `json:"fileSystemPath,omitempty"` @@ -1326,6 +1492,11 @@ type Endpoint_SDK struct { Tags []*Tag `json:"tags,omitempty"` } +// The configuration details for the restricted instance groups (RIG) environment. +type EnvironmentConfigDetails struct { + S3OutputPath *string `json:"s3OutputPath,omitempty"` +} + // A list of environment parameters suggested by the Amazon SageMaker Inference // Recommender. type EnvironmentParameter struct { @@ -1334,17 +1505,22 @@ type EnvironmentParameter struct { ValueType *string `json:"valueType,omitempty"` } +// This is an error field object that contains the error code and the reason +// for an operation failure. +type ErrorInfo struct { + Code *string `json:"code,omitempty"` +} + // The properties of an experiment as returned by the Search (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html) +// API. For information about experiments, see the CreateExperiment (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateExperiment.html) // API. type Experiment struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DisplayName *string `json:"displayName,omitempty"` ExperimentName *string `json:"experimentName,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` Tags []*Tag `json:"tags,omitempty"` @@ -1380,6 +1556,18 @@ type Explainability struct { Report *MetricsSource `json:"report,omitempty"` } +// A custom file system in Amazon FSx for Lustre. +type FSxLustreFileSystem struct { + FileSystemID *string `json:"fileSystemID,omitempty"` +} + +// The settings for assigning a custom Amazon FSx for Lustre file system to +// a user profile or space for an Amazon SageMaker Domain. +type FSxLustreFileSystemConfig struct { + FileSystemID *string `json:"fileSystemID,omitempty"` + FileSystemPath *string `json:"fileSystemPath,omitempty"` +} + // The container for the metadata for Fail step. type FailStepMetadata struct { ErrorMessage *string `json:"errorMessage,omitempty"` @@ -1504,9 +1692,19 @@ type GenerativeAiSettings struct { AmazonBedrockRoleARN *string `json:"amazonBedrockRoleARN,omitempty"` } +// The configuration for a private hub model reference that points to a public +// SageMaker JumpStart model. +// +// For more information about private hubs, see Private curated hubs for foundation +// model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). +type HubAccessConfig struct { + HubContentARN *string `json:"hubContentARN,omitempty"` +} + // Information about hub content. type HubContentInfo struct { CreationTime *metav1.Time `json:"creationTime,omitempty"` + HubContentARN *string `json:"hubContentARN,omitempty"` OriginalCreationTime *metav1.Time `json:"originalCreationTime,omitempty"` } @@ -2288,9 +2486,9 @@ type IdleSettings struct { MinIdleTimeoutInMinutes *int64 `json:"minIdleTimeoutInMinutes,omitempty"` } -// A SageMaker image. A SageMaker image represents a set of container images -// that are derived from a common base container image. Each of these container -// images is represented by a SageMaker ImageVersion. +// A SageMaker AI image. A SageMaker AI image represents a set of container +// images that are derived from a common base container image. Each of these +// container images is represented by a SageMaker AI ImageVersion. type Image struct { CreationTime *metav1.Time `json:"creationTime,omitempty"` FailureReason *string `json:"failureReason,omitempty"` @@ -2311,7 +2509,7 @@ type ImageConfig struct { RepositoryAuthConfig *RepositoryAuthConfig `json:"repositoryAuthConfig,omitempty"` } -// A version of a SageMaker Image. A version represents an existing container +// A version of a SageMaker AI Image. A version represents an existing container // image. type ImageVersion struct { CreationTime *metav1.Time `json:"creationTime,omitempty"` @@ -2322,6 +2520,22 @@ type ImageVersion struct { Version *int64 `json:"version,omitempty"` } +// Specifies the type and size of the endpoint capacity to activate for a rolling +// deployment or a rollback strategy. You can specify your batches as either +// of the following: +// +// - A count of inference component copies +// +// - The overall percentage or your fleet +// +// For a rollback strategy, if you don't specify the fields in this object, +// or if you set the Value parameter to 100%, then SageMaker AI uses a blue/green +// rollback strategy and rolls all traffic back to the blue fleet. +type InferenceComponentCapacitySize struct { + Type *string `json:"type_,omitempty"` + Value *int64 `json:"value,omitempty"` +} + // Defines the compute resources to allocate to run a model, plus any adapter // models, that you assign to an inference component. These resources include // CPU cores, accelerators, and memory. @@ -2356,6 +2570,48 @@ type InferenceComponentContainerSpecificationSummary struct { Environment map[string]*string `json:"environment,omitempty"` } +// The deployment configuration for an endpoint that hosts inference components. +// The configuration includes the desired deployment strategy and rollback settings. +type InferenceComponentDeploymentConfig struct { + // Automatic rollback configuration for handling endpoint deployment failures + // and recovery. + AutoRollbackConfiguration *AutoRollbackConfig `json:"autoRollbackConfiguration,omitempty"` + // Specifies a rolling deployment strategy for updating a SageMaker AI inference + // component. + RollingUpdatePolicy *InferenceComponentRollingUpdatePolicy `json:"rollingUpdatePolicy,omitempty"` +} + +// Specifies a rolling deployment strategy for updating a SageMaker AI inference +// component. +type InferenceComponentRollingUpdatePolicy struct { + // Specifies the type and size of the endpoint capacity to activate for a rolling + // deployment or a rollback strategy. You can specify your batches as either + // of the following: + // + // * A count of inference component copies + // + // * The overall percentage or your fleet + // + // For a rollback strategy, if you don't specify the fields in this object, + // or if you set the Value parameter to 100%, then SageMaker AI uses a blue/green + // rollback strategy and rolls all traffic back to the blue fleet. + MaximumBatchSize *InferenceComponentCapacitySize `json:"maximumBatchSize,omitempty"` + MaximumExecutionTimeoutInSeconds *int64 `json:"maximumExecutionTimeoutInSeconds,omitempty"` + // Specifies the type and size of the endpoint capacity to activate for a rolling + // deployment or a rollback strategy. You can specify your batches as either + // of the following: + // + // * A count of inference component copies + // + // * The overall percentage or your fleet + // + // For a rollback strategy, if you don't specify the fields in this object, + // or if you set the Value parameter to 100%, then SageMaker AI uses a blue/green + // rollback strategy and rolls all traffic back to the blue fleet. + RollbackMaximumBatchSize *InferenceComponentCapacitySize `json:"rollbackMaximumBatchSize,omitempty"` + WaitIntervalInSeconds *int64 `json:"waitIntervalInSeconds,omitempty"` +} + // Runtime settings for a model that is deployed with an inference component. type InferenceComponentRuntimeConfig struct { CopyCount *int64 `json:"copyCount,omitempty"` @@ -2425,8 +2681,8 @@ type InferenceExecutionConfig struct { // response data. type InferenceExperimentDataStorageConfig struct { // Configuration specifying how to treat different headers. If no headers are - // specified Amazon SageMaker will by default base64 encode when capturing the - // data. + // specified Amazon SageMaker AI will by default base64 encode when capturing + // the data. ContentType *CaptureContentTypeHeader `json:"contentType,omitempty"` Destination *string `json:"destination,omitempty"` KMSKey *string `json:"kmsKey,omitempty"` @@ -2448,6 +2704,12 @@ type InferenceExperimentSummary struct { RoleARN *string `json:"roleARN,omitempty"` } +// Configuration information specifying which hub contents have accessible deployment +// options. +type InferenceHubAccessConfig struct { + HubContentARN *string `json:"hubContentARN,omitempty"` +} + // The metrics for an existing endpoint compared in an Inference Recommender // job. type InferenceMetrics struct { @@ -2505,6 +2767,34 @@ type InstanceGroup struct { InstanceType *string `json:"instanceType,omitempty"` } +// Metadata information about an instance group in a HyperPod cluster. +type InstanceGroupMetadata struct { + AMIOverride *string `json:"amiOverride,omitempty"` + AvailabilityZoneID *string `json:"availabilityZoneID,omitempty"` + FailureMessage *string `json:"failureMessage,omitempty"` + SecurityGroupIDs []*string `json:"securityGroupIDs,omitempty"` + SubnetID *string `json:"subnetID,omitempty"` +} + +// Metadata information about scaling operations for an instance group. +type InstanceGroupScalingMetadata struct { + FailureMessage *string `json:"failureMessage,omitempty"` +} + +// Metadata information about an instance in a HyperPod cluster. +type InstanceMetadata struct { + CustomerEni *string `json:"customerEni,omitempty"` + FailureMessage *string `json:"failureMessage,omitempty"` + LcsExecutionState *string `json:"lcsExecutionState,omitempty"` +} + +// Configuration for how instances are placed and allocated within UltraServers. +// This is only applicable for UltraServer capacity. +type InstancePlacementConfig struct { + EnableMultipleJobs *bool `json:"enableMultipleJobs,omitempty"` + PlacementSpecifications []*PlacementSpecification `json:"placementSpecifications,omitempty"` +} + // For a hyperparameter of the integer type, specifies the range that a hyperparameter // tuning job searches. type IntegerParameterRange struct { @@ -2524,8 +2814,14 @@ type IntegerParameterRangeSpecification struct { type JupyterLabAppSettings struct { CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` CustomImages []*CustomImage `json:"customImages,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` LifecycleConfigARNs []*string `json:"lifecycleConfigARNs,omitempty"` } @@ -2533,8 +2829,14 @@ type JupyterLabAppSettings struct { // The JupyterServer app settings. type JupyterServerAppSettings struct { CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` LifecycleConfigARNs []*string `json:"lifecycleConfigARNs,omitempty"` } @@ -2548,8 +2850,14 @@ type KendraSettings struct { // The KernelGateway app settings. type KernelGatewayAppSettings struct { CustomImages []*CustomImage `json:"customImages,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` LifecycleConfigARNs []*string `json:"lifecycleConfigARNs,omitempty"` } @@ -2808,12 +3116,10 @@ type ModelBiasJobInput struct { // An Amazon SageMaker Model Card. type ModelCard struct { Content *string `json:"content,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` ModelCardName *string `json:"modelCardName,omitempty"` @@ -2896,12 +3202,10 @@ type ModelDashboardIndicatorAction struct { // The model card for a model displayed in the Amazon SageMaker Model Dashboard. type ModelDashboardModelCard struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` ModelCardName *string `json:"modelCardName,omitempty"` @@ -3031,6 +3335,7 @@ type ModelPackageContainerDefinition struct { FrameworkVersion *string `json:"frameworkVersion,omitempty"` Image *string `json:"image,omitempty"` ImageDigest *string `json:"imageDigest,omitempty"` + ModelDataETag *string `json:"modelDataETag,omitempty"` ModelDataURL *string `json:"modelDataURL,omitempty"` // Input object for the model. ModelInput *ModelInput `json:"modelInput,omitempty"` @@ -3047,10 +3352,9 @@ type ModelPackageGroupSummary struct { ModelPackageGroupStatus *string `json:"modelPackageGroupStatus,omitempty"` } -// A group of versioned models in the model registry. +// A group of versioned models in the Model Registry. type ModelPackageGroup_SDK struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` ModelPackageGroupARN *string `json:"modelPackageGroupARN,omitempty"` @@ -3095,14 +3399,16 @@ type ModelPackageStatusItem struct { // Provides summary information about a model package. type ModelPackageSummary struct { - CreationTime *metav1.Time `json:"creationTime,omitempty"` - ModelApprovalStatus *string `json:"modelApprovalStatus,omitempty"` - ModelPackageARN *string `json:"modelPackageARN,omitempty"` - ModelPackageDescription *string `json:"modelPackageDescription,omitempty"` - ModelPackageGroupName *string `json:"modelPackageGroupName,omitempty"` - ModelPackageName *string `json:"modelPackageName,omitempty"` - ModelPackageStatus *string `json:"modelPackageStatus,omitempty"` - ModelPackageVersion *int64 `json:"modelPackageVersion,omitempty"` + CreationTime *metav1.Time `json:"creationTime,omitempty"` + ModelApprovalStatus *string `json:"modelApprovalStatus,omitempty"` + // A structure describing the current state of the model in its life cycle. + ModelLifeCycle *ModelLifeCycle `json:"modelLifeCycle,omitempty"` + ModelPackageARN *string `json:"modelPackageARN,omitempty"` + ModelPackageDescription *string `json:"modelPackageDescription,omitempty"` + ModelPackageGroupName *string `json:"modelPackageGroupName,omitempty"` + ModelPackageName *string `json:"modelPackageName,omitempty"` + ModelPackageStatus *string `json:"modelPackageStatus,omitempty"` + ModelPackageVersion *int64 `json:"modelPackageVersion,omitempty"` } // Contains data, such as the inputs and targeted instance types that are used @@ -3124,13 +3430,21 @@ type ModelPackageValidationSpecification struct { ValidationRole *string `json:"validationRole,omitempty"` } -// A versioned model that can be deployed for SageMaker inference. +// A container for your trained model that can be deployed for SageMaker inference. +// This can include inference code, artifacts, and metadata. The model package +// type can be one of the following. +// +// - Versioned model: A part of a model package group in Model Registry. +// +// - Unversioned model: Not part of a model package group and used in Amazon +// Web Services Marketplace. +// +// For more information, see CreateModelPackage (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html). type ModelPackage_SDK struct { AdditionalInferenceSpecifications []*AdditionalInferenceSpecificationDefinition `json:"additionalInferenceSpecifications,omitempty"` ApprovalDescription *string `json:"approvalDescription,omitempty"` CertifyForMarketplace *bool `json:"certifyForMarketplace,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` CustomerMetadataProperties map[string]*string `json:"customerMetadataProperties,omitempty"` @@ -3140,8 +3454,7 @@ type ModelPackage_SDK struct { DriftCheckBaselines *DriftCheckBaselines `json:"driftCheckBaselines,omitempty"` // Defines how to perform inference generation after a training job is run. InferenceSpecification *InferenceSpecification `json:"inferenceSpecification,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` // Metadata properties of the tracking entity, trial, or trial component. @@ -3522,7 +3835,7 @@ type NotebookInstanceLifecycleHook struct { Content *string `json:"content,omitempty"` } -// Provides summary information for an SageMaker notebook instance. +// Provides summary information for an SageMaker AI notebook instance. type NotebookInstanceSummary struct { AdditionalCodeRepositories []*string `json:"additionalCodeRepositories,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` @@ -3702,6 +4015,12 @@ type ParentHyperParameterTuningJob struct { HyperParameterTuningJobName *string `json:"hyperParameterTuningJobName,omitempty"` } +// A subset of information related to a SageMaker Partner AI App. This information +// is used as part of the ListPartnerApps API response. +type PartnerAppSummary struct { + CreationTime *metav1.Time `json:"creationTime,omitempty"` +} + // The summary of an in-progress deployment when an endpoint is creating or // updating with a new endpoint configuration. type PendingDeploymentSummary struct { @@ -3764,13 +4083,11 @@ type PipelineExecutionSummary struct { // An execution of a pipeline. type PipelineExecution_SDK struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` FailureReason *string `json:"failureReason,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` // Configuration that controls the parallelism of the pipeline. By default, @@ -3783,8 +4100,10 @@ type PipelineExecution_SDK struct { PipelineExecutionDisplayName *string `json:"pipelineExecutionDisplayName,omitempty"` PipelineExecutionStatus *string `json:"pipelineExecutionStatus,omitempty"` // Specifies the names of the experiment and trial created by a pipeline. - PipelineExperimentConfig *PipelineExperimentConfig `json:"pipelineExperimentConfig,omitempty"` - PipelineParameters []*Parameter `json:"pipelineParameters,omitempty"` + PipelineExperimentConfig *PipelineExperimentConfig `json:"pipelineExperimentConfig,omitempty"` + PipelineParameters []*Parameter `json:"pipelineParameters,omitempty"` + PipelineVersionDisplayName *string `json:"pipelineVersionDisplayName,omitempty"` + PipelineVersionID *int64 `json:"pipelineVersionID,omitempty"` // The selective execution configuration applied to the pipeline run. SelectiveExecutionConfig *SelectiveExecutionConfig `json:"selectiveExecutionConfig,omitempty"` } @@ -3807,14 +4126,39 @@ type PipelineSummary struct { RoleARN *string `json:"roleARN,omitempty"` } +// The version of the pipeline. +type PipelineVersion struct { + // Information about the user who created or modified a SageMaker resource. + CreatedBy *UserContext `json:"createdBy,omitempty"` + CreationTime *metav1.Time `json:"creationTime,omitempty"` + LastExecutedPipelineExecutionARN *string `json:"lastExecutedPipelineExecutionARN,omitempty"` + LastExecutedPipelineExecutionDisplayName *string `json:"lastExecutedPipelineExecutionDisplayName,omitempty"` + LastExecutedPipelineExecutionStatus *string `json:"lastExecutedPipelineExecutionStatus,omitempty"` + // Information about the user who created or modified a SageMaker resource. + LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` + LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` + PipelineARN *string `json:"pipelineARN,omitempty"` + PipelineVersionDescription *string `json:"pipelineVersionDescription,omitempty"` + PipelineVersionDisplayName *string `json:"pipelineVersionDisplayName,omitempty"` + PipelineVersionID *int64 `json:"pipelineVersionID,omitempty"` +} + +// The summary of the pipeline version. +type PipelineVersionSummary struct { + CreationTime *metav1.Time `json:"creationTime,omitempty"` + LastExecutionPipelineExecutionARN *string `json:"lastExecutionPipelineExecutionARN,omitempty"` + PipelineARN *string `json:"pipelineARN,omitempty"` + PipelineVersionDescription *string `json:"pipelineVersionDescription,omitempty"` + PipelineVersionDisplayName *string `json:"pipelineVersionDisplayName,omitempty"` + PipelineVersionID *int64 `json:"pipelineVersionID,omitempty"` +} + // A SageMaker Model Building Pipeline instance. type Pipeline_SDK struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` LastRunTime *metav1.Time `json:"lastRunTime,omitempty"` @@ -3831,11 +4175,24 @@ type Pipeline_SDK struct { Tags []*Tag `json:"tags,omitempty"` } +// Specifies how instances should be placed on a specific UltraServer. +type PlacementSpecification struct { + InstanceCount *int64 `json:"instanceCount,omitempty"` + UltraServerID *string `json:"ultraServerID,omitempty"` +} + // A specification for a predefined metric. type PredefinedMetricSpecification struct { PredefinedMetricType *string `json:"predefinedMetricType,omitempty"` } +// Configuration for accessing hub content through presigned URLs, including +// license agreement acceptance and URL validation settings. +type PresignedURLAccessConfig struct { + AcceptEula *bool `json:"acceptEula,omitempty"` + ExpectedS3URL *string `json:"expectedS3URL,omitempty"` +} + // Configuration for the cluster used to run a processing job. type ProcessingClusterConfig struct { InstanceCount *int64 `json:"instanceCount,omitempty"` @@ -3984,8 +4341,11 @@ type ProcessingStoppingCondition struct { // to distribute traffic among the models by specifying variant weights. For // more information on production variants, check Production variants (https://docs.aws.amazon.com/sagemaker/latest/dg/model-ab-testing.html). type ProductionVariant struct { - AcceleratorType *string `json:"acceleratorType,omitempty"` - ContainerStartupHealthCheckTimeoutInSeconds *int64 `json:"containerStartupHealthCheckTimeoutInSeconds,omitempty"` + AcceleratorType *string `json:"acceleratorType,omitempty"` + // Settings for the capacity reservation for the compute instances that SageMaker + // AI reserves for an endpoint. + CapacityReservationConfig *ProductionVariantCapacityReservationConfig `json:"capacityReservationConfig,omitempty"` + ContainerStartupHealthCheckTimeoutInSeconds *int64 `json:"containerStartupHealthCheckTimeoutInSeconds,omitempty"` // Specifies configuration for a core dump from the model container when the // process crashes. CoreDumpConfig *ProductionVariantCoreDumpConfig `json:"coreDumpConfig,omitempty"` @@ -4007,6 +4367,23 @@ type ProductionVariant struct { VolumeSizeInGB *int64 `json:"volumeSizeInGB,omitempty"` } +// Settings for the capacity reservation for the compute instances that SageMaker +// AI reserves for an endpoint. +type ProductionVariantCapacityReservationConfig struct { + CapacityReservationPreference *string `json:"capacityReservationPreference,omitempty"` + MlReservationARN *string `json:"mlReservationARN,omitempty"` +} + +// Details about an ML capacity reservation. +type ProductionVariantCapacityReservationSummary struct { + AvailableInstanceCount *int64 `json:"availableInstanceCount,omitempty"` + CapacityReservationPreference *string `json:"capacityReservationPreference,omitempty"` + EC2CapacityReservations []*EC2CapacityReservation `json:"ec2CapacityReservations,omitempty"` + MlReservationARN *string `json:"mlReservationARN,omitempty"` + TotalInstanceCount *int64 `json:"totalInstanceCount,omitempty"` + UsedByCurrentEndpoint *int64 `json:"usedByCurrentEndpoint,omitempty"` +} + // Specifies configuration for a core dump from the model container when the // process crashes. type ProductionVariantCoreDumpConfig struct { @@ -4054,7 +4431,9 @@ type ProductionVariantStatus struct { // API and the endpoint status is Updating, you get different desired and current // values. type ProductionVariantSummary struct { - CurrentInstanceCount *int64 `json:"currentInstanceCount,omitempty"` + // Details about an ML capacity reservation. + CapacityReservationConfig *ProductionVariantCapacityReservationSummary `json:"capacityReservationConfig,omitempty"` + CurrentInstanceCount *int64 `json:"currentInstanceCount,omitempty"` // Specifies the serverless configuration for an endpoint variant. CurrentServerlessConfig *ProductionVariantServerlessConfig `json:"currentServerlessConfig,omitempty"` CurrentWeight *float64 `json:"currentWeight,omitempty"` @@ -4111,12 +4490,10 @@ type ProfilerRuleEvaluationStatus struct { // The properties of a project as returned by the Search API. type Project struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` ProjectDescription *string `json:"projectDescription,omitempty"` @@ -4374,8 +4751,14 @@ type RStudioServerProAppSettings struct { // A collection of settings that configure the RStudioServerPro Domain-level // app. type RStudioServerProDomainSettings struct { - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` DomainExecutionRoleARN *string `json:"domainExecutionRoleARN,omitempty"` RStudioConnectURL *string `json:"rStudioConnectURL,omitempty"` @@ -4385,8 +4768,14 @@ type RStudioServerProDomainSettings struct { // A collection of settings that update the current configuration for the RStudioServerPro // Domain-level app. type RStudioServerProDomainSettingsForUpdate struct { - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` DomainExecutionRoleARN *string `json:"domainExecutionRoleARN,omitempty"` RStudioConnectURL *string `json:"rStudioConnectURL,omitempty"` @@ -4510,6 +4899,26 @@ type RepositoryAuthConfig struct { RepositoryCredentialsProviderARN *string `json:"repositoryCredentialsProviderARN,omitempty"` } +// Details about a reserved capacity offering for a training plan offering. +// +// For more information about how to reserve GPU capacity for your SageMaker +// HyperPod clusters using Amazon SageMaker Training Plan, see CreateTrainingPlan +// (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) . +type ReservedCapacityOffering struct { + EndTime *metav1.Time `json:"endTime,omitempty"` + StartTime *metav1.Time `json:"startTime,omitempty"` +} + +// Details of a reserved capacity for the training plan. +// +// For more information about how to reserve GPU capacity for your SageMaker +// HyperPod clusters using Amazon SageMaker Training Plan, see CreateTrainingPlan +// (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) . +type ReservedCapacitySummary struct { + EndTime *metav1.Time `json:"endTime,omitempty"` + StartTime *metav1.Time `json:"startTime,omitempty"` +} + // A resource catalog containing all of the resources of a specific resource // type within a resource owner account. For an example on sharing the Amazon // SageMaker Feature Store DefaultFeatureGroupCatalog, see Share Amazon SageMaker @@ -4524,10 +4933,14 @@ type ResourceCatalog struct { type ResourceConfig struct { InstanceCount *int64 `json:"instanceCount,omitempty"` InstanceGroups []*InstanceGroup `json:"instanceGroups,omitempty"` - InstanceType *string `json:"instanceType,omitempty"` + // Configuration for how instances are placed and allocated within UltraServers. + // This is only applicable for UltraServer capacity. + InstancePlacementConfig *InstancePlacementConfig `json:"instancePlacementConfig,omitempty"` + InstanceType *string `json:"instanceType,omitempty"` // Optional. Customer requested period in seconds for which the Training cluster // is kept alive after the job is finished. KeepAlivePeriodInSeconds *int64 `json:"keepAlivePeriodInSeconds,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` VolumeKMSKeyID *string `json:"volumeKMSKeyID,omitempty"` VolumeSizeInGB *int64 `json:"volumeSizeInGB,omitempty"` } @@ -4547,8 +4960,14 @@ type ResourceLimits struct { MaxParallelTrainingJobs *int64 `json:"maxParallelTrainingJobs,omitempty"` } -// Specifies the ARN's of a SageMaker image and SageMaker image version, and -// the instance type that the version runs on. +// Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, +// and the instance type that the version runs on. +// +// When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn +// is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn +// already exists in the ResourceSpec because SageMakerImageVersionArn always +// takes precedence. To clear the value set for SageMakerImageVersionArn, pass +// None as the value. type ResourceSpec struct { InstanceType *string `json:"instanceType,omitempty"` LifecycleConfigARN *string `json:"lifecycleConfigARN,omitempty"` @@ -4597,16 +5016,48 @@ type RollingUpdatePolicy struct { // Your input bucket must be in the same Amazon Web Services region as your // training job. type S3DataSource struct { - AttributeNames []*string `json:"attributeNames,omitempty"` - InstanceGroupNames []*string `json:"instanceGroupNames,omitempty"` - S3DataDistributionType *string `json:"s3DataDistributionType,omitempty"` - S3DataType *string `json:"s3DataType,omitempty"` - S3URI *string `json:"s3URI,omitempty"` + AttributeNames []*string `json:"attributeNames,omitempty"` + // The configuration for a private hub model reference that points to a public + // SageMaker JumpStart model. + // + // For more information about private hubs, see Private curated hubs for foundation + // model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + HubAccessConfig *HubAccessConfig `json:"hubAccessConfig,omitempty"` + InstanceGroupNames []*string `json:"instanceGroupNames,omitempty"` + // The access configuration file to control access to the ML model. You can + // explicitly accept the model end-user license agreement (EULA) within the + // ModelAccessConfig. + // + // * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + // section for more details on accepting the EULA. + // + // * If you are an AutoML user, see the Optional Parameters section of Create + // an AutoML job to fine-tune text generation models using the API for details + // on How to set the EULA acceptance when fine-tuning a model using the AutoML + // API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + ModelAccessConfig *ModelAccessConfig `json:"modelAccessConfig,omitempty"` + S3DataDistributionType *string `json:"s3DataDistributionType,omitempty"` + S3DataType *string `json:"s3DataType,omitempty"` + S3URI *string `json:"s3URI,omitempty"` +} + +// A custom file system in Amazon S3. This is only supported in Amazon SageMaker +// Unified Studio. +type S3FileSystem struct { + S3URI *string `json:"s3URI,omitempty"` +} + +// Configuration for the custom Amazon S3 file system. +type S3FileSystemConfig struct { + MountPath *string `json:"mountPath,omitempty"` + S3URI *string `json:"s3URI,omitempty"` } // Specifies the S3 location of ML model data to deploy. type S3ModelDataSource struct { CompressionType *string `json:"compressionType,omitempty"` + ETag *string `json:"eTag,omitempty"` + ManifestEtag *string `json:"manifestEtag,omitempty"` // The access configuration file to control access to the ML model. You can // explicitly accept the model end-user license agreement (EULA) within the // ModelAccessConfig. @@ -4680,10 +5131,11 @@ type SelectiveExecutionResult struct { SourcePipelineExecutionARN *string `json:"sourcePipelineExecutionARN,omitempty"` } -// Specifies options for sharing Amazon SageMaker Studio notebooks. These settings -// are specified as part of DefaultUserSettings when the CreateDomain API is -// called, and as part of UserSettings when the CreateUserProfile API is called. -// When SharingSettings is not specified, notebook sharing isn't allowed. +// Specifies options for sharing Amazon SageMaker AI Studio notebooks. These +// settings are specified as part of DefaultUserSettings when the CreateDomain +// API is called, and as part of UserSettings when the CreateUserProfile API +// is called. When SharingSettings is not specified, notebook sharing isn't +// allowed. type SharingSettings struct { NotebookOutputOption *string `json:"notebookOutputOption,omitempty"` S3KMSKeyID *string `json:"s3KMSKeyID,omitempty"` @@ -4713,6 +5165,7 @@ type ShuffleConfig struct { // in Amazon Web Services Marketplace that you are subscribed to. type SourceAlgorithm struct { AlgorithmName *string `json:"algorithmName,omitempty"` + ModelDataETag *string `json:"modelDataETag,omitempty"` ModelDataURL *string `json:"modelDataURL,omitempty"` } @@ -4733,8 +5186,14 @@ type SpaceCodeEditorAppSettings struct { // Settings that are used to configure and manage the lifecycle of Amazon SageMaker // Studio applications in a space. AppLifecycleManagement *SpaceAppLifecycleManagement `json:"appLifecycleManagement,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` } @@ -4765,8 +5224,14 @@ type SpaceJupyterLabAppSettings struct { // Studio applications in a space. AppLifecycleManagement *SpaceAppLifecycleManagement `json:"appLifecycleManagement,omitempty"` CodeRepositories []*CodeRepository `json:"codeRepositories,omitempty"` - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` } @@ -4782,13 +5247,16 @@ type SpaceSettings struct { JupyterServerAppSettings *JupyterServerAppSettings `json:"jupyterServerAppSettings,omitempty"` // The KernelGateway app settings. KernelGatewayAppSettings *KernelGatewayAppSettings `json:"kernelGatewayAppSettings,omitempty"` + RemoteAccess *string `json:"remoteAccess,omitempty"` + SpaceManagedResources *string `json:"spaceManagedResources,omitempty"` // The storage settings for a space. SpaceStorageSettings *SpaceStorageSettings `json:"spaceStorageSettings,omitempty"` } // Specifies summary information about the space settings. type SpaceSettingsSummary struct { - AppType *string `json:"appType,omitempty"` + AppType *string `json:"appType,omitempty"` + RemoteAccess *string `json:"remoteAccess,omitempty"` // The storage settings for a space. SpaceStorageSettings *SpaceStorageSettings `json:"spaceStorageSettings,omitempty"` } @@ -4834,7 +5302,7 @@ type StoppingCondition struct { MaxWaitTimeInSeconds *int64 `json:"maxWaitTimeInSeconds,omitempty"` } -// Details of the Amazon SageMaker Studio Lifecycle Configuration. +// Details of the Amazon SageMaker AI Studio Lifecycle Configuration. type StudioLifecycleConfigDetails struct { CreationTime *metav1.Time `json:"creationTime,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` @@ -4883,8 +5351,14 @@ type Tag struct { // The TensorBoard app settings. type TensorBoardAppSettings struct { - // Specifies the ARN's of a SageMaker image and SageMaker image version, and - // the instance type that the version runs on. + // Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + // and the instance type that the version runs on. + // + // When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + // is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + // already exists in the ResourceSpec because SageMakerImageVersionArn always + // takes precedence. To clear the value set for SageMakerImageVersionArn, pass + // None as the value. DefaultResourceSpec *ResourceSpec `json:"defaultResourceSpec,omitempty"` } @@ -5095,6 +5569,7 @@ type TrainingJobSummary struct { TrainingJobARN *string `json:"trainingJobARN,omitempty"` TrainingJobName *string `json:"trainingJobName,omitempty"` TrainingJobStatus *string `json:"trainingJobStatus,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` // Status and billing information about the warm pool. WarmPoolStatus *WarmPoolStatus `json:"warmPoolStatus,omitempty"` } @@ -5104,6 +5579,12 @@ type TrainingJob_SDK struct { // Specifies the training algorithm to use in a CreateTrainingJob (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingJob.html) // request. // + // SageMaker uses its own SageMaker account credentials to pull and access built-in + // algorithms so built-in algorithms are universally accessible across all Amazon + // Web Services accounts. As a result, built-in algorithms have standard, unrestricted + // access. You cannot restrict built-in algorithms using IAM roles. Use custom + // algorithms if you require specific access controls. + // // For more information about algorithms provided by SageMaker, see Algorithms // (https://docs.aws.amazon.com/sagemaker/latest/dg/algos.html). For information // about using your own algorithms, see Using Your Own Algorithms with Amazon @@ -5204,6 +5685,29 @@ type TrainingJob_SDK struct { VPCConfig *VPCConfig `json:"vpcConfig,omitempty"` } +// Details about a training plan offering. +// +// For more information about how to reserve GPU capacity for your SageMaker +// HyperPod clusters using Amazon SageMaker Training Plan, see CreateTrainingPlan +// (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) . +type TrainingPlanOffering struct { + RequestedEndTimeBefore *metav1.Time `json:"requestedEndTimeBefore,omitempty"` + RequestedStartTimeAfter *metav1.Time `json:"requestedStartTimeAfter,omitempty"` + UpfrontFee *string `json:"upfrontFee,omitempty"` +} + +// Details of the training plan. +// +// For more information about how to reserve GPU capacity for your SageMaker +// HyperPod clusters using Amazon SageMaker Training Plan, see CreateTrainingPlan +// (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateTrainingPlan.html) . +type TrainingPlanSummary struct { + EndTime *metav1.Time `json:"endTime,omitempty"` + StartTime *metav1.Time `json:"startTime,omitempty"` + TrainingPlanARN *string `json:"trainingPlanARN,omitempty"` + UpfrontFee *string `json:"upfrontFee,omitempty"` +} + // Defines how the algorithm is used for a training job. type TrainingSpecification struct { // A data source used for training or inference that is in addition to the input @@ -5325,9 +5829,10 @@ type TransformOutput struct { // Describes the resources, including ML instance types and ML instance count, // to use for transform job. type TransformResources struct { - InstanceCount *int64 `json:"instanceCount,omitempty"` - InstanceType *string `json:"instanceType,omitempty"` - VolumeKMSKeyID *string `json:"volumeKMSKeyID,omitempty"` + InstanceCount *int64 `json:"instanceCount,omitempty"` + InstanceType *string `json:"instanceType,omitempty"` + TransformAMIVersion *string `json:"transformAMIVersion,omitempty"` + VolumeKMSKeyID *string `json:"volumeKMSKeyID,omitempty"` } // Describes the S3 data source. @@ -5339,14 +5844,12 @@ type TransformS3DataSource struct { // The properties of a trial as returned by the Search (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html) // API. type Trial struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DisplayName *string `json:"displayName,omitempty"` ExperimentName *string `json:"experimentName,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` // Metadata properties of the tracking entity, trial, or trial component. @@ -5358,14 +5861,12 @@ type Trial struct { // The properties of a trial component as returned by the Search (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_Search.html) // API. type TrialComponent struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DisplayName *string `json:"displayName,omitempty"` EndTime *metav1.Time `json:"endTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` // Metadata properties of the tracking entity, trial, or trial component. @@ -5384,8 +5885,7 @@ type TrialComponentMetricSummary struct { // A short summary of a trial component. type TrialComponentSimpleSummary struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` TrialComponentName *string `json:"trialComponentName,omitempty"` @@ -5395,14 +5895,12 @@ type TrialComponentSimpleSummary struct { // call the DescribeTrialComponent (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeTrialComponent.html) // API and provide the TrialComponentName. type TrialComponentSummary struct { - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. CreatedBy *UserContext `json:"createdBy,omitempty"` CreationTime *metav1.Time `json:"creationTime,omitempty"` DisplayName *string `json:"displayName,omitempty"` EndTime *metav1.Time `json:"endTime,omitempty"` - // Information about the user who created or modified an experiment, trial, - // trial component, lineage group, project, or model card. + // Information about the user who created or modified a SageMaker resource. LastModifiedBy *UserContext `json:"lastModifiedBy,omitempty"` LastModifiedTime *metav1.Time `json:"lastModifiedTime,omitempty"` StartTime *metav1.Time `json:"startTime,omitempty"` @@ -5419,6 +5917,13 @@ type TrialSummary struct { TrialName *string `json:"trialName,omitempty"` } +// The Trusted Identity Propagation (TIP) settings for the SageMaker domain. +// These settings determine how user identities from IAM Identity Center are +// propagated through the domain to TIP enabled Amazon Web Services services. +type TrustedIdentityPropagationSettings struct { + Status *string `json:"status,omitempty"` +} + // The job completion criteria. type TuningJobCompletionCriteria struct { TargetObjectiveMetricValue *float64 `json:"targetObjectiveMetricValue,omitempty"` @@ -5450,8 +5955,25 @@ type USD struct { TenthFractionsOfACent *int64 `json:"tenthFractionsOfACent,omitempty"` } -// Information about the user who created or modified an experiment, trial, -// trial component, lineage group, project, or model card. +// Contains information about the UltraServer object. +type UltraServerInfo struct { + ID *string `json:"id,omitempty"` +} + +// The settings that apply to an Amazon SageMaker AI domain when you use it +// in Amazon SageMaker Unified Studio. +type UnifiedStudioSettings struct { + DomainAccountID *string `json:"domainAccountID,omitempty"` + DomainID *string `json:"domainID,omitempty"` + DomainRegion *string `json:"domainRegion,omitempty"` + EnvironmentID *string `json:"environmentID,omitempty"` + ProjectID *string `json:"projectID,omitempty"` + ProjectS3Path *string `json:"projectS3Path,omitempty"` + SingleSignOnApplicationARN *string `json:"singleSignOnApplicationARN,omitempty"` + StudioWebPortalAccess *string `json:"studioWebPortalAccess,omitempty"` +} + +// Information about the user who created or modified a SageMaker resource. type UserContext struct { DomainID *string `json:"domainID,omitempty"` // The IAM Identity details associated with the user. These details are associated @@ -5498,10 +6020,11 @@ type UserSettings struct { // app. RStudioServerProAppSettings *RStudioServerProAppSettings `json:"rStudioServerProAppSettings,omitempty"` SecurityGroups []*string `json:"securityGroups,omitempty"` - // Specifies options for sharing Amazon SageMaker Studio notebooks. These settings - // are specified as part of DefaultUserSettings when the CreateDomain API is - // called, and as part of UserSettings when the CreateUserProfile API is called. - // When SharingSettings is not specified, notebook sharing isn't allowed. + // Specifies options for sharing Amazon SageMaker AI Studio notebooks. These + // settings are specified as part of DefaultUserSettings when the CreateDomain + // API is called, and as part of UserSettings when the CreateUserProfile API + // is called. When SharingSettings is not specified, notebook sharing isn't + // allowed. SharingSettings *SharingSettings `json:"sharingSettings,omitempty"` // The default storage settings for a space. SpaceStorageSettings *DefaultSpaceStorageSettings `json:"spaceStorageSettings,omitempty"` diff --git a/apis/v1alpha1/zz_generated.deepcopy.go b/apis/v1alpha1/zz_generated.deepcopy.go index 1e903e0b..ded0af7c 100644 --- a/apis/v1alpha1/zz_generated.deepcopy.go +++ b/apis/v1alpha1/zz_generated.deepcopy.go @@ -185,6 +185,11 @@ func (in *AdditionalS3DataSource) DeepCopyInto(out *AdditionalS3DataSource) { *out = new(string) **out = **in } + if in.ETag != nil { + in, out := &in.ETag, &out.ETag + *out = new(string) + **out = **in + } if in.S3DataType != nil { in, out := &in.S3DataType, &out.S3DataType *out = new(string) @@ -227,6 +232,26 @@ func (in *Alarm) DeepCopy() *Alarm { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AlarmDetails) DeepCopyInto(out *AlarmDetails) { + *out = *in + if in.AlarmName != nil { + in, out := &in.AlarmName, &out.AlarmName + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AlarmDetails. +func (in *AlarmDetails) DeepCopy() *AlarmDetails { + if in == nil { + return nil + } + out := new(AlarmDetails) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *AlgorithmSpecification) DeepCopyInto(out *AlgorithmSpecification) { *out = *in @@ -576,6 +601,11 @@ func (in *AppSpec) DeepCopyInto(out *AppSpec) { *out = new(string) **out = **in } + if in.RecoveryMode != nil { + in, out := &in.RecoveryMode, &out.RecoveryMode + *out = new(bool) + **out = **in + } if in.ResourceSpec != nil { in, out := &in.ResourceSpec, &out.ResourceSpec *out = new(ResourceSpec) @@ -1301,6 +1331,51 @@ func (in *Autotune) DeepCopy() *Autotune { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BatchAddClusterNodesError) DeepCopyInto(out *BatchAddClusterNodesError) { + *out = *in + if in.InstanceGroupName != nil { + in, out := &in.InstanceGroupName, &out.InstanceGroupName + *out = new(string) + **out = **in + } + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BatchAddClusterNodesError. +func (in *BatchAddClusterNodesError) DeepCopy() *BatchAddClusterNodesError { + if in == nil { + return nil + } + out := new(BatchAddClusterNodesError) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *BatchDeleteClusterNodeLogicalIDsError) DeepCopyInto(out *BatchDeleteClusterNodeLogicalIDsError) { + *out = *in + if in.Message != nil { + in, out := &in.Message, &out.Message + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new BatchDeleteClusterNodeLogicalIDsError. +func (in *BatchDeleteClusterNodeLogicalIDsError) DeepCopy() *BatchDeleteClusterNodeLogicalIDsError { + if in == nil { + return nil + } + out := new(BatchDeleteClusterNodeLogicalIDsError) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *BatchDeleteClusterNodesError) DeepCopyInto(out *BatchDeleteClusterNodesError) { *out = *in @@ -1500,6 +1575,26 @@ func (in *CallbackStepMetadata) DeepCopy() *CallbackStepMetadata { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CapacityReservation) DeepCopyInto(out *CapacityReservation) { + *out = *in + if in.ARN != nil { + in, out := &in.ARN, &out.ARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CapacityReservation. +func (in *CapacityReservation) DeepCopy() *CapacityReservation { + if in == nil { + return nil + } + out := new(CapacityReservation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *CapacitySize) DeepCopyInto(out *CapacitySize) { *out = *in @@ -1639,6 +1734,46 @@ func (in *CategoricalParameterRangeSpecification) DeepCopy() *CategoricalParamet return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CfnCreateTemplateProvider) DeepCopyInto(out *CfnCreateTemplateProvider) { + *out = *in + if in.RoleARN != nil { + in, out := &in.RoleARN, &out.RoleARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CfnCreateTemplateProvider. +func (in *CfnCreateTemplateProvider) DeepCopy() *CfnCreateTemplateProvider { + if in == nil { + return nil + } + out := new(CfnCreateTemplateProvider) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *CfnTemplateProviderDetail) DeepCopyInto(out *CfnTemplateProviderDetail) { + *out = *in + if in.RoleARN != nil { + in, out := &in.RoleARN, &out.RoleARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CfnTemplateProviderDetail. +func (in *CfnTemplateProviderDetail) DeepCopy() *CfnTemplateProviderDetail { + if in == nil { + return nil + } + out := new(CfnTemplateProviderDetail) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Channel) DeepCopyInto(out *Channel) { *out = *in @@ -1830,6 +1965,109 @@ func (in *ClarifyShapBaselineConfig) DeepCopy() *ClarifyShapBaselineConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterAutoScalingConfigOutput) DeepCopyInto(out *ClusterAutoScalingConfigOutput) { + *out = *in + if in.FailureMessage != nil { + in, out := &in.FailureMessage, &out.FailureMessage + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterAutoScalingConfigOutput. +func (in *ClusterAutoScalingConfigOutput) DeepCopy() *ClusterAutoScalingConfigOutput { + if in == nil { + return nil + } + out := new(ClusterAutoScalingConfigOutput) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterEBSVolumeConfig) DeepCopyInto(out *ClusterEBSVolumeConfig) { + *out = *in + if in.RootVolume != nil { + in, out := &in.RootVolume, &out.RootVolume + *out = new(bool) + **out = **in + } + if in.VolumeKMSKeyID != nil { + in, out := &in.VolumeKMSKeyID, &out.VolumeKMSKeyID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterEBSVolumeConfig. +func (in *ClusterEBSVolumeConfig) DeepCopy() *ClusterEBSVolumeConfig { + if in == nil { + return nil + } + out := new(ClusterEBSVolumeConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterEventDetail) DeepCopyInto(out *ClusterEventDetail) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.EventTime != nil { + in, out := &in.EventTime, &out.EventTime + *out = (*in).DeepCopy() + } + if in.InstanceID != nil { + in, out := &in.InstanceID, &out.InstanceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterEventDetail. +func (in *ClusterEventDetail) DeepCopy() *ClusterEventDetail { + if in == nil { + return nil + } + out := new(ClusterEventDetail) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterEventSummary) DeepCopyInto(out *ClusterEventSummary) { + *out = *in + if in.Description != nil { + in, out := &in.Description, &out.Description + *out = new(string) + **out = **in + } + if in.EventTime != nil { + in, out := &in.EventTime, &out.EventTime + *out = (*in).DeepCopy() + } + if in.InstanceID != nil { + in, out := &in.InstanceID, &out.InstanceID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterEventSummary. +func (in *ClusterEventSummary) DeepCopy() *ClusterEventSummary { + if in == nil { + return nil + } + out := new(ClusterEventSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterInstanceGroupDetails) DeepCopyInto(out *ClusterInstanceGroupDetails) { *out = *in @@ -1843,6 +2081,11 @@ func (in *ClusterInstanceGroupDetails) DeepCopyInto(out *ClusterInstanceGroupDet *out = new(VPCConfig) (*in).DeepCopyInto(*out) } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInstanceGroupDetails. @@ -1868,6 +2111,11 @@ func (in *ClusterInstanceGroupSpecification) DeepCopyInto(out *ClusterInstanceGr *out = new(VPCConfig) (*in).DeepCopyInto(*out) } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterInstanceGroupSpecification. @@ -1920,6 +2168,31 @@ func (in *ClusterLifeCycleConfig) DeepCopy() *ClusterLifeCycleConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterMetadata) DeepCopyInto(out *ClusterMetadata) { + *out = *in + if in.FailureMessage != nil { + in, out := &in.FailureMessage, &out.FailureMessage + *out = new(string) + **out = **in + } + if in.SlrAccessEntry != nil { + in, out := &in.SlrAccessEntry, &out.SlrAccessEntry + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterMetadata. +func (in *ClusterMetadata) DeepCopy() *ClusterMetadata { + if in == nil { + return nil + } + out := new(ClusterMetadata) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterNodeDetails) DeepCopyInto(out *ClusterNodeDetails) { *out = *in @@ -1928,6 +2201,10 @@ func (in *ClusterNodeDetails) DeepCopyInto(out *ClusterNodeDetails) { *out = new(string) **out = **in } + if in.LastSoftwareUpdateTime != nil { + in, out := &in.LastSoftwareUpdateTime, &out.LastSoftwareUpdateTime + *out = (*in).DeepCopy() + } if in.LaunchTime != nil { in, out := &in.LaunchTime, &out.LaunchTime *out = (*in).DeepCopy() @@ -1957,10 +2234,19 @@ func (in *ClusterNodeSummary) DeepCopyInto(out *ClusterNodeSummary) { *out = new(string) **out = **in } + if in.LastSoftwareUpdateTime != nil { + in, out := &in.LastSoftwareUpdateTime, &out.LastSoftwareUpdateTime + *out = (*in).DeepCopy() + } if in.LaunchTime != nil { in, out := &in.LaunchTime, &out.LaunchTime *out = (*in).DeepCopy() } + if in.NodeLogicalID != nil { + in, out := &in.NodeLogicalID, &out.NodeLogicalID + *out = new(string) + **out = **in + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterNodeSummary. @@ -1973,6 +2259,99 @@ func (in *ClusterNodeSummary) DeepCopy() *ClusterNodeSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRestrictedInstanceGroupDetails) DeepCopyInto(out *ClusterRestrictedInstanceGroupDetails) { + *out = *in + if in.ExecutionRole != nil { + in, out := &in.ExecutionRole, &out.ExecutionRole + *out = new(string) + **out = **in + } + if in.OverrideVPCConfig != nil { + in, out := &in.OverrideVPCConfig, &out.OverrideVPCConfig + *out = new(VPCConfig) + (*in).DeepCopyInto(*out) + } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRestrictedInstanceGroupDetails. +func (in *ClusterRestrictedInstanceGroupDetails) DeepCopy() *ClusterRestrictedInstanceGroupDetails { + if in == nil { + return nil + } + out := new(ClusterRestrictedInstanceGroupDetails) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterRestrictedInstanceGroupSpecification) DeepCopyInto(out *ClusterRestrictedInstanceGroupSpecification) { + *out = *in + if in.ExecutionRole != nil { + in, out := &in.ExecutionRole, &out.ExecutionRole + *out = new(string) + **out = **in + } + if in.OverrideVPCConfig != nil { + in, out := &in.OverrideVPCConfig, &out.OverrideVPCConfig + *out = new(VPCConfig) + (*in).DeepCopyInto(*out) + } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterRestrictedInstanceGroupSpecification. +func (in *ClusterRestrictedInstanceGroupSpecification) DeepCopy() *ClusterRestrictedInstanceGroupSpecification { + if in == nil { + return nil + } + out := new(ClusterRestrictedInstanceGroupSpecification) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ClusterSchedulerConfigSummary) DeepCopyInto(out *ClusterSchedulerConfigSummary) { + *out = *in + if in.ClusterSchedulerConfigVersion != nil { + in, out := &in.ClusterSchedulerConfigVersion, &out.ClusterSchedulerConfigVersion + *out = new(int64) + **out = **in + } + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } + if in.LastModifiedTime != nil { + in, out := &in.LastModifiedTime, &out.LastModifiedTime + *out = (*in).DeepCopy() + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ClusterSchedulerConfigSummary. +func (in *ClusterSchedulerConfigSummary) DeepCopy() *ClusterSchedulerConfigSummary { + if in == nil { + return nil + } + out := new(ClusterSchedulerConfigSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ClusterSummary) DeepCopyInto(out *ClusterSummary) { *out = *in @@ -2163,6 +2542,39 @@ func (in *CompilationJobSummary) DeepCopy() *CompilationJobSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ComputeQuotaSummary) DeepCopyInto(out *ComputeQuotaSummary) { + *out = *in + if in.ComputeQuotaVersion != nil { + in, out := &in.ComputeQuotaVersion, &out.ComputeQuotaVersion + *out = new(int64) + **out = **in + } + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } + if in.LastModifiedTime != nil { + in, out := &in.LastModifiedTime, &out.LastModifiedTime + *out = (*in).DeepCopy() + } + if in.Name != nil { + in, out := &in.Name, &out.Name + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ComputeQuotaSummary. +func (in *ComputeQuotaSummary) DeepCopy() *ComputeQuotaSummary { + if in == nil { + return nil + } + out := new(ComputeQuotaSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ContainerDefinition) DeepCopyInto(out *ContainerDefinition) { *out = *in @@ -2360,6 +2772,16 @@ func (in *CustomFileSystem) DeepCopyInto(out *CustomFileSystem) { *out = new(EFSFileSystem) (*in).DeepCopyInto(*out) } + if in.FSxLustreFileSystem != nil { + in, out := &in.FSxLustreFileSystem, &out.FSxLustreFileSystem + *out = new(FSxLustreFileSystem) + (*in).DeepCopyInto(*out) + } + if in.S3FileSystem != nil { + in, out := &in.S3FileSystem, &out.S3FileSystem + *out = new(S3FileSystem) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFileSystem. @@ -2380,6 +2802,16 @@ func (in *CustomFileSystemConfig) DeepCopyInto(out *CustomFileSystemConfig) { *out = new(EFSFileSystemConfig) (*in).DeepCopyInto(*out) } + if in.FSxLustreFileSystemConfig != nil { + in, out := &in.FSxLustreFileSystemConfig, &out.FSxLustreFileSystemConfig + *out = new(FSxLustreFileSystemConfig) + (*in).DeepCopyInto(*out) + } + if in.S3FileSystemConfig != nil { + in, out := &in.S3FileSystemConfig, &out.S3FileSystemConfig + *out = new(S3FileSystemConfig) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new CustomFileSystemConfig. @@ -3477,6 +3909,11 @@ func (in *DockerSettings) DeepCopyInto(out *DockerSettings) { *out = new(string) **out = **in } + if in.RootlessDocker != nil { + in, out := &in.RootlessDocker, &out.RootlessDocker + *out = new(string) + **out = **in + } if in.VPCOnlyTrustedAccounts != nil { in, out := &in.VPCOnlyTrustedAccounts, &out.VPCOnlyTrustedAccounts *out = make([]*string, len(*in)) @@ -3615,6 +4052,11 @@ func (in *DomainSettings) DeepCopyInto(out *DomainSettings) { *out = new(DockerSettings) (*in).DeepCopyInto(*out) } + if in.IPAddressType != nil { + in, out := &in.IPAddressType, &out.IPAddressType + *out = new(string) + **out = **in + } if in.RStudioServerProDomainSettings != nil { in, out := &in.RStudioServerProDomainSettings, &out.RStudioServerProDomainSettings *out = new(RStudioServerProDomainSettings) @@ -3631,6 +4073,16 @@ func (in *DomainSettings) DeepCopyInto(out *DomainSettings) { } } } + if in.TrustedIdentityPropagationSettings != nil { + in, out := &in.TrustedIdentityPropagationSettings, &out.TrustedIdentityPropagationSettings + *out = new(TrustedIdentityPropagationSettings) + (*in).DeepCopyInto(*out) + } + if in.UnifiedStudioSettings != nil { + in, out := &in.UnifiedStudioSettings, &out.UnifiedStudioSettings + *out = new(UnifiedStudioSettings) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainSettings. @@ -3656,6 +4108,11 @@ func (in *DomainSettingsForUpdate) DeepCopyInto(out *DomainSettingsForUpdate) { *out = new(DockerSettings) (*in).DeepCopyInto(*out) } + if in.IPAddressType != nil { + in, out := &in.IPAddressType, &out.IPAddressType + *out = new(string) + **out = **in + } if in.RStudioServerProDomainSettingsForUpdate != nil { in, out := &in.RStudioServerProDomainSettingsForUpdate, &out.RStudioServerProDomainSettingsForUpdate *out = new(RStudioServerProDomainSettingsForUpdate) @@ -3672,6 +4129,16 @@ func (in *DomainSettingsForUpdate) DeepCopyInto(out *DomainSettingsForUpdate) { } } } + if in.TrustedIdentityPropagationSettings != nil { + in, out := &in.TrustedIdentityPropagationSettings, &out.TrustedIdentityPropagationSettings + *out = new(TrustedIdentityPropagationSettings) + (*in).DeepCopyInto(*out) + } + if in.UnifiedStudioSettings != nil { + in, out := &in.UnifiedStudioSettings, &out.UnifiedStudioSettings + *out = new(UnifiedStudioSettings) + (*in).DeepCopyInto(*out) + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new DomainSettingsForUpdate. @@ -4007,6 +4474,41 @@ func (in *EBSStorageSettings) DeepCopy() *EBSStorageSettings { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EC2CapacityReservation) DeepCopyInto(out *EC2CapacityReservation) { + *out = *in + if in.AvailableInstanceCount != nil { + in, out := &in.AvailableInstanceCount, &out.AvailableInstanceCount + *out = new(int64) + **out = **in + } + if in.EC2CapacityReservationID != nil { + in, out := &in.EC2CapacityReservationID, &out.EC2CapacityReservationID + *out = new(string) + **out = **in + } + if in.TotalInstanceCount != nil { + in, out := &in.TotalInstanceCount, &out.TotalInstanceCount + *out = new(int64) + **out = **in + } + if in.UsedByCurrentEndpoint != nil { + in, out := &in.UsedByCurrentEndpoint, &out.UsedByCurrentEndpoint + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EC2CapacityReservation. +func (in *EC2CapacityReservation) DeepCopy() *EC2CapacityReservation { + if in == nil { + return nil + } + out := new(EC2CapacityReservation) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EFSFileSystem) DeepCopyInto(out *EFSFileSystem) { *out = *in @@ -5110,6 +5612,26 @@ func (in *Endpoint_SDK) DeepCopy() *Endpoint_SDK { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EnvironmentConfigDetails) DeepCopyInto(out *EnvironmentConfigDetails) { + *out = *in + if in.S3OutputPath != nil { + in, out := &in.S3OutputPath, &out.S3OutputPath + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentConfigDetails. +func (in *EnvironmentConfigDetails) DeepCopy() *EnvironmentConfigDetails { + if in == nil { + return nil + } + out := new(EnvironmentConfigDetails) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *EnvironmentParameter) DeepCopyInto(out *EnvironmentParameter) { *out = *in @@ -5123,19 +5645,39 @@ func (in *EnvironmentParameter) DeepCopyInto(out *EnvironmentParameter) { *out = new(string) **out = **in } - if in.ValueType != nil { - in, out := &in.ValueType, &out.ValueType + if in.ValueType != nil { + in, out := &in.ValueType, &out.ValueType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentParameter. +func (in *EnvironmentParameter) DeepCopy() *EnvironmentParameter { + if in == nil { + return nil + } + out := new(EnvironmentParameter) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ErrorInfo) DeepCopyInto(out *ErrorInfo) { + *out = *in + if in.Code != nil { + in, out := &in.Code, &out.Code *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EnvironmentParameter. -func (in *EnvironmentParameter) DeepCopy() *EnvironmentParameter { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ErrorInfo. +func (in *ErrorInfo) DeepCopy() *ErrorInfo { if in == nil { return nil } - out := new(EnvironmentParameter) + out := new(ErrorInfo) in.DeepCopyInto(out) return out } @@ -5277,6 +5819,51 @@ func (in *Explainability) DeepCopy() *Explainability { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FSxLustreFileSystem) DeepCopyInto(out *FSxLustreFileSystem) { + *out = *in + if in.FileSystemID != nil { + in, out := &in.FileSystemID, &out.FileSystemID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FSxLustreFileSystem. +func (in *FSxLustreFileSystem) DeepCopy() *FSxLustreFileSystem { + if in == nil { + return nil + } + out := new(FSxLustreFileSystem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *FSxLustreFileSystemConfig) DeepCopyInto(out *FSxLustreFileSystemConfig) { + *out = *in + if in.FileSystemID != nil { + in, out := &in.FileSystemID, &out.FileSystemID + *out = new(string) + **out = **in + } + if in.FileSystemPath != nil { + in, out := &in.FileSystemPath, &out.FileSystemPath + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new FSxLustreFileSystemConfig. +func (in *FSxLustreFileSystemConfig) DeepCopy() *FSxLustreFileSystemConfig { + if in == nil { + return nil + } + out := new(FSxLustreFileSystemConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *FailStepMetadata) DeepCopyInto(out *FailStepMetadata) { *out = *in @@ -5880,6 +6467,26 @@ func (in *GenerativeAiSettings) DeepCopy() *GenerativeAiSettings { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *HubAccessConfig) DeepCopyInto(out *HubAccessConfig) { + *out = *in + if in.HubContentARN != nil { + in, out := &in.HubContentARN, &out.HubContentARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new HubAccessConfig. +func (in *HubAccessConfig) DeepCopy() *HubAccessConfig { + if in == nil { + return nil + } + out := new(HubAccessConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *HubContentInfo) DeepCopyInto(out *HubContentInfo) { *out = *in @@ -5887,6 +6494,11 @@ func (in *HubContentInfo) DeepCopyInto(out *HubContentInfo) { in, out := &in.CreationTime, &out.CreationTime *out = (*in).DeepCopy() } + if in.HubContentARN != nil { + in, out := &in.HubContentARN, &out.HubContentARN + *out = new(string) + **out = **in + } if in.OriginalCreationTime != nil { in, out := &in.OriginalCreationTime, &out.OriginalCreationTime *out = (*in).DeepCopy() @@ -7068,6 +7680,31 @@ func (in *InferenceComponent) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InferenceComponentCapacitySize) DeepCopyInto(out *InferenceComponentCapacitySize) { + *out = *in + if in.Type != nil { + in, out := &in.Type, &out.Type + *out = new(string) + **out = **in + } + if in.Value != nil { + in, out := &in.Value, &out.Value + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InferenceComponentCapacitySize. +func (in *InferenceComponentCapacitySize) DeepCopy() *InferenceComponentCapacitySize { + if in == nil { + return nil + } + out := new(InferenceComponentCapacitySize) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InferenceComponentComputeResourceRequirements) DeepCopyInto(out *InferenceComponentComputeResourceRequirements) { *out = *in @@ -7185,6 +7822,31 @@ func (in *InferenceComponentContainerSpecificationSummary) DeepCopy() *Inference return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InferenceComponentDeploymentConfig) DeepCopyInto(out *InferenceComponentDeploymentConfig) { + *out = *in + if in.AutoRollbackConfiguration != nil { + in, out := &in.AutoRollbackConfiguration, &out.AutoRollbackConfiguration + *out = new(AutoRollbackConfig) + (*in).DeepCopyInto(*out) + } + if in.RollingUpdatePolicy != nil { + in, out := &in.RollingUpdatePolicy, &out.RollingUpdatePolicy + *out = new(InferenceComponentRollingUpdatePolicy) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InferenceComponentDeploymentConfig. +func (in *InferenceComponentDeploymentConfig) DeepCopy() *InferenceComponentDeploymentConfig { + if in == nil { + return nil + } + out := new(InferenceComponentDeploymentConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InferenceComponentList) DeepCopyInto(out *InferenceComponentList) { *out = *in @@ -7217,6 +7879,41 @@ func (in *InferenceComponentList) DeepCopyObject() runtime.Object { return nil } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InferenceComponentRollingUpdatePolicy) DeepCopyInto(out *InferenceComponentRollingUpdatePolicy) { + *out = *in + if in.MaximumBatchSize != nil { + in, out := &in.MaximumBatchSize, &out.MaximumBatchSize + *out = new(InferenceComponentCapacitySize) + (*in).DeepCopyInto(*out) + } + if in.MaximumExecutionTimeoutInSeconds != nil { + in, out := &in.MaximumExecutionTimeoutInSeconds, &out.MaximumExecutionTimeoutInSeconds + *out = new(int64) + **out = **in + } + if in.RollbackMaximumBatchSize != nil { + in, out := &in.RollbackMaximumBatchSize, &out.RollbackMaximumBatchSize + *out = new(InferenceComponentCapacitySize) + (*in).DeepCopyInto(*out) + } + if in.WaitIntervalInSeconds != nil { + in, out := &in.WaitIntervalInSeconds, &out.WaitIntervalInSeconds + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InferenceComponentRollingUpdatePolicy. +func (in *InferenceComponentRollingUpdatePolicy) DeepCopy() *InferenceComponentRollingUpdatePolicy { + if in == nil { + return nil + } + out := new(InferenceComponentRollingUpdatePolicy) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InferenceComponentRuntimeConfig) DeepCopyInto(out *InferenceComponentRuntimeConfig) { *out = *in @@ -7630,6 +8327,26 @@ func (in *InferenceExperimentSummary) DeepCopy() *InferenceExperimentSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InferenceHubAccessConfig) DeepCopyInto(out *InferenceHubAccessConfig) { + *out = *in + if in.HubContentARN != nil { + in, out := &in.HubContentARN, &out.HubContentARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InferenceHubAccessConfig. +func (in *InferenceHubAccessConfig) DeepCopy() *InferenceHubAccessConfig { + if in == nil { + return nil + } + out := new(InferenceHubAccessConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InferenceMetrics) DeepCopyInto(out *InferenceMetrics) { *out = *in @@ -7820,54 +8537,181 @@ func (in *InfraCheckConfig) DeepCopy() *InfraCheckConfig { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InputConfig) DeepCopyInto(out *InputConfig) { *out = *in - if in.DataInputConfig != nil { - in, out := &in.DataInputConfig, &out.DataInputConfig + if in.DataInputConfig != nil { + in, out := &in.DataInputConfig, &out.DataInputConfig + *out = new(string) + **out = **in + } + if in.S3URI != nil { + in, out := &in.S3URI, &out.S3URI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputConfig. +func (in *InputConfig) DeepCopy() *InputConfig { + if in == nil { + return nil + } + out := new(InputConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceGroup) DeepCopyInto(out *InstanceGroup) { + *out = *in + if in.InstanceCount != nil { + in, out := &in.InstanceCount, &out.InstanceCount + *out = new(int64) + **out = **in + } + if in.InstanceGroupName != nil { + in, out := &in.InstanceGroupName, &out.InstanceGroupName + *out = new(string) + **out = **in + } + if in.InstanceType != nil { + in, out := &in.InstanceType, &out.InstanceType + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceGroup. +func (in *InstanceGroup) DeepCopy() *InstanceGroup { + if in == nil { + return nil + } + out := new(InstanceGroup) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceGroupMetadata) DeepCopyInto(out *InstanceGroupMetadata) { + *out = *in + if in.AMIOverride != nil { + in, out := &in.AMIOverride, &out.AMIOverride + *out = new(string) + **out = **in + } + if in.AvailabilityZoneID != nil { + in, out := &in.AvailabilityZoneID, &out.AvailabilityZoneID + *out = new(string) + **out = **in + } + if in.FailureMessage != nil { + in, out := &in.FailureMessage, &out.FailureMessage + *out = new(string) + **out = **in + } + if in.SecurityGroupIDs != nil { + in, out := &in.SecurityGroupIDs, &out.SecurityGroupIDs + *out = make([]*string, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(string) + **out = **in + } + } + } + if in.SubnetID != nil { + in, out := &in.SubnetID, &out.SubnetID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceGroupMetadata. +func (in *InstanceGroupMetadata) DeepCopy() *InstanceGroupMetadata { + if in == nil { + return nil + } + out := new(InstanceGroupMetadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceGroupScalingMetadata) DeepCopyInto(out *InstanceGroupScalingMetadata) { + *out = *in + if in.FailureMessage != nil { + in, out := &in.FailureMessage, &out.FailureMessage + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceGroupScalingMetadata. +func (in *InstanceGroupScalingMetadata) DeepCopy() *InstanceGroupScalingMetadata { + if in == nil { + return nil + } + out := new(InstanceGroupScalingMetadata) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *InstanceMetadata) DeepCopyInto(out *InstanceMetadata) { + *out = *in + if in.CustomerEni != nil { + in, out := &in.CustomerEni, &out.CustomerEni *out = new(string) **out = **in } - if in.S3URI != nil { - in, out := &in.S3URI, &out.S3URI + if in.FailureMessage != nil { + in, out := &in.FailureMessage, &out.FailureMessage + *out = new(string) + **out = **in + } + if in.LcsExecutionState != nil { + in, out := &in.LcsExecutionState, &out.LcsExecutionState *out = new(string) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InputConfig. -func (in *InputConfig) DeepCopy() *InputConfig { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceMetadata. +func (in *InstanceMetadata) DeepCopy() *InstanceMetadata { if in == nil { return nil } - out := new(InputConfig) + out := new(InstanceMetadata) in.DeepCopyInto(out) return out } // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. -func (in *InstanceGroup) DeepCopyInto(out *InstanceGroup) { +func (in *InstancePlacementConfig) DeepCopyInto(out *InstancePlacementConfig) { *out = *in - if in.InstanceCount != nil { - in, out := &in.InstanceCount, &out.InstanceCount - *out = new(int64) - **out = **in - } - if in.InstanceGroupName != nil { - in, out := &in.InstanceGroupName, &out.InstanceGroupName - *out = new(string) + if in.EnableMultipleJobs != nil { + in, out := &in.EnableMultipleJobs, &out.EnableMultipleJobs + *out = new(bool) **out = **in } - if in.InstanceType != nil { - in, out := &in.InstanceType, &out.InstanceType - *out = new(string) - **out = **in + if in.PlacementSpecifications != nil { + in, out := &in.PlacementSpecifications, &out.PlacementSpecifications + *out = make([]*PlacementSpecification, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(PlacementSpecification) + (*in).DeepCopyInto(*out) + } + } } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstanceGroup. -func (in *InstanceGroup) DeepCopy() *InstanceGroup { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new InstancePlacementConfig. +func (in *InstancePlacementConfig) DeepCopy() *InstancePlacementConfig { if in == nil { return nil } - out := new(InstanceGroup) + out := new(InstancePlacementConfig) in.DeepCopyInto(out) return out } @@ -10332,6 +11176,11 @@ func (in *ModelPackageContainerDefinition) DeepCopyInto(out *ModelPackageContain *out = new(string) **out = **in } + if in.ModelDataETag != nil { + in, out := &in.ModelDataETag, &out.ModelDataETag + *out = new(string) + **out = **in + } if in.ModelDataURL != nil { in, out := &in.ModelDataURL, &out.ModelDataURL *out = new(string) @@ -10932,6 +11781,11 @@ func (in *ModelPackageSummary) DeepCopyInto(out *ModelPackageSummary) { *out = new(string) **out = **in } + if in.ModelLifeCycle != nil { + in, out := &in.ModelLifeCycle, &out.ModelLifeCycle + *out = new(ModelLifeCycle) + (*in).DeepCopyInto(*out) + } if in.ModelPackageARN != nil { in, out := &in.ModelPackageARN, &out.ModelPackageARN *out = new(string) @@ -12908,6 +13762,17 @@ func (in *NotebookInstanceLifecycleConfigSpec) DeepCopyInto(out *NotebookInstanc } } } + if in.Tags != nil { + in, out := &in.Tags, &out.Tags + *out = make([]*Tag, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(Tag) + (*in).DeepCopyInto(*out) + } + } + } } // DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new NotebookInstanceLifecycleConfigSpec. @@ -13084,6 +13949,11 @@ func (in *NotebookInstanceSpec) DeepCopyInto(out *NotebookInstanceSpec) { *out = new(string) **out = **in } + if in.IPAddressType != nil { + in, out := &in.IPAddressType, &out.IPAddressType + *out = new(string) + **out = **in + } if in.KMSKeyID != nil { in, out := &in.KMSKeyID, &out.KMSKeyID *out = new(string) @@ -13788,6 +14658,25 @@ func (in *ParentHyperParameterTuningJob) DeepCopy() *ParentHyperParameterTuningJ return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PartnerAppSummary) DeepCopyInto(out *PartnerAppSummary) { + *out = *in + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PartnerAppSummary. +func (in *PartnerAppSummary) DeepCopy() *PartnerAppSummary { + if in == nil { + return nil + } + out := new(PartnerAppSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PendingDeploymentSummary) DeepCopyInto(out *PendingDeploymentSummary) { *out = *in @@ -14065,6 +14954,11 @@ func (in *PipelineExecutionSpec) DeepCopyInto(out *PipelineExecutionSpec) { } } } + if in.PipelineVersionID != nil { + in, out := &in.PipelineVersionID, &out.PipelineVersionID + *out = new(int64) + **out = **in + } if in.SelectiveExecutionConfig != nil { in, out := &in.SelectiveExecutionConfig, &out.SelectiveExecutionConfig *out = new(SelectiveExecutionConfig) @@ -14280,6 +15174,16 @@ func (in *PipelineExecution_SDK) DeepCopyInto(out *PipelineExecution_SDK) { } } } + if in.PipelineVersionDisplayName != nil { + in, out := &in.PipelineVersionDisplayName, &out.PipelineVersionDisplayName + *out = new(string) + **out = **in + } + if in.PipelineVersionID != nil { + in, out := &in.PipelineVersionID, &out.PipelineVersionID + *out = new(int64) + **out = **in + } if in.SelectiveExecutionConfig != nil { in, out := &in.SelectiveExecutionConfig, &out.SelectiveExecutionConfig *out = new(SelectiveExecutionConfig) @@ -14506,6 +15410,118 @@ func (in *PipelineSummary) DeepCopy() *PipelineSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineVersion) DeepCopyInto(out *PipelineVersion) { + *out = *in + if in.CreatedBy != nil { + in, out := &in.CreatedBy, &out.CreatedBy + *out = new(UserContext) + (*in).DeepCopyInto(*out) + } + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } + if in.LastExecutedPipelineExecutionARN != nil { + in, out := &in.LastExecutedPipelineExecutionARN, &out.LastExecutedPipelineExecutionARN + *out = new(string) + **out = **in + } + if in.LastExecutedPipelineExecutionDisplayName != nil { + in, out := &in.LastExecutedPipelineExecutionDisplayName, &out.LastExecutedPipelineExecutionDisplayName + *out = new(string) + **out = **in + } + if in.LastExecutedPipelineExecutionStatus != nil { + in, out := &in.LastExecutedPipelineExecutionStatus, &out.LastExecutedPipelineExecutionStatus + *out = new(string) + **out = **in + } + if in.LastModifiedBy != nil { + in, out := &in.LastModifiedBy, &out.LastModifiedBy + *out = new(UserContext) + (*in).DeepCopyInto(*out) + } + if in.LastModifiedTime != nil { + in, out := &in.LastModifiedTime, &out.LastModifiedTime + *out = (*in).DeepCopy() + } + if in.PipelineARN != nil { + in, out := &in.PipelineARN, &out.PipelineARN + *out = new(string) + **out = **in + } + if in.PipelineVersionDescription != nil { + in, out := &in.PipelineVersionDescription, &out.PipelineVersionDescription + *out = new(string) + **out = **in + } + if in.PipelineVersionDisplayName != nil { + in, out := &in.PipelineVersionDisplayName, &out.PipelineVersionDisplayName + *out = new(string) + **out = **in + } + if in.PipelineVersionID != nil { + in, out := &in.PipelineVersionID, &out.PipelineVersionID + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineVersion. +func (in *PipelineVersion) DeepCopy() *PipelineVersion { + if in == nil { + return nil + } + out := new(PipelineVersion) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PipelineVersionSummary) DeepCopyInto(out *PipelineVersionSummary) { + *out = *in + if in.CreationTime != nil { + in, out := &in.CreationTime, &out.CreationTime + *out = (*in).DeepCopy() + } + if in.LastExecutionPipelineExecutionARN != nil { + in, out := &in.LastExecutionPipelineExecutionARN, &out.LastExecutionPipelineExecutionARN + *out = new(string) + **out = **in + } + if in.PipelineARN != nil { + in, out := &in.PipelineARN, &out.PipelineARN + *out = new(string) + **out = **in + } + if in.PipelineVersionDescription != nil { + in, out := &in.PipelineVersionDescription, &out.PipelineVersionDescription + *out = new(string) + **out = **in + } + if in.PipelineVersionDisplayName != nil { + in, out := &in.PipelineVersionDisplayName, &out.PipelineVersionDisplayName + *out = new(string) + **out = **in + } + if in.PipelineVersionID != nil { + in, out := &in.PipelineVersionID, &out.PipelineVersionID + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PipelineVersionSummary. +func (in *PipelineVersionSummary) DeepCopy() *PipelineVersionSummary { + if in == nil { + return nil + } + out := new(PipelineVersionSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Pipeline_SDK) DeepCopyInto(out *Pipeline_SDK) { *out = *in @@ -14589,6 +15605,31 @@ func (in *Pipeline_SDK) DeepCopy() *Pipeline_SDK { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PlacementSpecification) DeepCopyInto(out *PlacementSpecification) { + *out = *in + if in.InstanceCount != nil { + in, out := &in.InstanceCount, &out.InstanceCount + *out = new(int64) + **out = **in + } + if in.UltraServerID != nil { + in, out := &in.UltraServerID, &out.UltraServerID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PlacementSpecification. +func (in *PlacementSpecification) DeepCopy() *PlacementSpecification { + if in == nil { + return nil + } + out := new(PlacementSpecification) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PredefinedMetricSpecification) DeepCopyInto(out *PredefinedMetricSpecification) { *out = *in @@ -14609,6 +15650,31 @@ func (in *PredefinedMetricSpecification) DeepCopy() *PredefinedMetricSpecificati return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PresignedURLAccessConfig) DeepCopyInto(out *PresignedURLAccessConfig) { + *out = *in + if in.AcceptEula != nil { + in, out := &in.AcceptEula, &out.AcceptEula + *out = new(bool) + **out = **in + } + if in.ExpectedS3URL != nil { + in, out := &in.ExpectedS3URL, &out.ExpectedS3URL + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PresignedURLAccessConfig. +func (in *PresignedURLAccessConfig) DeepCopy() *PresignedURLAccessConfig { + if in == nil { + return nil + } + out := new(PresignedURLAccessConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProcessingClusterConfig) DeepCopyInto(out *ProcessingClusterConfig) { *out = *in @@ -15297,6 +16363,11 @@ func (in *ProductionVariant) DeepCopyInto(out *ProductionVariant) { *out = new(string) **out = **in } + if in.CapacityReservationConfig != nil { + in, out := &in.CapacityReservationConfig, &out.CapacityReservationConfig + *out = new(ProductionVariantCapacityReservationConfig) + (*in).DeepCopyInto(*out) + } if in.ContainerStartupHealthCheckTimeoutInSeconds != nil { in, out := &in.ContainerStartupHealthCheckTimeoutInSeconds, &out.ContainerStartupHealthCheckTimeoutInSeconds *out = new(int64) @@ -15337,39 +16408,115 @@ func (in *ProductionVariant) DeepCopyInto(out *ProductionVariant) { *out = new(int64) **out = **in } - if in.ModelName != nil { - in, out := &in.ModelName, &out.ModelName + if in.ModelName != nil { + in, out := &in.ModelName, &out.ModelName + *out = new(string) + **out = **in + } + if in.RoutingConfig != nil { + in, out := &in.RoutingConfig, &out.RoutingConfig + *out = new(ProductionVariantRoutingConfig) + (*in).DeepCopyInto(*out) + } + if in.ServerlessConfig != nil { + in, out := &in.ServerlessConfig, &out.ServerlessConfig + *out = new(ProductionVariantServerlessConfig) + (*in).DeepCopyInto(*out) + } + if in.VariantName != nil { + in, out := &in.VariantName, &out.VariantName + *out = new(string) + **out = **in + } + if in.VolumeSizeInGB != nil { + in, out := &in.VolumeSizeInGB, &out.VolumeSizeInGB + *out = new(int64) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProductionVariant. +func (in *ProductionVariant) DeepCopy() *ProductionVariant { + if in == nil { + return nil + } + out := new(ProductionVariant) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProductionVariantCapacityReservationConfig) DeepCopyInto(out *ProductionVariantCapacityReservationConfig) { + *out = *in + if in.CapacityReservationPreference != nil { + in, out := &in.CapacityReservationPreference, &out.CapacityReservationPreference + *out = new(string) + **out = **in + } + if in.MlReservationARN != nil { + in, out := &in.MlReservationARN, &out.MlReservationARN + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProductionVariantCapacityReservationConfig. +func (in *ProductionVariantCapacityReservationConfig) DeepCopy() *ProductionVariantCapacityReservationConfig { + if in == nil { + return nil + } + out := new(ProductionVariantCapacityReservationConfig) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ProductionVariantCapacityReservationSummary) DeepCopyInto(out *ProductionVariantCapacityReservationSummary) { + *out = *in + if in.AvailableInstanceCount != nil { + in, out := &in.AvailableInstanceCount, &out.AvailableInstanceCount + *out = new(int64) + **out = **in + } + if in.CapacityReservationPreference != nil { + in, out := &in.CapacityReservationPreference, &out.CapacityReservationPreference *out = new(string) **out = **in } - if in.RoutingConfig != nil { - in, out := &in.RoutingConfig, &out.RoutingConfig - *out = new(ProductionVariantRoutingConfig) - (*in).DeepCopyInto(*out) - } - if in.ServerlessConfig != nil { - in, out := &in.ServerlessConfig, &out.ServerlessConfig - *out = new(ProductionVariantServerlessConfig) - (*in).DeepCopyInto(*out) + if in.EC2CapacityReservations != nil { + in, out := &in.EC2CapacityReservations, &out.EC2CapacityReservations + *out = make([]*EC2CapacityReservation, len(*in)) + for i := range *in { + if (*in)[i] != nil { + in, out := &(*in)[i], &(*out)[i] + *out = new(EC2CapacityReservation) + (*in).DeepCopyInto(*out) + } + } } - if in.VariantName != nil { - in, out := &in.VariantName, &out.VariantName + if in.MlReservationARN != nil { + in, out := &in.MlReservationARN, &out.MlReservationARN *out = new(string) **out = **in } - if in.VolumeSizeInGB != nil { - in, out := &in.VolumeSizeInGB, &out.VolumeSizeInGB + if in.TotalInstanceCount != nil { + in, out := &in.TotalInstanceCount, &out.TotalInstanceCount + *out = new(int64) + **out = **in + } + if in.UsedByCurrentEndpoint != nil { + in, out := &in.UsedByCurrentEndpoint, &out.UsedByCurrentEndpoint *out = new(int64) **out = **in } } -// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProductionVariant. -func (in *ProductionVariant) DeepCopy() *ProductionVariant { +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ProductionVariantCapacityReservationSummary. +func (in *ProductionVariantCapacityReservationSummary) DeepCopy() *ProductionVariantCapacityReservationSummary { if in == nil { return nil } - out := new(ProductionVariant) + out := new(ProductionVariantCapacityReservationSummary) in.DeepCopyInto(out) return out } @@ -15536,6 +16683,11 @@ func (in *ProductionVariantStatus) DeepCopy() *ProductionVariantStatus { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ProductionVariantSummary) DeepCopyInto(out *ProductionVariantSummary) { *out = *in + if in.CapacityReservationConfig != nil { + in, out := &in.CapacityReservationConfig, &out.CapacityReservationConfig + *out = new(ProductionVariantCapacityReservationSummary) + (*in).DeepCopyInto(*out) + } if in.CurrentInstanceCount != nil { in, out := &in.CurrentInstanceCount, &out.CurrentInstanceCount *out = new(int64) @@ -16492,6 +17644,52 @@ func (in *RepositoryAuthConfig) DeepCopy() *RepositoryAuthConfig { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedCapacityOffering) DeepCopyInto(out *ReservedCapacityOffering) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = (*in).DeepCopy() + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedCapacityOffering. +func (in *ReservedCapacityOffering) DeepCopy() *ReservedCapacityOffering { + if in == nil { + return nil + } + out := new(ReservedCapacityOffering) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *ReservedCapacitySummary) DeepCopyInto(out *ReservedCapacitySummary) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = (*in).DeepCopy() + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = (*in).DeepCopy() + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new ReservedCapacitySummary. +func (in *ReservedCapacitySummary) DeepCopy() *ReservedCapacitySummary { + if in == nil { + return nil + } + out := new(ReservedCapacitySummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ResourceCatalog) DeepCopyInto(out *ResourceCatalog) { *out = *in @@ -16530,6 +17728,11 @@ func (in *ResourceConfig) DeepCopyInto(out *ResourceConfig) { } } } + if in.InstancePlacementConfig != nil { + in, out := &in.InstancePlacementConfig, &out.InstancePlacementConfig + *out = new(InstancePlacementConfig) + (*in).DeepCopyInto(*out) + } if in.InstanceType != nil { in, out := &in.InstanceType, &out.InstanceType *out = new(string) @@ -16540,6 +17743,11 @@ func (in *ResourceConfig) DeepCopyInto(out *ResourceConfig) { *out = new(int64) **out = **in } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } if in.VolumeKMSKeyID != nil { in, out := &in.VolumeKMSKeyID, &out.VolumeKMSKeyID *out = new(string) @@ -16736,6 +17944,11 @@ func (in *S3DataSource) DeepCopyInto(out *S3DataSource) { } } } + if in.HubAccessConfig != nil { + in, out := &in.HubAccessConfig, &out.HubAccessConfig + *out = new(HubAccessConfig) + (*in).DeepCopyInto(*out) + } if in.InstanceGroupNames != nil { in, out := &in.InstanceGroupNames, &out.InstanceGroupNames *out = make([]*string, len(*in)) @@ -16747,6 +17960,11 @@ func (in *S3DataSource) DeepCopyInto(out *S3DataSource) { } } } + if in.ModelAccessConfig != nil { + in, out := &in.ModelAccessConfig, &out.ModelAccessConfig + *out = new(ModelAccessConfig) + (*in).DeepCopyInto(*out) + } if in.S3DataDistributionType != nil { in, out := &in.S3DataDistributionType, &out.S3DataDistributionType *out = new(string) @@ -16774,6 +17992,51 @@ func (in *S3DataSource) DeepCopy() *S3DataSource { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3FileSystem) DeepCopyInto(out *S3FileSystem) { + *out = *in + if in.S3URI != nil { + in, out := &in.S3URI, &out.S3URI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3FileSystem. +func (in *S3FileSystem) DeepCopy() *S3FileSystem { + if in == nil { + return nil + } + out := new(S3FileSystem) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *S3FileSystemConfig) DeepCopyInto(out *S3FileSystemConfig) { + *out = *in + if in.MountPath != nil { + in, out := &in.MountPath, &out.MountPath + *out = new(string) + **out = **in + } + if in.S3URI != nil { + in, out := &in.S3URI, &out.S3URI + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new S3FileSystemConfig. +func (in *S3FileSystemConfig) DeepCopy() *S3FileSystemConfig { + if in == nil { + return nil + } + out := new(S3FileSystemConfig) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *S3ModelDataSource) DeepCopyInto(out *S3ModelDataSource) { *out = *in @@ -16782,6 +18045,16 @@ func (in *S3ModelDataSource) DeepCopyInto(out *S3ModelDataSource) { *out = new(string) **out = **in } + if in.ETag != nil { + in, out := &in.ETag, &out.ETag + *out = new(string) + **out = **in + } + if in.ManifestEtag != nil { + in, out := &in.ManifestEtag, &out.ManifestEtag + *out = new(string) + **out = **in + } if in.ModelAccessConfig != nil { in, out := &in.ModelAccessConfig, &out.ModelAccessConfig *out = new(ModelAccessConfig) @@ -17081,6 +18354,11 @@ func (in *SourceAlgorithm) DeepCopyInto(out *SourceAlgorithm) { *out = new(string) **out = **in } + if in.ModelDataETag != nil { + in, out := &in.ModelDataETag, &out.ModelDataETag + *out = new(string) + **out = **in + } if in.ModelDataURL != nil { in, out := &in.ModelDataURL, &out.ModelDataURL *out = new(string) @@ -17381,6 +18659,16 @@ func (in *SpaceSettings) DeepCopyInto(out *SpaceSettings) { *out = new(KernelGatewayAppSettings) (*in).DeepCopyInto(*out) } + if in.RemoteAccess != nil { + in, out := &in.RemoteAccess, &out.RemoteAccess + *out = new(string) + **out = **in + } + if in.SpaceManagedResources != nil { + in, out := &in.SpaceManagedResources, &out.SpaceManagedResources + *out = new(string) + **out = **in + } if in.SpaceStorageSettings != nil { in, out := &in.SpaceStorageSettings, &out.SpaceStorageSettings *out = new(SpaceStorageSettings) @@ -17406,6 +18694,11 @@ func (in *SpaceSettingsSummary) DeepCopyInto(out *SpaceSettingsSummary) { *out = new(string) **out = **in } + if in.RemoteAccess != nil { + in, out := &in.RemoteAccess, &out.RemoteAccess + *out = new(string) + **out = **in + } if in.SpaceStorageSettings != nil { in, out := &in.SpaceStorageSettings, &out.SpaceStorageSettings *out = new(SpaceStorageSettings) @@ -18498,6 +19791,11 @@ func (in *TrainingJobSummary) DeepCopyInto(out *TrainingJobSummary) { *out = new(string) **out = **in } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } if in.WarmPoolStatus != nil { in, out := &in.WarmPoolStatus, &out.WarmPoolStatus *out = new(WarmPoolStatus) @@ -18774,6 +20072,67 @@ func (in *TrainingJob_SDK) DeepCopy() *TrainingJob_SDK { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrainingPlanOffering) DeepCopyInto(out *TrainingPlanOffering) { + *out = *in + if in.RequestedEndTimeBefore != nil { + in, out := &in.RequestedEndTimeBefore, &out.RequestedEndTimeBefore + *out = (*in).DeepCopy() + } + if in.RequestedStartTimeAfter != nil { + in, out := &in.RequestedStartTimeAfter, &out.RequestedStartTimeAfter + *out = (*in).DeepCopy() + } + if in.UpfrontFee != nil { + in, out := &in.UpfrontFee, &out.UpfrontFee + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingPlanOffering. +func (in *TrainingPlanOffering) DeepCopy() *TrainingPlanOffering { + if in == nil { + return nil + } + out := new(TrainingPlanOffering) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrainingPlanSummary) DeepCopyInto(out *TrainingPlanSummary) { + *out = *in + if in.EndTime != nil { + in, out := &in.EndTime, &out.EndTime + *out = (*in).DeepCopy() + } + if in.StartTime != nil { + in, out := &in.StartTime, &out.StartTime + *out = (*in).DeepCopy() + } + if in.TrainingPlanARN != nil { + in, out := &in.TrainingPlanARN, &out.TrainingPlanARN + *out = new(string) + **out = **in + } + if in.UpfrontFee != nil { + in, out := &in.UpfrontFee, &out.UpfrontFee + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrainingPlanSummary. +func (in *TrainingPlanSummary) DeepCopy() *TrainingPlanSummary { + if in == nil { + return nil + } + out := new(TrainingPlanSummary) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TrainingSpecification) DeepCopyInto(out *TrainingSpecification) { *out = *in @@ -19382,6 +20741,11 @@ func (in *TransformResources) DeepCopyInto(out *TransformResources) { *out = new(string) **out = **in } + if in.TransformAMIVersion != nil { + in, out := &in.TransformAMIVersion, &out.TransformAMIVersion + *out = new(string) + **out = **in + } if in.VolumeKMSKeyID != nil { in, out := &in.VolumeKMSKeyID, &out.VolumeKMSKeyID *out = new(string) @@ -19697,6 +21061,26 @@ func (in *TrialSummary) DeepCopy() *TrialSummary { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *TrustedIdentityPropagationSettings) DeepCopyInto(out *TrustedIdentityPropagationSettings) { + *out = *in + if in.Status != nil { + in, out := &in.Status, &out.Status + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TrustedIdentityPropagationSettings. +func (in *TrustedIdentityPropagationSettings) DeepCopy() *TrustedIdentityPropagationSettings { + if in == nil { + return nil + } + out := new(TrustedIdentityPropagationSettings) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *TuningJobCompletionCriteria) DeepCopyInto(out *TuningJobCompletionCriteria) { *out = *in @@ -19792,6 +21176,81 @@ func (in *USD) DeepCopy() *USD { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UltraServerInfo) DeepCopyInto(out *UltraServerInfo) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UltraServerInfo. +func (in *UltraServerInfo) DeepCopy() *UltraServerInfo { + if in == nil { + return nil + } + out := new(UltraServerInfo) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *UnifiedStudioSettings) DeepCopyInto(out *UnifiedStudioSettings) { + *out = *in + if in.DomainAccountID != nil { + in, out := &in.DomainAccountID, &out.DomainAccountID + *out = new(string) + **out = **in + } + if in.DomainID != nil { + in, out := &in.DomainID, &out.DomainID + *out = new(string) + **out = **in + } + if in.DomainRegion != nil { + in, out := &in.DomainRegion, &out.DomainRegion + *out = new(string) + **out = **in + } + if in.EnvironmentID != nil { + in, out := &in.EnvironmentID, &out.EnvironmentID + *out = new(string) + **out = **in + } + if in.ProjectID != nil { + in, out := &in.ProjectID, &out.ProjectID + *out = new(string) + **out = **in + } + if in.ProjectS3Path != nil { + in, out := &in.ProjectS3Path, &out.ProjectS3Path + *out = new(string) + **out = **in + } + if in.SingleSignOnApplicationARN != nil { + in, out := &in.SingleSignOnApplicationARN, &out.SingleSignOnApplicationARN + *out = new(string) + **out = **in + } + if in.StudioWebPortalAccess != nil { + in, out := &in.StudioWebPortalAccess, &out.StudioWebPortalAccess + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new UnifiedStudioSettings. +func (in *UnifiedStudioSettings) DeepCopy() *UnifiedStudioSettings { + if in == nil { + return nil + } + out := new(UnifiedStudioSettings) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *UserContext) DeepCopyInto(out *UserContext) { *out = *in diff --git a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml index 92c96058..145c9077 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_apps.yaml @@ -58,10 +58,14 @@ spec: Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` type: string + recoveryMode: + description: Indicates whether the application is launched in recovery + mode. + type: boolean resourceSpec: description: |- - The instance type and the Amazon Resource Name (ARN) of the SageMaker image - created on the instance. + The instance type and the Amazon Resource Name (ARN) of the SageMaker AI + image created on the instance. The value of InstanceType passed as part of the ResourceSpec in the CreateApp call overrides the value passed as part of the ResourceSpec configured for diff --git a/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml index 51858f5d..3bd84359 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml @@ -190,8 +190,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml index 29088eb0..eacef1bc 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_domains.yaml @@ -15,6 +15,9 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: + - jsonPath: .status.domainID + name: DOMAIN-ID + type: string - jsonPath: .status.domainID name: DOMAIN-ID type: string @@ -51,7 +54,7 @@ spec: Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly. * PublicInternetOnly - Non-EFS traffic is through a VPC managed by Amazon - SageMaker, which allows direct internet access + SageMaker AI, which allows direct internet access * VpcOnly - All traffic is through the specified VPC and subnets type: string @@ -85,8 +88,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -108,19 +117,38 @@ spec: items: description: |- The settings for assigning a custom file system to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystemConfig: description: |- The settings for assigning a custom Amazon EFS file system to a user profile - or space for an Amazon SageMaker Domain. + or space for an Amazon SageMaker AI Domain. + properties: + fileSystemID: + type: string + fileSystemPath: + type: string + type: object + fSxLustreFileSystemConfig: + description: |- + The settings for assigning a custom Amazon FSx for Lustre file system to + a user profile or space for an Amazon SageMaker Domain. properties: fileSystemID: type: string fileSystemPath: type: string type: object + s3FileSystemConfig: + description: Configuration for the custom Amazon S3 file + system. + properties: + mountPath: + type: string + s3URI: + type: string + type: object type: object type: array customPosixUserConfig: @@ -144,7 +172,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -154,8 +182,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -168,8 +196,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -193,7 +227,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -202,8 +236,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -227,8 +267,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -241,8 +281,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -276,10 +322,11 @@ spec: type: array sharingSettings: description: |- - Specifies options for sharing Amazon SageMaker Studio notebooks. These settings - are specified as part of DefaultUserSettings when the CreateDomain API is - called, and as part of UserSettings when the CreateUserProfile API is called. - When SharingSettings is not specified, notebook sharing isn't allowed. + Specifies options for sharing Amazon SageMaker AI Studio notebooks. These + settings are specified as part of DefaultUserSettings when the CreateDomain + API is called, and as part of UserSettings when the CreateUserProfile API + is called. When SharingSettings is not specified, notebook sharing isn't + allowed. properties: notebookOutputOption: type: string @@ -311,8 +358,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -342,11 +395,15 @@ spec: properties: enableDockerAccess: type: string + rootlessDocker: + type: string vpcOnlyTrustedAccounts: items: type: string type: array type: object + ipAddressType: + type: string rStudioServerProDomainSettings: description: |- A collection of settings that configure the RStudioServerPro Domain-level @@ -354,8 +411,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -379,6 +442,37 @@ spec: items: type: string type: array + trustedIdentityPropagationSettings: + description: |- + The Trusted Identity Propagation (TIP) settings for the SageMaker domain. + These settings determine how user identities from IAM Identity Center are + propagated through the domain to TIP enabled Amazon Web Services services. + properties: + status: + type: string + type: object + unifiedStudioSettings: + description: |- + The settings that apply to an Amazon SageMaker AI domain when you use it + in Amazon SageMaker Unified Studio. + properties: + domainAccountID: + type: string + domainID: + type: string + domainRegion: + type: string + environmentID: + type: string + projectID: + type: string + projectS3Path: + type: string + singleSignOnApplicationARN: + type: string + studioWebPortalAccess: + type: string + type: object type: object homeEFSFileSystemKMSKeyID: description: |- @@ -388,14 +482,18 @@ spec: type: string kmsKeyID: description: |- - SageMaker uses Amazon Web Services KMS to encrypt EFS and EBS volumes attached - to the domain with an Amazon Web Services managed key by default. For more - control, specify a customer managed key. + SageMaker AI uses Amazon Web Services KMS to encrypt EFS and EBS volumes + attached to the domain with an Amazon Web Services managed key by default. + For more control, specify a customer managed key. Regex Pattern: `^[a-zA-Z0-9:/_-]*$` type: string subnetIDs: - description: The VPC subnets that the domain uses for communication. + description: |- + The VPC subnets that the domain uses for communication. + + The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + for domains created from Amazon SageMaker Unified Studio. items: type: string type: array @@ -434,14 +532,15 @@ spec: The ID of the Amazon Virtual Private Cloud (VPC) that the domain uses for communication. + The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + for domains created from Amazon SageMaker Unified Studio. + Regex Pattern: `^[-0-9a-zA-Z]+$` type: string required: - authMode - defaultUserSettings - domainName - - subnetIDs - - vpcID type: object status: description: DomainStatus defines the observed state of Domain diff --git a/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml index 6726ed68..41c0c186 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_endpointconfigs.yaml @@ -81,14 +81,14 @@ spec: type: object type: object dataCaptureConfig: - description: Configuration to control how SageMaker captures inference + description: Configuration to control how SageMaker AI captures inference data. properties: captureContentTypeHeader: description: |- Configuration specifying how to treat different headers. If no headers are - specified Amazon SageMaker will by default base64 encode when capturing the - data. + specified Amazon SageMaker AI will by default base64 encode when capturing + the data. properties: csvContentTypes: items: @@ -133,11 +133,11 @@ spec: type: string executionRoleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform actions on your behalf. For more information, see SageMaker Roles - (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform actions on your behalf. For more information, see SageMaker + AI Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). - To be able to pass this role to Amazon SageMaker, the caller of this action + To be able to pass this role to Amazon SageMaker AI, the caller of this action must have the iam:PassRole permission. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` @@ -193,6 +193,16 @@ spec: properties: acceleratorType: type: string + capacityReservationConfig: + description: |- + Settings for the capacity reservation for the compute instances that SageMaker + AI reserves for an endpoint. + properties: + capacityReservationPreference: + type: string + mlReservationARN: + type: string + type: object containerStartupHealthCheckTimeoutInSeconds: format: int64 type: integer diff --git a/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml b/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml index 4a4803cc..40f4b005 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_endpoints.yaml @@ -476,6 +476,41 @@ spec: API and the endpoint status is Updating, you get different desired and current values. properties: + capacityReservationConfig: + description: Details about an ML capacity reservation. + properties: + availableInstanceCount: + format: int64 + type: integer + capacityReservationPreference: + type: string + ec2CapacityReservations: + items: + description: The EC2 capacity reservations that are shared + to an ML capacity reservation. + properties: + availableInstanceCount: + format: int64 + type: integer + ec2CapacityReservationID: + type: string + totalInstanceCount: + format: int64 + type: integer + usedByCurrentEndpoint: + format: int64 + type: integer + type: object + type: array + mlReservationARN: + type: string + totalInstanceCount: + format: int64 + type: integer + usedByCurrentEndpoint: + format: int64 + type: integer + type: object currentInstanceCount: format: int64 type: integer diff --git a/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml index 7863b3d3..5bd0d709 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml @@ -442,10 +442,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -553,6 +581,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed + on a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -561,6 +609,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: @@ -848,10 +898,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -959,6 +1037,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed + on a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -967,6 +1065,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: diff --git a/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml index ac995a8f..77a62463 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_labelingjobs.yaml @@ -393,13 +393,12 @@ spec: * The name can't end with "-metadata". - * If you are using one of the following built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html), - the attribute name must end with "-ref". If the task type you are using - is not listed below, the attribute name must not end with "-ref". Image - semantic segmentation (SemanticSegmentation), and adjustment (AdjustmentSemanticSegmentation) - and verification (VerificationSemanticSegmentation) labeling jobs for - this task type. Video frame object detection (VideoObjectDetection), and - adjustment and verification (AdjustmentVideoObjectDetection) labeling + * If you are using one of the built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) + or one of the following, the attribute name must end with "-ref". Image + semantic segmentation (SemanticSegmentation) and adjustment (AdjustmentSemanticSegmentation) + labeling jobs for this task type. One exception is that verification (VerificationSemanticSegmentation) + must not end with -"ref". Video frame object detection (VideoObjectDetection), + and adjustment and verification (AdjustmentVideoObjectDetection) labeling jobs for this task type. Video frame object tracking (VideoObjectTracking), and adjustment and verification (AdjustmentVideoObjectTracking) labeling jobs for this task type. 3D point cloud semantic segmentation (3DPointCloudSemanticSegmentation), @@ -428,13 +427,9 @@ spec: For named entity recognition jobs, in addition to "labels", you must provide worker instructions in the label category configuration file using the "instructions" - parameter: "instructions": {"shortInstruction":" - Add header - - Add Instructions - ", "fullInstruction":" - Add additional instructions. - "}. For details and an example, see Create a Named Entity Recognition Labeling + parameter: "instructions": {"shortInstruction":"

Add header

Add + Instructions

", "fullInstruction":"

Add additional instructions.

"}. + For details and an example, see Create a Named Entity Recognition Labeling Job (API) (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api). For all other built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml index 85581ad3..91ddd195 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml @@ -178,8 +178,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml index fa094e9b..8555bd2c 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml @@ -174,8 +174,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml index 6400cca1..41e53499 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelpackagegroups.yaml @@ -44,7 +44,7 @@ spec: description: |- ModelPackageGroupSpec defines the desired state of ModelPackageGroup. - A group of versioned models in the model registry. + A group of versioned models in the Model Registry. properties: modelPackageGroupDescription: description: |- diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml index 582121a6..c0cad568 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelpackages.yaml @@ -44,7 +44,16 @@ spec: description: |- ModelPackageSpec defines the desired state of ModelPackage. - A versioned model that can be deployed for SageMaker inference. + A container for your trained model that can be deployed for SageMaker inference. + This can include inference code, artifacts, and metadata. The model package + type can be one of the following. + + * Versioned model: A part of a model package group in Model Registry. + + * Unversioned model: Not part of a model package group and used in Amazon + Web Services Marketplace. + + For more information, see CreateModelPackage (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html). properties: additionalInferenceSpecifications: description: |- @@ -70,6 +79,8 @@ spec: properties: compressionType: type: string + eTag: + type: string s3DataType: type: string s3URI: @@ -89,6 +100,8 @@ spec: type: string imageDigest: type: string + modelDataETag: + type: string modelDataURL: type: string modelInput: @@ -302,6 +315,8 @@ spec: properties: compressionType: type: string + eTag: + type: string s3DataType: type: string s3URI: @@ -321,6 +336,8 @@ spec: type: string imageDigest: type: string + modelDataETag: + type: string modelDataURL: type: string modelInput: @@ -528,6 +545,8 @@ spec: properties: algorithmName: type: string + modelDataETag: + type: string modelDataURL: type: string type: object @@ -654,6 +673,8 @@ spec: type: integer instanceType: type: string + transformAMIVersion: + type: string volumeKMSKeyID: type: string type: object diff --git a/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml index 4222cb12..96b382f5 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml @@ -192,8 +192,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/config/crd/bases/sagemaker.services.k8s.aws_models.yaml b/config/crd/bases/sagemaker.services.k8s.aws_models.yaml index 3805e7a5..eb176457 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_models.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_models.yaml @@ -90,6 +90,10 @@ spec: properties: compressionType: type: string + eTag: + type: string + manifestEtag: + type: string modelAccessConfig: description: |- The access configuration file to control access to the ML model. You can @@ -204,6 +208,10 @@ spec: properties: compressionType: type: string + eTag: + type: string + manifestEtag: + type: string modelAccessConfig: description: |- The access configuration file to control access to the ML model. You can diff --git a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml index 4f468c9e..6f62ac48 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml @@ -109,6 +109,34 @@ spec: type: string type: object type: array + tags: + description: |- + An array of key-value pairs. You can use tags to categorize your Amazon Web + Services resources in different ways, for example, by purpose, owner, or + environment. For more information, see Tagging Amazon Web Services Resources + (https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html). + items: + description: |- + A tag object that consists of a key and an optional value, used to manage + metadata for SageMaker Amazon Web Services resources. + + You can add tags to notebook instances, training jobs, hyperparameter tuning + jobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations, + and endpoints. For more information on adding tags to SageMaker resources, + see AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html). + + For more information on adding metadata to your Amazon Web Services resources + with tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + For advice on best practices for managing Amazon Web Services resources with + tagging, see Tagging Best Practices: Implement an Effective Amazon Web Services + Resource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf). + properties: + key: + type: string + value: + type: string + type: object + type: array required: - notebookInstanceLifecycleConfigName type: object diff --git a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml index 072fb7cf..d396d9d2 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_notebookinstances.yaml @@ -65,7 +65,7 @@ spec: (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or in any other Git repository. These repositories are cloned at the same level as the default repository of your notebook instance. For more information, - see Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + see Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). items: type: string type: array @@ -77,16 +77,16 @@ spec: (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or in any other Git repository. When you open a notebook instance, it opens in the directory that contains this repository. For more information, see - Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). Regex Pattern: `^https://([^/]+)/?(.*)$|^[a-zA-Z0-9](-*[a-zA-Z0-9])*$` type: string directInternetAccess: description: |- - Sets whether SageMaker provides internet access to the notebook instance. + Sets whether SageMaker AI provides internet access to the notebook instance. If you set this to Disabled this notebook instance is able to access resources - only in your VPC, and is not be able to connect to SageMaker training and - endpoint services unless you configure a NAT Gateway in your VPC. + only in your VPC, and is not be able to connect to SageMaker AI training + and endpoint services unless you configure a NAT Gateway in your VPC. For more information, see Notebook Instances Are Internet-Enabled by Default (https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access). @@ -97,11 +97,18 @@ spec: description: The type of ML compute instance to launch for the notebook instance. type: string + ipAddressType: + description: |- + The IP address type for the notebook instance. Specify ipv4 for IPv4-only + connectivity or dualstack for both IPv4 and IPv6 connectivity. When you specify + dualstack, the subnet must support IPv6 CIDR blocks. If not specified, defaults + to ipv4. + type: string kmsKeyID: description: |- The Amazon Resource Name (ARN) of a Amazon Web Services Key Management Service - key that SageMaker uses to encrypt data on the storage volume attached to - your notebook instance. The KMS key you provide must be enabled. For information, + key that SageMaker AI uses to encrypt data on the storage volume attached + to your notebook instance. The KMS key you provide must be enabled. For information, see Enabling and Disabling Keys (https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) in the Amazon Web Services Key Management Service Developer Guide. @@ -125,19 +132,19 @@ spec: description: |- The platform identifier of the notebook instance runtime environment. - Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3)$` + Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3|notebook-al2023-v1)$` type: string roleARN: description: |- When you send any requests to Amazon Web Services resources from the notebook - instance, SageMaker assumes this role to perform tasks on your behalf. You - must grant this role necessary permissions so SageMaker can perform these - tasks. The policy must allow the SageMaker service principal (sagemaker.amazonaws.com) - permissions to assume this role. For more information, see SageMaker Roles + instance, SageMaker AI assumes this role to perform tasks on your behalf. + You must grant this role necessary permissions so SageMaker AI can perform + these tasks. The policy must allow the SageMaker AI service principal (sagemaker.amazonaws.com) + permissions to assume this role. For more information, see SageMaker AI Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). - To be able to pass this role to SageMaker, the caller of this API must have - the iam:PassRole permission. + To be able to pass this role to SageMaker AI, the caller of this API must + have the iam:PassRole permission. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml b/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml index 23028dfe..5f3dbd1c 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_pipelineexecutions.yaml @@ -89,6 +89,10 @@ spec: type: string type: object type: array + pipelineVersionID: + description: The ID of the pipeline version to start execution from. + format: int64 + type: integer selectiveExecutionConfig: description: The selective execution configuration applied to the pipeline run. diff --git a/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml index aacf1f40..945b934b 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_processingjobs.yaml @@ -72,6 +72,12 @@ spec: description: |- The environment variables to set in the Docker container. Up to 100 key and values entries in the map are supported. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any environment fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by security-sensitive + information included in the request environment variable or plain text fields. type: object experimentConfig: description: |- @@ -313,6 +319,12 @@ spec: (Optional) An array of key-value pairs. For more information, see Using Cost Allocation Tags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL) in the Amazon Web Services Billing and Cost Management User Guide. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any tags. As part of the shared responsibility + model, you are responsible for any potential exposure, unauthorized access, + or compromise of your sensitive data if caused by security-sensitive information + included in the request tag variable or plain text fields. items: description: |- A tag object that consists of a key and an optional value, used to manage diff --git a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml index 61aae9b8..680402a9 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_spaces.yaml @@ -95,8 +95,14 @@ spec: type: object defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -114,18 +120,32 @@ spec: items: description: |- A file system, created by you, that you assign to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystem: description: |- A file system, created by you in Amazon EFS, that you assign to a user profile - or space for an Amazon SageMaker Domain. Permitted users can access this - file system in Amazon SageMaker Studio. + or space for an Amazon SageMaker AI Domain. Permitted users can access this + file system in Amazon SageMaker AI Studio. properties: fileSystemID: type: string type: object + fSxLustreFileSystem: + description: A custom file system in Amazon FSx for Lustre. + properties: + fileSystemID: + type: string + type: object + s3FileSystem: + description: |- + A custom file system in Amazon S3. This is only supported in Amazon SageMaker + Unified Studio. + properties: + s3URI: + type: string + type: object type: object type: array jupyterLabAppSettings: @@ -149,7 +169,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -158,8 +178,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -179,7 +205,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -188,8 +214,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -213,8 +245,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -227,8 +259,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -246,6 +284,10 @@ spec: type: string type: array type: object + remoteAccess: + type: string + spaceManagedResources: + type: string spaceStorageSettings: description: The storage settings for a space. properties: diff --git a/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml index 21d6463a..025e2e85 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_trainingjobs.yaml @@ -230,7 +230,14 @@ spec: environment: additionalProperties: type: string - description: The environment variables to set in the Docker container. + description: |- + The environment variables to set in the Docker container. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any environment fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by security-sensitive + information included in the request environment variable or plain text fields. type: object experimentConfig: description: |- @@ -264,9 +271,11 @@ spec: by the Length Constraint. Do not include any security-sensitive information including account access - IDs, secrets or tokens in any hyperparameter field. If the use of security-sensitive - credentials are detected, SageMaker will reject your training job request - and return an exception error. + IDs, secrets, or tokens in any hyperparameter fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by any security-sensitive + information included in the request hyperparameter variable or plain text + fields. type: object infraCheckConfig: description: |- @@ -332,10 +341,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -500,6 +537,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed on + a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -508,6 +565,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: @@ -566,6 +625,12 @@ spec: Services resources in different ways, for example, by purpose, owner, or environment. For more information, see Tagging Amazon Web Services Resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any tags. As part of the shared responsibility + model, you are responsible for any potential exposure, unauthorized access, + or compromise of your sensitive data if caused by any security-sensitive + information included in the request tag variable or plain text fields. items: description: |- A tag object that consists of a key and an optional value, used to manage diff --git a/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml b/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml index 082e604d..000e47aa 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_transformjobs.yaml @@ -238,6 +238,8 @@ spec: type: integer instanceType: type: string + transformAMIVersion: + type: string volumeKMSKeyID: type: string type: object diff --git a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml index 7b79e17b..1a0e0542 100644 --- a/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/config/crd/bases/sagemaker.services.k8s.aws_userprofiles.yaml @@ -113,8 +113,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -136,19 +142,38 @@ spec: items: description: |- The settings for assigning a custom file system to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystemConfig: description: |- The settings for assigning a custom Amazon EFS file system to a user profile - or space for an Amazon SageMaker Domain. + or space for an Amazon SageMaker AI Domain. + properties: + fileSystemID: + type: string + fileSystemPath: + type: string + type: object + fSxLustreFileSystemConfig: + description: |- + The settings for assigning a custom Amazon FSx for Lustre file system to + a user profile or space for an Amazon SageMaker Domain. properties: fileSystemID: type: string fileSystemPath: type: string type: object + s3FileSystemConfig: + description: Configuration for the custom Amazon S3 file + system. + properties: + mountPath: + type: string + s3URI: + type: string + type: object type: object type: array customPosixUserConfig: @@ -172,7 +197,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -182,8 +207,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -196,8 +221,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -221,7 +252,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -230,8 +261,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -255,8 +292,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -269,8 +306,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -304,10 +347,11 @@ spec: type: array sharingSettings: description: |- - Specifies options for sharing Amazon SageMaker Studio notebooks. These settings - are specified as part of DefaultUserSettings when the CreateDomain API is - called, and as part of UserSettings when the CreateUserProfile API is called. - When SharingSettings is not specified, notebook sharing isn't allowed. + Specifies options for sharing Amazon SageMaker AI Studio notebooks. These + settings are specified as part of DefaultUserSettings when the CreateDomain + API is called, and as part of UserSettings when the CreateUserProfile API + is called. When SharingSettings is not specified, notebook sharing isn't + allowed. properties: notebookOutputOption: type: string @@ -339,8 +383,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string diff --git a/generator.yaml b/generator.yaml index 76b34ce6..6a6b5870 100644 --- a/generator.yaml +++ b/generator.yaml @@ -1186,8 +1186,10 @@ ignore: - AppImageConfig - Artifact - Cluster + - ClusterSchedulerConfig - CodeRepository - CompilationJob + - ComputeQuota - Context # - DataQualityJobDefinition - DeviceFleet @@ -1222,8 +1224,10 @@ ignore: # - MonitoringSchedule # - NotebookInstanceLifecycleConfig # - NotebookInstance - # - Pipeline - OptimizationJob + - PartnerAppPresignedUrl + - PartnerApp + # - Pipeline - PresignedDomainUrl - PresignedNotebookInstanceUrl - PresignedMlflowTrackingServerUrl @@ -1232,6 +1236,7 @@ ignore: # - Space - StudioLifecycleConfig # - TrainingJob + - TrainingPlan # - TransformJob - TrialComponent - Trial diff --git a/helm/crds/sagemaker.services.k8s.aws_apps.yaml b/helm/crds/sagemaker.services.k8s.aws_apps.yaml index 92c96058..145c9077 100644 --- a/helm/crds/sagemaker.services.k8s.aws_apps.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_apps.yaml @@ -58,10 +58,14 @@ spec: Regex Pattern: `^d-(-*[a-z0-9]){1,61}$` type: string + recoveryMode: + description: Indicates whether the application is launched in recovery + mode. + type: boolean resourceSpec: description: |- - The instance type and the Amazon Resource Name (ARN) of the SageMaker image - created on the instance. + The instance type and the Amazon Resource Name (ARN) of the SageMaker AI + image created on the instance. The value of InstanceType passed as part of the ResourceSpec in the CreateApp call overrides the value passed as part of the ResourceSpec configured for diff --git a/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml index 51858f5d..3bd84359 100644 --- a/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_dataqualityjobdefinitions.yaml @@ -190,8 +190,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/helm/crds/sagemaker.services.k8s.aws_domains.yaml b/helm/crds/sagemaker.services.k8s.aws_domains.yaml index b7ff02e6..bb52ec65 100644 --- a/helm/crds/sagemaker.services.k8s.aws_domains.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_domains.yaml @@ -15,6 +15,9 @@ spec: scope: Namespaced versions: - additionalPrinterColumns: + - jsonPath: .status.domainID + name: DOMAIN-ID + type: string - jsonPath: .status.domainID name: DOMAIN-ID type: string @@ -51,7 +54,7 @@ spec: Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly. - PublicInternetOnly - Non-EFS traffic is through a VPC managed by Amazon - SageMaker, which allows direct internet access + SageMaker AI, which allows direct internet access - VpcOnly - All traffic is through the specified VPC and subnets type: string @@ -85,8 +88,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -108,19 +117,38 @@ spec: items: description: |- The settings for assigning a custom file system to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystemConfig: description: |- The settings for assigning a custom Amazon EFS file system to a user profile - or space for an Amazon SageMaker Domain. + or space for an Amazon SageMaker AI Domain. + properties: + fileSystemID: + type: string + fileSystemPath: + type: string + type: object + fSxLustreFileSystemConfig: + description: |- + The settings for assigning a custom Amazon FSx for Lustre file system to + a user profile or space for an Amazon SageMaker Domain. properties: fileSystemID: type: string fileSystemPath: type: string type: object + s3FileSystemConfig: + description: Configuration for the custom Amazon S3 file + system. + properties: + mountPath: + type: string + s3URI: + type: string + type: object type: object type: array customPosixUserConfig: @@ -144,7 +172,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -154,8 +182,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -168,8 +196,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -193,7 +227,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -202,8 +236,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -227,8 +267,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -241,8 +281,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -276,10 +322,11 @@ spec: type: array sharingSettings: description: |- - Specifies options for sharing Amazon SageMaker Studio notebooks. These settings - are specified as part of DefaultUserSettings when the CreateDomain API is - called, and as part of UserSettings when the CreateUserProfile API is called. - When SharingSettings is not specified, notebook sharing isn't allowed. + Specifies options for sharing Amazon SageMaker AI Studio notebooks. These + settings are specified as part of DefaultUserSettings when the CreateDomain + API is called, and as part of UserSettings when the CreateUserProfile API + is called. When SharingSettings is not specified, notebook sharing isn't + allowed. properties: notebookOutputOption: type: string @@ -311,8 +358,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -342,11 +395,15 @@ spec: properties: enableDockerAccess: type: string + rootlessDocker: + type: string vpcOnlyTrustedAccounts: items: type: string type: array type: object + ipAddressType: + type: string rStudioServerProDomainSettings: description: |- A collection of settings that configure the RStudioServerPro Domain-level @@ -354,8 +411,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -379,6 +442,37 @@ spec: items: type: string type: array + trustedIdentityPropagationSettings: + description: |- + The Trusted Identity Propagation (TIP) settings for the SageMaker domain. + These settings determine how user identities from IAM Identity Center are + propagated through the domain to TIP enabled Amazon Web Services services. + properties: + status: + type: string + type: object + unifiedStudioSettings: + description: |- + The settings that apply to an Amazon SageMaker AI domain when you use it + in Amazon SageMaker Unified Studio. + properties: + domainAccountID: + type: string + domainID: + type: string + domainRegion: + type: string + environmentID: + type: string + projectID: + type: string + projectS3Path: + type: string + singleSignOnApplicationARN: + type: string + studioWebPortalAccess: + type: string + type: object type: object homeEFSFileSystemKMSKeyID: description: |- @@ -388,14 +482,18 @@ spec: type: string kmsKeyID: description: |- - SageMaker uses Amazon Web Services KMS to encrypt EFS and EBS volumes attached - to the domain with an Amazon Web Services managed key by default. For more - control, specify a customer managed key. + SageMaker AI uses Amazon Web Services KMS to encrypt EFS and EBS volumes + attached to the domain with an Amazon Web Services managed key by default. + For more control, specify a customer managed key. Regex Pattern: `^[a-zA-Z0-9:/_-]*$` type: string subnetIDs: - description: The VPC subnets that the domain uses for communication. + description: |- + The VPC subnets that the domain uses for communication. + + The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + for domains created from Amazon SageMaker Unified Studio. items: type: string type: array @@ -434,14 +532,15 @@ spec: The ID of the Amazon Virtual Private Cloud (VPC) that the domain uses for communication. + The field is optional when the AppNetworkAccessType parameter is set to PublicInternetOnly + for domains created from Amazon SageMaker Unified Studio. + Regex Pattern: `^[-0-9a-zA-Z]+$` type: string required: - authMode - defaultUserSettings - domainName - - subnetIDs - - vpcID type: object status: description: DomainStatus defines the observed state of Domain diff --git a/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml b/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml index d656abcb..8bcb4100 100644 --- a/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_endpointconfigs.yaml @@ -81,14 +81,14 @@ spec: type: object type: object dataCaptureConfig: - description: Configuration to control how SageMaker captures inference + description: Configuration to control how SageMaker AI captures inference data. properties: captureContentTypeHeader: description: |- Configuration specifying how to treat different headers. If no headers are - specified Amazon SageMaker will by default base64 encode when capturing the - data. + specified Amazon SageMaker AI will by default base64 encode when capturing + the data. properties: csvContentTypes: items: @@ -133,11 +133,11 @@ spec: type: string executionRoleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform actions on your behalf. For more information, see SageMaker Roles - (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform actions on your behalf. For more information, see SageMaker + AI Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). - To be able to pass this role to Amazon SageMaker, the caller of this action + To be able to pass this role to Amazon SageMaker AI, the caller of this action must have the iam:PassRole permission. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` @@ -193,6 +193,16 @@ spec: properties: acceleratorType: type: string + capacityReservationConfig: + description: |- + Settings for the capacity reservation for the compute instances that SageMaker + AI reserves for an endpoint. + properties: + capacityReservationPreference: + type: string + mlReservationARN: + type: string + type: object containerStartupHealthCheckTimeoutInSeconds: format: int64 type: integer diff --git a/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml b/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml index 4a4803cc..40f4b005 100644 --- a/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_endpoints.yaml @@ -476,6 +476,41 @@ spec: API and the endpoint status is Updating, you get different desired and current values. properties: + capacityReservationConfig: + description: Details about an ML capacity reservation. + properties: + availableInstanceCount: + format: int64 + type: integer + capacityReservationPreference: + type: string + ec2CapacityReservations: + items: + description: The EC2 capacity reservations that are shared + to an ML capacity reservation. + properties: + availableInstanceCount: + format: int64 + type: integer + ec2CapacityReservationID: + type: string + totalInstanceCount: + format: int64 + type: integer + usedByCurrentEndpoint: + format: int64 + type: integer + type: object + type: array + mlReservationARN: + type: string + totalInstanceCount: + format: int64 + type: integer + usedByCurrentEndpoint: + format: int64 + type: integer + type: object currentInstanceCount: format: int64 type: integer diff --git a/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml index 1e6742bd..489ce046 100644 --- a/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_hyperparametertuningjobs.yaml @@ -442,10 +442,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -553,6 +581,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed + on a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -561,6 +609,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: @@ -848,10 +898,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -959,6 +1037,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed + on a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -967,6 +1065,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: diff --git a/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml index f30442f2..826d8c33 100644 --- a/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_labelingjobs.yaml @@ -393,13 +393,12 @@ spec: - The name can't end with "-metadata". - - If you are using one of the following built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html), - the attribute name must end with "-ref". If the task type you are using - is not listed below, the attribute name must not end with "-ref". Image - semantic segmentation (SemanticSegmentation), and adjustment (AdjustmentSemanticSegmentation) - and verification (VerificationSemanticSegmentation) labeling jobs for - this task type. Video frame object detection (VideoObjectDetection), and - adjustment and verification (AdjustmentVideoObjectDetection) labeling + - If you are using one of the built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) + or one of the following, the attribute name must end with "-ref". Image + semantic segmentation (SemanticSegmentation) and adjustment (AdjustmentSemanticSegmentation) + labeling jobs for this task type. One exception is that verification (VerificationSemanticSegmentation) + must not end with -"ref". Video frame object detection (VideoObjectDetection), + and adjustment and verification (AdjustmentVideoObjectDetection) labeling jobs for this task type. Video frame object tracking (VideoObjectTracking), and adjustment and verification (AdjustmentVideoObjectTracking) labeling jobs for this task type. 3D point cloud semantic segmentation (3DPointCloudSemanticSegmentation), @@ -428,13 +427,9 @@ spec: For named entity recognition jobs, in addition to "labels", you must provide worker instructions in the label category configuration file using the "instructions" - parameter: "instructions": {"shortInstruction":" - Add header - - Add Instructions - ", "fullInstruction":" - Add additional instructions. - "}. For details and an example, see Create a Named Entity Recognition Labeling + parameter: "instructions": {"shortInstruction":"

Add header

Add + Instructions

", "fullInstruction":"

Add additional instructions.

"}. + For details and an example, see Create a Named Entity Recognition Labeling Job (API) (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-named-entity-recg.html#sms-creating-ner-api). For all other built-in task types (https://docs.aws.amazon.com/sagemaker/latest/dg/sms-task-types.html) diff --git a/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml index 85581ad3..91ddd195 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelbiasjobdefinitions.yaml @@ -178,8 +178,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml index fa094e9b..8555bd2c 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelexplainabilityjobdefinitions.yaml @@ -174,8 +174,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml b/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml index 6400cca1..41e53499 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelpackagegroups.yaml @@ -44,7 +44,7 @@ spec: description: |- ModelPackageGroupSpec defines the desired state of ModelPackageGroup. - A group of versioned models in the model registry. + A group of versioned models in the Model Registry. properties: modelPackageGroupDescription: description: |- diff --git a/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml b/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml index 92ccf7bf..be2e0ede 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelpackages.yaml @@ -44,7 +44,16 @@ spec: description: |- ModelPackageSpec defines the desired state of ModelPackage. - A versioned model that can be deployed for SageMaker inference. + A container for your trained model that can be deployed for SageMaker inference. + This can include inference code, artifacts, and metadata. The model package + type can be one of the following. + + - Versioned model: A part of a model package group in Model Registry. + + - Unversioned model: Not part of a model package group and used in Amazon + Web Services Marketplace. + + For more information, see CreateModelPackage (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateModelPackage.html). properties: additionalInferenceSpecifications: description: |- @@ -70,6 +79,8 @@ spec: properties: compressionType: type: string + eTag: + type: string s3DataType: type: string s3URI: @@ -89,6 +100,8 @@ spec: type: string imageDigest: type: string + modelDataETag: + type: string modelDataURL: type: string modelInput: @@ -302,6 +315,8 @@ spec: properties: compressionType: type: string + eTag: + type: string s3DataType: type: string s3URI: @@ -321,6 +336,8 @@ spec: type: string imageDigest: type: string + modelDataETag: + type: string modelDataURL: type: string modelInput: @@ -528,6 +545,8 @@ spec: properties: algorithmName: type: string + modelDataETag: + type: string modelDataURL: type: string type: object @@ -654,6 +673,8 @@ spec: type: integer instanceType: type: string + transformAMIVersion: + type: string volumeKMSKeyID: type: string type: object diff --git a/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml b/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml index 4222cb12..96b382f5 100644 --- a/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_modelqualityjobdefinitions.yaml @@ -192,8 +192,8 @@ spec: type: object roleARN: description: |- - The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker can assume - to perform tasks on your behalf. + The Amazon Resource Name (ARN) of an IAM role that Amazon SageMaker AI can + assume to perform tasks on your behalf. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/helm/crds/sagemaker.services.k8s.aws_models.yaml b/helm/crds/sagemaker.services.k8s.aws_models.yaml index 3805e7a5..eb176457 100644 --- a/helm/crds/sagemaker.services.k8s.aws_models.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_models.yaml @@ -90,6 +90,10 @@ spec: properties: compressionType: type: string + eTag: + type: string + manifestEtag: + type: string modelAccessConfig: description: |- The access configuration file to control access to the ML model. You can @@ -204,6 +208,10 @@ spec: properties: compressionType: type: string + eTag: + type: string + manifestEtag: + type: string modelAccessConfig: description: |- The access configuration file to control access to the ML model. You can diff --git a/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml b/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml index 4f468c9e..6f62ac48 100644 --- a/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_notebookinstancelifecycleconfigs.yaml @@ -109,6 +109,34 @@ spec: type: string type: object type: array + tags: + description: |- + An array of key-value pairs. You can use tags to categorize your Amazon Web + Services resources in different ways, for example, by purpose, owner, or + environment. For more information, see Tagging Amazon Web Services Resources + (https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html). + items: + description: |- + A tag object that consists of a key and an optional value, used to manage + metadata for SageMaker Amazon Web Services resources. + + You can add tags to notebook instances, training jobs, hyperparameter tuning + jobs, batch transform jobs, models, labeling jobs, work teams, endpoint configurations, + and endpoints. For more information on adding tags to SageMaker resources, + see AddTags (https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_AddTags.html). + + For more information on adding metadata to your Amazon Web Services resources + with tagging, see Tagging Amazon Web Services resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + For advice on best practices for managing Amazon Web Services resources with + tagging, see Tagging Best Practices: Implement an Effective Amazon Web Services + Resource Tagging Strategy (https://d1.awsstatic.com/whitepapers/aws-tagging-best-practices.pdf). + properties: + key: + type: string + value: + type: string + type: object + type: array required: - notebookInstanceLifecycleConfigName type: object diff --git a/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml b/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml index 072fb7cf..d396d9d2 100644 --- a/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_notebookinstances.yaml @@ -65,7 +65,7 @@ spec: (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or in any other Git repository. These repositories are cloned at the same level as the default repository of your notebook instance. For more information, - see Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + see Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). items: type: string type: array @@ -77,16 +77,16 @@ spec: (https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) or in any other Git repository. When you open a notebook instance, it opens in the directory that contains this repository. For more information, see - Associating Git Repositories with SageMaker Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). + Associating Git Repositories with SageMaker AI Notebook Instances (https://docs.aws.amazon.com/sagemaker/latest/dg/nbi-git-repo.html). Regex Pattern: `^https://([^/]+)/?(.*)$|^[a-zA-Z0-9](-*[a-zA-Z0-9])*$` type: string directInternetAccess: description: |- - Sets whether SageMaker provides internet access to the notebook instance. + Sets whether SageMaker AI provides internet access to the notebook instance. If you set this to Disabled this notebook instance is able to access resources - only in your VPC, and is not be able to connect to SageMaker training and - endpoint services unless you configure a NAT Gateway in your VPC. + only in your VPC, and is not be able to connect to SageMaker AI training + and endpoint services unless you configure a NAT Gateway in your VPC. For more information, see Notebook Instances Are Internet-Enabled by Default (https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-additional-considerations.html#appendix-notebook-and-internet-access). @@ -97,11 +97,18 @@ spec: description: The type of ML compute instance to launch for the notebook instance. type: string + ipAddressType: + description: |- + The IP address type for the notebook instance. Specify ipv4 for IPv4-only + connectivity or dualstack for both IPv4 and IPv6 connectivity. When you specify + dualstack, the subnet must support IPv6 CIDR blocks. If not specified, defaults + to ipv4. + type: string kmsKeyID: description: |- The Amazon Resource Name (ARN) of a Amazon Web Services Key Management Service - key that SageMaker uses to encrypt data on the storage volume attached to - your notebook instance. The KMS key you provide must be enabled. For information, + key that SageMaker AI uses to encrypt data on the storage volume attached + to your notebook instance. The KMS key you provide must be enabled. For information, see Enabling and Disabling Keys (https://docs.aws.amazon.com/kms/latest/developerguide/enabling-keys.html) in the Amazon Web Services Key Management Service Developer Guide. @@ -125,19 +132,19 @@ spec: description: |- The platform identifier of the notebook instance runtime environment. - Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3)$` + Regex Pattern: `^(notebook-al1-v1|notebook-al2-v1|notebook-al2-v2|notebook-al2-v3|notebook-al2023-v1)$` type: string roleARN: description: |- When you send any requests to Amazon Web Services resources from the notebook - instance, SageMaker assumes this role to perform tasks on your behalf. You - must grant this role necessary permissions so SageMaker can perform these - tasks. The policy must allow the SageMaker service principal (sagemaker.amazonaws.com) - permissions to assume this role. For more information, see SageMaker Roles + instance, SageMaker AI assumes this role to perform tasks on your behalf. + You must grant this role necessary permissions so SageMaker AI can perform + these tasks. The policy must allow the SageMaker AI service principal (sagemaker.amazonaws.com) + permissions to assume this role. For more information, see SageMaker AI Roles (https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html). - To be able to pass this role to SageMaker, the caller of this API must have - the iam:PassRole permission. + To be able to pass this role to SageMaker AI, the caller of this API must + have the iam:PassRole permission. Regex Pattern: `^arn:aws[a-z\-]*:iam::\d{12}:role/?[a-zA-Z_0-9+=,.@\-_/]+$` type: string diff --git a/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml b/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml index 23028dfe..5f3dbd1c 100644 --- a/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_pipelineexecutions.yaml @@ -89,6 +89,10 @@ spec: type: string type: object type: array + pipelineVersionID: + description: The ID of the pipeline version to start execution from. + format: int64 + type: integer selectiveExecutionConfig: description: The selective execution configuration applied to the pipeline run. diff --git a/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml index 1eabfdcb..4f7aa1a6 100644 --- a/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_processingjobs.yaml @@ -72,6 +72,12 @@ spec: description: |- The environment variables to set in the Docker container. Up to 100 key and values entries in the map are supported. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any environment fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by security-sensitive + information included in the request environment variable or plain text fields. type: object experimentConfig: description: |- @@ -313,6 +319,12 @@ spec: (Optional) An array of key-value pairs. For more information, see Using Cost Allocation Tags (https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html#allocation-whatURL) in the Amazon Web Services Billing and Cost Management User Guide. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any tags. As part of the shared responsibility + model, you are responsible for any potential exposure, unauthorized access, + or compromise of your sensitive data if caused by security-sensitive information + included in the request tag variable or plain text fields. items: description: |- A tag object that consists of a key and an optional value, used to manage diff --git a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml index 61aae9b8..680402a9 100644 --- a/helm/crds/sagemaker.services.k8s.aws_spaces.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_spaces.yaml @@ -95,8 +95,14 @@ spec: type: object defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -114,18 +120,32 @@ spec: items: description: |- A file system, created by you, that you assign to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystem: description: |- A file system, created by you in Amazon EFS, that you assign to a user profile - or space for an Amazon SageMaker Domain. Permitted users can access this - file system in Amazon SageMaker Studio. + or space for an Amazon SageMaker AI Domain. Permitted users can access this + file system in Amazon SageMaker AI Studio. properties: fileSystemID: type: string type: object + fSxLustreFileSystem: + description: A custom file system in Amazon FSx for Lustre. + properties: + fileSystemID: + type: string + type: object + s3FileSystem: + description: |- + A custom file system in Amazon S3. This is only supported in Amazon SageMaker + Unified Studio. + properties: + s3URI: + type: string + type: object type: object type: array jupyterLabAppSettings: @@ -149,7 +169,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -158,8 +178,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -179,7 +205,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -188,8 +214,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -213,8 +245,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -227,8 +259,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -246,6 +284,10 @@ spec: type: string type: array type: object + remoteAccess: + type: string + spaceManagedResources: + type: string spaceStorageSettings: description: The storage settings for a space. properties: diff --git a/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml index 832cbcc6..3769224c 100644 --- a/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_trainingjobs.yaml @@ -230,7 +230,14 @@ spec: environment: additionalProperties: type: string - description: The environment variables to set in the Docker container. + description: |- + The environment variables to set in the Docker container. + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any environment fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by security-sensitive + information included in the request environment variable or plain text fields. type: object experimentConfig: description: |- @@ -264,9 +271,11 @@ spec: by the Length Constraint. Do not include any security-sensitive information including account access - IDs, secrets or tokens in any hyperparameter field. If the use of security-sensitive - credentials are detected, SageMaker will reject your training job request - and return an exception error. + IDs, secrets, or tokens in any hyperparameter fields. As part of the shared + responsibility model, you are responsible for any potential exposure, unauthorized + access, or compromise of your sensitive data if caused by any security-sensitive + information included in the request hyperparameter variable or plain text + fields. type: object infraCheckConfig: description: |- @@ -332,10 +341,38 @@ spec: items: type: string type: array + hubAccessConfig: + description: |- + The configuration for a private hub model reference that points to a public + SageMaker JumpStart model. + + For more information about private hubs, see Private curated hubs for foundation + model access control in JumpStart (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-curated-hubs.html). + properties: + hubContentARN: + type: string + type: object instanceGroupNames: items: type: string type: array + modelAccessConfig: + description: |- + The access configuration file to control access to the ML model. You can + explicitly accept the model end-user license agreement (EULA) within the + ModelAccessConfig. + + * If you are a Jumpstart user, see the End-user license agreements (https://docs.aws.amazon.com/sagemaker/latest/dg/jumpstart-foundation-models-choose.html#jumpstart-foundation-models-choose-eula) + section for more details on accepting the EULA. + + * If you are an AutoML user, see the Optional Parameters section of Create + an AutoML job to fine-tune text generation models using the API for details + on How to set the EULA acceptance when fine-tuning a model using the AutoML + API (https://docs.aws.amazon.com/sagemaker/latest/dg/autopilot-create-experiment-finetune-llms.html#autopilot-llms-finetuning-api-optional-params). + properties: + acceptEula: + type: boolean + type: object s3DataDistributionType: type: string s3DataType: @@ -500,6 +537,26 @@ spec: type: string type: object type: array + instancePlacementConfig: + description: |- + Configuration for how instances are placed and allocated within UltraServers. + This is only applicable for UltraServer capacity. + properties: + enableMultipleJobs: + type: boolean + placementSpecifications: + items: + description: Specifies how instances should be placed on + a specific UltraServer. + properties: + instanceCount: + format: int64 + type: integer + ultraServerID: + type: string + type: object + type: array + type: object instanceType: type: string keepAlivePeriodInSeconds: @@ -508,6 +565,8 @@ spec: is kept alive after the job is finished. format: int64 type: integer + trainingPlanARN: + type: string volumeKMSKeyID: type: string volumeSizeInGB: @@ -566,6 +625,12 @@ spec: Services resources in different ways, for example, by purpose, owner, or environment. For more information, see Tagging Amazon Web Services Resources (https://docs.aws.amazon.com/general/latest/gr/aws_tagging.html). + + Do not include any security-sensitive information including account access + IDs, secrets, or tokens in any tags. As part of the shared responsibility + model, you are responsible for any potential exposure, unauthorized access, + or compromise of your sensitive data if caused by any security-sensitive + information included in the request tag variable or plain text fields. items: description: |- A tag object that consists of a key and an optional value, used to manage diff --git a/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml b/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml index 045cc11a..df383cf6 100644 --- a/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_transformjobs.yaml @@ -238,6 +238,8 @@ spec: type: integer instanceType: type: string + transformAMIVersion: + type: string volumeKMSKeyID: type: string type: object diff --git a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml index 7b79e17b..1a0e0542 100644 --- a/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml +++ b/helm/crds/sagemaker.services.k8s.aws_userprofiles.yaml @@ -113,8 +113,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -136,19 +142,38 @@ spec: items: description: |- The settings for assigning a custom file system to a user profile or space - for an Amazon SageMaker Domain. Permitted users can access this file system - in Amazon SageMaker Studio. + for an Amazon SageMaker AI Domain. Permitted users can access this file system + in Amazon SageMaker AI Studio. properties: efsFileSystemConfig: description: |- The settings for assigning a custom Amazon EFS file system to a user profile - or space for an Amazon SageMaker Domain. + or space for an Amazon SageMaker AI Domain. + properties: + fileSystemID: + type: string + fileSystemPath: + type: string + type: object + fSxLustreFileSystemConfig: + description: |- + The settings for assigning a custom Amazon FSx for Lustre file system to + a user profile or space for an Amazon SageMaker Domain. properties: fileSystemID: type: string fileSystemPath: type: string type: object + s3FileSystemConfig: + description: Configuration for the custom Amazon S3 file + system. + properties: + mountPath: + type: string + s3URI: + type: string + type: object type: object type: array customPosixUserConfig: @@ -172,7 +197,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -182,8 +207,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -196,8 +221,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -221,7 +252,7 @@ spec: codeRepositories: items: description: |- - A Git repository that SageMaker automatically displays to users for cloning + A Git repository that SageMaker AI automatically displays to users for cloning in the JupyterServer application. properties: repositoryURL: @@ -230,8 +261,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -255,8 +292,8 @@ spec: customImages: items: description: |- - A custom SageMaker image. For more information, see Bring your own SageMaker - image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). + A custom SageMaker AI image. For more information, see Bring your own SageMaker + AI image (https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html). properties: appImageConfigName: type: string @@ -269,8 +306,14 @@ spec: type: array defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string @@ -304,10 +347,11 @@ spec: type: array sharingSettings: description: |- - Specifies options for sharing Amazon SageMaker Studio notebooks. These settings - are specified as part of DefaultUserSettings when the CreateDomain API is - called, and as part of UserSettings when the CreateUserProfile API is called. - When SharingSettings is not specified, notebook sharing isn't allowed. + Specifies options for sharing Amazon SageMaker AI Studio notebooks. These + settings are specified as part of DefaultUserSettings when the CreateDomain + API is called, and as part of UserSettings when the CreateUserProfile API + is called. When SharingSettings is not specified, notebook sharing isn't + allowed. properties: notebookOutputOption: type: string @@ -339,8 +383,14 @@ spec: properties: defaultResourceSpec: description: |- - Specifies the ARN's of a SageMaker image and SageMaker image version, and - the instance type that the version runs on. + Specifies the ARN's of a SageMaker AI image and SageMaker AI image version, + and the instance type that the version runs on. + + When both SageMakerImageVersionArn and SageMakerImageArn are passed, SageMakerImageVersionArn + is used. Any updates to SageMakerImageArn will not take effect if SageMakerImageVersionArn + already exists in the ResourceSpec because SageMakerImageVersionArn always + takes precedence. To clear the value set for SageMakerImageVersionArn, pass + None as the value. properties: instanceType: type: string diff --git a/pkg/resource/app/delta.go b/pkg/resource/app/delta.go index e199991c..242aa9cc 100644 --- a/pkg/resource/app/delta.go +++ b/pkg/resource/app/delta.go @@ -64,6 +64,13 @@ func newResourceDelta( delta.Add("Spec.DomainID", a.ko.Spec.DomainID, b.ko.Spec.DomainID) } } + if ackcompare.HasNilDifference(a.ko.Spec.RecoveryMode, b.ko.Spec.RecoveryMode) { + delta.Add("Spec.RecoveryMode", a.ko.Spec.RecoveryMode, b.ko.Spec.RecoveryMode) + } else if a.ko.Spec.RecoveryMode != nil && b.ko.Spec.RecoveryMode != nil { + if *a.ko.Spec.RecoveryMode != *b.ko.Spec.RecoveryMode { + delta.Add("Spec.RecoveryMode", a.ko.Spec.RecoveryMode, b.ko.Spec.RecoveryMode) + } + } if ackcompare.HasNilDifference(a.ko.Spec.ResourceSpec, b.ko.Spec.ResourceSpec) { delta.Add("Spec.ResourceSpec", a.ko.Spec.ResourceSpec, b.ko.Spec.ResourceSpec) } else if a.ko.Spec.ResourceSpec != nil && b.ko.Spec.ResourceSpec != nil { diff --git a/pkg/resource/app/sdk.go b/pkg/resource/app/sdk.go index 496daa28..575385c6 100644 --- a/pkg/resource/app/sdk.go +++ b/pkg/resource/app/sdk.go @@ -112,24 +112,29 @@ func (rm *resourceManager) sdkFind( } else { ko.Spec.DomainID = nil } + if resp.RecoveryMode != nil { + ko.Spec.RecoveryMode = resp.RecoveryMode + } else { + ko.Spec.RecoveryMode = nil + } if resp.ResourceSpec != nil { - f9 := &svcapitypes.ResourceSpec{} + f11 := &svcapitypes.ResourceSpec{} if resp.ResourceSpec.InstanceType != "" { - f9.InstanceType = aws.String(string(resp.ResourceSpec.InstanceType)) + f11.InstanceType = aws.String(string(resp.ResourceSpec.InstanceType)) } if resp.ResourceSpec.LifecycleConfigArn != nil { - f9.LifecycleConfigARN = resp.ResourceSpec.LifecycleConfigArn + f11.LifecycleConfigARN = resp.ResourceSpec.LifecycleConfigArn } if resp.ResourceSpec.SageMakerImageArn != nil { - f9.SageMakerImageARN = resp.ResourceSpec.SageMakerImageArn + f11.SageMakerImageARN = resp.ResourceSpec.SageMakerImageArn } if resp.ResourceSpec.SageMakerImageVersionAlias != nil { - f9.SageMakerImageVersionAlias = resp.ResourceSpec.SageMakerImageVersionAlias + f11.SageMakerImageVersionAlias = resp.ResourceSpec.SageMakerImageVersionAlias } if resp.ResourceSpec.SageMakerImageVersionArn != nil { - f9.SageMakerImageVersionARN = resp.ResourceSpec.SageMakerImageVersionArn + f11.SageMakerImageVersionARN = resp.ResourceSpec.SageMakerImageVersionArn } - ko.Spec.ResourceSpec = f9 + ko.Spec.ResourceSpec = f11 } else { ko.Spec.ResourceSpec = nil } @@ -247,41 +252,44 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.DomainID != nil { res.DomainId = r.ko.Spec.DomainID } + if r.ko.Spec.RecoveryMode != nil { + res.RecoveryMode = r.ko.Spec.RecoveryMode + } if r.ko.Spec.ResourceSpec != nil { - f3 := &svcsdktypes.ResourceSpec{} + f4 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.ResourceSpec.InstanceType != nil { - f3.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.ResourceSpec.InstanceType) + f4.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.ResourceSpec.InstanceType) } if r.ko.Spec.ResourceSpec.LifecycleConfigARN != nil { - f3.LifecycleConfigArn = r.ko.Spec.ResourceSpec.LifecycleConfigARN + f4.LifecycleConfigArn = r.ko.Spec.ResourceSpec.LifecycleConfigARN } if r.ko.Spec.ResourceSpec.SageMakerImageARN != nil { - f3.SageMakerImageArn = r.ko.Spec.ResourceSpec.SageMakerImageARN + f4.SageMakerImageArn = r.ko.Spec.ResourceSpec.SageMakerImageARN } if r.ko.Spec.ResourceSpec.SageMakerImageVersionAlias != nil { - f3.SageMakerImageVersionAlias = r.ko.Spec.ResourceSpec.SageMakerImageVersionAlias + f4.SageMakerImageVersionAlias = r.ko.Spec.ResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.ResourceSpec.SageMakerImageVersionARN != nil { - f3.SageMakerImageVersionArn = r.ko.Spec.ResourceSpec.SageMakerImageVersionARN + f4.SageMakerImageVersionArn = r.ko.Spec.ResourceSpec.SageMakerImageVersionARN } - res.ResourceSpec = f3 + res.ResourceSpec = f4 } if r.ko.Spec.SpaceName != nil { res.SpaceName = r.ko.Spec.SpaceName } if r.ko.Spec.Tags != nil { - f5 := []svcsdktypes.Tag{} - for _, f5iter := range r.ko.Spec.Tags { - f5elem := &svcsdktypes.Tag{} - if f5iter.Key != nil { - f5elem.Key = f5iter.Key + f6 := []svcsdktypes.Tag{} + for _, f6iter := range r.ko.Spec.Tags { + f6elem := &svcsdktypes.Tag{} + if f6iter.Key != nil { + f6elem.Key = f6iter.Key } - if f5iter.Value != nil { - f5elem.Value = f5iter.Value + if f6iter.Value != nil { + f6elem.Value = f6iter.Value } - f5 = append(f5, *f5elem) + f6 = append(f6, *f6elem) } - res.Tags = f5 + res.Tags = f6 } if r.ko.Spec.UserProfileName != nil { res.UserProfileName = r.ko.Spec.UserProfileName diff --git a/pkg/resource/domain/delta.go b/pkg/resource/domain/delta.go index 31910116..e3a36d96 100644 --- a/pkg/resource/domain/delta.go +++ b/pkg/resource/domain/delta.go @@ -477,6 +477,13 @@ func newResourceDelta( delta.Add("Spec.DomainSettings.DockerSettings.EnableDockerAccess", a.ko.Spec.DomainSettings.DockerSettings.EnableDockerAccess, b.ko.Spec.DomainSettings.DockerSettings.EnableDockerAccess) } } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.DockerSettings.RootlessDocker, b.ko.Spec.DomainSettings.DockerSettings.RootlessDocker) { + delta.Add("Spec.DomainSettings.DockerSettings.RootlessDocker", a.ko.Spec.DomainSettings.DockerSettings.RootlessDocker, b.ko.Spec.DomainSettings.DockerSettings.RootlessDocker) + } else if a.ko.Spec.DomainSettings.DockerSettings.RootlessDocker != nil && b.ko.Spec.DomainSettings.DockerSettings.RootlessDocker != nil { + if *a.ko.Spec.DomainSettings.DockerSettings.RootlessDocker != *b.ko.Spec.DomainSettings.DockerSettings.RootlessDocker { + delta.Add("Spec.DomainSettings.DockerSettings.RootlessDocker", a.ko.Spec.DomainSettings.DockerSettings.RootlessDocker, b.ko.Spec.DomainSettings.DockerSettings.RootlessDocker) + } + } if len(a.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts) != len(b.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts) { delta.Add("Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts", a.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts, b.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts) } else if len(a.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts) > 0 { @@ -485,6 +492,13 @@ func newResourceDelta( } } } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.IPAddressType, b.ko.Spec.DomainSettings.IPAddressType) { + delta.Add("Spec.DomainSettings.IPAddressType", a.ko.Spec.DomainSettings.IPAddressType, b.ko.Spec.DomainSettings.IPAddressType) + } else if a.ko.Spec.DomainSettings.IPAddressType != nil && b.ko.Spec.DomainSettings.IPAddressType != nil { + if *a.ko.Spec.DomainSettings.IPAddressType != *b.ko.Spec.DomainSettings.IPAddressType { + delta.Add("Spec.DomainSettings.IPAddressType", a.ko.Spec.DomainSettings.IPAddressType, b.ko.Spec.DomainSettings.IPAddressType) + } + } if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.RStudioServerProDomainSettings, b.ko.Spec.DomainSettings.RStudioServerProDomainSettings) { delta.Add("Spec.DomainSettings.RStudioServerProDomainSettings", a.ko.Spec.DomainSettings.RStudioServerProDomainSettings, b.ko.Spec.DomainSettings.RStudioServerProDomainSettings) } else if a.ko.Spec.DomainSettings.RStudioServerProDomainSettings != nil && b.ko.Spec.DomainSettings.RStudioServerProDomainSettings != nil { @@ -556,6 +570,77 @@ func newResourceDelta( delta.Add("Spec.DomainSettings.SecurityGroupIDs", a.ko.Spec.DomainSettings.SecurityGroupIDs, b.ko.Spec.DomainSettings.SecurityGroupIDs) } } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings, b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings) { + delta.Add("Spec.DomainSettings.TrustedIdentityPropagationSettings", a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings, b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings) + } else if a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings != nil && b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status, b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status) { + delta.Add("Spec.DomainSettings.TrustedIdentityPropagationSettings.Status", a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status, b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status) + } else if a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status != nil && b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status != nil { + if *a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status != *b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status { + delta.Add("Spec.DomainSettings.TrustedIdentityPropagationSettings.Status", a.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status, b.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status) + } + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings, b.ko.Spec.DomainSettings.UnifiedStudioSettings) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings", a.ko.Spec.DomainSettings.UnifiedStudioSettings, b.ko.Spec.DomainSettings.UnifiedStudioSettings) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings != nil { + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainRegion", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.DomainRegion", a.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion, b.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.ProjectID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.ProjectID", a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path", a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path", a.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path, b.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN, b.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN", a.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN, b.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN", a.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN, b.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess, b.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess) { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess", a.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess, b.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess) + } else if a.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess != nil && b.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess != nil { + if *a.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess != *b.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess { + delta.Add("Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess", a.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess, b.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess) + } + } + } } if ackcompare.HasNilDifference(a.ko.Spec.HomeEFSFileSystemKMSKeyID, b.ko.Spec.HomeEFSFileSystemKMSKeyID) { delta.Add("Spec.HomeEFSFileSystemKMSKeyID", a.ko.Spec.HomeEFSFileSystemKMSKeyID, b.ko.Spec.HomeEFSFileSystemKMSKeyID) diff --git a/pkg/resource/domain/sdk.go b/pkg/resource/domain/sdk.go index d4a980b9..8c5f357c 100644 --- a/pkg/resource/domain/sdk.go +++ b/pkg/resource/domain/sdk.go @@ -151,6 +151,30 @@ func (rm *resourceManager) sdkFind( } f4f1elem.EFSFileSystemConfig = f4f1elemf0f0 } + case *svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig: + f4f1elemf1 := f4f1iter.(*svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig) + if f4f1elemf1 != nil { + f4f1elemf1f1 := &svcapitypes.FSxLustreFileSystemConfig{} + if f4f1elemf1.Value.FileSystemId != nil { + f4f1elemf1f1.FileSystemID = f4f1elemf1.Value.FileSystemId + } + if f4f1elemf1.Value.FileSystemPath != nil { + f4f1elemf1f1.FileSystemPath = f4f1elemf1.Value.FileSystemPath + } + f4f1elem.FSxLustreFileSystemConfig = f4f1elemf1f1 + } + case *svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig: + f4f1elemf2 := f4f1iter.(*svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig) + if f4f1elemf2 != nil { + f4f1elemf2f2 := &svcapitypes.S3FileSystemConfig{} + if f4f1elemf2.Value.MountPath != nil { + f4f1elemf2f2.MountPath = f4f1elemf2.Value.MountPath + } + if f4f1elemf2.Value.S3Uri != nil { + f4f1elemf2f2.S3URI = f4f1elemf2.Value.S3Uri + } + f4f1elem.S3FileSystemConfig = f4f1elemf2f2 + } } f4f1 = append(f4f1, f4f1elem) } @@ -404,46 +428,87 @@ func (rm *resourceManager) sdkFind( if resp.DomainSettings.DockerSettings.EnableDockerAccess != "" { f8f0.EnableDockerAccess = aws.String(string(resp.DomainSettings.DockerSettings.EnableDockerAccess)) } + if resp.DomainSettings.DockerSettings.RootlessDocker != "" { + f8f0.RootlessDocker = aws.String(string(resp.DomainSettings.DockerSettings.RootlessDocker)) + } if resp.DomainSettings.DockerSettings.VpcOnlyTrustedAccounts != nil { f8f0.VPCOnlyTrustedAccounts = aws.StringSlice(resp.DomainSettings.DockerSettings.VpcOnlyTrustedAccounts) } f8.DockerSettings = f8f0 } + if resp.DomainSettings.IpAddressType != "" { + f8.IPAddressType = aws.String(string(resp.DomainSettings.IpAddressType)) + } if resp.DomainSettings.RStudioServerProDomainSettings != nil { - f8f1 := &svcapitypes.RStudioServerProDomainSettings{} + f8f2 := &svcapitypes.RStudioServerProDomainSettings{} if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec != nil { - f8f1f0 := &svcapitypes.ResourceSpec{} + f8f2f0 := &svcapitypes.ResourceSpec{} if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType != "" { - f8f1f0.InstanceType = aws.String(string(resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType)) + f8f2f0.InstanceType = aws.String(string(resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType)) } if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigArn != nil { - f8f1f0.LifecycleConfigARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigArn + f8f2f0.LifecycleConfigARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigArn } if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageArn != nil { - f8f1f0.SageMakerImageARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageArn + f8f2f0.SageMakerImageARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageArn } if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f8f1f0.SageMakerImageVersionAlias = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f8f2f0.SageMakerImageVersionAlias = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionArn != nil { - f8f1f0.SageMakerImageVersionARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionArn + f8f2f0.SageMakerImageVersionARN = resp.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionArn } - f8f1.DefaultResourceSpec = f8f1f0 + f8f2.DefaultResourceSpec = f8f2f0 } if resp.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn != nil { - f8f1.DomainExecutionRoleARN = resp.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn + f8f2.DomainExecutionRoleARN = resp.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn } if resp.DomainSettings.RStudioServerProDomainSettings.RStudioConnectUrl != nil { - f8f1.RStudioConnectURL = resp.DomainSettings.RStudioServerProDomainSettings.RStudioConnectUrl + f8f2.RStudioConnectURL = resp.DomainSettings.RStudioServerProDomainSettings.RStudioConnectUrl } if resp.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerUrl != nil { - f8f1.RStudioPackageManagerURL = resp.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerUrl + f8f2.RStudioPackageManagerURL = resp.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerUrl } - f8.RStudioServerProDomainSettings = f8f1 + f8.RStudioServerProDomainSettings = f8f2 } if resp.DomainSettings.SecurityGroupIds != nil { f8.SecurityGroupIDs = aws.StringSlice(resp.DomainSettings.SecurityGroupIds) } + if resp.DomainSettings.TrustedIdentityPropagationSettings != nil { + f8f4 := &svcapitypes.TrustedIdentityPropagationSettings{} + if resp.DomainSettings.TrustedIdentityPropagationSettings.Status != "" { + f8f4.Status = aws.String(string(resp.DomainSettings.TrustedIdentityPropagationSettings.Status)) + } + f8.TrustedIdentityPropagationSettings = f8f4 + } + if resp.DomainSettings.UnifiedStudioSettings != nil { + f8f5 := &svcapitypes.UnifiedStudioSettings{} + if resp.DomainSettings.UnifiedStudioSettings.DomainAccountId != nil { + f8f5.DomainAccountID = resp.DomainSettings.UnifiedStudioSettings.DomainAccountId + } + if resp.DomainSettings.UnifiedStudioSettings.DomainId != nil { + f8f5.DomainID = resp.DomainSettings.UnifiedStudioSettings.DomainId + } + if resp.DomainSettings.UnifiedStudioSettings.DomainRegion != nil { + f8f5.DomainRegion = resp.DomainSettings.UnifiedStudioSettings.DomainRegion + } + if resp.DomainSettings.UnifiedStudioSettings.EnvironmentId != nil { + f8f5.EnvironmentID = resp.DomainSettings.UnifiedStudioSettings.EnvironmentId + } + if resp.DomainSettings.UnifiedStudioSettings.ProjectId != nil { + f8f5.ProjectID = resp.DomainSettings.UnifiedStudioSettings.ProjectId + } + if resp.DomainSettings.UnifiedStudioSettings.ProjectS3Path != nil { + f8f5.ProjectS3Path = resp.DomainSettings.UnifiedStudioSettings.ProjectS3Path + } + if resp.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationArn != nil { + f8f5.SingleSignOnApplicationARN = resp.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationArn + } + if resp.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess != "" { + f8f5.StudioWebPortalAccess = aws.String(string(resp.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess)) + } + f8.UnifiedStudioSettings = f8f5 + } ko.Spec.DomainSettings = f8 } else { ko.Spec.DomainSettings = nil @@ -543,6 +608,11 @@ func (rm *resourceManager) sdkCreate( arn := ackv1alpha1.AWSResourceName(*resp.DomainArn) ko.Status.ACKResourceMetadata.ARN = &arn } + if resp.DomainId != nil { + ko.Status.DomainID = resp.DomainId + } else { + ko.Status.DomainID = nil + } if resp.Url != nil { ko.Status.URL = resp.Url } else { @@ -622,6 +692,34 @@ func (rm *resourceManager) newCreateRequestPayload( } f3f1elemf0Parent.Value = *f3f1elemf0 } + if f3f1iter.FSxLustreFileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystemConfig")) + } + f3f1elemf1Parent := &svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig{} + f3f1elemf1 := &svcsdktypes.FSxLustreFileSystemConfig{} + if f3f1iter.FSxLustreFileSystemConfig.FileSystemID != nil { + f3f1elemf1.FileSystemId = f3f1iter.FSxLustreFileSystemConfig.FileSystemID + } + if f3f1iter.FSxLustreFileSystemConfig.FileSystemPath != nil { + f3f1elemf1.FileSystemPath = f3f1iter.FSxLustreFileSystemConfig.FileSystemPath + } + f3f1elemf1Parent.Value = *f3f1elemf1 + } + if f3f1iter.S3FileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystemConfig")) + } + f3f1elemf2Parent := &svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig{} + f3f1elemf2 := &svcsdktypes.S3FileSystemConfig{} + if f3f1iter.S3FileSystemConfig.MountPath != nil { + f3f1elemf2.MountPath = f3f1iter.S3FileSystemConfig.MountPath + } + if f3f1iter.S3FileSystemConfig.S3URI != nil { + f3f1elemf2.S3Uri = f3f1iter.S3FileSystemConfig.S3URI + } + f3f1elemf2Parent.Value = *f3f1elemf2 + } f3f1 = append(f3f1, f3f1elem) } f3.CustomFileSystemConfigs = f3f1 @@ -874,46 +972,87 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.DomainSettings.DockerSettings.EnableDockerAccess != nil { f5f0.EnableDockerAccess = svcsdktypes.FeatureStatus(*r.ko.Spec.DomainSettings.DockerSettings.EnableDockerAccess) } + if r.ko.Spec.DomainSettings.DockerSettings.RootlessDocker != nil { + f5f0.RootlessDocker = svcsdktypes.FeatureStatus(*r.ko.Spec.DomainSettings.DockerSettings.RootlessDocker) + } if r.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts != nil { f5f0.VpcOnlyTrustedAccounts = aws.ToStringSlice(r.ko.Spec.DomainSettings.DockerSettings.VPCOnlyTrustedAccounts) } f5.DockerSettings = f5f0 } + if r.ko.Spec.DomainSettings.IPAddressType != nil { + f5.IpAddressType = svcsdktypes.IPAddressType(*r.ko.Spec.DomainSettings.IPAddressType) + } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings != nil { - f5f1 := &svcsdktypes.RStudioServerProDomainSettings{} + f5f2 := &svcsdktypes.RStudioServerProDomainSettings{} if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec != nil { - f5f1f0 := &svcsdktypes.ResourceSpec{} + f5f2f0 := &svcsdktypes.ResourceSpec{} if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType != nil { - f5f1f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType) + f5f2f0.InstanceType = svcsdktypes.AppInstanceType(*r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.InstanceType) } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigARN != nil { - f5f1f0.LifecycleConfigArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigARN + f5f2f0.LifecycleConfigArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.LifecycleConfigARN } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageARN != nil { - f5f1f0.SageMakerImageArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageARN + f5f2f0.SageMakerImageArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageARN } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias != nil { - f5f1f0.SageMakerImageVersionAlias = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias + f5f2f0.SageMakerImageVersionAlias = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionAlias } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionARN != nil { - f5f1f0.SageMakerImageVersionArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionARN + f5f2f0.SageMakerImageVersionArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DefaultResourceSpec.SageMakerImageVersionARN } - f5f1.DefaultResourceSpec = f5f1f0 + f5f2.DefaultResourceSpec = f5f2f0 } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleARN != nil { - f5f1.DomainExecutionRoleArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleARN + f5f2.DomainExecutionRoleArn = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleARN } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioConnectURL != nil { - f5f1.RStudioConnectUrl = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioConnectURL + f5f2.RStudioConnectUrl = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioConnectURL } if r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerURL != nil { - f5f1.RStudioPackageManagerUrl = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerURL + f5f2.RStudioPackageManagerUrl = r.ko.Spec.DomainSettings.RStudioServerProDomainSettings.RStudioPackageManagerURL } - f5.RStudioServerProDomainSettings = f5f1 + f5.RStudioServerProDomainSettings = f5f2 } if r.ko.Spec.DomainSettings.SecurityGroupIDs != nil { f5.SecurityGroupIds = aws.ToStringSlice(r.ko.Spec.DomainSettings.SecurityGroupIDs) } + if r.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings != nil { + f5f4 := &svcsdktypes.TrustedIdentityPropagationSettings{} + if r.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status != nil { + f5f4.Status = svcsdktypes.FeatureStatus(*r.ko.Spec.DomainSettings.TrustedIdentityPropagationSettings.Status) + } + f5.TrustedIdentityPropagationSettings = f5f4 + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings != nil { + f5f5 := &svcsdktypes.UnifiedStudioSettings{} + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID != nil { + f5f5.DomainAccountId = r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainAccountID + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID != nil { + f5f5.DomainId = r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainID + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion != nil { + f5f5.DomainRegion = r.ko.Spec.DomainSettings.UnifiedStudioSettings.DomainRegion + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID != nil { + f5f5.EnvironmentId = r.ko.Spec.DomainSettings.UnifiedStudioSettings.EnvironmentID + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID != nil { + f5f5.ProjectId = r.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectID + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path != nil { + f5f5.ProjectS3Path = r.ko.Spec.DomainSettings.UnifiedStudioSettings.ProjectS3Path + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN != nil { + f5f5.SingleSignOnApplicationArn = r.ko.Spec.DomainSettings.UnifiedStudioSettings.SingleSignOnApplicationARN + } + if r.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess != nil { + f5f5.StudioWebPortalAccess = svcsdktypes.FeatureStatus(*r.ko.Spec.DomainSettings.UnifiedStudioSettings.StudioWebPortalAccess) + } + f5.UnifiedStudioSettings = f5f5 + } res.DomainSettings = f5 } if r.ko.Spec.HomeEFSFileSystemKMSKeyID != nil { @@ -1052,6 +1191,34 @@ func (rm *resourceManager) newUpdateRequestPayload( } f2f1elemf0Parent.Value = *f2f1elemf0 } + if f2f1iter.FSxLustreFileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystemConfig")) + } + f2f1elemf1Parent := &svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig{} + f2f1elemf1 := &svcsdktypes.FSxLustreFileSystemConfig{} + if f2f1iter.FSxLustreFileSystemConfig.FileSystemID != nil { + f2f1elemf1.FileSystemId = f2f1iter.FSxLustreFileSystemConfig.FileSystemID + } + if f2f1iter.FSxLustreFileSystemConfig.FileSystemPath != nil { + f2f1elemf1.FileSystemPath = f2f1iter.FSxLustreFileSystemConfig.FileSystemPath + } + f2f1elemf1Parent.Value = *f2f1elemf1 + } + if f2f1iter.S3FileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystemConfig")) + } + f2f1elemf2Parent := &svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig{} + f2f1elemf2 := &svcsdktypes.S3FileSystemConfig{} + if f2f1iter.S3FileSystemConfig.MountPath != nil { + f2f1elemf2.MountPath = f2f1iter.S3FileSystemConfig.MountPath + } + if f2f1iter.S3FileSystemConfig.S3URI != nil { + f2f1elemf2.S3Uri = f2f1iter.S3FileSystemConfig.S3URI + } + f2f1elemf2Parent.Value = *f2f1elemf2 + } f2f1 = append(f2f1, f2f1elem) } f2.CustomFileSystemConfigs = f2f1 diff --git a/pkg/resource/endpoint/sdk.go b/pkg/resource/endpoint/sdk.go index 17640bb5..25ec556d 100644 --- a/pkg/resource/endpoint/sdk.go +++ b/pkg/resource/endpoint/sdk.go @@ -365,112 +365,157 @@ func (rm *resourceManager) sdkFind( f11 := []*svcapitypes.ProductionVariantSummary{} for _, f11iter := range resp.ProductionVariants { f11elem := &svcapitypes.ProductionVariantSummary{} + if f11iter.CapacityReservationConfig != nil { + f11elemf0 := &svcapitypes.ProductionVariantCapacityReservationSummary{} + if f11iter.CapacityReservationConfig.AvailableInstanceCount != nil { + availableInstanceCountCopy := int64(*f11iter.CapacityReservationConfig.AvailableInstanceCount) + f11elemf0.AvailableInstanceCount = &availableInstanceCountCopy + } + if f11iter.CapacityReservationConfig.CapacityReservationPreference != "" { + f11elemf0.CapacityReservationPreference = aws.String(string(f11iter.CapacityReservationConfig.CapacityReservationPreference)) + } + if f11iter.CapacityReservationConfig.Ec2CapacityReservations != nil { + f11elemf0f2 := []*svcapitypes.EC2CapacityReservation{} + for _, f11elemf0f2iter := range f11iter.CapacityReservationConfig.Ec2CapacityReservations { + f11elemf0f2elem := &svcapitypes.EC2CapacityReservation{} + if f11elemf0f2iter.AvailableInstanceCount != nil { + availableInstanceCountCopy := int64(*f11elemf0f2iter.AvailableInstanceCount) + f11elemf0f2elem.AvailableInstanceCount = &availableInstanceCountCopy + } + if f11elemf0f2iter.Ec2CapacityReservationId != nil { + f11elemf0f2elem.EC2CapacityReservationID = f11elemf0f2iter.Ec2CapacityReservationId + } + if f11elemf0f2iter.TotalInstanceCount != nil { + totalInstanceCountCopy := int64(*f11elemf0f2iter.TotalInstanceCount) + f11elemf0f2elem.TotalInstanceCount = &totalInstanceCountCopy + } + if f11elemf0f2iter.UsedByCurrentEndpoint != nil { + usedByCurrentEndpointCopy := int64(*f11elemf0f2iter.UsedByCurrentEndpoint) + f11elemf0f2elem.UsedByCurrentEndpoint = &usedByCurrentEndpointCopy + } + f11elemf0f2 = append(f11elemf0f2, f11elemf0f2elem) + } + f11elemf0.EC2CapacityReservations = f11elemf0f2 + } + if f11iter.CapacityReservationConfig.MlReservationArn != nil { + f11elemf0.MlReservationARN = f11iter.CapacityReservationConfig.MlReservationArn + } + if f11iter.CapacityReservationConfig.TotalInstanceCount != nil { + totalInstanceCountCopy := int64(*f11iter.CapacityReservationConfig.TotalInstanceCount) + f11elemf0.TotalInstanceCount = &totalInstanceCountCopy + } + if f11iter.CapacityReservationConfig.UsedByCurrentEndpoint != nil { + usedByCurrentEndpointCopy := int64(*f11iter.CapacityReservationConfig.UsedByCurrentEndpoint) + f11elemf0.UsedByCurrentEndpoint = &usedByCurrentEndpointCopy + } + f11elem.CapacityReservationConfig = f11elemf0 + } if f11iter.CurrentInstanceCount != nil { currentInstanceCountCopy := int64(*f11iter.CurrentInstanceCount) f11elem.CurrentInstanceCount = ¤tInstanceCountCopy } if f11iter.CurrentServerlessConfig != nil { - f11elemf1 := &svcapitypes.ProductionVariantServerlessConfig{} + f11elemf2 := &svcapitypes.ProductionVariantServerlessConfig{} if f11iter.CurrentServerlessConfig.MaxConcurrency != nil { maxConcurrencyCopy := int64(*f11iter.CurrentServerlessConfig.MaxConcurrency) - f11elemf1.MaxConcurrency = &maxConcurrencyCopy + f11elemf2.MaxConcurrency = &maxConcurrencyCopy } if f11iter.CurrentServerlessConfig.MemorySizeInMB != nil { memorySizeInMBCopy := int64(*f11iter.CurrentServerlessConfig.MemorySizeInMB) - f11elemf1.MemorySizeInMB = &memorySizeInMBCopy + f11elemf2.MemorySizeInMB = &memorySizeInMBCopy } if f11iter.CurrentServerlessConfig.ProvisionedConcurrency != nil { provisionedConcurrencyCopy := int64(*f11iter.CurrentServerlessConfig.ProvisionedConcurrency) - f11elemf1.ProvisionedConcurrency = &provisionedConcurrencyCopy + f11elemf2.ProvisionedConcurrency = &provisionedConcurrencyCopy } - f11elem.CurrentServerlessConfig = f11elemf1 + f11elem.CurrentServerlessConfig = f11elemf2 } if f11iter.CurrentWeight != nil { currentWeightCopy := float64(*f11iter.CurrentWeight) f11elem.CurrentWeight = ¤tWeightCopy } if f11iter.DeployedImages != nil { - f11elemf3 := []*svcapitypes.DeployedImage{} - for _, f11elemf3iter := range f11iter.DeployedImages { - f11elemf3elem := &svcapitypes.DeployedImage{} - if f11elemf3iter.ResolutionTime != nil { - f11elemf3elem.ResolutionTime = &metav1.Time{*f11elemf3iter.ResolutionTime} + f11elemf4 := []*svcapitypes.DeployedImage{} + for _, f11elemf4iter := range f11iter.DeployedImages { + f11elemf4elem := &svcapitypes.DeployedImage{} + if f11elemf4iter.ResolutionTime != nil { + f11elemf4elem.ResolutionTime = &metav1.Time{*f11elemf4iter.ResolutionTime} } - if f11elemf3iter.ResolvedImage != nil { - f11elemf3elem.ResolvedImage = f11elemf3iter.ResolvedImage + if f11elemf4iter.ResolvedImage != nil { + f11elemf4elem.ResolvedImage = f11elemf4iter.ResolvedImage } - if f11elemf3iter.SpecifiedImage != nil { - f11elemf3elem.SpecifiedImage = f11elemf3iter.SpecifiedImage + if f11elemf4iter.SpecifiedImage != nil { + f11elemf4elem.SpecifiedImage = f11elemf4iter.SpecifiedImage } - f11elemf3 = append(f11elemf3, f11elemf3elem) + f11elemf4 = append(f11elemf4, f11elemf4elem) } - f11elem.DeployedImages = f11elemf3 + f11elem.DeployedImages = f11elemf4 } if f11iter.DesiredInstanceCount != nil { desiredInstanceCountCopy := int64(*f11iter.DesiredInstanceCount) f11elem.DesiredInstanceCount = &desiredInstanceCountCopy } if f11iter.DesiredServerlessConfig != nil { - f11elemf5 := &svcapitypes.ProductionVariantServerlessConfig{} + f11elemf6 := &svcapitypes.ProductionVariantServerlessConfig{} if f11iter.DesiredServerlessConfig.MaxConcurrency != nil { maxConcurrencyCopy := int64(*f11iter.DesiredServerlessConfig.MaxConcurrency) - f11elemf5.MaxConcurrency = &maxConcurrencyCopy + f11elemf6.MaxConcurrency = &maxConcurrencyCopy } if f11iter.DesiredServerlessConfig.MemorySizeInMB != nil { memorySizeInMBCopy := int64(*f11iter.DesiredServerlessConfig.MemorySizeInMB) - f11elemf5.MemorySizeInMB = &memorySizeInMBCopy + f11elemf6.MemorySizeInMB = &memorySizeInMBCopy } if f11iter.DesiredServerlessConfig.ProvisionedConcurrency != nil { provisionedConcurrencyCopy := int64(*f11iter.DesiredServerlessConfig.ProvisionedConcurrency) - f11elemf5.ProvisionedConcurrency = &provisionedConcurrencyCopy + f11elemf6.ProvisionedConcurrency = &provisionedConcurrencyCopy } - f11elem.DesiredServerlessConfig = f11elemf5 + f11elem.DesiredServerlessConfig = f11elemf6 } if f11iter.DesiredWeight != nil { desiredWeightCopy := float64(*f11iter.DesiredWeight) f11elem.DesiredWeight = &desiredWeightCopy } if f11iter.ManagedInstanceScaling != nil { - f11elemf7 := &svcapitypes.ProductionVariantManagedInstanceScaling{} + f11elemf8 := &svcapitypes.ProductionVariantManagedInstanceScaling{} if f11iter.ManagedInstanceScaling.MaxInstanceCount != nil { maxInstanceCountCopy := int64(*f11iter.ManagedInstanceScaling.MaxInstanceCount) - f11elemf7.MaxInstanceCount = &maxInstanceCountCopy + f11elemf8.MaxInstanceCount = &maxInstanceCountCopy } if f11iter.ManagedInstanceScaling.MinInstanceCount != nil { minInstanceCountCopy := int64(*f11iter.ManagedInstanceScaling.MinInstanceCount) - f11elemf7.MinInstanceCount = &minInstanceCountCopy + f11elemf8.MinInstanceCount = &minInstanceCountCopy } if f11iter.ManagedInstanceScaling.Status != "" { - f11elemf7.Status = aws.String(string(f11iter.ManagedInstanceScaling.Status)) + f11elemf8.Status = aws.String(string(f11iter.ManagedInstanceScaling.Status)) } - f11elem.ManagedInstanceScaling = f11elemf7 + f11elem.ManagedInstanceScaling = f11elemf8 } if f11iter.RoutingConfig != nil { - f11elemf8 := &svcapitypes.ProductionVariantRoutingConfig{} + f11elemf9 := &svcapitypes.ProductionVariantRoutingConfig{} if f11iter.RoutingConfig.RoutingStrategy != "" { - f11elemf8.RoutingStrategy = aws.String(string(f11iter.RoutingConfig.RoutingStrategy)) + f11elemf9.RoutingStrategy = aws.String(string(f11iter.RoutingConfig.RoutingStrategy)) } - f11elem.RoutingConfig = f11elemf8 + f11elem.RoutingConfig = f11elemf9 } if f11iter.VariantName != nil { f11elem.VariantName = f11iter.VariantName } if f11iter.VariantStatus != nil { - f11elemf10 := []*svcapitypes.ProductionVariantStatus{} - for _, f11elemf10iter := range f11iter.VariantStatus { - f11elemf10elem := &svcapitypes.ProductionVariantStatus{} - if f11elemf10iter.StartTime != nil { - f11elemf10elem.StartTime = &metav1.Time{*f11elemf10iter.StartTime} + f11elemf11 := []*svcapitypes.ProductionVariantStatus{} + for _, f11elemf11iter := range f11iter.VariantStatus { + f11elemf11elem := &svcapitypes.ProductionVariantStatus{} + if f11elemf11iter.StartTime != nil { + f11elemf11elem.StartTime = &metav1.Time{*f11elemf11iter.StartTime} } - if f11elemf10iter.Status != "" { - f11elemf10elem.Status = aws.String(string(f11elemf10iter.Status)) + if f11elemf11iter.Status != "" { + f11elemf11elem.Status = aws.String(string(f11elemf11iter.Status)) } - if f11elemf10iter.StatusMessage != nil { - f11elemf10elem.StatusMessage = f11elemf10iter.StatusMessage + if f11elemf11iter.StatusMessage != nil { + f11elemf11elem.StatusMessage = f11elemf11iter.StatusMessage } - f11elemf10 = append(f11elemf10, f11elemf10elem) + f11elemf11 = append(f11elemf11, f11elemf11elem) } - f11elem.VariantStatus = f11elemf10 + f11elem.VariantStatus = f11elemf11 } f11 = append(f11, f11elem) } diff --git a/pkg/resource/endpoint_config/sdk.go b/pkg/resource/endpoint_config/sdk.go index e217c2bc..baece4f9 100644 --- a/pkg/resource/endpoint_config/sdk.go +++ b/pkg/resource/endpoint_config/sdk.go @@ -211,19 +211,29 @@ func (rm *resourceManager) sdkFind( if f8iter.AcceleratorType != "" { f8elem.AcceleratorType = aws.String(string(f8iter.AcceleratorType)) } + if f8iter.CapacityReservationConfig != nil { + f8elemf1 := &svcapitypes.ProductionVariantCapacityReservationConfig{} + if f8iter.CapacityReservationConfig.CapacityReservationPreference != "" { + f8elemf1.CapacityReservationPreference = aws.String(string(f8iter.CapacityReservationConfig.CapacityReservationPreference)) + } + if f8iter.CapacityReservationConfig.MlReservationArn != nil { + f8elemf1.MlReservationARN = f8iter.CapacityReservationConfig.MlReservationArn + } + f8elem.CapacityReservationConfig = f8elemf1 + } if f8iter.ContainerStartupHealthCheckTimeoutInSeconds != nil { containerStartupHealthCheckTimeoutInSecondsCopy := int64(*f8iter.ContainerStartupHealthCheckTimeoutInSeconds) f8elem.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy } if f8iter.CoreDumpConfig != nil { - f8elemf2 := &svcapitypes.ProductionVariantCoreDumpConfig{} + f8elemf3 := &svcapitypes.ProductionVariantCoreDumpConfig{} if f8iter.CoreDumpConfig.DestinationS3Uri != nil { - f8elemf2.DestinationS3URI = f8iter.CoreDumpConfig.DestinationS3Uri + f8elemf3.DestinationS3URI = f8iter.CoreDumpConfig.DestinationS3Uri } if f8iter.CoreDumpConfig.KmsKeyId != nil { - f8elemf2.KMSKeyID = f8iter.CoreDumpConfig.KmsKeyId + f8elemf3.KMSKeyID = f8iter.CoreDumpConfig.KmsKeyId } - f8elem.CoreDumpConfig = f8elemf2 + f8elem.CoreDumpConfig = f8elemf3 } if f8iter.EnableSSMAccess != nil { f8elem.EnableSSMAccess = f8iter.EnableSSMAccess @@ -240,19 +250,19 @@ func (rm *resourceManager) sdkFind( f8elem.InstanceType = aws.String(string(f8iter.InstanceType)) } if f8iter.ManagedInstanceScaling != nil { - f8elemf7 := &svcapitypes.ProductionVariantManagedInstanceScaling{} + f8elemf8 := &svcapitypes.ProductionVariantManagedInstanceScaling{} if f8iter.ManagedInstanceScaling.MaxInstanceCount != nil { maxInstanceCountCopy := int64(*f8iter.ManagedInstanceScaling.MaxInstanceCount) - f8elemf7.MaxInstanceCount = &maxInstanceCountCopy + f8elemf8.MaxInstanceCount = &maxInstanceCountCopy } if f8iter.ManagedInstanceScaling.MinInstanceCount != nil { minInstanceCountCopy := int64(*f8iter.ManagedInstanceScaling.MinInstanceCount) - f8elemf7.MinInstanceCount = &minInstanceCountCopy + f8elemf8.MinInstanceCount = &minInstanceCountCopy } if f8iter.ManagedInstanceScaling.Status != "" { - f8elemf7.Status = aws.String(string(f8iter.ManagedInstanceScaling.Status)) + f8elemf8.Status = aws.String(string(f8iter.ManagedInstanceScaling.Status)) } - f8elem.ManagedInstanceScaling = f8elemf7 + f8elem.ManagedInstanceScaling = f8elemf8 } if f8iter.ModelDataDownloadTimeoutInSeconds != nil { modelDataDownloadTimeoutInSecondsCopy := int64(*f8iter.ModelDataDownloadTimeoutInSeconds) @@ -262,27 +272,27 @@ func (rm *resourceManager) sdkFind( f8elem.ModelName = f8iter.ModelName } if f8iter.RoutingConfig != nil { - f8elemf10 := &svcapitypes.ProductionVariantRoutingConfig{} + f8elemf11 := &svcapitypes.ProductionVariantRoutingConfig{} if f8iter.RoutingConfig.RoutingStrategy != "" { - f8elemf10.RoutingStrategy = aws.String(string(f8iter.RoutingConfig.RoutingStrategy)) + f8elemf11.RoutingStrategy = aws.String(string(f8iter.RoutingConfig.RoutingStrategy)) } - f8elem.RoutingConfig = f8elemf10 + f8elem.RoutingConfig = f8elemf11 } if f8iter.ServerlessConfig != nil { - f8elemf11 := &svcapitypes.ProductionVariantServerlessConfig{} + f8elemf12 := &svcapitypes.ProductionVariantServerlessConfig{} if f8iter.ServerlessConfig.MaxConcurrency != nil { maxConcurrencyCopy := int64(*f8iter.ServerlessConfig.MaxConcurrency) - f8elemf11.MaxConcurrency = &maxConcurrencyCopy + f8elemf12.MaxConcurrency = &maxConcurrencyCopy } if f8iter.ServerlessConfig.MemorySizeInMB != nil { memorySizeInMBCopy := int64(*f8iter.ServerlessConfig.MemorySizeInMB) - f8elemf11.MemorySizeInMB = &memorySizeInMBCopy + f8elemf12.MemorySizeInMB = &memorySizeInMBCopy } if f8iter.ServerlessConfig.ProvisionedConcurrency != nil { provisionedConcurrencyCopy := int64(*f8iter.ServerlessConfig.ProvisionedConcurrency) - f8elemf11.ProvisionedConcurrency = &provisionedConcurrencyCopy + f8elemf12.ProvisionedConcurrency = &provisionedConcurrencyCopy } - f8elem.ServerlessConfig = f8elemf11 + f8elem.ServerlessConfig = f8elemf12 } if f8iter.VariantName != nil { f8elem.VariantName = f8iter.VariantName @@ -495,6 +505,16 @@ func (rm *resourceManager) newCreateRequestPayload( if f6iter.AcceleratorType != nil { f6elem.AcceleratorType = svcsdktypes.ProductionVariantAcceleratorType(*f6iter.AcceleratorType) } + if f6iter.CapacityReservationConfig != nil { + f6elemf1 := &svcsdktypes.ProductionVariantCapacityReservationConfig{} + if f6iter.CapacityReservationConfig.CapacityReservationPreference != nil { + f6elemf1.CapacityReservationPreference = svcsdktypes.CapacityReservationPreference(*f6iter.CapacityReservationConfig.CapacityReservationPreference) + } + if f6iter.CapacityReservationConfig.MlReservationARN != nil { + f6elemf1.MlReservationArn = f6iter.CapacityReservationConfig.MlReservationARN + } + f6elem.CapacityReservationConfig = f6elemf1 + } if f6iter.ContainerStartupHealthCheckTimeoutInSeconds != nil { containerStartupHealthCheckTimeoutInSecondsCopy0 := *f6iter.ContainerStartupHealthCheckTimeoutInSeconds if containerStartupHealthCheckTimeoutInSecondsCopy0 > math.MaxInt32 || containerStartupHealthCheckTimeoutInSecondsCopy0 < math.MinInt32 { @@ -504,14 +524,14 @@ func (rm *resourceManager) newCreateRequestPayload( f6elem.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy } if f6iter.CoreDumpConfig != nil { - f6elemf2 := &svcsdktypes.ProductionVariantCoreDumpConfig{} + f6elemf3 := &svcsdktypes.ProductionVariantCoreDumpConfig{} if f6iter.CoreDumpConfig.DestinationS3URI != nil { - f6elemf2.DestinationS3Uri = f6iter.CoreDumpConfig.DestinationS3URI + f6elemf3.DestinationS3Uri = f6iter.CoreDumpConfig.DestinationS3URI } if f6iter.CoreDumpConfig.KMSKeyID != nil { - f6elemf2.KmsKeyId = f6iter.CoreDumpConfig.KMSKeyID + f6elemf3.KmsKeyId = f6iter.CoreDumpConfig.KMSKeyID } - f6elem.CoreDumpConfig = f6elemf2 + f6elem.CoreDumpConfig = f6elemf3 } if f6iter.EnableSSMAccess != nil { f6elem.EnableSSMAccess = f6iter.EnableSSMAccess @@ -536,14 +556,14 @@ func (rm *resourceManager) newCreateRequestPayload( f6elem.InstanceType = svcsdktypes.ProductionVariantInstanceType(*f6iter.InstanceType) } if f6iter.ManagedInstanceScaling != nil { - f6elemf7 := &svcsdktypes.ProductionVariantManagedInstanceScaling{} + f6elemf8 := &svcsdktypes.ProductionVariantManagedInstanceScaling{} if f6iter.ManagedInstanceScaling.MaxInstanceCount != nil { maxInstanceCountCopy0 := *f6iter.ManagedInstanceScaling.MaxInstanceCount if maxInstanceCountCopy0 > math.MaxInt32 || maxInstanceCountCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field MaxInstanceCount is of type int32") } maxInstanceCountCopy := int32(maxInstanceCountCopy0) - f6elemf7.MaxInstanceCount = &maxInstanceCountCopy + f6elemf8.MaxInstanceCount = &maxInstanceCountCopy } if f6iter.ManagedInstanceScaling.MinInstanceCount != nil { minInstanceCountCopy0 := *f6iter.ManagedInstanceScaling.MinInstanceCount @@ -551,12 +571,12 @@ func (rm *resourceManager) newCreateRequestPayload( return nil, fmt.Errorf("error: field MinInstanceCount is of type int32") } minInstanceCountCopy := int32(minInstanceCountCopy0) - f6elemf7.MinInstanceCount = &minInstanceCountCopy + f6elemf8.MinInstanceCount = &minInstanceCountCopy } if f6iter.ManagedInstanceScaling.Status != nil { - f6elemf7.Status = svcsdktypes.ManagedInstanceScalingStatus(*f6iter.ManagedInstanceScaling.Status) + f6elemf8.Status = svcsdktypes.ManagedInstanceScalingStatus(*f6iter.ManagedInstanceScaling.Status) } - f6elem.ManagedInstanceScaling = f6elemf7 + f6elem.ManagedInstanceScaling = f6elemf8 } if f6iter.ModelDataDownloadTimeoutInSeconds != nil { modelDataDownloadTimeoutInSecondsCopy0 := *f6iter.ModelDataDownloadTimeoutInSeconds @@ -570,21 +590,21 @@ func (rm *resourceManager) newCreateRequestPayload( f6elem.ModelName = f6iter.ModelName } if f6iter.RoutingConfig != nil { - f6elemf10 := &svcsdktypes.ProductionVariantRoutingConfig{} + f6elemf11 := &svcsdktypes.ProductionVariantRoutingConfig{} if f6iter.RoutingConfig.RoutingStrategy != nil { - f6elemf10.RoutingStrategy = svcsdktypes.RoutingStrategy(*f6iter.RoutingConfig.RoutingStrategy) + f6elemf11.RoutingStrategy = svcsdktypes.RoutingStrategy(*f6iter.RoutingConfig.RoutingStrategy) } - f6elem.RoutingConfig = f6elemf10 + f6elem.RoutingConfig = f6elemf11 } if f6iter.ServerlessConfig != nil { - f6elemf11 := &svcsdktypes.ProductionVariantServerlessConfig{} + f6elemf12 := &svcsdktypes.ProductionVariantServerlessConfig{} if f6iter.ServerlessConfig.MaxConcurrency != nil { maxConcurrencyCopy0 := *f6iter.ServerlessConfig.MaxConcurrency if maxConcurrencyCopy0 > math.MaxInt32 || maxConcurrencyCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field MaxConcurrency is of type int32") } maxConcurrencyCopy := int32(maxConcurrencyCopy0) - f6elemf11.MaxConcurrency = &maxConcurrencyCopy + f6elemf12.MaxConcurrency = &maxConcurrencyCopy } if f6iter.ServerlessConfig.MemorySizeInMB != nil { memorySizeInMBCopy0 := *f6iter.ServerlessConfig.MemorySizeInMB @@ -592,7 +612,7 @@ func (rm *resourceManager) newCreateRequestPayload( return nil, fmt.Errorf("error: field MemorySizeInMB is of type int32") } memorySizeInMBCopy := int32(memorySizeInMBCopy0) - f6elemf11.MemorySizeInMB = &memorySizeInMBCopy + f6elemf12.MemorySizeInMB = &memorySizeInMBCopy } if f6iter.ServerlessConfig.ProvisionedConcurrency != nil { provisionedConcurrencyCopy0 := *f6iter.ServerlessConfig.ProvisionedConcurrency @@ -600,9 +620,9 @@ func (rm *resourceManager) newCreateRequestPayload( return nil, fmt.Errorf("error: field ProvisionedConcurrency is of type int32") } provisionedConcurrencyCopy := int32(provisionedConcurrencyCopy0) - f6elemf11.ProvisionedConcurrency = &provisionedConcurrencyCopy + f6elemf12.ProvisionedConcurrency = &provisionedConcurrencyCopy } - f6elem.ServerlessConfig = f6elemf11 + f6elem.ServerlessConfig = f6elemf12 } if f6iter.VariantName != nil { f6elem.VariantName = f6iter.VariantName diff --git a/pkg/resource/hyper_parameter_tuning_job/delta.go b/pkg/resource/hyper_parameter_tuning_job/delta.go index 7971c55c..99bc3432 100644 --- a/pkg/resource/hyper_parameter_tuning_job/delta.go +++ b/pkg/resource/hyper_parameter_tuning_job/delta.go @@ -321,6 +321,24 @@ func newResourceDelta( delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstanceGroups", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceGroups, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceGroups) } } + if ackcompare.HasNilDifference(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig) { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig) + } else if a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig != nil && b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig != nil { + if ackcompare.HasNilDifference(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) + } else if a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil && b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + if *a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != *b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) + } + } + if len(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) != len(b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) + } else if len(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) > 0 { + if !reflect.DeepEqual(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) + } + } + } if ackcompare.HasNilDifference(a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType) { delta.Add("Spec.TrainingJobDefinition.ResourceConfig.InstanceType", a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType, b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType) } else if a.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType != nil && b.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType != nil { @@ -335,6 +353,13 @@ func newResourceDelta( delta.Add("Spec.TrainingJobDefinition.ResourceConfig.KeepAlivePeriodInSeconds", a.ko.Spec.TrainingJobDefinition.ResourceConfig.KeepAlivePeriodInSeconds, b.ko.Spec.TrainingJobDefinition.ResourceConfig.KeepAlivePeriodInSeconds) } } + if ackcompare.HasNilDifference(a.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN, b.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN) { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN", a.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN, b.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN) + } else if a.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN != nil && b.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN != nil { + if *a.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN != *b.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN { + delta.Add("Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN", a.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN, b.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN) + } + } if ackcompare.HasNilDifference(a.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID, b.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID) { delta.Add("Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID", a.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID, b.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID) } else if a.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID != nil && b.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID != nil { diff --git a/pkg/resource/hyper_parameter_tuning_job/sdk.go b/pkg/resource/hyper_parameter_tuning_job/sdk.go index 54b44205..4e7a47e0 100644 --- a/pkg/resource/hyper_parameter_tuning_job/sdk.go +++ b/pkg/resource/hyper_parameter_tuning_job/sdk.go @@ -501,9 +501,23 @@ func (rm *resourceManager) sdkFind( if f13f7iter.DataSource.S3DataSource.AttributeNames != nil { f13f7elemf3f1.AttributeNames = aws.StringSlice(f13f7iter.DataSource.S3DataSource.AttributeNames) } + if f13f7iter.DataSource.S3DataSource.HubAccessConfig != nil { + f13f7elemf3f1f1 := &svcapitypes.HubAccessConfig{} + if f13f7iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn != nil { + f13f7elemf3f1f1.HubContentARN = f13f7iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn + } + f13f7elemf3f1.HubAccessConfig = f13f7elemf3f1f1 + } if f13f7iter.DataSource.S3DataSource.InstanceGroupNames != nil { f13f7elemf3f1.InstanceGroupNames = aws.StringSlice(f13f7iter.DataSource.S3DataSource.InstanceGroupNames) } + if f13f7iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f13f7elemf3f1f3 := &svcapitypes.ModelAccessConfig{} + if f13f7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f13f7elemf3f1f3.AcceptEula = f13f7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f13f7elemf3f1.ModelAccessConfig = f13f7elemf3f1f3 + } if f13f7iter.DataSource.S3DataSource.S3DataDistributionType != "" { f13f7elemf3f1.S3DataDistributionType = aws.String(string(f13f7iter.DataSource.S3DataSource.S3DataDistributionType)) } @@ -571,6 +585,28 @@ func (rm *resourceManager) sdkFind( } f13f9.InstanceGroups = f13f9f1 } + if resp.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig != nil { + f13f9f2 := &svcapitypes.InstancePlacementConfig{} + if resp.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f13f9f2.EnableMultipleJobs = resp.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if resp.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f13f9f2f1 := []*svcapitypes.PlacementSpecification{} + for _, f13f9f2f1iter := range resp.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f13f9f2f1elem := &svcapitypes.PlacementSpecification{} + if f13f9f2f1iter.InstanceCount != nil { + instanceCountCopy := int64(*f13f9f2f1iter.InstanceCount) + f13f9f2f1elem.InstanceCount = &instanceCountCopy + } + if f13f9f2f1iter.UltraServerId != nil { + f13f9f2f1elem.UltraServerID = f13f9f2f1iter.UltraServerId + } + f13f9f2f1 = append(f13f9f2f1, f13f9f2f1elem) + } + f13f9f2.PlacementSpecifications = f13f9f2f1 + } + f13f9.InstancePlacementConfig = f13f9f2 + } if resp.TrainingJobDefinition.ResourceConfig.InstanceType != "" { f13f9.InstanceType = aws.String(string(resp.TrainingJobDefinition.ResourceConfig.InstanceType)) } @@ -578,6 +614,9 @@ func (rm *resourceManager) sdkFind( keepAlivePeriodInSecondsCopy := int64(*resp.TrainingJobDefinition.ResourceConfig.KeepAlivePeriodInSeconds) f13f9.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if resp.TrainingJobDefinition.ResourceConfig.TrainingPlanArn != nil { + f13f9.TrainingPlanARN = resp.TrainingJobDefinition.ResourceConfig.TrainingPlanArn + } if resp.TrainingJobDefinition.ResourceConfig.VolumeKmsKeyId != nil { f13f9.VolumeKMSKeyID = resp.TrainingJobDefinition.ResourceConfig.VolumeKmsKeyId } @@ -802,9 +841,23 @@ func (rm *resourceManager) sdkFind( if f14elemf7iter.DataSource.S3DataSource.AttributeNames != nil { f14elemf7elemf3f1.AttributeNames = aws.StringSlice(f14elemf7iter.DataSource.S3DataSource.AttributeNames) } + if f14elemf7iter.DataSource.S3DataSource.HubAccessConfig != nil { + f14elemf7elemf3f1f1 := &svcapitypes.HubAccessConfig{} + if f14elemf7iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn != nil { + f14elemf7elemf3f1f1.HubContentARN = f14elemf7iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn + } + f14elemf7elemf3f1.HubAccessConfig = f14elemf7elemf3f1f1 + } if f14elemf7iter.DataSource.S3DataSource.InstanceGroupNames != nil { f14elemf7elemf3f1.InstanceGroupNames = aws.StringSlice(f14elemf7iter.DataSource.S3DataSource.InstanceGroupNames) } + if f14elemf7iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f14elemf7elemf3f1f3 := &svcapitypes.ModelAccessConfig{} + if f14elemf7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f14elemf7elemf3f1f3.AcceptEula = f14elemf7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f14elemf7elemf3f1.ModelAccessConfig = f14elemf7elemf3f1f3 + } if f14elemf7iter.DataSource.S3DataSource.S3DataDistributionType != "" { f14elemf7elemf3f1.S3DataDistributionType = aws.String(string(f14elemf7iter.DataSource.S3DataSource.S3DataDistributionType)) } @@ -872,6 +925,28 @@ func (rm *resourceManager) sdkFind( } f14elemf9.InstanceGroups = f14elemf9f1 } + if f14iter.ResourceConfig.InstancePlacementConfig != nil { + f14elemf9f2 := &svcapitypes.InstancePlacementConfig{} + if f14iter.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f14elemf9f2.EnableMultipleJobs = f14iter.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if f14iter.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f14elemf9f2f1 := []*svcapitypes.PlacementSpecification{} + for _, f14elemf9f2f1iter := range f14iter.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f14elemf9f2f1elem := &svcapitypes.PlacementSpecification{} + if f14elemf9f2f1iter.InstanceCount != nil { + instanceCountCopy := int64(*f14elemf9f2f1iter.InstanceCount) + f14elemf9f2f1elem.InstanceCount = &instanceCountCopy + } + if f14elemf9f2f1iter.UltraServerId != nil { + f14elemf9f2f1elem.UltraServerID = f14elemf9f2f1iter.UltraServerId + } + f14elemf9f2f1 = append(f14elemf9f2f1, f14elemf9f2f1elem) + } + f14elemf9f2.PlacementSpecifications = f14elemf9f2f1 + } + f14elemf9.InstancePlacementConfig = f14elemf9f2 + } if f14iter.ResourceConfig.InstanceType != "" { f14elemf9.InstanceType = aws.String(string(f14iter.ResourceConfig.InstanceType)) } @@ -879,6 +954,9 @@ func (rm *resourceManager) sdkFind( keepAlivePeriodInSecondsCopy := int64(*f14iter.ResourceConfig.KeepAlivePeriodInSeconds) f14elemf9.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if f14iter.ResourceConfig.TrainingPlanArn != nil { + f14elemf9.TrainingPlanARN = f14iter.ResourceConfig.TrainingPlanArn + } if f14iter.ResourceConfig.VolumeKmsKeyId != nil { f14elemf9.VolumeKMSKeyID = f14iter.ResourceConfig.VolumeKmsKeyId } @@ -1349,9 +1427,23 @@ func (rm *resourceManager) newCreateRequestPayload( if f4f7iter.DataSource.S3DataSource.AttributeNames != nil { f4f7elemf3f1.AttributeNames = aws.ToStringSlice(f4f7iter.DataSource.S3DataSource.AttributeNames) } + if f4f7iter.DataSource.S3DataSource.HubAccessConfig != nil { + f4f7elemf3f1f1 := &svcsdktypes.HubAccessConfig{} + if f4f7iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN != nil { + f4f7elemf3f1f1.HubContentArn = f4f7iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN + } + f4f7elemf3f1.HubAccessConfig = f4f7elemf3f1f1 + } if f4f7iter.DataSource.S3DataSource.InstanceGroupNames != nil { f4f7elemf3f1.InstanceGroupNames = aws.ToStringSlice(f4f7iter.DataSource.S3DataSource.InstanceGroupNames) } + if f4f7iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f4f7elemf3f1f3 := &svcsdktypes.ModelAccessConfig{} + if f4f7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f4f7elemf3f1f3.AcceptEula = f4f7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f4f7elemf3f1.ModelAccessConfig = f4f7elemf3f1f3 + } if f4f7iter.DataSource.S3DataSource.S3DataDistributionType != nil { f4f7elemf3f1.S3DataDistributionType = svcsdktypes.S3DataDistribution(*f4f7iter.DataSource.S3DataSource.S3DataDistributionType) } @@ -1427,6 +1519,32 @@ func (rm *resourceManager) newCreateRequestPayload( } f4f9.InstanceGroups = f4f9f1 } + if r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig != nil { + f4f9f2 := &svcsdktypes.InstancePlacementConfig{} + if r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f4f9f2.EnableMultipleJobs = r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f4f9f2f1 := []svcsdktypes.PlacementSpecification{} + for _, f4f9f2f1iter := range r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f4f9f2f1elem := &svcsdktypes.PlacementSpecification{} + if f4f9f2f1iter.InstanceCount != nil { + instanceCountCopy0 := *f4f9f2f1iter.InstanceCount + if instanceCountCopy0 > math.MaxInt32 || instanceCountCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field InstanceCount is of type int32") + } + instanceCountCopy := int32(instanceCountCopy0) + f4f9f2f1elem.InstanceCount = &instanceCountCopy + } + if f4f9f2f1iter.UltraServerID != nil { + f4f9f2f1elem.UltraServerId = f4f9f2f1iter.UltraServerID + } + f4f9f2f1 = append(f4f9f2f1, *f4f9f2f1elem) + } + f4f9f2.PlacementSpecifications = f4f9f2f1 + } + f4f9.InstancePlacementConfig = f4f9f2 + } if r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType != nil { f4f9.InstanceType = svcsdktypes.TrainingInstanceType(*r.ko.Spec.TrainingJobDefinition.ResourceConfig.InstanceType) } @@ -1438,6 +1556,9 @@ func (rm *resourceManager) newCreateRequestPayload( keepAlivePeriodInSecondsCopy := int32(keepAlivePeriodInSecondsCopy0) f4f9.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if r.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN != nil { + f4f9.TrainingPlanArn = r.ko.Spec.TrainingJobDefinition.ResourceConfig.TrainingPlanARN + } if r.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID != nil { f4f9.VolumeKmsKeyId = r.ko.Spec.TrainingJobDefinition.ResourceConfig.VolumeKMSKeyID } @@ -1680,9 +1801,23 @@ func (rm *resourceManager) newCreateRequestPayload( if f5elemf7iter.DataSource.S3DataSource.AttributeNames != nil { f5elemf7elemf3f1.AttributeNames = aws.ToStringSlice(f5elemf7iter.DataSource.S3DataSource.AttributeNames) } + if f5elemf7iter.DataSource.S3DataSource.HubAccessConfig != nil { + f5elemf7elemf3f1f1 := &svcsdktypes.HubAccessConfig{} + if f5elemf7iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN != nil { + f5elemf7elemf3f1f1.HubContentArn = f5elemf7iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN + } + f5elemf7elemf3f1.HubAccessConfig = f5elemf7elemf3f1f1 + } if f5elemf7iter.DataSource.S3DataSource.InstanceGroupNames != nil { f5elemf7elemf3f1.InstanceGroupNames = aws.ToStringSlice(f5elemf7iter.DataSource.S3DataSource.InstanceGroupNames) } + if f5elemf7iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f5elemf7elemf3f1f3 := &svcsdktypes.ModelAccessConfig{} + if f5elemf7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f5elemf7elemf3f1f3.AcceptEula = f5elemf7iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f5elemf7elemf3f1.ModelAccessConfig = f5elemf7elemf3f1f3 + } if f5elemf7iter.DataSource.S3DataSource.S3DataDistributionType != nil { f5elemf7elemf3f1.S3DataDistributionType = svcsdktypes.S3DataDistribution(*f5elemf7iter.DataSource.S3DataSource.S3DataDistributionType) } @@ -1758,6 +1893,32 @@ func (rm *resourceManager) newCreateRequestPayload( } f5elemf9.InstanceGroups = f5elemf9f1 } + if f5iter.ResourceConfig.InstancePlacementConfig != nil { + f5elemf9f2 := &svcsdktypes.InstancePlacementConfig{} + if f5iter.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f5elemf9f2.EnableMultipleJobs = f5iter.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if f5iter.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f5elemf9f2f1 := []svcsdktypes.PlacementSpecification{} + for _, f5elemf9f2f1iter := range f5iter.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f5elemf9f2f1elem := &svcsdktypes.PlacementSpecification{} + if f5elemf9f2f1iter.InstanceCount != nil { + instanceCountCopy0 := *f5elemf9f2f1iter.InstanceCount + if instanceCountCopy0 > math.MaxInt32 || instanceCountCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field InstanceCount is of type int32") + } + instanceCountCopy := int32(instanceCountCopy0) + f5elemf9f2f1elem.InstanceCount = &instanceCountCopy + } + if f5elemf9f2f1iter.UltraServerID != nil { + f5elemf9f2f1elem.UltraServerId = f5elemf9f2f1iter.UltraServerID + } + f5elemf9f2f1 = append(f5elemf9f2f1, *f5elemf9f2f1elem) + } + f5elemf9f2.PlacementSpecifications = f5elemf9f2f1 + } + f5elemf9.InstancePlacementConfig = f5elemf9f2 + } if f5iter.ResourceConfig.InstanceType != nil { f5elemf9.InstanceType = svcsdktypes.TrainingInstanceType(*f5iter.ResourceConfig.InstanceType) } @@ -1769,6 +1930,9 @@ func (rm *resourceManager) newCreateRequestPayload( keepAlivePeriodInSecondsCopy := int32(keepAlivePeriodInSecondsCopy0) f5elemf9.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if f5iter.ResourceConfig.TrainingPlanARN != nil { + f5elemf9.TrainingPlanArn = f5iter.ResourceConfig.TrainingPlanARN + } if f5iter.ResourceConfig.VolumeKMSKeyID != nil { f5elemf9.VolumeKmsKeyId = f5iter.ResourceConfig.VolumeKMSKeyID } diff --git a/pkg/resource/inference_component/sdk.go b/pkg/resource/inference_component/sdk.go index cdedd8a3..215c8f4b 100644 --- a/pkg/resource/inference_component/sdk.go +++ b/pkg/resource/inference_component/sdk.go @@ -129,59 +129,59 @@ func (rm *resourceManager) sdkFind( ko.Status.LastModifiedTime = nil } if resp.RuntimeConfig != nil { - f8 := &svcapitypes.InferenceComponentRuntimeConfig{} - ko.Spec.RuntimeConfig = f8 + f9 := &svcapitypes.InferenceComponentRuntimeConfig{} + ko.Spec.RuntimeConfig = f9 } else { ko.Spec.RuntimeConfig = nil } if resp.Specification != nil { - f9 := &svcapitypes.InferenceComponentSpecification{} + f10 := &svcapitypes.InferenceComponentSpecification{} if resp.Specification.ComputeResourceRequirements != nil { - f9f1 := &svcapitypes.InferenceComponentComputeResourceRequirements{} + f10f1 := &svcapitypes.InferenceComponentComputeResourceRequirements{} if resp.Specification.ComputeResourceRequirements.MaxMemoryRequiredInMb != nil { maxMemoryRequiredInMbCopy := int64(*resp.Specification.ComputeResourceRequirements.MaxMemoryRequiredInMb) - f9f1.MaxMemoryRequiredInMb = &maxMemoryRequiredInMbCopy + f10f1.MaxMemoryRequiredInMb = &maxMemoryRequiredInMbCopy } if resp.Specification.ComputeResourceRequirements.MinMemoryRequiredInMb != nil { minMemoryRequiredInMbCopy := int64(*resp.Specification.ComputeResourceRequirements.MinMemoryRequiredInMb) - f9f1.MinMemoryRequiredInMb = &minMemoryRequiredInMbCopy + f10f1.MinMemoryRequiredInMb = &minMemoryRequiredInMbCopy } if resp.Specification.ComputeResourceRequirements.NumberOfAcceleratorDevicesRequired != nil { numberOfAcceleratorDevicesRequiredCopy := float64(*resp.Specification.ComputeResourceRequirements.NumberOfAcceleratorDevicesRequired) - f9f1.NumberOfAcceleratorDevicesRequired = &numberOfAcceleratorDevicesRequiredCopy + f10f1.NumberOfAcceleratorDevicesRequired = &numberOfAcceleratorDevicesRequiredCopy } if resp.Specification.ComputeResourceRequirements.NumberOfCpuCoresRequired != nil { numberOfCPUCoresRequiredCopy := float64(*resp.Specification.ComputeResourceRequirements.NumberOfCpuCoresRequired) - f9f1.NumberOfCPUCoresRequired = &numberOfCPUCoresRequiredCopy + f10f1.NumberOfCPUCoresRequired = &numberOfCPUCoresRequiredCopy } - f9.ComputeResourceRequirements = f9f1 + f10.ComputeResourceRequirements = f10f1 } if resp.Specification.Container != nil { - f9f2 := &svcapitypes.InferenceComponentContainerSpecification{} + f10f2 := &svcapitypes.InferenceComponentContainerSpecification{} if resp.Specification.Container.ArtifactUrl != nil { - f9f2.ArtifactURL = resp.Specification.Container.ArtifactUrl + f10f2.ArtifactURL = resp.Specification.Container.ArtifactUrl } if resp.Specification.Container.Environment != nil { - f9f2.Environment = aws.StringMap(resp.Specification.Container.Environment) + f10f2.Environment = aws.StringMap(resp.Specification.Container.Environment) } - f9.Container = f9f2 + f10.Container = f10f2 } if resp.Specification.ModelName != nil { - f9.ModelName = resp.Specification.ModelName + f10.ModelName = resp.Specification.ModelName } if resp.Specification.StartupParameters != nil { - f9f4 := &svcapitypes.InferenceComponentStartupParameters{} + f10f4 := &svcapitypes.InferenceComponentStartupParameters{} if resp.Specification.StartupParameters.ContainerStartupHealthCheckTimeoutInSeconds != nil { containerStartupHealthCheckTimeoutInSecondsCopy := int64(*resp.Specification.StartupParameters.ContainerStartupHealthCheckTimeoutInSeconds) - f9f4.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy + f10f4.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy } if resp.Specification.StartupParameters.ModelDataDownloadTimeoutInSeconds != nil { modelDataDownloadTimeoutInSecondsCopy := int64(*resp.Specification.StartupParameters.ModelDataDownloadTimeoutInSeconds) - f9f4.ModelDataDownloadTimeoutInSeconds = &modelDataDownloadTimeoutInSecondsCopy + f10f4.ModelDataDownloadTimeoutInSeconds = &modelDataDownloadTimeoutInSecondsCopy } - f9.StartupParameters = f9f4 + f10.StartupParameters = f10f4 } - ko.Spec.Specification = f9 + ko.Spec.Specification = f10 } else { ko.Spec.Specification = nil } @@ -455,28 +455,28 @@ func (rm *resourceManager) newUpdateRequestPayload( res.InferenceComponentName = r.ko.Spec.InferenceComponentName } if r.ko.Spec.RuntimeConfig != nil { - f1 := &svcsdktypes.InferenceComponentRuntimeConfig{} + f2 := &svcsdktypes.InferenceComponentRuntimeConfig{} if r.ko.Spec.RuntimeConfig.CopyCount != nil { copyCountCopy0 := *r.ko.Spec.RuntimeConfig.CopyCount if copyCountCopy0 > math.MaxInt32 || copyCountCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field CopyCount is of type int32") } copyCountCopy := int32(copyCountCopy0) - f1.CopyCount = ©CountCopy + f2.CopyCount = ©CountCopy } - res.RuntimeConfig = f1 + res.RuntimeConfig = f2 } if r.ko.Spec.Specification != nil { - f2 := &svcsdktypes.InferenceComponentSpecification{} + f3 := &svcsdktypes.InferenceComponentSpecification{} if r.ko.Spec.Specification.ComputeResourceRequirements != nil { - f2f0 := &svcsdktypes.InferenceComponentComputeResourceRequirements{} + f3f0 := &svcsdktypes.InferenceComponentComputeResourceRequirements{} if r.ko.Spec.Specification.ComputeResourceRequirements.MaxMemoryRequiredInMb != nil { maxMemoryRequiredInMbCopy0 := *r.ko.Spec.Specification.ComputeResourceRequirements.MaxMemoryRequiredInMb if maxMemoryRequiredInMbCopy0 > math.MaxInt32 || maxMemoryRequiredInMbCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field MaxMemoryRequiredInMb is of type int32") } maxMemoryRequiredInMbCopy := int32(maxMemoryRequiredInMbCopy0) - f2f0.MaxMemoryRequiredInMb = &maxMemoryRequiredInMbCopy + f3f0.MaxMemoryRequiredInMb = &maxMemoryRequiredInMbCopy } if r.ko.Spec.Specification.ComputeResourceRequirements.MinMemoryRequiredInMb != nil { minMemoryRequiredInMbCopy0 := *r.ko.Spec.Specification.ComputeResourceRequirements.MinMemoryRequiredInMb @@ -484,7 +484,7 @@ func (rm *resourceManager) newUpdateRequestPayload( return nil, fmt.Errorf("error: field MinMemoryRequiredInMb is of type int32") } minMemoryRequiredInMbCopy := int32(minMemoryRequiredInMbCopy0) - f2f0.MinMemoryRequiredInMb = &minMemoryRequiredInMbCopy + f3f0.MinMemoryRequiredInMb = &minMemoryRequiredInMbCopy } if r.ko.Spec.Specification.ComputeResourceRequirements.NumberOfAcceleratorDevicesRequired != nil { numberOfAcceleratorDevicesRequiredCopy0 := *r.ko.Spec.Specification.ComputeResourceRequirements.NumberOfAcceleratorDevicesRequired @@ -492,7 +492,7 @@ func (rm *resourceManager) newUpdateRequestPayload( return nil, fmt.Errorf("error: field NumberOfAcceleratorDevicesRequired is of type float32") } numberOfAcceleratorDevicesRequiredCopy := float32(numberOfAcceleratorDevicesRequiredCopy0) - f2f0.NumberOfAcceleratorDevicesRequired = &numberOfAcceleratorDevicesRequiredCopy + f3f0.NumberOfAcceleratorDevicesRequired = &numberOfAcceleratorDevicesRequiredCopy } if r.ko.Spec.Specification.ComputeResourceRequirements.NumberOfCPUCoresRequired != nil { numberOfCPUCoresRequiredCopy0 := *r.ko.Spec.Specification.ComputeResourceRequirements.NumberOfCPUCoresRequired @@ -500,35 +500,35 @@ func (rm *resourceManager) newUpdateRequestPayload( return nil, fmt.Errorf("error: field NumberOfCpuCoresRequired is of type float32") } numberOfCPUCoresRequiredCopy := float32(numberOfCPUCoresRequiredCopy0) - f2f0.NumberOfCpuCoresRequired = &numberOfCPUCoresRequiredCopy + f3f0.NumberOfCpuCoresRequired = &numberOfCPUCoresRequiredCopy } - f2.ComputeResourceRequirements = f2f0 + f3.ComputeResourceRequirements = f3f0 } if r.ko.Spec.Specification.Container != nil { - f2f1 := &svcsdktypes.InferenceComponentContainerSpecification{} + f3f1 := &svcsdktypes.InferenceComponentContainerSpecification{} if r.ko.Spec.Specification.Container.ArtifactURL != nil { - f2f1.ArtifactUrl = r.ko.Spec.Specification.Container.ArtifactURL + f3f1.ArtifactUrl = r.ko.Spec.Specification.Container.ArtifactURL } if r.ko.Spec.Specification.Container.Environment != nil { - f2f1.Environment = aws.ToStringMap(r.ko.Spec.Specification.Container.Environment) + f3f1.Environment = aws.ToStringMap(r.ko.Spec.Specification.Container.Environment) } if r.ko.Spec.Specification.Container.Image != nil { - f2f1.Image = r.ko.Spec.Specification.Container.Image + f3f1.Image = r.ko.Spec.Specification.Container.Image } - f2.Container = f2f1 + f3.Container = f3f1 } if r.ko.Spec.Specification.ModelName != nil { - f2.ModelName = r.ko.Spec.Specification.ModelName + f3.ModelName = r.ko.Spec.Specification.ModelName } if r.ko.Spec.Specification.StartupParameters != nil { - f2f3 := &svcsdktypes.InferenceComponentStartupParameters{} + f3f3 := &svcsdktypes.InferenceComponentStartupParameters{} if r.ko.Spec.Specification.StartupParameters.ContainerStartupHealthCheckTimeoutInSeconds != nil { containerStartupHealthCheckTimeoutInSecondsCopy0 := *r.ko.Spec.Specification.StartupParameters.ContainerStartupHealthCheckTimeoutInSeconds if containerStartupHealthCheckTimeoutInSecondsCopy0 > math.MaxInt32 || containerStartupHealthCheckTimeoutInSecondsCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field ContainerStartupHealthCheckTimeoutInSeconds is of type int32") } containerStartupHealthCheckTimeoutInSecondsCopy := int32(containerStartupHealthCheckTimeoutInSecondsCopy0) - f2f3.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy + f3f3.ContainerStartupHealthCheckTimeoutInSeconds = &containerStartupHealthCheckTimeoutInSecondsCopy } if r.ko.Spec.Specification.StartupParameters.ModelDataDownloadTimeoutInSeconds != nil { modelDataDownloadTimeoutInSecondsCopy0 := *r.ko.Spec.Specification.StartupParameters.ModelDataDownloadTimeoutInSeconds @@ -536,11 +536,11 @@ func (rm *resourceManager) newUpdateRequestPayload( return nil, fmt.Errorf("error: field ModelDataDownloadTimeoutInSeconds is of type int32") } modelDataDownloadTimeoutInSecondsCopy := int32(modelDataDownloadTimeoutInSecondsCopy0) - f2f3.ModelDataDownloadTimeoutInSeconds = &modelDataDownloadTimeoutInSecondsCopy + f3f3.ModelDataDownloadTimeoutInSeconds = &modelDataDownloadTimeoutInSecondsCopy } - f2.StartupParameters = f2f3 + f3.StartupParameters = f3f3 } - res.Specification = f2 + res.Specification = f3 } return res, nil diff --git a/pkg/resource/model/delta.go b/pkg/resource/model/delta.go index e9ad5243..0d9b6338 100644 --- a/pkg/resource/model/delta.go +++ b/pkg/resource/model/delta.go @@ -156,6 +156,20 @@ func newResourceDelta( delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType) } } + if ackcompare.HasNilDifference(a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag) { + delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag) + } else if a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag != nil && b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag != nil { + if *a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag != *b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag { + delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag) { + delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag) + } else if a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag != nil && b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag != nil { + if *a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag != *b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag { + delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag) + } + } if ackcompare.HasNilDifference(a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig) { delta.Add("Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig", a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig, b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig) } else if a.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig != nil && b.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig != nil { diff --git a/pkg/resource/model/sdk.go b/pkg/resource/model/sdk.go index 66aaec6a..3e7a5c74 100644 --- a/pkg/resource/model/sdk.go +++ b/pkg/resource/model/sdk.go @@ -130,12 +130,18 @@ func (rm *resourceManager) sdkFind( if f0iter.ModelDataSource.S3DataSource.CompressionType != "" { f0elemf6f0.CompressionType = aws.String(string(f0iter.ModelDataSource.S3DataSource.CompressionType)) } + if f0iter.ModelDataSource.S3DataSource.ETag != nil { + f0elemf6f0.ETag = f0iter.ModelDataSource.S3DataSource.ETag + } + if f0iter.ModelDataSource.S3DataSource.ManifestEtag != nil { + f0elemf6f0.ManifestEtag = f0iter.ModelDataSource.S3DataSource.ManifestEtag + } if f0iter.ModelDataSource.S3DataSource.ModelAccessConfig != nil { - f0elemf6f0f1 := &svcapitypes.ModelAccessConfig{} + f0elemf6f0f3 := &svcapitypes.ModelAccessConfig{} if f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { - f0elemf6f0f1.AcceptEula = f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula + f0elemf6f0f3.AcceptEula = f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula } - f0elemf6f0.ModelAccessConfig = f0elemf6f0f1 + f0elemf6f0.ModelAccessConfig = f0elemf6f0f3 } if f0iter.ModelDataSource.S3DataSource.S3DataType != "" { f0elemf6f0.S3DataType = aws.String(string(f0iter.ModelDataSource.S3DataSource.S3DataType)) @@ -235,12 +241,18 @@ func (rm *resourceManager) sdkFind( if resp.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType != "" { f8f6f0.CompressionType = aws.String(string(resp.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType)) } + if resp.PrimaryContainer.ModelDataSource.S3DataSource.ETag != nil { + f8f6f0.ETag = resp.PrimaryContainer.ModelDataSource.S3DataSource.ETag + } + if resp.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag != nil { + f8f6f0.ManifestEtag = resp.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag + } if resp.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig != nil { - f8f6f0f1 := &svcapitypes.ModelAccessConfig{} + f8f6f0f3 := &svcapitypes.ModelAccessConfig{} if resp.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { - f8f6f0f1.AcceptEula = resp.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula + f8f6f0f3.AcceptEula = resp.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula } - f8f6f0.ModelAccessConfig = f8f6f0f1 + f8f6f0.ModelAccessConfig = f8f6f0f3 } if resp.PrimaryContainer.ModelDataSource.S3DataSource.S3DataType != "" { f8f6f0.S3DataType = aws.String(string(resp.PrimaryContainer.ModelDataSource.S3DataSource.S3DataType)) @@ -398,12 +410,18 @@ func (rm *resourceManager) newCreateRequestPayload( if f0iter.ModelDataSource.S3DataSource.CompressionType != nil { f0elemf6f0.CompressionType = svcsdktypes.ModelCompressionType(*f0iter.ModelDataSource.S3DataSource.CompressionType) } + if f0iter.ModelDataSource.S3DataSource.ETag != nil { + f0elemf6f0.ETag = f0iter.ModelDataSource.S3DataSource.ETag + } + if f0iter.ModelDataSource.S3DataSource.ManifestEtag != nil { + f0elemf6f0.ManifestEtag = f0iter.ModelDataSource.S3DataSource.ManifestEtag + } if f0iter.ModelDataSource.S3DataSource.ModelAccessConfig != nil { - f0elemf6f0f1 := &svcsdktypes.ModelAccessConfig{} + f0elemf6f0f3 := &svcsdktypes.ModelAccessConfig{} if f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { - f0elemf6f0f1.AcceptEula = f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula + f0elemf6f0f3.AcceptEula = f0iter.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula } - f0elemf6f0.ModelAccessConfig = f0elemf6f0f1 + f0elemf6f0.ModelAccessConfig = f0elemf6f0f3 } if f0iter.ModelDataSource.S3DataSource.S3DataType != nil { f0elemf6f0.S3DataType = svcsdktypes.S3ModelDataType(*f0iter.ModelDataSource.S3DataSource.S3DataType) @@ -486,12 +504,18 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType != nil { f5f6f0.CompressionType = svcsdktypes.ModelCompressionType(*r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.CompressionType) } + if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag != nil { + f5f6f0.ETag = r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ETag + } + if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag != nil { + f5f6f0.ManifestEtag = r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ManifestEtag + } if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig != nil { - f5f6f0f1 := &svcsdktypes.ModelAccessConfig{} + f5f6f0f3 := &svcsdktypes.ModelAccessConfig{} if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { - f5f6f0f1.AcceptEula = r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula + f5f6f0f3.AcceptEula = r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.ModelAccessConfig.AcceptEula } - f5f6f0.ModelAccessConfig = f5f6f0f1 + f5f6f0.ModelAccessConfig = f5f6f0f3 } if r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.S3DataType != nil { f5f6f0.S3DataType = svcsdktypes.S3ModelDataType(*r.ko.Spec.PrimaryContainer.ModelDataSource.S3DataSource.S3DataType) diff --git a/pkg/resource/model_package/sdk.go b/pkg/resource/model_package/sdk.go index dc7fef8a..4b79b3aa 100644 --- a/pkg/resource/model_package/sdk.go +++ b/pkg/resource/model_package/sdk.go @@ -113,6 +113,9 @@ func (rm *resourceManager) sdkFind( if f0elemf0iter.AdditionalS3DataSource.CompressionType != "" { f0elemf0elemf0.CompressionType = aws.String(string(f0elemf0iter.AdditionalS3DataSource.CompressionType)) } + if f0elemf0iter.AdditionalS3DataSource.ETag != nil { + f0elemf0elemf0.ETag = f0elemf0iter.AdditionalS3DataSource.ETag + } if f0elemf0iter.AdditionalS3DataSource.S3DataType != "" { f0elemf0elemf0.S3DataType = aws.String(string(f0elemf0iter.AdditionalS3DataSource.S3DataType)) } @@ -139,15 +142,18 @@ func (rm *resourceManager) sdkFind( if f0elemf0iter.ImageDigest != nil { f0elemf0elem.ImageDigest = f0elemf0iter.ImageDigest } + if f0elemf0iter.ModelDataETag != nil { + f0elemf0elem.ModelDataETag = f0elemf0iter.ModelDataETag + } if f0elemf0iter.ModelDataUrl != nil { f0elemf0elem.ModelDataURL = f0elemf0iter.ModelDataUrl } if f0elemf0iter.ModelInput != nil { - f0elemf0elemf8 := &svcapitypes.ModelInput{} + f0elemf0elemf9 := &svcapitypes.ModelInput{} if f0elemf0iter.ModelInput.DataInputConfig != nil { - f0elemf0elemf8.DataInputConfig = f0elemf0iter.ModelInput.DataInputConfig + f0elemf0elemf9.DataInputConfig = f0elemf0iter.ModelInput.DataInputConfig } - f0elemf0elem.ModelInput = f0elemf0elemf8 + f0elemf0elem.ModelInput = f0elemf0elemf9 } if f0elemf0iter.NearestModelName != nil { f0elemf0elem.NearestModelName = f0elemf0iter.NearestModelName @@ -370,6 +376,9 @@ func (rm *resourceManager) sdkFind( if f8f0iter.AdditionalS3DataSource.CompressionType != "" { f8f0elemf0.CompressionType = aws.String(string(f8f0iter.AdditionalS3DataSource.CompressionType)) } + if f8f0iter.AdditionalS3DataSource.ETag != nil { + f8f0elemf0.ETag = f8f0iter.AdditionalS3DataSource.ETag + } if f8f0iter.AdditionalS3DataSource.S3DataType != "" { f8f0elemf0.S3DataType = aws.String(string(f8f0iter.AdditionalS3DataSource.S3DataType)) } @@ -396,15 +405,18 @@ func (rm *resourceManager) sdkFind( if f8f0iter.ImageDigest != nil { f8f0elem.ImageDigest = f8f0iter.ImageDigest } + if f8f0iter.ModelDataETag != nil { + f8f0elem.ModelDataETag = f8f0iter.ModelDataETag + } if f8f0iter.ModelDataUrl != nil { f8f0elem.ModelDataURL = f8f0iter.ModelDataUrl } if f8f0iter.ModelInput != nil { - f8f0elemf8 := &svcapitypes.ModelInput{} + f8f0elemf9 := &svcapitypes.ModelInput{} if f8f0iter.ModelInput.DataInputConfig != nil { - f8f0elemf8.DataInputConfig = f8f0iter.ModelInput.DataInputConfig + f8f0elemf9.DataInputConfig = f8f0iter.ModelInput.DataInputConfig } - f8f0elem.ModelInput = f8f0elemf8 + f8f0elem.ModelInput = f8f0elemf9 } if f8f0iter.NearestModelName != nil { f8f0elem.NearestModelName = f8f0iter.NearestModelName @@ -684,6 +696,9 @@ func (rm *resourceManager) sdkFind( if f26f0iter.AlgorithmName != nil { f26f0elem.AlgorithmName = f26f0iter.AlgorithmName } + if f26f0iter.ModelDataETag != nil { + f26f0elem.ModelDataETag = f26f0iter.ModelDataETag + } if f26f0iter.ModelDataUrl != nil { f26f0elem.ModelDataURL = f26f0iter.ModelDataUrl } @@ -777,6 +792,9 @@ func (rm *resourceManager) sdkFind( if f29f0iter.TransformJobDefinition.TransformResources.InstanceType != "" { f29f0elemf1f6.InstanceType = aws.String(string(f29f0iter.TransformJobDefinition.TransformResources.InstanceType)) } + if f29f0iter.TransformJobDefinition.TransformResources.TransformAmiVersion != nil { + f29f0elemf1f6.TransformAMIVersion = f29f0iter.TransformJobDefinition.TransformResources.TransformAmiVersion + } if f29f0iter.TransformJobDefinition.TransformResources.VolumeKmsKeyId != nil { f29f0elemf1f6.VolumeKMSKeyID = f29f0iter.TransformJobDefinition.TransformResources.VolumeKmsKeyId } @@ -885,6 +903,9 @@ func (rm *resourceManager) newCreateRequestPayload( if f0elemf0iter.AdditionalS3DataSource.CompressionType != nil { f0elemf0elemf0.CompressionType = svcsdktypes.CompressionType(*f0elemf0iter.AdditionalS3DataSource.CompressionType) } + if f0elemf0iter.AdditionalS3DataSource.ETag != nil { + f0elemf0elemf0.ETag = f0elemf0iter.AdditionalS3DataSource.ETag + } if f0elemf0iter.AdditionalS3DataSource.S3DataType != nil { f0elemf0elemf0.S3DataType = svcsdktypes.AdditionalS3DataSourceDataType(*f0elemf0iter.AdditionalS3DataSource.S3DataType) } @@ -911,15 +932,18 @@ func (rm *resourceManager) newCreateRequestPayload( if f0elemf0iter.ImageDigest != nil { f0elemf0elem.ImageDigest = f0elemf0iter.ImageDigest } + if f0elemf0iter.ModelDataETag != nil { + f0elemf0elem.ModelDataETag = f0elemf0iter.ModelDataETag + } if f0elemf0iter.ModelDataURL != nil { f0elemf0elem.ModelDataUrl = f0elemf0iter.ModelDataURL } if f0elemf0iter.ModelInput != nil { - f0elemf0elemf8 := &svcsdktypes.ModelInput{} + f0elemf0elemf9 := &svcsdktypes.ModelInput{} if f0elemf0iter.ModelInput.DataInputConfig != nil { - f0elemf0elemf8.DataInputConfig = f0elemf0iter.ModelInput.DataInputConfig + f0elemf0elemf9.DataInputConfig = f0elemf0iter.ModelInput.DataInputConfig } - f0elemf0elem.ModelInput = f0elemf0elemf8 + f0elemf0elem.ModelInput = f0elemf0elemf9 } if f0elemf0iter.NearestModelName != nil { f0elemf0elem.NearestModelName = f0elemf0iter.NearestModelName @@ -1125,6 +1149,9 @@ func (rm *resourceManager) newCreateRequestPayload( if f6f0iter.AdditionalS3DataSource.CompressionType != nil { f6f0elemf0.CompressionType = svcsdktypes.CompressionType(*f6f0iter.AdditionalS3DataSource.CompressionType) } + if f6f0iter.AdditionalS3DataSource.ETag != nil { + f6f0elemf0.ETag = f6f0iter.AdditionalS3DataSource.ETag + } if f6f0iter.AdditionalS3DataSource.S3DataType != nil { f6f0elemf0.S3DataType = svcsdktypes.AdditionalS3DataSourceDataType(*f6f0iter.AdditionalS3DataSource.S3DataType) } @@ -1151,15 +1178,18 @@ func (rm *resourceManager) newCreateRequestPayload( if f6f0iter.ImageDigest != nil { f6f0elem.ImageDigest = f6f0iter.ImageDigest } + if f6f0iter.ModelDataETag != nil { + f6f0elem.ModelDataETag = f6f0iter.ModelDataETag + } if f6f0iter.ModelDataURL != nil { f6f0elem.ModelDataUrl = f6f0iter.ModelDataURL } if f6f0iter.ModelInput != nil { - f6f0elemf8 := &svcsdktypes.ModelInput{} + f6f0elemf9 := &svcsdktypes.ModelInput{} if f6f0iter.ModelInput.DataInputConfig != nil { - f6f0elemf8.DataInputConfig = f6f0iter.ModelInput.DataInputConfig + f6f0elemf9.DataInputConfig = f6f0iter.ModelInput.DataInputConfig } - f6f0elem.ModelInput = f6f0elemf8 + f6f0elem.ModelInput = f6f0elemf9 } if f6f0iter.NearestModelName != nil { f6f0elem.NearestModelName = f6f0iter.NearestModelName @@ -1364,6 +1394,9 @@ func (rm *resourceManager) newCreateRequestPayload( if f15f0iter.AlgorithmName != nil { f15f0elem.AlgorithmName = f15f0iter.AlgorithmName } + if f15f0iter.ModelDataETag != nil { + f15f0elem.ModelDataETag = f15f0iter.ModelDataETag + } if f15f0iter.ModelDataURL != nil { f15f0elem.ModelDataUrl = f15f0iter.ModelDataURL } @@ -1479,6 +1512,9 @@ func (rm *resourceManager) newCreateRequestPayload( if f18f0iter.TransformJobDefinition.TransformResources.InstanceType != nil { f18f0elemf1f6.InstanceType = svcsdktypes.TransformInstanceType(*f18f0iter.TransformJobDefinition.TransformResources.InstanceType) } + if f18f0iter.TransformJobDefinition.TransformResources.TransformAMIVersion != nil { + f18f0elemf1f6.TransformAmiVersion = f18f0iter.TransformJobDefinition.TransformResources.TransformAMIVersion + } if f18f0iter.TransformJobDefinition.TransformResources.VolumeKMSKeyID != nil { f18f0elemf1f6.VolumeKmsKeyId = f18f0iter.TransformJobDefinition.TransformResources.VolumeKMSKeyID } diff --git a/pkg/resource/notebook_instance/delta.go b/pkg/resource/notebook_instance/delta.go index d61a7069..bb44ac69 100644 --- a/pkg/resource/notebook_instance/delta.go +++ b/pkg/resource/notebook_instance/delta.go @@ -79,6 +79,13 @@ func newResourceDelta( delta.Add("Spec.InstanceType", a.ko.Spec.InstanceType, b.ko.Spec.InstanceType) } } + if ackcompare.HasNilDifference(a.ko.Spec.IPAddressType, b.ko.Spec.IPAddressType) { + delta.Add("Spec.IPAddressType", a.ko.Spec.IPAddressType, b.ko.Spec.IPAddressType) + } else if a.ko.Spec.IPAddressType != nil && b.ko.Spec.IPAddressType != nil { + if *a.ko.Spec.IPAddressType != *b.ko.Spec.IPAddressType { + delta.Add("Spec.IPAddressType", a.ko.Spec.IPAddressType, b.ko.Spec.IPAddressType) + } + } if ackcompare.HasNilDifference(a.ko.Spec.KMSKeyID, b.ko.Spec.KMSKeyID) { delta.Add("Spec.KMSKeyID", a.ko.Spec.KMSKeyID, b.ko.Spec.KMSKeyID) } else if a.ko.Spec.KMSKeyID != nil && b.ko.Spec.KMSKeyID != nil { diff --git a/pkg/resource/notebook_instance/sdk.go b/pkg/resource/notebook_instance/sdk.go index ef37313f..e51c888c 100644 --- a/pkg/resource/notebook_instance/sdk.go +++ b/pkg/resource/notebook_instance/sdk.go @@ -127,6 +127,11 @@ func (rm *resourceManager) sdkFind( } else { ko.Spec.InstanceType = nil } + if resp.IpAddressType != "" { + ko.Spec.IPAddressType = aws.String(string(resp.IpAddressType)) + } else { + ko.Spec.IPAddressType = nil + } if resp.KmsKeyId != nil { ko.Spec.KMSKeyID = resp.KmsKeyId } else { @@ -294,6 +299,9 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.InstanceType != nil { res.InstanceType = svcsdktypes.InstanceType(*r.ko.Spec.InstanceType) } + if r.ko.Spec.IPAddressType != nil { + res.IpAddressType = svcsdktypes.IPAddressType(*r.ko.Spec.IPAddressType) + } if r.ko.Spec.KMSKeyID != nil { res.KmsKeyId = r.ko.Spec.KMSKeyID } @@ -319,18 +327,18 @@ func (rm *resourceManager) newCreateRequestPayload( res.SubnetId = r.ko.Spec.SubnetID } if r.ko.Spec.Tags != nil { - f13 := []svcsdktypes.Tag{} - for _, f13iter := range r.ko.Spec.Tags { - f13elem := &svcsdktypes.Tag{} - if f13iter.Key != nil { - f13elem.Key = f13iter.Key + f14 := []svcsdktypes.Tag{} + for _, f14iter := range r.ko.Spec.Tags { + f14elem := &svcsdktypes.Tag{} + if f14iter.Key != nil { + f14elem.Key = f14iter.Key } - if f13iter.Value != nil { - f13elem.Value = f13iter.Value + if f14iter.Value != nil { + f14elem.Value = f14iter.Value } - f13 = append(f13, *f13elem) + f14 = append(f14, *f14elem) } - res.Tags = f13 + res.Tags = f14 } if r.ko.Spec.VolumeSizeInGB != nil { volumeSizeInGBCopy0 := *r.ko.Spec.VolumeSizeInGB @@ -422,6 +430,9 @@ func (rm *resourceManager) newUpdateRequestPayload( if r.ko.Spec.InstanceType != nil { res.InstanceType = svcsdktypes.InstanceType(*r.ko.Spec.InstanceType) } + if r.ko.Spec.IPAddressType != nil { + res.IpAddressType = svcsdktypes.IPAddressType(*r.ko.Spec.IPAddressType) + } if r.ko.Spec.LifecycleConfigName != nil { res.LifecycleConfigName = r.ko.Spec.LifecycleConfigName } diff --git a/pkg/resource/notebook_instance_lifecycle_config/sdk.go b/pkg/resource/notebook_instance_lifecycle_config/sdk.go index d1c2bfb1..dcdf5802 100644 --- a/pkg/resource/notebook_instance_lifecycle_config/sdk.go +++ b/pkg/resource/notebook_instance_lifecycle_config/sdk.go @@ -240,6 +240,20 @@ func (rm *resourceManager) newCreateRequestPayload( } res.OnStart = f2 } + if r.ko.Spec.Tags != nil { + f3 := []svcsdktypes.Tag{} + for _, f3iter := range r.ko.Spec.Tags { + f3elem := &svcsdktypes.Tag{} + if f3iter.Key != nil { + f3elem.Key = f3iter.Key + } + if f3iter.Value != nil { + f3elem.Value = f3iter.Value + } + f3 = append(f3, *f3elem) + } + res.Tags = f3 + } return res, nil } diff --git a/pkg/resource/pipeline_execution/delta.go b/pkg/resource/pipeline_execution/delta.go index 84880a20..28d4fcfc 100644 --- a/pkg/resource/pipeline_execution/delta.go +++ b/pkg/resource/pipeline_execution/delta.go @@ -82,6 +82,13 @@ func newResourceDelta( delta.Add("Spec.PipelineParameters", a.ko.Spec.PipelineParameters, b.ko.Spec.PipelineParameters) } } + if ackcompare.HasNilDifference(a.ko.Spec.PipelineVersionID, b.ko.Spec.PipelineVersionID) { + delta.Add("Spec.PipelineVersionID", a.ko.Spec.PipelineVersionID, b.ko.Spec.PipelineVersionID) + } else if a.ko.Spec.PipelineVersionID != nil && b.ko.Spec.PipelineVersionID != nil { + if *a.ko.Spec.PipelineVersionID != *b.ko.Spec.PipelineVersionID { + delta.Add("Spec.PipelineVersionID", a.ko.Spec.PipelineVersionID, b.ko.Spec.PipelineVersionID) + } + } if ackcompare.HasNilDifference(a.ko.Spec.SelectiveExecutionConfig, b.ko.Spec.SelectiveExecutionConfig) { delta.Add("Spec.SelectiveExecutionConfig", a.ko.Spec.SelectiveExecutionConfig, b.ko.Spec.SelectiveExecutionConfig) } else if a.ko.Spec.SelectiveExecutionConfig != nil && b.ko.Spec.SelectiveExecutionConfig != nil { diff --git a/pkg/resource/pipeline_execution/sdk.go b/pkg/resource/pipeline_execution/sdk.go index 71418db1..a615bc26 100644 --- a/pkg/resource/pipeline_execution/sdk.go +++ b/pkg/resource/pipeline_execution/sdk.go @@ -139,23 +139,28 @@ func (rm *resourceManager) sdkFind( } else { ko.Status.PipelineExecutionStatus = nil } + if resp.PipelineVersionId != nil { + ko.Spec.PipelineVersionID = resp.PipelineVersionId + } else { + ko.Spec.PipelineVersionID = nil + } if resp.SelectiveExecutionConfig != nil { - f12 := &svcapitypes.SelectiveExecutionConfig{} + f13 := &svcapitypes.SelectiveExecutionConfig{} if resp.SelectiveExecutionConfig.SelectedSteps != nil { - f12f0 := []*svcapitypes.SelectedStep{} - for _, f12f0iter := range resp.SelectiveExecutionConfig.SelectedSteps { - f12f0elem := &svcapitypes.SelectedStep{} - if f12f0iter.StepName != nil { - f12f0elem.StepName = f12f0iter.StepName + f13f0 := []*svcapitypes.SelectedStep{} + for _, f13f0iter := range resp.SelectiveExecutionConfig.SelectedSteps { + f13f0elem := &svcapitypes.SelectedStep{} + if f13f0iter.StepName != nil { + f13f0elem.StepName = f13f0iter.StepName } - f12f0 = append(f12f0, f12f0elem) + f13f0 = append(f13f0, f13f0elem) } - f12.SelectedSteps = f12f0 + f13.SelectedSteps = f13f0 } if resp.SelectiveExecutionConfig.SourcePipelineExecutionArn != nil { - f12.SourcePipelineExecutionARN = resp.SelectiveExecutionConfig.SourcePipelineExecutionArn + f13.SourcePipelineExecutionARN = resp.SelectiveExecutionConfig.SourcePipelineExecutionArn } - ko.Spec.SelectiveExecutionConfig = f12 + ko.Spec.SelectiveExecutionConfig = f13 } else { ko.Spec.SelectiveExecutionConfig = nil } @@ -272,23 +277,26 @@ func (rm *resourceManager) newCreateRequestPayload( } res.PipelineParameters = f4 } + if r.ko.Spec.PipelineVersionID != nil { + res.PipelineVersionId = r.ko.Spec.PipelineVersionID + } if r.ko.Spec.SelectiveExecutionConfig != nil { - f5 := &svcsdktypes.SelectiveExecutionConfig{} + f6 := &svcsdktypes.SelectiveExecutionConfig{} if r.ko.Spec.SelectiveExecutionConfig.SelectedSteps != nil { - f5f0 := []svcsdktypes.SelectedStep{} - for _, f5f0iter := range r.ko.Spec.SelectiveExecutionConfig.SelectedSteps { - f5f0elem := &svcsdktypes.SelectedStep{} - if f5f0iter.StepName != nil { - f5f0elem.StepName = f5f0iter.StepName + f6f0 := []svcsdktypes.SelectedStep{} + for _, f6f0iter := range r.ko.Spec.SelectiveExecutionConfig.SelectedSteps { + f6f0elem := &svcsdktypes.SelectedStep{} + if f6f0iter.StepName != nil { + f6f0elem.StepName = f6f0iter.StepName } - f5f0 = append(f5f0, *f5f0elem) + f6f0 = append(f6f0, *f6f0elem) } - f5.SelectedSteps = f5f0 + f6.SelectedSteps = f6f0 } if r.ko.Spec.SelectiveExecutionConfig.SourcePipelineExecutionARN != nil { - f5.SourcePipelineExecutionArn = r.ko.Spec.SelectiveExecutionConfig.SourcePipelineExecutionARN + f6.SourcePipelineExecutionArn = r.ko.Spec.SelectiveExecutionConfig.SourcePipelineExecutionARN } - res.SelectiveExecutionConfig = f5 + res.SelectiveExecutionConfig = f6 } return res, nil diff --git a/pkg/resource/space/delta.go b/pkg/resource/space/delta.go index a2a69f03..7efcdc6e 100644 --- a/pkg/resource/space/delta.go +++ b/pkg/resource/space/delta.go @@ -329,6 +329,20 @@ func newResourceDelta( } } } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.RemoteAccess, b.ko.Spec.SpaceSettings.RemoteAccess) { + delta.Add("Spec.SpaceSettings.RemoteAccess", a.ko.Spec.SpaceSettings.RemoteAccess, b.ko.Spec.SpaceSettings.RemoteAccess) + } else if a.ko.Spec.SpaceSettings.RemoteAccess != nil && b.ko.Spec.SpaceSettings.RemoteAccess != nil { + if *a.ko.Spec.SpaceSettings.RemoteAccess != *b.ko.Spec.SpaceSettings.RemoteAccess { + delta.Add("Spec.SpaceSettings.RemoteAccess", a.ko.Spec.SpaceSettings.RemoteAccess, b.ko.Spec.SpaceSettings.RemoteAccess) + } + } + if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.SpaceManagedResources, b.ko.Spec.SpaceSettings.SpaceManagedResources) { + delta.Add("Spec.SpaceSettings.SpaceManagedResources", a.ko.Spec.SpaceSettings.SpaceManagedResources, b.ko.Spec.SpaceSettings.SpaceManagedResources) + } else if a.ko.Spec.SpaceSettings.SpaceManagedResources != nil && b.ko.Spec.SpaceSettings.SpaceManagedResources != nil { + if *a.ko.Spec.SpaceSettings.SpaceManagedResources != *b.ko.Spec.SpaceSettings.SpaceManagedResources { + delta.Add("Spec.SpaceSettings.SpaceManagedResources", a.ko.Spec.SpaceSettings.SpaceManagedResources, b.ko.Spec.SpaceSettings.SpaceManagedResources) + } + } if ackcompare.HasNilDifference(a.ko.Spec.SpaceSettings.SpaceStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings) { delta.Add("Spec.SpaceSettings.SpaceStorageSettings", a.ko.Spec.SpaceSettings.SpaceStorageSettings, b.ko.Spec.SpaceSettings.SpaceStorageSettings) } else if a.ko.Spec.SpaceSettings.SpaceStorageSettings != nil && b.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { diff --git a/pkg/resource/space/sdk.go b/pkg/resource/space/sdk.go index e40a7ff5..0984c646 100644 --- a/pkg/resource/space/sdk.go +++ b/pkg/resource/space/sdk.go @@ -191,6 +191,24 @@ func (rm *resourceManager) sdkFind( } f9f2elem.EFSFileSystem = f9f2elemf0f0 } + case *svcsdktypes.CustomFileSystemMemberFSxLustreFileSystem: + f9f2elemf1 := f9f2iter.(*svcsdktypes.CustomFileSystemMemberFSxLustreFileSystem) + if f9f2elemf1 != nil { + f9f2elemf1f1 := &svcapitypes.FSxLustreFileSystem{} + if f9f2elemf1.Value.FileSystemId != nil { + f9f2elemf1f1.FileSystemID = f9f2elemf1.Value.FileSystemId + } + f9f2elem.FSxLustreFileSystem = f9f2elemf1f1 + } + case *svcsdktypes.CustomFileSystemMemberS3FileSystem: + f9f2elemf2 := f9f2iter.(*svcsdktypes.CustomFileSystemMemberS3FileSystem) + if f9f2elemf2 != nil { + f9f2elemf2f2 := &svcapitypes.S3FileSystem{} + if f9f2elemf2.Value.S3Uri != nil { + f9f2elemf2f2.S3URI = f9f2elemf2.Value.S3Uri + } + f9f2elem.S3FileSystem = f9f2elemf2f2 + } } f9f2 = append(f9f2, f9f2elem) } @@ -323,17 +341,23 @@ func (rm *resourceManager) sdkFind( } f9.KernelGatewayAppSettings = f9f5 } + if resp.SpaceSettings.RemoteAccess != "" { + f9.RemoteAccess = aws.String(string(resp.SpaceSettings.RemoteAccess)) + } + if resp.SpaceSettings.SpaceManagedResources != "" { + f9.SpaceManagedResources = aws.String(string(resp.SpaceSettings.SpaceManagedResources)) + } if resp.SpaceSettings.SpaceStorageSettings != nil { - f9f6 := &svcapitypes.SpaceStorageSettings{} + f9f8 := &svcapitypes.SpaceStorageSettings{} if resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings != nil { - f9f6f0 := &svcapitypes.EBSStorageSettings{} + f9f8f0 := &svcapitypes.EBSStorageSettings{} if resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings.EbsVolumeSizeInGb != nil { ebsVolumeSizeInGbCopy := int64(*resp.SpaceSettings.SpaceStorageSettings.EbsStorageSettings.EbsVolumeSizeInGb) - f9f6f0.EBSVolumeSizeInGb = &ebsVolumeSizeInGbCopy + f9f8f0.EBSVolumeSizeInGb = &ebsVolumeSizeInGbCopy } - f9f6.EBSStorageSettings = f9f6f0 + f9f8.EBSStorageSettings = f9f8f0 } - f9.SpaceStorageSettings = f9f6 + f9.SpaceStorageSettings = f9f8 } ko.Spec.SpaceSettings = f9 } else { @@ -515,6 +539,28 @@ func (rm *resourceManager) newCreateRequestPayload( } f4f2elemf0Parent.Value = *f4f2elemf0 } + if f4f2iter.FSxLustreFileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystem")) + } + f4f2elemf1Parent := &svcsdktypes.CustomFileSystemMemberFSxLustreFileSystem{} + f4f2elemf1 := &svcsdktypes.FSxLustreFileSystem{} + if f4f2iter.FSxLustreFileSystem.FileSystemID != nil { + f4f2elemf1.FileSystemId = f4f2iter.FSxLustreFileSystem.FileSystemID + } + f4f2elemf1Parent.Value = *f4f2elemf1 + } + if f4f2iter.S3FileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystem")) + } + f4f2elemf2Parent := &svcsdktypes.CustomFileSystemMemberS3FileSystem{} + f4f2elemf2 := &svcsdktypes.S3FileSystem{} + if f4f2iter.S3FileSystem.S3URI != nil { + f4f2elemf2.S3Uri = f4f2iter.S3FileSystem.S3URI + } + f4f2elemf2Parent.Value = *f4f2elemf2 + } f4f2 = append(f4f2, f4f2elem) } f4.CustomFileSystems = f4f2 @@ -654,21 +700,27 @@ func (rm *resourceManager) newCreateRequestPayload( } f4.KernelGatewayAppSettings = f4f5 } + if r.ko.Spec.SpaceSettings.RemoteAccess != nil { + f4.RemoteAccess = svcsdktypes.FeatureStatus(*r.ko.Spec.SpaceSettings.RemoteAccess) + } + if r.ko.Spec.SpaceSettings.SpaceManagedResources != nil { + f4.SpaceManagedResources = svcsdktypes.FeatureStatus(*r.ko.Spec.SpaceSettings.SpaceManagedResources) + } if r.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { - f4f6 := &svcsdktypes.SpaceStorageSettings{} + f4f8 := &svcsdktypes.SpaceStorageSettings{} if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil { - f4f6f0 := &svcsdktypes.EbsStorageSettings{} + f4f8f0 := &svcsdktypes.EbsStorageSettings{} if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil { ebsVolumeSizeInGbCopy0 := *r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb if ebsVolumeSizeInGbCopy0 > math.MaxInt32 || ebsVolumeSizeInGbCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field EbsVolumeSizeInGb is of type int32") } ebsVolumeSizeInGbCopy := int32(ebsVolumeSizeInGbCopy0) - f4f6f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy + f4f8f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy } - f4f6.EbsStorageSettings = f4f6f0 + f4f8.EbsStorageSettings = f4f8f0 } - f4.SpaceStorageSettings = f4f6 + f4.SpaceStorageSettings = f4f8 } res.SpaceSettings = f4 } @@ -819,6 +871,28 @@ func (rm *resourceManager) newUpdateRequestPayload( } f3f2elemf0Parent.Value = *f3f2elemf0 } + if f3f2iter.FSxLustreFileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystem")) + } + f3f2elemf1Parent := &svcsdktypes.CustomFileSystemMemberFSxLustreFileSystem{} + f3f2elemf1 := &svcsdktypes.FSxLustreFileSystem{} + if f3f2iter.FSxLustreFileSystem.FileSystemID != nil { + f3f2elemf1.FileSystemId = f3f2iter.FSxLustreFileSystem.FileSystemID + } + f3f2elemf1Parent.Value = *f3f2elemf1 + } + if f3f2iter.S3FileSystem != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystem")) + } + f3f2elemf2Parent := &svcsdktypes.CustomFileSystemMemberS3FileSystem{} + f3f2elemf2 := &svcsdktypes.S3FileSystem{} + if f3f2iter.S3FileSystem.S3URI != nil { + f3f2elemf2.S3Uri = f3f2iter.S3FileSystem.S3URI + } + f3f2elemf2Parent.Value = *f3f2elemf2 + } f3f2 = append(f3f2, f3f2elem) } f3.CustomFileSystems = f3f2 @@ -958,21 +1032,27 @@ func (rm *resourceManager) newUpdateRequestPayload( } f3.KernelGatewayAppSettings = f3f5 } + if r.ko.Spec.SpaceSettings.RemoteAccess != nil { + f3.RemoteAccess = svcsdktypes.FeatureStatus(*r.ko.Spec.SpaceSettings.RemoteAccess) + } + if r.ko.Spec.SpaceSettings.SpaceManagedResources != nil { + f3.SpaceManagedResources = svcsdktypes.FeatureStatus(*r.ko.Spec.SpaceSettings.SpaceManagedResources) + } if r.ko.Spec.SpaceSettings.SpaceStorageSettings != nil { - f3f6 := &svcsdktypes.SpaceStorageSettings{} + f3f8 := &svcsdktypes.SpaceStorageSettings{} if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings != nil { - f3f6f0 := &svcsdktypes.EbsStorageSettings{} + f3f8f0 := &svcsdktypes.EbsStorageSettings{} if r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb != nil { ebsVolumeSizeInGbCopy0 := *r.ko.Spec.SpaceSettings.SpaceStorageSettings.EBSStorageSettings.EBSVolumeSizeInGb if ebsVolumeSizeInGbCopy0 > math.MaxInt32 || ebsVolumeSizeInGbCopy0 < math.MinInt32 { return nil, fmt.Errorf("error: field EbsVolumeSizeInGb is of type int32") } ebsVolumeSizeInGbCopy := int32(ebsVolumeSizeInGbCopy0) - f3f6f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy + f3f8f0.EbsVolumeSizeInGb = &ebsVolumeSizeInGbCopy } - f3f6.EbsStorageSettings = f3f6f0 + f3f8.EbsStorageSettings = f3f8f0 } - f3.SpaceStorageSettings = f3f6 + f3.SpaceStorageSettings = f3f8 } res.SpaceSettings = f3 } diff --git a/pkg/resource/training_job/delta.go b/pkg/resource/training_job/delta.go index a9797a36..fedc4171 100644 --- a/pkg/resource/training_job/delta.go +++ b/pkg/resource/training_job/delta.go @@ -296,6 +296,24 @@ func newResourceDelta( delta.Add("Spec.ResourceConfig.InstanceGroups", a.ko.Spec.ResourceConfig.InstanceGroups, b.ko.Spec.ResourceConfig.InstanceGroups) } } + if ackcompare.HasNilDifference(a.ko.Spec.ResourceConfig.InstancePlacementConfig, b.ko.Spec.ResourceConfig.InstancePlacementConfig) { + delta.Add("Spec.ResourceConfig.InstancePlacementConfig", a.ko.Spec.ResourceConfig.InstancePlacementConfig, b.ko.Spec.ResourceConfig.InstancePlacementConfig) + } else if a.ko.Spec.ResourceConfig.InstancePlacementConfig != nil && b.ko.Spec.ResourceConfig.InstancePlacementConfig != nil { + if ackcompare.HasNilDifference(a.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) { + delta.Add("Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs", a.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) + } else if a.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil && b.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + if *a.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != *b.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs { + delta.Add("Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs", a.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs, b.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs) + } + } + if len(a.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) != len(b.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) { + delta.Add("Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications", a.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) + } else if len(a.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) > 0 { + if !reflect.DeepEqual(a.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) { + delta.Add("Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications", a.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications, b.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications) + } + } + } if ackcompare.HasNilDifference(a.ko.Spec.ResourceConfig.InstanceType, b.ko.Spec.ResourceConfig.InstanceType) { delta.Add("Spec.ResourceConfig.InstanceType", a.ko.Spec.ResourceConfig.InstanceType, b.ko.Spec.ResourceConfig.InstanceType) } else if a.ko.Spec.ResourceConfig.InstanceType != nil && b.ko.Spec.ResourceConfig.InstanceType != nil { @@ -310,6 +328,13 @@ func newResourceDelta( delta.Add("Spec.ResourceConfig.KeepAlivePeriodInSeconds", a.ko.Spec.ResourceConfig.KeepAlivePeriodInSeconds, b.ko.Spec.ResourceConfig.KeepAlivePeriodInSeconds) } } + if ackcompare.HasNilDifference(a.ko.Spec.ResourceConfig.TrainingPlanARN, b.ko.Spec.ResourceConfig.TrainingPlanARN) { + delta.Add("Spec.ResourceConfig.TrainingPlanARN", a.ko.Spec.ResourceConfig.TrainingPlanARN, b.ko.Spec.ResourceConfig.TrainingPlanARN) + } else if a.ko.Spec.ResourceConfig.TrainingPlanARN != nil && b.ko.Spec.ResourceConfig.TrainingPlanARN != nil { + if *a.ko.Spec.ResourceConfig.TrainingPlanARN != *b.ko.Spec.ResourceConfig.TrainingPlanARN { + delta.Add("Spec.ResourceConfig.TrainingPlanARN", a.ko.Spec.ResourceConfig.TrainingPlanARN, b.ko.Spec.ResourceConfig.TrainingPlanARN) + } + } if ackcompare.HasNilDifference(a.ko.Spec.ResourceConfig.VolumeKMSKeyID, b.ko.Spec.ResourceConfig.VolumeKMSKeyID) { delta.Add("Spec.ResourceConfig.VolumeKMSKeyID", a.ko.Spec.ResourceConfig.VolumeKMSKeyID, b.ko.Spec.ResourceConfig.VolumeKMSKeyID) } else if a.ko.Spec.ResourceConfig.VolumeKMSKeyID != nil && b.ko.Spec.ResourceConfig.VolumeKMSKeyID != nil { diff --git a/pkg/resource/training_job/sdk.go b/pkg/resource/training_job/sdk.go index 57cc447b..39c79c06 100644 --- a/pkg/resource/training_job/sdk.go +++ b/pkg/resource/training_job/sdk.go @@ -316,9 +316,23 @@ func (rm *resourceManager) sdkFind( if f17iter.DataSource.S3DataSource.AttributeNames != nil { f17elemf3f1.AttributeNames = aws.StringSlice(f17iter.DataSource.S3DataSource.AttributeNames) } + if f17iter.DataSource.S3DataSource.HubAccessConfig != nil { + f17elemf3f1f1 := &svcapitypes.HubAccessConfig{} + if f17iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn != nil { + f17elemf3f1f1.HubContentARN = f17iter.DataSource.S3DataSource.HubAccessConfig.HubContentArn + } + f17elemf3f1.HubAccessConfig = f17elemf3f1f1 + } if f17iter.DataSource.S3DataSource.InstanceGroupNames != nil { f17elemf3f1.InstanceGroupNames = aws.StringSlice(f17iter.DataSource.S3DataSource.InstanceGroupNames) } + if f17iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f17elemf3f1f3 := &svcapitypes.ModelAccessConfig{} + if f17iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f17elemf3f1f3.AcceptEula = f17iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f17elemf3f1.ModelAccessConfig = f17elemf3f1f3 + } if f17iter.DataSource.S3DataSource.S3DataDistributionType != "" { f17elemf3f1.S3DataDistributionType = aws.String(string(f17iter.DataSource.S3DataSource.S3DataDistributionType)) } @@ -490,6 +504,28 @@ func (rm *resourceManager) sdkFind( } f27.InstanceGroups = f27f1 } + if resp.ResourceConfig.InstancePlacementConfig != nil { + f27f2 := &svcapitypes.InstancePlacementConfig{} + if resp.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f27f2.EnableMultipleJobs = resp.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if resp.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f27f2f1 := []*svcapitypes.PlacementSpecification{} + for _, f27f2f1iter := range resp.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f27f2f1elem := &svcapitypes.PlacementSpecification{} + if f27f2f1iter.InstanceCount != nil { + instanceCountCopy := int64(*f27f2f1iter.InstanceCount) + f27f2f1elem.InstanceCount = &instanceCountCopy + } + if f27f2f1iter.UltraServerId != nil { + f27f2f1elem.UltraServerID = f27f2f1iter.UltraServerId + } + f27f2f1 = append(f27f2f1, f27f2f1elem) + } + f27f2.PlacementSpecifications = f27f2f1 + } + f27.InstancePlacementConfig = f27f2 + } if resp.ResourceConfig.InstanceType != "" { f27.InstanceType = aws.String(string(resp.ResourceConfig.InstanceType)) } @@ -497,6 +533,9 @@ func (rm *resourceManager) sdkFind( keepAlivePeriodInSecondsCopy := int64(*resp.ResourceConfig.KeepAlivePeriodInSeconds) f27.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if resp.ResourceConfig.TrainingPlanArn != nil { + f27.TrainingPlanARN = resp.ResourceConfig.TrainingPlanArn + } if resp.ResourceConfig.VolumeKmsKeyId != nil { f27.VolumeKMSKeyID = resp.ResourceConfig.VolumeKmsKeyId } @@ -853,9 +892,23 @@ func (rm *resourceManager) newCreateRequestPayload( if f11iter.DataSource.S3DataSource.AttributeNames != nil { f11elemf3f1.AttributeNames = aws.ToStringSlice(f11iter.DataSource.S3DataSource.AttributeNames) } + if f11iter.DataSource.S3DataSource.HubAccessConfig != nil { + f11elemf3f1f1 := &svcsdktypes.HubAccessConfig{} + if f11iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN != nil { + f11elemf3f1f1.HubContentArn = f11iter.DataSource.S3DataSource.HubAccessConfig.HubContentARN + } + f11elemf3f1.HubAccessConfig = f11elemf3f1f1 + } if f11iter.DataSource.S3DataSource.InstanceGroupNames != nil { f11elemf3f1.InstanceGroupNames = aws.ToStringSlice(f11iter.DataSource.S3DataSource.InstanceGroupNames) } + if f11iter.DataSource.S3DataSource.ModelAccessConfig != nil { + f11elemf3f1f3 := &svcsdktypes.ModelAccessConfig{} + if f11iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula != nil { + f11elemf3f1f3.AcceptEula = f11iter.DataSource.S3DataSource.ModelAccessConfig.AcceptEula + } + f11elemf3f1.ModelAccessConfig = f11elemf3f1f3 + } if f11iter.DataSource.S3DataSource.S3DataDistributionType != nil { f11elemf3f1.S3DataDistributionType = svcsdktypes.S3DataDistribution(*f11iter.DataSource.S3DataSource.S3DataDistributionType) } @@ -985,6 +1038,32 @@ func (rm *resourceManager) newCreateRequestPayload( } f16.InstanceGroups = f16f1 } + if r.ko.Spec.ResourceConfig.InstancePlacementConfig != nil { + f16f2 := &svcsdktypes.InstancePlacementConfig{} + if r.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs != nil { + f16f2.EnableMultipleJobs = r.ko.Spec.ResourceConfig.InstancePlacementConfig.EnableMultipleJobs + } + if r.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications != nil { + f16f2f1 := []svcsdktypes.PlacementSpecification{} + for _, f16f2f1iter := range r.ko.Spec.ResourceConfig.InstancePlacementConfig.PlacementSpecifications { + f16f2f1elem := &svcsdktypes.PlacementSpecification{} + if f16f2f1iter.InstanceCount != nil { + instanceCountCopy0 := *f16f2f1iter.InstanceCount + if instanceCountCopy0 > math.MaxInt32 || instanceCountCopy0 < math.MinInt32 { + return nil, fmt.Errorf("error: field InstanceCount is of type int32") + } + instanceCountCopy := int32(instanceCountCopy0) + f16f2f1elem.InstanceCount = &instanceCountCopy + } + if f16f2f1iter.UltraServerID != nil { + f16f2f1elem.UltraServerId = f16f2f1iter.UltraServerID + } + f16f2f1 = append(f16f2f1, *f16f2f1elem) + } + f16f2.PlacementSpecifications = f16f2f1 + } + f16.InstancePlacementConfig = f16f2 + } if r.ko.Spec.ResourceConfig.InstanceType != nil { f16.InstanceType = svcsdktypes.TrainingInstanceType(*r.ko.Spec.ResourceConfig.InstanceType) } @@ -996,6 +1075,9 @@ func (rm *resourceManager) newCreateRequestPayload( keepAlivePeriodInSecondsCopy := int32(keepAlivePeriodInSecondsCopy0) f16.KeepAlivePeriodInSeconds = &keepAlivePeriodInSecondsCopy } + if r.ko.Spec.ResourceConfig.TrainingPlanARN != nil { + f16.TrainingPlanArn = r.ko.Spec.ResourceConfig.TrainingPlanARN + } if r.ko.Spec.ResourceConfig.VolumeKMSKeyID != nil { f16.VolumeKmsKeyId = r.ko.Spec.ResourceConfig.VolumeKMSKeyID } diff --git a/pkg/resource/transform_job/delta.go b/pkg/resource/transform_job/delta.go index ca240745..4ff00e3e 100644 --- a/pkg/resource/transform_job/delta.go +++ b/pkg/resource/transform_job/delta.go @@ -250,6 +250,13 @@ func newResourceDelta( delta.Add("Spec.TransformResources.InstanceType", a.ko.Spec.TransformResources.InstanceType, b.ko.Spec.TransformResources.InstanceType) } } + if ackcompare.HasNilDifference(a.ko.Spec.TransformResources.TransformAMIVersion, b.ko.Spec.TransformResources.TransformAMIVersion) { + delta.Add("Spec.TransformResources.TransformAMIVersion", a.ko.Spec.TransformResources.TransformAMIVersion, b.ko.Spec.TransformResources.TransformAMIVersion) + } else if a.ko.Spec.TransformResources.TransformAMIVersion != nil && b.ko.Spec.TransformResources.TransformAMIVersion != nil { + if *a.ko.Spec.TransformResources.TransformAMIVersion != *b.ko.Spec.TransformResources.TransformAMIVersion { + delta.Add("Spec.TransformResources.TransformAMIVersion", a.ko.Spec.TransformResources.TransformAMIVersion, b.ko.Spec.TransformResources.TransformAMIVersion) + } + } if ackcompare.HasNilDifference(a.ko.Spec.TransformResources.VolumeKMSKeyID, b.ko.Spec.TransformResources.VolumeKMSKeyID) { delta.Add("Spec.TransformResources.VolumeKMSKeyID", a.ko.Spec.TransformResources.VolumeKMSKeyID, b.ko.Spec.TransformResources.VolumeKMSKeyID) } else if a.ko.Spec.TransformResources.VolumeKMSKeyID != nil && b.ko.Spec.TransformResources.VolumeKMSKeyID != nil { diff --git a/pkg/resource/transform_job/sdk.go b/pkg/resource/transform_job/sdk.go index c335393e..de4563c9 100644 --- a/pkg/resource/transform_job/sdk.go +++ b/pkg/resource/transform_job/sdk.go @@ -240,6 +240,9 @@ func (rm *resourceManager) sdkFind( if resp.TransformResources.InstanceType != "" { f18.InstanceType = aws.String(string(resp.TransformResources.InstanceType)) } + if resp.TransformResources.TransformAmiVersion != nil { + f18.TransformAMIVersion = resp.TransformResources.TransformAmiVersion + } if resp.TransformResources.VolumeKmsKeyId != nil { f18.VolumeKMSKeyID = resp.TransformResources.VolumeKmsKeyId } @@ -469,6 +472,9 @@ func (rm *resourceManager) newCreateRequestPayload( if r.ko.Spec.TransformResources.InstanceType != nil { f12.InstanceType = svcsdktypes.TransformInstanceType(*r.ko.Spec.TransformResources.InstanceType) } + if r.ko.Spec.TransformResources.TransformAMIVersion != nil { + f12.TransformAmiVersion = r.ko.Spec.TransformResources.TransformAMIVersion + } if r.ko.Spec.TransformResources.VolumeKMSKeyID != nil { f12.VolumeKmsKeyId = r.ko.Spec.TransformResources.VolumeKMSKeyID } diff --git a/pkg/resource/user_profile/sdk.go b/pkg/resource/user_profile/sdk.go index a0c214d0..116402f5 100644 --- a/pkg/resource/user_profile/sdk.go +++ b/pkg/resource/user_profile/sdk.go @@ -168,6 +168,30 @@ func (rm *resourceManager) sdkFind( } f10f1elem.EFSFileSystemConfig = f10f1elemf0f0 } + case *svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig: + f10f1elemf1 := f10f1iter.(*svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig) + if f10f1elemf1 != nil { + f10f1elemf1f1 := &svcapitypes.FSxLustreFileSystemConfig{} + if f10f1elemf1.Value.FileSystemId != nil { + f10f1elemf1f1.FileSystemID = f10f1elemf1.Value.FileSystemId + } + if f10f1elemf1.Value.FileSystemPath != nil { + f10f1elemf1f1.FileSystemPath = f10f1elemf1.Value.FileSystemPath + } + f10f1elem.FSxLustreFileSystemConfig = f10f1elemf1f1 + } + case *svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig: + f10f1elemf2 := f10f1iter.(*svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig) + if f10f1elemf2 != nil { + f10f1elemf2f2 := &svcapitypes.S3FileSystemConfig{} + if f10f1elemf2.Value.MountPath != nil { + f10f1elemf2f2.MountPath = f10f1elemf2.Value.MountPath + } + if f10f1elemf2.Value.S3Uri != nil { + f10f1elemf2f2.S3URI = f10f1elemf2.Value.S3Uri + } + f10f1elem.S3FileSystemConfig = f10f1elemf2f2 + } } f10f1 = append(f10f1, f10f1elem) } @@ -551,6 +575,34 @@ func (rm *resourceManager) newCreateRequestPayload( } f5f1elemf0Parent.Value = *f5f1elemf0 } + if f5f1iter.FSxLustreFileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystemConfig")) + } + f5f1elemf1Parent := &svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig{} + f5f1elemf1 := &svcsdktypes.FSxLustreFileSystemConfig{} + if f5f1iter.FSxLustreFileSystemConfig.FileSystemID != nil { + f5f1elemf1.FileSystemId = f5f1iter.FSxLustreFileSystemConfig.FileSystemID + } + if f5f1iter.FSxLustreFileSystemConfig.FileSystemPath != nil { + f5f1elemf1.FileSystemPath = f5f1iter.FSxLustreFileSystemConfig.FileSystemPath + } + f5f1elemf1Parent.Value = *f5f1elemf1 + } + if f5f1iter.S3FileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystemConfig")) + } + f5f1elemf2Parent := &svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig{} + f5f1elemf2 := &svcsdktypes.S3FileSystemConfig{} + if f5f1iter.S3FileSystemConfig.MountPath != nil { + f5f1elemf2.MountPath = f5f1iter.S3FileSystemConfig.MountPath + } + if f5f1iter.S3FileSystemConfig.S3URI != nil { + f5f1elemf2.S3Uri = f5f1iter.S3FileSystemConfig.S3URI + } + f5f1elemf2Parent.Value = *f5f1elemf2 + } f5f1 = append(f5f1, f5f1elem) } f5.CustomFileSystemConfigs = f5f1 @@ -903,6 +955,34 @@ func (rm *resourceManager) newUpdateRequestPayload( } f2f1elemf0Parent.Value = *f2f1elemf0 } + if f2f1iter.FSxLustreFileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for FSxLustreFileSystemConfig")) + } + f2f1elemf1Parent := &svcsdktypes.CustomFileSystemConfigMemberFSxLustreFileSystemConfig{} + f2f1elemf1 := &svcsdktypes.FSxLustreFileSystemConfig{} + if f2f1iter.FSxLustreFileSystemConfig.FileSystemID != nil { + f2f1elemf1.FileSystemId = f2f1iter.FSxLustreFileSystemConfig.FileSystemID + } + if f2f1iter.FSxLustreFileSystemConfig.FileSystemPath != nil { + f2f1elemf1.FileSystemPath = f2f1iter.FSxLustreFileSystemConfig.FileSystemPath + } + f2f1elemf1Parent.Value = *f2f1elemf1 + } + if f2f1iter.S3FileSystemConfig != nil { + if isInterfaceSet { + return nil, ackerr.NewTerminalError(fmt.Errorf("can only set one of the members for S3FileSystemConfig")) + } + f2f1elemf2Parent := &svcsdktypes.CustomFileSystemConfigMemberS3FileSystemConfig{} + f2f1elemf2 := &svcsdktypes.S3FileSystemConfig{} + if f2f1iter.S3FileSystemConfig.MountPath != nil { + f2f1elemf2.MountPath = f2f1iter.S3FileSystemConfig.MountPath + } + if f2f1iter.S3FileSystemConfig.S3URI != nil { + f2f1elemf2.S3Uri = f2f1iter.S3FileSystemConfig.S3URI + } + f2f1elemf2Parent.Value = *f2f1elemf2 + } f2f1 = append(f2f1, f2f1elem) } f2.CustomFileSystemConfigs = f2f1