Skip to content
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

feat: Account v1 readiness resource #3252

Merged
merged 12 commits into from
Dec 11, 2024

Conversation

sfc-gh-jcieslak
Copy link
Collaborator

@sfc-gh-jcieslak sfc-gh-jcieslak commented Dec 6, 2024

Introduces refactor to already existing snowflake_account resource.

Changes

  • Refactored existing account resource
  • Completely rewritten acceptance tests
  • Introduced a return type from Create command that is used to parse org_name + acc_name that is later used in creating new resource id. The output is always returned. Adding another SQL calls to get this information may an issue. For example, when account was successfully created, but e.g. current organization_name couldn't be fetched; this situation will end up with created account, but with no connection to the terraform config of this account. This could be fixed by manually importing the resource. We can discuss this on Monday.

Next pr

  • data source
  • next account resource

@sfc-gh-jcieslak sfc-gh-jcieslak marked this pull request as ready for review December 6, 2024 14:46
Copy link

github-actions bot commented Dec 6, 2024

Integration tests failure for ad871181d6e2ffda271e939980066b1857ff6f2c

Copy link

github-actions bot commented Dec 6, 2024

Integration tests failure for 9893fabbfeba275fadc4e7d979611d9cdf771634

pkg/sdk/testint/accounts_integration_test.go Outdated Show resolved Hide resolved
pkg/sdk/accounts.go Outdated Show resolved Hide resolved
Region string `json:"region,omitempty"`
}

func ToAccountCreateResponse(v string) (*AccountCreateResponse, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we could just implement UnmarshalJSON here.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can but let's postpone it after V1 pls


for _, tc := range testCases {
t.Run(tc.Name, func(t *testing.T) {
input := tc.RawInput
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: we can handle rawinput outside and simplify the setup here. Similarly with asserting errors.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For later

pkg/sdk/identifier_helpers.go Outdated Show resolved Hide resolved
func ImportAccount(ctx context.Context, d *schema.ResourceData, meta any) ([]*schema.ResourceData, error) {
client := meta.(*provider.Context).Client

isOrgAdmin, err := client.ContextFunctions.IsRoleInSession(ctx, snowflakeroles.Orgadmin)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we can extract it to a separate wrapper.

Copy link
Collaborator Author

@sfc-gh-jcieslak sfc-gh-jcieslak Dec 10, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's leave this open. I'll address this in the following prs after v1.

pkg/resources/account.go Show resolved Hide resolved
pkg/resources/account.go Show resolved Hide resolved
}
// Setting from default to false and vice versa is not allowed because Snowflake throws an error on already disabled IsOrgAdmin
canUpdate := true
if (oldIsOrgAdmin.(string) == BooleanFalse && newIsOrgAdmin.(string) == BooleanDefault) ||
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we manage this in diff suppress?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, not sure, maybe I did something different than we usually do with tri-value-bool or I just found its flaw here. Either way, I would like to leave it this way for now. Let's leave the comment and I'll check this after v1. Currently, it's working.

pkg/resources/account_state_upgraders.go Show resolved Hide resolved
sfc-gh-asawicki
sfc-gh-asawicki previously approved these changes Dec 9, 2024
Region string `json:"region,omitempty"`
}

func ToAccountCreateResponse(v string) (*AccountCreateResponse, error) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we can but let's postpone it after V1 pls

pkg/resources/account.go Outdated Show resolved Hide resolved
Copy link

Integration tests failure for d2b6f6fade16d8d9e2c37c18846e28964e234879

@sfc-gh-jcieslak sfc-gh-jcieslak merged commit 8f5698d into main Dec 11, 2024
8 of 9 checks passed
@sfc-gh-jcieslak sfc-gh-jcieslak deleted the account-v1-readiness-resource-modification branch December 11, 2024 10:32
sfc-gh-jcieslak pushed a commit that referenced this pull request Dec 12, 2024
🤖 I have created a release *beep* *boop*
---


##
[0.100.0](v0.99.0...v0.100.0)
(2024-12-12)


### 🎉 **What's new:**

* Account v1 readiness
([#3236](#3236))
([5df33a8](5df33a8))
* Account v1 readiness generated files
([#3242](#3242))
([3df59dd](3df59dd))
* Account v1 readiness resource
([#3252](#3252))
([8f5698d](8f5698d))
* Add a new account roles data source
([#3257](#3257))
([b3d6b9e](b3d6b9e))
* Add account data source
([#3261](#3261))
([6087fc9](6087fc9))
* Add all other functions and procedures implementations
([#3275](#3275))
([7a6f68d](7a6f68d))
* Basic functions implementation
([#3269](#3269))
([6d4a103](6d4a103))
* Basic procedures implementation
([#3271](#3271))
([933335f](933335f))
* Docs, test, and missing parameter
([#3280](#3280))
([10517f3](10517f3))
* Functions and procedures schemas and generated sources
([#3262](#3262))
([9b70f87](9b70f87))
* Functions sdk update
([#3254](#3254))
([fc1eace](fc1eace))
* Handle missing fields in function and procedure
([#3273](#3273))
([53e7a0a](53e7a0a))
* Procedures schemas and generated sources
([#3263](#3263))
([211ad46](211ad46))
* Procedures sdk update
([#3255](#3255))
([682606a](682606a))
* Rework account parameter resource
([#3264](#3264))
([15aa9c2](15aa9c2))
* Rework data types
([#3244](#3244))
([05ada91](05ada91))
* support table data type
([#3274](#3274))
([13401d5](13401d5))
* Tag association v1 readiness
([#3210](#3210))
([04f6d54](04f6d54))
* Test imports and small fixes
([#3276](#3276))
([a712195](a712195))
* Unsafe execute v1 readiness
([#3266](#3266))
([c4f1e8f](c4f1e8f))
* Use new data types in sql builder for functions and procedures
([#3247](#3247))
([69f677a](69f677a))


### 🔧 **Misc**

* Add ShowByID filtering generation
([#3227](#3227))
([548ec42](548ec42))
* Adress small task-related todos
([#3243](#3243))
([40de9ae](40de9ae))
* Apply masking
([#3234](#3234))
([c209a8a](c209a8a))
* fix missing references in toOpts and changes with newlines
([#3240](#3240))
([246547f](246547f))
* function tests
([#3279](#3279))
([5af6efb](5af6efb))
* Improve config builders
([#3207](#3207))
([425787c](425787c))
* Revert to proper env
([#3238](#3238))
([5d4ed3b](5d4ed3b))
* Use service user for ci
([#3228](#3228))
([2fb50d7](2fb50d7))


### 🐛 **Bug fixes:**

* Make blocked_roles_field optional in OAuth security integrations
([#3267](#3267))
([7197b57](7197b57))
* Minor fixes
([#3231](#3231))
([1863bf6](1863bf6))
* Minor fixes 2
([#3230](#3230))
([73b7e74](73b7e74))

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

Co-authored-by: snowflake-release-please[bot] <105954990+snowflake-release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants