Skip to content

Commit

Permalink
Merge pull request #308 from OctopusDeploy/fnm/get-missing-common-var…
Browse files Browse the repository at this point in the history
…iables

Get missing project and common variables
  • Loading branch information
bec-callow-oct authored Feb 18, 2025
2 parents faca5fe + 6411626 commit be8ea8d
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 20 deletions.
2 changes: 1 addition & 1 deletion pkg/configuration/feature_toggle_configuration_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ type FeatureToggleConfigurationService struct{}
const template = "/api/configuration/feature-toggles{?Name}"

func Get(client newclient.Client, query *FeatureToggleConfigurationQuery) (*FeatureToggleConfigurationResponse, error) {
return newclient.GetByQueryWithoutSpace[FeatureToggleConfigurationResponse](client, template, query)
return newclient.GetResourceByQuery[FeatureToggleConfigurationResponse](client, template, query)
}
4 changes: 2 additions & 2 deletions pkg/newclient/crud.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,9 @@ func GetByQuery[TResource any](client Client, template string, spaceID string, q
return res, nil
}

// GetByQueryWithoutSpace returns a resource based on the criteria defined by
// GetResourceByQuery returns a resource based on the criteria defined by
// its input query parameter.
func GetByQueryWithoutSpace[TResource any](client Client, template string, query any) (*TResource, error) {
func GetResourceByQuery[TResource any](client Client, template string, query any) (*TResource, error) {
values, _ := uritemplates.Struct2map(query)
if values == nil {
values = map[string]any{}
Expand Down
20 changes: 10 additions & 10 deletions pkg/tenants/tenant_service.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,25 +315,25 @@ func GetAll(client newclient.Client, spaceID string) ([]*Tenant, error) {
return newclient.GetAll[Tenant](client, template, spaceID)
}

const tenantProjectVariableTemplate = "/api/{spaceId}/tenants/{id}/projectvariables"
const tenantCommonVariableTemplate = "/api/{spaceId}/tenants/{id}/commonvariables"
const tenantProjectVariableTemplate = "/api/{spaceId}/tenants/{id}/projectvariables?IncludeMissingVariables={includeMissingVariables}"
const tenantCommonVariableTemplate = "/api/{spaceId}/tenants/{id}/commonvariables?IncludeMissingVariables={includeMissingVariables}"

// GetProjectVariables returns all tenant project variables. If an error occurs, it returns nil.
func GetProjectVariables(client newclient.Client, spaceID string, tenantID string) (*variables.TenantProjectVariablesResponse, error) {
return newclient.GetByID[variables.TenantProjectVariablesResponse](client, tenantProjectVariableTemplate, spaceID, tenantID)
func GetProjectVariables(client newclient.Client, query variables.GetTenantProjectVariablesQuery) (*variables.GetTenantProjectVariablesResponse, error) {
return newclient.GetResourceByQuery[variables.GetTenantProjectVariablesResponse](client, tenantProjectVariableTemplate, query)
}

// GetCommonVariables returns all tenant common variables. If an error occurs, it returns nil.
func GetCommonVariables(client newclient.Client, spaceID string, tenantID string) (*variables.TenantCommonVariablesResponse, error) {
return newclient.GetByID[variables.TenantCommonVariablesResponse](client, tenantCommonVariableTemplate, spaceID, tenantID)
func GetCommonVariables(client newclient.Client, query variables.GetTenantCommonVariablesQuery) (*variables.GetTenantCommonVariablesResponse, error) {
return newclient.GetResourceByQuery[variables.GetTenantCommonVariablesResponse](client, tenantCommonVariableTemplate, query)
}

// UpdateProjectVariables modifies tenant project variables based on the ones provided as input.
func UpdateProjectVariables(client newclient.Client, spaceID string, tenantID string, projectVariables *variables.ModifyTenantProjectVariablesCommand) (*variables.TenantProjectVariablesResponse, error) {
return newclient.Update[variables.TenantProjectVariablesResponse](client, tenantProjectVariableTemplate, spaceID, tenantID, projectVariables)
func UpdateProjectVariables(client newclient.Client, spaceID string, tenantID string, projectVariables *variables.ModifyTenantProjectVariablesCommand) (*variables.ModifyTenantProjectVariablesResponse, error) {
return newclient.Update[variables.ModifyTenantProjectVariablesResponse](client, tenantProjectVariableTemplate, spaceID, tenantID, projectVariables)
}

// UpdateCommonVariables modifies tenant common variables based on the ones provided as input.
func UpdateCommonVariables(client newclient.Client, spaceID string, tenantID string, commonVariables *variables.ModifyTenantCommonVariablesCommand) (*variables.TenantCommonVariablesResponse, error) {
return newclient.Update[variables.TenantCommonVariablesResponse](client, tenantCommonVariableTemplate, spaceID, tenantID, commonVariables)
func UpdateCommonVariables(client newclient.Client, spaceID string, tenantID string, commonVariables *variables.ModifyTenantCommonVariablesCommand) (*variables.ModifyTenantCommonVariablesResponse, error) {
return newclient.Update[variables.ModifyTenantCommonVariablesResponse](client, tenantCommonVariableTemplate, spaceID, tenantID, commonVariables)
}
20 changes: 17 additions & 3 deletions pkg/variables/tenant_common_variable.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,21 @@ import (
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/resources"
)

type TenantCommonVariablesResponse struct {
type GetTenantCommonVariablesQuery struct {
TenantID string `uri:"id" url:"id"`
SpaceID string `uri:"spaceId" url:"spaceId"`
IncludeMissingVariables bool `uri:"includeMissingVariables" url:"includeMissingVariables"`
}

type GetTenantCommonVariablesResponse struct {
TenantID string `json:"TenantId,omitempty"`
CommonVariables []TenantCommonVariable `json:"CommonVariables,omitempty"`
MissingCommonVariables []TenantCommonVariable `json:"MissingCommonVariables,omitempty"`

resources.Resource
}

type ModifyTenantCommonVariablesResponse struct {
TenantID string `json:"TenantId,omitempty"`
CommonVariables []TenantCommonVariable `json:"CommonVariables,omitempty"`

Expand All @@ -25,10 +39,10 @@ type TenantCommonVariable struct {
}

type ModifyTenantCommonVariablesCommand struct {
Variables []TenantCommonVariableCommand `json:"Variables"`
Variables []TenantCommonVariablePayload `json:"Variables"`
}

type TenantCommonVariableCommand struct {
type TenantCommonVariablePayload struct {
ID string `json:"Id,omitempty"`
LibraryVariableSetId string `json:"LibraryVariableSetId"`
TemplateID string `json:"TemplateId"`
Expand Down
21 changes: 17 additions & 4 deletions pkg/variables/tenant_project_variable.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,21 @@ import (
"github.com/OctopusDeploy/go-octopusdeploy/v2/pkg/resources"
)

type TenantProjectVariablesResponse struct {
type GetTenantProjectVariablesQuery struct {
TenantID string `uri:"id" url:"id"`
SpaceID string `uri:"spaceId" url:"spaceId"`
IncludeMissingVariables bool `uri:"includeMissingVariables" url:"includeMissingVariables"`
}

type GetTenantProjectVariablesResponse struct {
TenantID string `json:"TenantId,omitempty"`
ProjectVariables []TenantProjectVariable `json:"ProjectVariables,omitempty"`
MissingProjectVariables []TenantProjectVariable `json:"MissingProjectVariables,omitempty"`

resources.Resource
}

type ModifyTenantProjectVariablesResponse struct {
TenantID string `json:"TenantId,omitempty"`
ProjectVariables []TenantProjectVariable `json:"ProjectVariables,omitempty"`

Expand All @@ -20,16 +34,15 @@ type TenantProjectVariable struct {
Template actiontemplates.ActionTemplateParameter `json:"Template"`
Value core.PropertyValue `json:"Value"`
Scope TenantVariableScope `json:"Scope"`
Links map[string]string `json:"Links,omitempty"`

resources.Resource
}

type ModifyTenantProjectVariablesCommand struct {
Variables []TenantProjectVariableCommand `json:"Variables"`
Variables []TenantProjectVariablePayload `json:"Variables"`
}

type TenantProjectVariableCommand struct {
type TenantProjectVariablePayload struct {
ID string `json:"Id,omitempty"`
ProjectID string `json:"ProjectId"`
TemplateID string `json:"TemplateId"`
Expand Down

0 comments on commit be8ea8d

Please sign in to comment.