@@ -48,6 +48,12 @@ var _ = registerResource("gitlab_project_membership", func() *schema.Resource {
48
48
ValidateDiagFunc : validation .ToDiagFunc (validation .StringInSlice (validProjectAccessLevelNames , false )),
49
49
Required : true ,
50
50
},
51
+ "expires_at" : {
52
+ Description : "Expiration date for the project membership. Format: `YYYY-MM-DD`" ,
53
+ Type : schema .TypeString ,
54
+ ValidateFunc : validateDateFunc ,
55
+ Optional : true ,
56
+ },
51
57
},
52
58
}
53
59
})
@@ -57,11 +63,13 @@ func resourceGitlabProjectMembershipCreate(ctx context.Context, d *schema.Resour
57
63
58
64
userId := d .Get ("user_id" ).(int )
59
65
projectId := d .Get ("project_id" ).(string )
66
+ expiresAt := d .Get ("expires_at" ).(string )
60
67
accessLevelId := accessLevelNameToValue [d .Get ("access_level" ).(string )]
61
68
62
69
options := & gitlab.AddProjectMemberOptions {
63
70
UserID : & userId ,
64
71
AccessLevel : & accessLevelId ,
72
+ ExpiresAt : & expiresAt ,
65
73
}
66
74
log .Printf ("[DEBUG] create gitlab project membership for %d in %s" , options .UserID , projectId )
67
75
@@ -115,10 +123,12 @@ func resourceGitlabProjectMembershipUpdate(ctx context.Context, d *schema.Resour
115
123
116
124
userId := d .Get ("user_id" ).(int )
117
125
projectId := d .Get ("project_id" ).(string )
126
+ expiresAt := d .Get ("expires_at" ).(string )
118
127
accessLevelId := accessLevelNameToValue [strings .ToLower (d .Get ("access_level" ).(string ))]
119
128
120
129
options := gitlab.EditProjectMemberOptions {
121
130
AccessLevel : & accessLevelId ,
131
+ ExpiresAt : & expiresAt ,
122
132
}
123
133
log .Printf ("[DEBUG] update gitlab project membership %v for %s" , userId , projectId )
124
134
@@ -153,7 +163,11 @@ func resourceGitlabProjectMembershipSetToState(d *schema.ResourceData, projectMe
153
163
d .Set ("project_id" , projectId )
154
164
d .Set ("user_id" , projectMember .ID )
155
165
d .Set ("access_level" , accessLevelValueToName [projectMember .AccessLevel ])
156
-
166
+ if projectMember .ExpiresAt != nil {
167
+ d .Set ("expires_at" , projectMember .ExpiresAt .String ())
168
+ } else {
169
+ d .Set ("expires_at" , "" )
170
+ }
157
171
userId := strconv .Itoa (projectMember .ID )
158
172
d .SetId (buildTwoPartID (projectId , & userId ))
159
173
}
0 commit comments