mirror of
				https://github.com/1Password/onepassword-operator.git
				synced 2025-10-31 11:49:40 +00:00 
			
		
		
		
	 cabc020cc6
			
		
	
	cabc020cc6
	
	
	
		
			
			* Add missing improvements from Operator SDK 1.34.1 These were not mentioned in the upgrade documentation for version 1.34.x (https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.34.0/), but I've found them by compating the release with the previous one (https://github.com/operator-framework/operator-sdk/compare/v1.33.0...v1.34.1). * Upgrade to Operator SDK 1.36.0 Source of upgrade steps: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.36.0/ Key differences: - Go packages `k8s.io/*` are already at a version higher than the one in the upgrade. - `ENVTEST_K8S_VERSION` is at a version higher than the one in the upgrade - We didn't have the golangci-lint make command before, thus we only needed to add things. * Upgrade to Operator SDK 1.38.0 Source of upgrade steps: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.38.0/ * Upgrade to Operator SDK 1.39.0 Source of upgrade steps: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.39.0/ * Upgrade to Operator SDK 1.40.0 Source of upgrade steps: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.40.0/ I didn't do the "Add app.kubernetes.io/name label to your manifests" since it seems that we have it already, and it's customized. * Address lint errors * Update golangci-lint version used to support Go 1.24 * Improve workflows - Make workflow targets more specific. - Make build workflow only build (i.e. remove test part of it). - Rearrange steps and improve naming for build workflow. * Add back deleted test Initially the test has been removed due to lint saying that it was duplicate code, but it falsely errored since the values are different. * Improve code and add missing upgrade pieces * Upgrade to Operator SDK 1.41.1 Source of upgrade steps: https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.41.0/ Upgrading to 1.41.1 from 1.40.0 doesn't have any migration steps. Key elements: - Upgrade to golangci-lint v2 - Made the manifests using the updated controller tools * Address linter errors golanci-lint v2 seems to be more robust than the previous one, which is beneficial. Thus, we address the linter errors thrown by v2 and improve our code even further. * Add Makefile improvements These were brought in by comparing the Makefile of a freshly created operator using the latest operator-sdk with ours. * Add missing default kustomization for 1.40.0 upgrade * Bring default kustomization to latest version This is done by putting the file's content from a newly-generated operator. * Switch metrics-bind-address default value back to 8080 This ensures that the upgrade is backwards-compatible. * Add webhook-related scaffolding This enables us to easily add support for webhooks by running `operator-sdk create webhook` whenever we want to add them. * Fix typo
		
			
				
	
	
		
			93 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package model
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	connect "github.com/1Password/connect-sdk-go/onepassword"
 | |
| 	sdk "github.com/1password/onepassword-sdk-go"
 | |
| )
 | |
| 
 | |
| // Item represents 1Password item.
 | |
| type Item struct {
 | |
| 	ID        string
 | |
| 	VaultID   string
 | |
| 	Version   int
 | |
| 	Tags      []string
 | |
| 	Fields    []ItemField
 | |
| 	Files     []File
 | |
| 	CreatedAt time.Time
 | |
| }
 | |
| 
 | |
| // FromConnectItem populates the Item from a Connect item.
 | |
| func (i *Item) FromConnectItem(item *connect.Item) {
 | |
| 	i.ID = item.ID
 | |
| 	i.VaultID = item.Vault.ID
 | |
| 	i.Version = item.Version
 | |
| 
 | |
| 	i.Tags = append(i.Tags, item.Tags...)
 | |
| 
 | |
| 	for _, field := range item.Fields {
 | |
| 		i.Fields = append(i.Fields, ItemField{
 | |
| 			Label: field.Label,
 | |
| 			Value: field.Value,
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	for _, file := range item.Files {
 | |
| 		i.Files = append(i.Files, File{
 | |
| 			ID:   file.ID,
 | |
| 			Name: file.Name,
 | |
| 			Size: file.Size,
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	i.CreatedAt = item.CreatedAt
 | |
| }
 | |
| 
 | |
| // FromSDKItem populates the Item from an SDK item.
 | |
| func (i *Item) FromSDKItem(item *sdk.Item) {
 | |
| 	i.ID = item.ID
 | |
| 	i.VaultID = item.VaultID
 | |
| 	i.Version = int(item.Version)
 | |
| 
 | |
| 	i.Tags = make([]string, len(item.Tags))
 | |
| 	copy(i.Tags, item.Tags)
 | |
| 
 | |
| 	for _, field := range item.Fields {
 | |
| 		i.Fields = append(i.Fields, ItemField{
 | |
| 			Label: field.Title,
 | |
| 			Value: field.Value,
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	for _, file := range item.Files {
 | |
| 		i.Files = append(i.Files, File{
 | |
| 			ID:   file.Attributes.ID,
 | |
| 			Name: file.Attributes.Name,
 | |
| 			Size: int(file.Attributes.Size),
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	// Items of 'Document' category keeps file information in the Document field.
 | |
| 	if item.Category == sdk.ItemCategoryDocument {
 | |
| 		i.Files = append(i.Files, File{
 | |
| 			ID:   item.Document.ID,
 | |
| 			Name: item.Document.Name,
 | |
| 			Size: int(item.Document.Size),
 | |
| 		})
 | |
| 	}
 | |
| 
 | |
| 	i.CreatedAt = item.CreatedAt
 | |
| }
 | |
| 
 | |
| // FromSDKItemOverview populates the Item from an SDK item overview.
 | |
| func (i *Item) FromSDKItemOverview(item *sdk.ItemOverview) {
 | |
| 	i.ID = item.ID
 | |
| 	i.VaultID = item.VaultID
 | |
| 
 | |
| 	i.Tags = make([]string, len(item.Tags))
 | |
| 	copy(i.Tags, item.Tags)
 | |
| 
 | |
| 	i.CreatedAt = item.CreatedAt
 | |
| }
 |