-
Notifications
You must be signed in to change notification settings - Fork 53
Add model serving #697
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Add model serving #697
Changes from 1 commit
Commits
Show all changes
38 commits
Select commit
Hold shift + click to select a range
3785644
add model serving
PatrickKoss e4921b6
add right provider config
PatrickKoss 39a66fd
rename model_serving to modelserving
PatrickKoss b12dab4
add model serving custom endpoint everywhere
PatrickKoss a53492a
rename file
PatrickKoss 1ecd53c
Merge branch 'stackitcloud:main' into main
PatrickKoss 4282256
add default region, docs for model serving
PatrickKoss 7a0bb61
add right order of wait handler
PatrickKoss 6df67d0
rotate after to token
PatrickKoss 5276be4
fixes
PatrickKoss e53ce45
add initial doc files
PatrickKoss 371fd6e
Merge branch 'stackitcloud:main' into main
PatrickKoss 155fe08
Merge branch 'stackitcloud:main' into main
PatrickKoss f2c4594
address code comments
PatrickKoss 0b8ca3f
refactor region description
PatrickKoss 003a818
remove warning for not found resources
PatrickKoss 6b10b86
add service enablement
PatrickKoss 5c742eb
Merge branch 'stackitcloud:main' into main
PatrickKoss 01201ed
Merge branch 'stackitcloud:main' into main
PatrickKoss dcd6460
Merge branch 'stackitcloud:main' into main
PatrickKoss 73d82ff
address code comments
PatrickKoss 3fb95c9
address code comments
PatrickKoss 6c0eff3
Merge branch 'stackitcloud:main' into main
PatrickKoss 1353e1b
fix datasource
PatrickKoss ca19e0f
fix acc test
PatrickKoss 2d09297
review changes
h3adex 06f7da7
review changes
h3adex d10f857
review changes
h3adex 2d35713
review changes
h3adex b42f63c
review changes
h3adex d4d3c38
Merge branch 'stackitcloud:main' into main
PatrickKoss c2c152b
review changes
h3adex c73de13
review changes
h3adex 8f06fb7
review changes
h3adex 1623a0d
review changes
h3adex 8e65c1f
embed markdown description
h3adex fbea85a
Merge branch 'main' into main
h3adex 68f1c63
go tidy
h3adex File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
237 changes: 237 additions & 0 deletions
237
stackit/internal/services/modelserving/model_serving_acc_test.go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,237 @@ | ||
| package modelserving_test | ||
|
|
||
| import ( | ||
| "context" | ||
| "fmt" | ||
| "strings" | ||
| "testing" | ||
|
|
||
| "github.com/hashicorp/terraform-plugin-testing/helper/resource" | ||
| "github.com/hashicorp/terraform-plugin-testing/terraform" | ||
| "github.com/stackitcloud/stackit-sdk-go/core/config" | ||
| "github.com/stackitcloud/stackit-sdk-go/services/modelserving" | ||
| "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/core" | ||
| "github.com/stackitcloud/terraform-provider-stackit/stackit/internal/testutil" | ||
| ) | ||
|
|
||
| // Token resource data | ||
| var tokenResource = map[string]string{ | ||
| "project_id": testutil.ProjectId, | ||
| "name": testutil.ResourceNameWithDateTime("token"), | ||
| "description": "my description", | ||
| "description_updated": "my description updated", | ||
| "region": testutil.Region, | ||
| "ttl_duration": "1h", | ||
| } | ||
|
|
||
| func inputTokenConfig(name, description string) string { | ||
| return fmt.Sprintf(` | ||
| %s | ||
|
|
||
| resource "stackit_model_serving_token" "token" { | ||
| project_id = "%s" | ||
| region = "%s" | ||
| name = "%s" | ||
| description = "%s" | ||
| ttl_duration = "%s" | ||
| } | ||
| `, | ||
| testutil.ModelServingProviderConfig(), | ||
| tokenResource["project_id"], | ||
| tokenResource["region"], | ||
| name, | ||
| description, | ||
| tokenResource["ttl_duration"], | ||
| ) | ||
| } | ||
|
|
||
| func TestAccModelServingTokenResource(t *testing.T) { | ||
| resource.ParallelTest(t, resource.TestCase{ | ||
| ProtoV6ProviderFactories: testutil.TestAccProtoV6ProviderFactories, | ||
| CheckDestroy: testAccCheckModelServingTokenDestroy, | ||
| Steps: []resource.TestStep{ | ||
| // Creation | ||
| { | ||
| Config: inputTokenConfig(tokenResource["name"], tokenResource["description"]), | ||
| Check: resource.ComposeAggregateTestCheckFunc( | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "project_id", | ||
| tokenResource["project_id"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "region", | ||
| tokenResource["region"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "name", | ||
| tokenResource["name"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "description", | ||
| tokenResource["description"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "ttl_duration", | ||
| tokenResource["ttl_duration"], | ||
| ), | ||
| resource.TestCheckResourceAttrSet( | ||
| "stackit_model_serving_token.token", | ||
| "token_id", | ||
| ), | ||
| resource.TestCheckResourceAttrSet("stackit_model_serving_token.token", "state"), | ||
| resource.TestCheckResourceAttrSet( | ||
| "stackit_model_serving_token.token", | ||
| "validUntil", | ||
| ), | ||
| resource.TestCheckResourceAttrSet( | ||
| "stackit_model_serving_token.token", | ||
| "content", | ||
| ), | ||
| ), | ||
| }, | ||
| // Data Source | ||
| { | ||
| Config: fmt.Sprintf(` | ||
| %s | ||
|
|
||
| data "stackit_model_serving_token" "token" { | ||
| project_id = stackit_model_serving_token.token.project_id | ||
| token_id = stackit_model_serving_token.token.token_id | ||
| region = stackit_model_serving_token.token.region | ||
| }`, | ||
| inputTokenConfig(tokenResource["name"], tokenResource["description"]), | ||
| ), | ||
| Check: resource.ComposeAggregateTestCheckFunc( | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "project_id", | ||
| "data.stackit_model_serving_token.token", "project_id", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "token_id", | ||
| "data.stackit_model_serving_token.token", "token_id", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "region", | ||
| "data.stackit_model_serving_token.token", "region", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "name", | ||
| "data.stackit_model_serving_token.token", "name", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "description", | ||
| "data.stackit_model_serving_token.token", "description", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "state", | ||
| "data.stackit_model_serving_token.token", "state", | ||
| ), | ||
| resource.TestCheckResourceAttrPair( | ||
| "stackit_model_serving_token.token", "validUntil", | ||
| "data.stackit_model_serving_token.token", "validUntil", | ||
| ), | ||
| ), | ||
| }, | ||
| // Import | ||
| { | ||
| ResourceName: "stackit_model_serving_token.token", | ||
| ImportStateIdFunc: func(s *terraform.State) (string, error) { | ||
| r, ok := s.RootModule().Resources["stackit_model_serving_token.token"] | ||
| if !ok { | ||
| return "", fmt.Errorf( | ||
| "couldn't find resource stackit_model_serving_token.token", | ||
| ) | ||
| } | ||
| tokenId, ok := r.Primary.Attributes["token_id"] | ||
| if !ok { | ||
| return "", fmt.Errorf("couldn't find attribute token_id") | ||
| } | ||
|
|
||
| return fmt.Sprintf("%s,%s", testutil.ProjectId, tokenId), nil | ||
| }, | ||
| ImportState: true, | ||
| ImportStateVerify: true, | ||
| }, | ||
| // Update | ||
| { | ||
| Config: inputTokenConfig( | ||
| tokenResource["name"], | ||
| tokenResource["description_updated"], | ||
| ), | ||
| Check: resource.ComposeAggregateTestCheckFunc( | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "project_id", | ||
| tokenResource["project_id"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "region", | ||
| tokenResource["region"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "name", | ||
| tokenResource["name"], | ||
| ), | ||
| resource.TestCheckResourceAttr( | ||
| "stackit_model_serving_token.token", | ||
| "description", | ||
| tokenResource["description_updated"], | ||
| ), | ||
| resource.TestCheckResourceAttrSet( | ||
| "stackit_model_serving_token.token", | ||
| "token_id", | ||
| ), | ||
| resource.TestCheckResourceAttrSet("stackit_model_serving_token.token", "state"), | ||
| resource.TestCheckResourceAttrSet( | ||
| "stackit_model_serving_token.token", | ||
| "validUntil", | ||
| ), | ||
| ), | ||
| }, | ||
| // Deletion is done by the framework implicitly | ||
| }, | ||
| }) | ||
| } | ||
|
|
||
| func testAccCheckModelServingTokenDestroy(s *terraform.State) error { | ||
| ctx := context.Background() | ||
|
|
||
| var client *modelserving.APIClient | ||
| var err error | ||
| if testutil.ModelServingCustomEndpoint == "" { | ||
| client, err = modelserving.NewAPIClient() | ||
| } else { | ||
| client, err = modelserving.NewAPIClient( | ||
| config.WithEndpoint(testutil.ModelServingCustomEndpoint), | ||
| ) | ||
| } | ||
| if err != nil { | ||
| return fmt.Errorf("creating client: %w", err) | ||
| } | ||
|
|
||
| for _, rs := range s.RootModule().Resources { | ||
| if rs.Type != "stackit_model_serving_token" { | ||
| continue | ||
| } | ||
| // Token terraform ID: "[projectId],[tokenId]" | ||
| idParts := strings.Split(rs.Primary.ID, core.Separator) | ||
| if len(idParts) != 2 { | ||
| return fmt.Errorf("invalid ID: %s", rs.Primary.ID) | ||
| } | ||
| tokenId := idParts[1] | ||
|
|
||
| _, err := client.GetToken(ctx, testutil.Region, testutil.ProjectId, tokenId).Execute() | ||
| if err == nil { | ||
| return fmt.Errorf("token %s still exists", tokenId) | ||
| } | ||
| } | ||
|
|
||
| return nil | ||
| } | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.