1
+ // ----------------------------------------------------------------------------
2
+ //
3
+ // *** AUTO GENERATED CODE *** AUTO GENERATED CODE ***
4
+ //
5
+ // ----------------------------------------------------------------------------
6
+ //
7
+ // This file is automatically generated by Magic Modules and manual
8
+ // changes will be clobbered when the file is regenerated.
9
+ //
10
+ // Please read more about how to change this file in
11
+ // .github/CONTRIBUTING.md.
12
+ //
13
+ // ----------------------------------------------------------------------------
14
+
1
15
package google
2
16
3
17
import (
4
18
"fmt"
19
+ "log"
20
+ "reflect"
21
+ "strconv"
22
+ "strings"
23
+ "time"
5
24
6
25
"github.com/hashicorp/terraform/helper/schema"
7
- "google.golang.org/api/sourcerepo/v1"
8
26
)
9
27
10
- func resourceSourceRepoRepository () * schema.Resource {
28
+ func resourceSourcerepoRepository () * schema.Resource {
11
29
return & schema.Resource {
12
- Create : resourceSourceRepoRepositoryCreate ,
13
- Read : resourceSourceRepoRepositoryRead ,
14
- Delete : resourceSourceRepoRepositoryDelete ,
15
- //Update: not supported,
30
+ Create : resourceSourcerepoRepositoryCreate ,
31
+ Read : resourceSourcerepoRepositoryRead ,
32
+ Delete : resourceSourcerepoRepositoryDelete ,
16
33
17
34
Importer : & schema.ResourceImporter {
18
- State : resourceSourceRepoRepositoryImport ,
35
+ State : resourceSourcerepoRepositoryImport ,
36
+ },
37
+
38
+ Timeouts : & schema.ResourceTimeout {
39
+ Create : schema .DefaultTimeout (240 * time .Second ),
40
+ Delete : schema .DefaultTimeout (240 * time .Second ),
19
41
},
20
42
21
43
Schema : map [string ]* schema.Schema {
@@ -24,111 +46,151 @@ func resourceSourceRepoRepository() *schema.Resource {
24
46
Required : true ,
25
47
ForceNew : true ,
26
48
},
27
-
28
- "project" : {
29
- Type : schema .TypeString ,
30
- Optional : true ,
31
- Computed : true ,
32
- ForceNew : true ,
33
- },
34
-
35
49
"size" : {
36
50
Type : schema .TypeInt ,
37
51
Computed : true ,
38
52
},
39
-
40
53
"url" : {
41
54
Type : schema .TypeString ,
42
55
Computed : true ,
43
56
},
57
+ "project" : {
58
+ Type : schema .TypeString ,
59
+ Optional : true ,
60
+ Computed : true ,
61
+ ForceNew : true ,
62
+ },
44
63
},
45
64
}
46
65
}
47
66
48
- func resourceSourceRepoRepositoryCreate (d * schema.ResourceData , meta interface {}) error {
67
+ func resourceSourcerepoRepositoryCreate (d * schema.ResourceData , meta interface {}) error {
49
68
config := meta .(* Config )
50
69
51
- project , err := getProject (d , config )
70
+ obj := make (map [string ]interface {})
71
+ nameProp , err := expandSourcerepoRepositoryName (d .Get ("name" ), d , config )
52
72
if err != nil {
53
73
return err
74
+ } else if v , ok := d .GetOkExists ("name" ); ! isEmptyValue (reflect .ValueOf (nameProp )) && (ok || ! reflect .DeepEqual (v , nameProp )) {
75
+ obj ["name" ] = nameProp
54
76
}
55
77
56
- repoName := d .Get ("name" ).(string )
57
- name := buildRepositoryName (project , repoName )
58
-
59
- repo := & sourcerepo.Repo {
60
- Name : name ,
78
+ url , err := replaceVars (d , config , "https://sourcerepo.googleapis.com/v1/projects/{{project}}/repos" )
79
+ if err != nil {
80
+ return err
61
81
}
62
82
63
- parent := "projects/" + project
83
+ log .Printf ("[DEBUG] Creating new Repository: %#v" , obj )
84
+ res , err := sendRequestWithTimeout (config , "POST" , url , obj , d .Timeout (schema .TimeoutCreate ))
85
+ if err != nil {
86
+ return fmt .Errorf ("Error creating Repository: %s" , err )
87
+ }
64
88
65
- op , err := config .clientSourceRepo .Projects .Repos .Create (parent , repo ).Do ()
89
+ // Store the ID now
90
+ id , err := replaceVars (d , config , "{{project}}/{{name}}" )
66
91
if err != nil {
67
- return fmt .Errorf ("Error creating the Source Repo : %s" , err )
92
+ return fmt .Errorf ("Error constructing id : %s" , err )
68
93
}
69
- d .SetId (op . Name )
94
+ d .SetId (id )
70
95
71
- return nil
96
+ log .Printf ("[DEBUG] Finished creating Repository %q: %#v" , d .Id (), res )
97
+
98
+ return resourceSourcerepoRepositoryRead (d , meta )
72
99
}
73
100
74
- func resourceSourceRepoRepositoryRead (d * schema.ResourceData , meta interface {}) error {
101
+ func resourceSourcerepoRepositoryRead (d * schema.ResourceData , meta interface {}) error {
75
102
config := meta .(* Config )
76
103
77
- project , err := getProject (d , config )
104
+ url , err := replaceVars (d , config , "https://sourcerepo.googleapis.com/v1/projects/{{project}}/repos/{{name}}" )
78
105
if err != nil {
79
106
return err
80
107
}
81
108
82
- repoName := d . Get ( "name" ).( string )
83
- name := buildRepositoryName ( project , repoName )
84
-
85
- repo , err := config . clientSourceRepo . Projects . Repos . Get ( name ). Do ()
109
+ res , err := sendRequest ( config , "GET" , url , nil )
110
+ if err != nil {
111
+ return handleNotFoundError ( err , d , fmt . Sprintf ( "SourcerepoRepository %q" , d . Id ()))
112
+ }
86
113
114
+ project , err := getProject (d , config )
87
115
if err != nil {
88
- return handleNotFoundError (err , d , fmt .Sprintf ("Source Repo %q" , d .Id ()))
116
+ return err
117
+ }
118
+ if err := d .Set ("project" , project ); err != nil {
119
+ return fmt .Errorf ("Error reading Repository: %s" , err )
89
120
}
90
121
91
- d .Set ("size" , repo .Size )
92
- d .Set ("project" , project )
93
- d .Set ("url" , repo .Url )
122
+ if err := d .Set ("name" , flattenSourcerepoRepositoryName (res ["name" ], d )); err != nil {
123
+ return fmt .Errorf ("Error reading Repository: %s" , err )
124
+ }
125
+ if err := d .Set ("url" , flattenSourcerepoRepositoryUrl (res ["url" ], d )); err != nil {
126
+ return fmt .Errorf ("Error reading Repository: %s" , err )
127
+ }
128
+ if err := d .Set ("size" , flattenSourcerepoRepositorySize (res ["size" ], d )); err != nil {
129
+ return fmt .Errorf ("Error reading Repository: %s" , err )
130
+ }
94
131
95
132
return nil
96
133
}
97
134
98
- func resourceSourceRepoRepositoryDelete (d * schema.ResourceData , meta interface {}) error {
135
+ func resourceSourcerepoRepositoryDelete (d * schema.ResourceData , meta interface {}) error {
99
136
config := meta .(* Config )
100
137
101
- project , err := getProject (d , config )
138
+ url , err := replaceVars (d , config , "https://sourcerepo.googleapis.com/v1/projects/{{project}}/repos/{{name}}" )
102
139
if err != nil {
103
140
return err
104
141
}
105
142
106
- repoName := d .Get ("name" ).(string )
107
- name := buildRepositoryName (project , repoName )
108
-
109
- _ , err = config .clientSourceRepo .Projects .Repos .Delete (name ).Do ()
143
+ var obj map [string ]interface {}
144
+ log .Printf ("[DEBUG] Deleting Repository %q" , d .Id ())
145
+ res , err := sendRequestWithTimeout (config , "DELETE" , url , obj , d .Timeout (schema .TimeoutDelete ))
110
146
if err != nil {
111
- return fmt . Errorf ( "Error deleting the Source Repo: %s" , err )
147
+ return handleNotFoundError ( err , d , "Repository" )
112
148
}
113
149
150
+ log .Printf ("[DEBUG] Finished deleting Repository %q: %#v" , d .Id (), res )
114
151
return nil
115
152
}
116
153
117
- func buildRepositoryName (project , name string ) string {
118
- repositoryName := "projects/" + project + "/repos/" + name
119
- return repositoryName
120
- }
121
-
122
- func resourceSourceRepoRepositoryImport (d * schema.ResourceData , meta interface {}) ([]* schema.ResourceData , error ) {
154
+ func resourceSourcerepoRepositoryImport (d * schema.ResourceData , meta interface {}) ([]* schema.ResourceData , error ) {
123
155
config := meta .(* Config )
124
- parseImportId ([]string {"projects/(?P<project>[^/]+)/repos/(?P<name>[^/]+)" , "(?P<project>[^/]+)/(?P<name>[^/]+)" , "(?P<name>[^/]+)" }, d , config )
156
+ if err := parseImportId ([]string {"projects/(?P<project>[^/]+)/repos/(?P<name>[^/]+)" , "(?P<project>[^/]+)/(?P<name>[^/]+)" , "(?P<name>[^/]+)" }, d , config ); err != nil {
157
+ return nil , err
158
+ }
125
159
126
160
// Replace import id for the resource id
127
- id , err := replaceVars (d , config , "projects/ {{project}}/repos /{{name}}" )
161
+ id , err := replaceVars (d , config , "{{project}}/{{name}}" )
128
162
if err != nil {
129
163
return nil , fmt .Errorf ("Error constructing id: %s" , err )
130
164
}
131
165
d .SetId (id )
132
166
133
167
return []* schema.ResourceData {d }, nil
134
168
}
169
+
170
+ func flattenSourcerepoRepositoryName (v interface {}, d * schema.ResourceData ) interface {} {
171
+ if v == nil {
172
+ return v
173
+ }
174
+
175
+ // We can't use a standard name_from_self_link because the name can include /'s
176
+ parts := strings .SplitAfterN (v .(string ), "/" , 4 )
177
+ return parts [3 ]
178
+ }
179
+
180
+ func flattenSourcerepoRepositoryUrl (v interface {}, d * schema.ResourceData ) interface {} {
181
+ return v
182
+ }
183
+
184
+ func flattenSourcerepoRepositorySize (v interface {}, d * schema.ResourceData ) interface {} {
185
+ // Handles the string fixed64 format
186
+ if strVal , ok := v .(string ); ok {
187
+ if intVal , err := strconv .ParseInt (strVal , 10 , 64 ); err == nil {
188
+ return intVal
189
+ } // let terraform core handle it if we can't convert the string to an int.
190
+ }
191
+ return v
192
+ }
193
+
194
+ func expandSourcerepoRepositoryName (v interface {}, d * schema.ResourceData , config * Config ) (interface {}, error ) {
195
+ return replaceVars (d , config , "projects/{{project}}/repos/{{name}}" )
196
+ }
0 commit comments