Skip to content

Commit

Permalink
WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
annawinkler committed Apr 26, 2022
1 parent 3f2002a commit 338ef61
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
7 changes: 6 additions & 1 deletion registry_provider.go
Expand Up @@ -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 {
Expand Down
40 changes: 24 additions & 16 deletions registry_provider_version.go
Expand Up @@ -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
}

Expand All @@ -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"`
Expand All @@ -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
Expand Down Expand Up @@ -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
}
Expand All @@ -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 {
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand Down

0 comments on commit 338ef61

Please sign in to comment.