Skip to content

Commit 99cdcf4

Browse files
committed
Modify the ID of the project access token resource
1 parent 8b5d627 commit 99cdcf4

File tree

2 files changed

+43
-10
lines changed

2 files changed

+43
-10
lines changed

gitlab/resource_gitlab_project_access_token.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -104,19 +104,31 @@ func resourceGitlabProjectAccessTokenCreate(d *schema.ResourceData, meta interfa
104104

105105
log.Printf("[DEBUG] created gitlab ProjectAccessToken %d - %s for project ID %d", projectAccessToken.ID, *options.Name, project)
106106

107-
d.SetId(strconv.Itoa(projectAccessToken.ID))
107+
projectString := strconv.Itoa(project)
108+
PATstring := strconv.Itoa(projectAccessToken.ID)
109+
d.SetId(buildTwoPartID(&projectString, &PATstring))
108110
d.Set("token", projectAccessToken.Token)
109111

110112
return resourceGitlabProjectAccessTokenRead(d, meta)
111113
}
112114

113115
func resourceGitlabProjectAccessTokenRead(d *schema.ResourceData, meta interface{}) error {
116+
117+
projectString, PATstring, err := parseTwoPartID(d.Id())
118+
if err != nil {
119+
return fmt.Errorf("Error parsing ID: %s", d.Id())
120+
}
121+
114122
client := meta.(*gitlab.Client)
115-
project := d.Get("project").(int)
116-
projectAccessTokenID, err := strconv.Atoi(d.Id())
117123

124+
project, err := strconv.Atoi(projectString)
118125
if err != nil {
119-
return fmt.Errorf("%s cannot be converted to int", d.Id())
126+
return fmt.Errorf("%s cannot be converted to int", projectString)
127+
}
128+
129+
projectAccessTokenID, err := strconv.Atoi(PATstring)
130+
if err != nil {
131+
return fmt.Errorf("%s cannot be converted to int", PATstring)
120132
}
121133

122134
log.Printf("[DEBUG] read gitlab ProjectAccessToken %d, project ID %d", projectAccessTokenID, project)
@@ -163,16 +175,25 @@ func resourceGitlabProjectAccessTokenRead(d *schema.ResourceData, meta interface
163175
}
164176

165177
func resourceGitlabProjectAccessTokenDelete(d *schema.ResourceData, meta interface{}) error {
178+
179+
projectString, PATstring, err := parseTwoPartID(d.Id())
180+
if err != nil {
181+
return fmt.Errorf("Error parsing ID: %s", d.Id())
182+
}
183+
166184
client := meta.(*gitlab.Client)
167-
project := d.Get("project").(int)
168-
log.Printf("[DEBUG] Delete gitlab ProjectAccessToken %s", d.Id())
169185

170-
projectAccessTokenID, err := strconv.Atoi(d.Id())
186+
project, err := strconv.Atoi(projectString)
187+
if err != nil {
188+
return fmt.Errorf("%s cannot be converted to int", projectString)
189+
}
171190

191+
projectAccessTokenID, err := strconv.Atoi(PATstring)
172192
if err != nil {
173-
return fmt.Errorf("%s cannot be converted to int", d.Id())
193+
return fmt.Errorf("%s cannot be converted to int", PATstring)
174194
}
175195

196+
log.Printf("[DEBUG] Delete gitlab ProjectAccessToken %s", d.Id())
176197
_, err = client.ProjectAccessTokens.DeleteProjectAccessToken(project, projectAccessTokenID)
177198
return err
178199
}

gitlab/resource_gitlab_project_access_token_test.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,23 @@ func testAccCheckGitlabProjectAccessTokenExists(n string, pat *testAccGitlabProj
111111
return fmt.Errorf("Not Found: %s", n)
112112
}
113113

114-
patID := rs.Primary.ID
114+
projectString, PATstring, err := parseTwoPartID(rs.Primary.ID)
115+
if err != nil {
116+
return fmt.Errorf("Error parsing ID: %s", rs.Primary.ID)
117+
}
118+
projectAccessTokenID, err := strconv.Atoi(PATstring)
119+
if err != nil {
120+
return fmt.Errorf("%s cannot be converted to int", PATstring)
121+
}
122+
115123
repoName := rs.Primary.Attributes["project"]
116124
if repoName == "" {
117125
return fmt.Errorf("No project ID is set")
118126
}
127+
if repoName != projectString {
128+
return fmt.Errorf("Project [%s] in project identifier [%s] it's different from project stored into the state [%s]", projectString, rs.Primary.ID, repoName)
129+
}
130+
119131
conn := testAccProvider.Meta().(*gitlab.Client)
120132

121133
tokens, _, err := conn.ProjectAccessTokens.ListProjectAccessTokens(repoName, nil)
@@ -124,7 +136,7 @@ func testAccCheckGitlabProjectAccessTokenExists(n string, pat *testAccGitlabProj
124136
}
125137

126138
for _, token := range tokens {
127-
if strconv.Itoa(token.ID) == patID {
139+
if token.ID == projectAccessTokenID {
128140
pat.pat = token
129141
pat.project = repoName
130142
pat.token = rs.Primary.Attributes["token"]

0 commit comments

Comments
 (0)