From a723a6b302415eec664f0eaf2657c44b5e683a80 Mon Sep 17 00:00:00 2001 From: Anna Winkler <3526523+annawinkler@users.noreply.github.com> Date: Fri, 22 Apr 2022 18:56:06 -0600 Subject: [PATCH] WIP --- registry_provider.go | 7 ++++++- registry_provider_version.go | 40 +++++++++++++++++++++--------------- 2 files changed, 30 insertions(+), 17 deletions(-) diff --git a/registry_provider.go b/registry_provider.go index 1d1269466..3c33916cf 100644 --- a/registry_provider.go +++ b/registry_provider.go @@ -62,10 +62,15 @@ type RegistryProvider struct { // Relations Organization *Organization `jsonapi:"relation,organization"` RegistryProviderVersions []*RegistryProviderVersion `jsonapi:"relation,registry-provider-versions"` + + // Links + Links map[string]interface{} `jsonapi:"links,omitempty"` } +// TODO - verify the permissions and which are required type RegistryProviderPermissions struct { - CanDelete bool `jsonapi:"attr,can-delete"` + CanDelete bool `jsonapi:"attr,can-delete,omitempty"` + CanUploadAsset bool `jsonapi:"attr,can-upload-asset,omitempty"` } type RegistryProviderListOptions struct { diff --git a/registry_provider_version.go b/registry_provider_version.go index 046b06304..6fc3f7f51 100644 --- a/registry_provider_version.go +++ b/registry_provider_version.go @@ -9,21 +9,21 @@ import ( // Compile-time proof of interface implementation. var _ RegistryProviderVersions = (*registryProviderVersions)(nil) -// RegistryProviderVersions describes all the registry provider related methods that the Terraform -// Enterprise API supports. +// RegistryProviderVersions describes the registry provider version methods that +// the Terraform Enterprise API supports. // -// TFE API docs: https://www.terraform.io/docs/cloud/api/providers.html +// TFE API docs: https://www.terraform.io/cloud-docs/api-docs/private-registry/provider-versions-platforms type RegistryProviderVersions interface { - // List all the providers within an organization. + // List all versions for a single provider. List(ctx context.Context, providerID RegistryProviderID, options *RegistryProviderVersionListOptions) (*RegistryProviderVersionList, error) - // Create a registry provider + // Create a registry provider version. Create(ctx context.Context, providerID RegistryProviderID, options RegistryProviderVersionCreateOptions) (*RegistryProviderVersion, error) - // Read a registry provider + // Read a registry provider version. Read(ctx context.Context, versionID RegistryProviderVersionID, options *RegistryProviderVersionReadOptions) (*RegistryProviderVersion, error) - // Delete a registry provider + // Delete a registry provider version. Delete(ctx context.Context, versionID RegistryProviderVersionID) error } @@ -36,20 +36,23 @@ type registryProviderVersions struct { type RegistryProviderVersion struct { ID string `jsonapi:"primary,registry-provider-versions"` Version string `jsonapi:"attr,version"` - KeyID string `jsonapi:"attr,key-id"` - Protocols []string `jsonapi:"attr,protocols,omitempty"` CreatedAt string `jsonapi:"attr,created-at"` UpdatedAt string `jsonapi:"attr,updated-at"` + KeyID string `jsonapi:"attr,key-id"` + Protocols []string `jsonapi:"attr,protocols,omitempty"` // TODO - verify putting omitempty here + Permissions *RegistryProviderPermissions `jsonapi:"attr,permissions"` + ShasumsUploaded bool `jsonapi:"attr,shasums-uploaded"` + ShasumsSigUploaded bool `jsonapi:"attr,sasums-sig-uploaded"` // Relations RegistryProvider *RegistryProvider `jsonapi:"relation,registry-provider"` - RegistryProviderPlatforms []*RegistryProviderPlatform `jsonapi:"relation,registry-provider-platforms"` + RegistryProviderPlatforms []*RegistryProviderPlatform `jsonapi:"relation,platforms"` // Links Links map[string]interface{} `jsonapi:"links,omitempty"` } -// RegistryProviderID is the multi key ID for addressing a provider +// RegistryProviderVersionID is the multi key ID for addressing a version provider type RegistryProviderVersionID struct { RegistryProviderID Version string `jsonapi:"attr,version"` @@ -67,10 +70,12 @@ type RegistryProviderVersionListOptions struct { type RegistryProviderVersionReadOptions struct{} type RegistryProviderVersionCreateOptions struct { - Version string `jsonapi:"attr,version"` - KeyID string `jsonapi:"attr,key-id"` + Version string `jsonapi:"attr,version"` + KeyID string `jsonapi:"attr,key-id"` + Protocols []string `jsonapi:"attr,protocols"` } +// List registry provider versions func (r *registryProviderVersions) List(ctx context.Context, providerID RegistryProviderID, options *RegistryProviderVersionListOptions) (*RegistryProviderVersionList, error) { if err := providerID.valid(); err != nil { return nil, err @@ -102,14 +107,16 @@ func (r *registryProviderVersions) List(ctx context.Context, providerID Registry return pvl, nil } -// Create a registry provider +// Create a registry provider version func (r *registryProviderVersions) Create(ctx context.Context, providerID RegistryProviderID, options RegistryProviderVersionCreateOptions) (*RegistryProviderVersion, error) { if err := providerID.valid(); err != nil { return nil, err } + if providerID.RegistryName != PrivateRegistry { return nil, ErrRequiredPrivateRegistry } + if err := options.valid(); err != nil { return nil, err } @@ -125,6 +132,7 @@ func (r *registryProviderVersions) Create(ctx context.Context, providerID Regist if err != nil { return nil, err } + prvv := &RegistryProviderVersion{} err = r.client.do(ctx, req, prvv) if err != nil { @@ -134,7 +142,7 @@ func (r *registryProviderVersions) Create(ctx context.Context, providerID Regist return prvv, nil } -// Read a registry provider +// Read a registry provider version func (r *registryProviderVersions) Read(ctx context.Context, versionID RegistryProviderVersionID, options *RegistryProviderVersionReadOptions) (*RegistryProviderVersion, error) { if err := versionID.valid(); err != nil { return nil, err @@ -162,7 +170,7 @@ func (r *registryProviderVersions) Read(ctx context.Context, versionID RegistryP return prvv, nil } -// Delete a registry provider +// Delete a registry provider version func (r *registryProviderVersions) Delete(ctx context.Context, versionID RegistryProviderVersionID) error { if err := versionID.valid(); err != nil { return err