Skip to content

Commit 6e81ef2

Browse files
committed
Support for step-type with versions
1 parent e2c1b7d commit 6e81ef2

9 files changed

+460
-19
lines changed

client/step_types.go

+11-2
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@ import (
66
"net/url"
77
)
88

9+
type StepTypesVersions struct {
10+
Name string
11+
Versions []StepTypesVersion
12+
}
13+
type StepTypesVersion struct {
14+
VersionNumber string
15+
StepTypes StepTypes
16+
}
17+
918
type StepTypes struct {
1019
Version string `json:"version,omitempty"`
1120
Kind string `json:"kind,omitempty"`
@@ -76,7 +85,7 @@ func (client *Client) CreateStepTypes(stepTypes *StepTypes) (*StepTypes, error)
7685
if err != nil {
7786
return nil, err
7887
}
79-
log.Printf("[DEBUG] Response step types: %q", resp)
88+
8089
var respStepTypes StepTypes
8190
err = DecodeResponseInto(resp, &respStepTypes)
8291
if err != nil {
@@ -96,7 +105,7 @@ func (client *Client) UpdateStepTypes(stepTypes *StepTypes) (*StepTypes, error)
96105
return nil, err
97106
}
98107

99-
fullPath := fmt.Sprintf("/step-types/%s", url.PathEscape(stepTypes.GetID()+":"+stepTypes.Metadata["version"].(string)))
108+
fullPath := fmt.Sprintf("/step-types/%s", url.PathEscape(stepTypes.Metadata["name"].(string)+":"+stepTypes.Metadata["version"].(string)))
100109
opts := RequestOptions{
101110
Path: fullPath,
102111
Method: "PUT",

codefresh/data_step_types.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@ func dataSourceStepTypes() *schema.Resource {
1616
Type: schema.TypeString,
1717
Required: true,
1818
},
19+
"version": {
20+
Type: schema.TypeString,
21+
Optional: true,
22+
},
1923
"step_types_yaml": {
2024
Type: schema.TypeString,
2125
Computed: true,
@@ -29,12 +33,13 @@ func dataSourceStepTypesRead(d *schema.ResourceData, meta interface{}) error {
2933
client := meta.(*cfClient.Client)
3034
var stepTypes *cfClient.StepTypes
3135
var err error
36+
identifier := d.Get("name").(string)
37+
version, versionOk := d.GetOk("version")
3238

33-
if name, nameOk := d.GetOk("name"); nameOk {
34-
stepTypes, err = client.GetStepTypes(name.(string))
35-
} else {
36-
return fmt.Errorf("data.codefresh_step_types - must specify name")
39+
if versionOk {
40+
identifier = identifier + ":" + version.(string)
3741
}
42+
stepTypes, err = client.GetStepTypes(identifier)
3843
if err != nil {
3944
return err
4045
}

codefresh/provider.go

+12-11
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,18 @@ func Provider() *schema.Provider {
3838
"codefresh_users": dataSourceUsers(),
3939
},
4040
ResourcesMap: map[string]*schema.Resource{
41-
"codefresh_account": resourceAccount(),
42-
"codefresh_account_admins": resourceAccountAdmins(),
43-
"codefresh_api_key": resourceApiKey(),
44-
"codefresh_context": resourceContext(),
45-
"codefresh_idp_accounts": resourceIDPAccounts(),
46-
"codefresh_permission": resourcePermission(),
47-
"codefresh_pipeline": resourcePipeline(),
48-
"codefresh_project": resourceProject(),
49-
"codefresh_step_types": resourceStepTypes(),
50-
"codefresh_user": resourceUser(),
51-
"codefresh_team": resourceTeam(),
41+
"codefresh_account": resourceAccount(),
42+
"codefresh_account_admins": resourceAccountAdmins(),
43+
"codefresh_api_key": resourceApiKey(),
44+
"codefresh_context": resourceContext(),
45+
"codefresh_idp_accounts": resourceIDPAccounts(),
46+
"codefresh_permission": resourcePermission(),
47+
"codefresh_pipeline": resourcePipeline(),
48+
"codefresh_project": resourceProject(),
49+
"codefresh_step_types": resourceStepTypes(),
50+
"codefresh_step_types_versions": resourceStepTypesVersions(),
51+
"codefresh_user": resourceUser(),
52+
"codefresh_team": resourceTeam(),
5253
},
5354
ConfigureFunc: configureProvider,
5455
}

codefresh/resource_step_types.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,12 @@ func resourceStepTypesRead(d *schema.ResourceData, meta interface{}) error {
5555
d.SetId("")
5656
return nil
5757
}
58+
var stepTypesGetVersion cfClient.StepTypes
59+
stepTypesYaml := d.Get("step_types_yaml")
60+
yaml.Unmarshal([]byte(stepTypesYaml.(string)), &stepTypesGetVersion)
61+
version := stepTypesGetVersion.Metadata["version"].(string)
5862

59-
stepTypes, err := client.GetStepTypes(stepTypesIdentifier)
63+
stepTypes, err := client.GetStepTypes(stepTypesIdentifier + ":" + version)
6064
// Remove transient attributes from metadata
6165
for _, attribute := range []string{"created_at", "accountId", "id", "updated_at", "latest"} {
6266
if _, ok := stepTypes.Metadata[attribute]; ok {
@@ -122,6 +126,7 @@ func resourceStepTypesDelete(d *schema.ResourceData, meta interface{}) error {
122126
func mapStepTypesToResource(stepTypes cfClient.StepTypes, d *schema.ResourceData) error {
123127

124128
stepTypesYaml, err := yaml.Marshal(stepTypes)
129+
log.Printf("[DEBUG] Marshalled Step Types yaml = %v", string(stepTypesYaml))
125130
if err != nil {
126131
log.Printf("[DEBUG] Failed to Marshal Step Types yaml = %v", stepTypes)
127132
return err

0 commit comments

Comments
 (0)