Skip to content

Commit c347478

Browse files
authored
Merge pull request #1219 from baseman79/master
Add support for “tags” of project which introduced in KeyStone v3.9
2 parents 72123c5 + b769cd3 commit c347478

5 files changed

Lines changed: 115 additions & 65 deletions

File tree

core-test/src/main/java/org/openstack4j/api/identity/v3/KeystoneProjectServiceTests.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
package org.openstack4j.api.identity.v3;
22

3-
import static org.testng.AssertJUnit.assertNull;
43
import static org.testng.Assert.assertEquals;
4+
import static org.testng.AssertJUnit.assertNull;
5+
6+
import java.util.Arrays;
7+
import java.util.List;
58

69
import org.openstack4j.api.AbstractTest;
710
import org.openstack4j.api.Builders;
@@ -26,6 +29,7 @@ public class KeystoneProjectServiceTests extends AbstractTest {
2629
private static final String PROJECT_EXTRA_VALUE_1 = "value1";
2730
private static final String PROJECT_EXTRA_KEY_2 = "extra_key2";
2831
private static final String PROJECT_EXTRA_VALUE_2 = "value2";
32+
private static final List<String> TAGS = Arrays.asList("one", "two", "three");
2933
private String PROJECT_ID;
3034

3135
@Override
@@ -49,7 +53,7 @@ public void projects_create_does_not_accept_null() throws Exception {
4953
public void projects_crud_test() throws Exception {
5054

5155
Project project = Builders.project().name(PROJECT_NAME).description(PROJECT_DESCRIPTION)
52-
.domainId(PROJECT_DOMAIN_ID).setExtra(PROJECT_EXTRA_KEY_1, PROJECT_EXTRA_VALUE_1).enabled(true).build();
56+
.domainId(PROJECT_DOMAIN_ID).setExtra(PROJECT_EXTRA_KEY_1, PROJECT_EXTRA_VALUE_1).enabled(true).setTags(TAGS).build();
5357

5458
respondWith(JSON_PROJECTS_CREATE);
5559

@@ -59,17 +63,18 @@ public void projects_crud_test() throws Exception {
5963
assertEquals(newProject.getDomainId(), PROJECT_DOMAIN_ID);
6064
assertEquals(newProject.getDescription(), PROJECT_DESCRIPTION);
6165
assertEquals(newProject.getExtra(PROJECT_EXTRA_KEY_1), PROJECT_EXTRA_VALUE_1);
66+
assertEquals(newProject.getTags(), TAGS);
6267

6368
PROJECT_ID = newProject.getId();
6469

6570
respondWith(JSON_PROJECTS_GET_BYID);
6671

67-
Project project_setToUpdate = osv3().identity().projects().get(PROJECT_ID);
72+
Project projectSetToUpdate = osv3().identity().projects().get(PROJECT_ID);
6873

6974
respondWith(JSON_PROJECTS_UPDATE);
7075

7176
Project updatedProject = osv3().identity().projects().update(
72-
project_setToUpdate.toBuilder().description(PROJECT_DESCRIPTION_UPDATE)
77+
projectSetToUpdate.toBuilder().description(PROJECT_DESCRIPTION_UPDATE)
7378
.setExtra(PROJECT_EXTRA_KEY_2, PROJECT_EXTRA_VALUE_2)
7479
.build());
7580

core-test/src/main/resources/identity/v3/projects_create_response.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
"parent_id": null,
1111
"domain_id": "7a71863c2d1d4444b3e6c2cd36955e1e",
1212
"name": "ProjectX",
13-
"extra_key1": "value1"
13+
"extra_key1": "value1",
14+
"tags": ["one", "two", "three"]
1415
}
1516
}

core/src/main/java/org/openstack4j/model/identity/v3/Project.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.openstack4j.model.identity.v3;
22

3+
import java.util.List;
34
import java.util.Map;
45

56
import org.openstack4j.common.Buildable;
@@ -77,4 +78,10 @@ public interface Project extends ModelEntity, Buildable<ProjectBuilder> {
7778
* @return value for the given key
7879
*/
7980
String getExtra(String key);
81+
82+
/**
83+
*
84+
* @return list of tags
85+
*/
86+
List<String> getTags();
8087
}
Lines changed: 60 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package org.openstack4j.model.identity.v3.builder;
22

3+
import java.util.List;
34
import java.util.Map;
45

56
import org.openstack4j.common.Buildable.Builder;
@@ -13,67 +14,73 @@
1314
*/
1415
public interface ProjectBuilder extends Builder<ProjectBuilder, Project> {
1516

16-
/**
17-
* @see Project#getId()
18-
*/
19-
ProjectBuilder id(String id);
17+
/**
18+
* @see Project#getId()
19+
*/
20+
ProjectBuilder id(String id);
2021

21-
/**
22-
*
23-
* @see Project#getDomainId()
24-
*/
25-
ProjectBuilder domainId(String domainId);
22+
/**
23+
*
24+
* @see Project#getDomainId()
25+
*/
26+
ProjectBuilder domainId(String domainId);
2627

27-
/**
28-
* Accepts an existing domain and uses its id
29-
*
30-
* @see Project#getDomainId()
31-
*/
32-
ProjectBuilder domain(Domain domain);
28+
/**
29+
* Accepts an existing domain and uses its id
30+
*
31+
* @see Project#getDomainId()
32+
*/
33+
ProjectBuilder domain(Domain domain);
3334

34-
/**
35-
*
36-
* @see Project#getDescription
37-
*/
38-
ProjectBuilder description(String description);
35+
/**
36+
*
37+
* @see Project#getDescription
38+
*/
39+
ProjectBuilder description(String description);
3940

40-
/**
41-
* @see Project#isEnabled()
42-
*/
43-
ProjectBuilder enabled(boolean enabled);
41+
/**
42+
* @see Project#isEnabled()
43+
*/
44+
ProjectBuilder enabled(boolean enabled);
4445

45-
/**
46-
* @see Project#getName()
47-
*/
48-
ProjectBuilder name(String name);
46+
/**
47+
* @see Project#getName()
48+
*/
49+
ProjectBuilder name(String name);
4950

50-
/**
51-
*
52-
* @see Project#getLinks()
53-
*/
54-
ProjectBuilder links(Map<String, String> links);
51+
/**
52+
*
53+
* @see Project#getLinks()
54+
*/
55+
ProjectBuilder links(Map<String, String> links);
5556

56-
/**
57-
*
58-
* @see Project#getParentId()
59-
*/
60-
ProjectBuilder parentId(String parentId);
57+
/**
58+
*
59+
* @see Project#getParentId()
60+
*/
61+
ProjectBuilder parentId(String parentId);
6162

62-
/**
63-
*
64-
* @see Project#getSubtree()
65-
*/
66-
ProjectBuilder subtree(String subtree);
63+
/**
64+
*
65+
* @see Project#getSubtree()
66+
*/
67+
ProjectBuilder subtree(String subtree);
6768

68-
/**
69-
*
70-
* @see Project#getParents()
71-
*/
72-
ProjectBuilder parents(String parents);
69+
/**
70+
*
71+
* @see Project#getParents()
72+
*/
73+
ProjectBuilder parents(String parents);
7374

74-
/**
75-
*
76-
* @see Project#getExtra(String)
77-
*/
78-
ProjectBuilder setExtra(String name, String value);
75+
/**
76+
*
77+
* @see Project#getExtra(String)
78+
*/
79+
ProjectBuilder setExtra(String name, String value);
80+
81+
/**
82+
*
83+
* @see Project#getTags()
84+
*/
85+
ProjectBuilder setTags(List<String> tags);
7986
}

core/src/main/java/org/openstack4j/openstack/identity/v3/domain/KeystoneProject.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,23 @@
11
package org.openstack4j.openstack.identity.v3.domain;
22

3-
import java.util.HashMap;
43
import java.util.List;
54
import java.util.Map;
65

7-
import com.fasterxml.jackson.annotation.*;
86
import org.openstack4j.model.identity.v3.Domain;
97
import org.openstack4j.model.identity.v3.Project;
108
import org.openstack4j.model.identity.v3.builder.ProjectBuilder;
119
import org.openstack4j.openstack.common.ListResult;
1210

11+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
12+
import com.fasterxml.jackson.annotation.JsonAnySetter;
13+
import com.fasterxml.jackson.annotation.JsonIgnore;
14+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
15+
import com.fasterxml.jackson.annotation.JsonProperty;
16+
import com.fasterxml.jackson.annotation.JsonRootName;
1317
import com.google.common.base.MoreObjects;
1418
import com.google.common.base.Objects;
19+
import com.google.common.collect.Lists;
20+
import com.google.common.collect.Maps;
1521

1622
/**
1723
* Project model class for identity/v3
@@ -40,7 +46,8 @@ public class KeystoneProject implements Project {
4046
private String subtree;
4147
private String parents;
4248
private Boolean enabled = true;
43-
private Map<String, String> extra = new HashMap<String, String>();
49+
private Map<String, String> extra = Maps.newHashMap();
50+
private List<String> tags = Lists.newArrayList();
4451

4552
/**
4653
* @return the Project builder
@@ -169,6 +176,20 @@ public void setExtra(String key, String value) {
169176
}
170177

171178
/**
179+
* @return the tags
180+
*/
181+
public List<String> getTags() {
182+
return tags;
183+
}
184+
185+
/**
186+
* @param tags the tags to set
187+
*/
188+
public void setTags(List<String> tags) {
189+
this.tags = tags;
190+
}
191+
192+
/**
172193
* set project enabled
173194
*
174195
* @param enabled
@@ -183,14 +204,14 @@ public void setEnabled(Boolean enabled) {
183204
*/
184205
@Override
185206
public String toString() {
186-
String domainId = null;
207+
String dId = null;
187208
if (domain != null) {
188-
domainId = domain.getId();
209+
dId = domain.getId();
189210
}
190211

191212
return MoreObjects.toStringHelper(this)
192213
.add("id", id)
193-
.add("domainId", domainId)
214+
.add("domainId", dId)
194215
.add("description", description)
195216
.add("name", name)
196217
.add("links", links)
@@ -325,6 +346,16 @@ public ProjectBuilder setExtra(String key, String value) {
325346
model.extra.put(key, value);
326347
return this;
327348
}
349+
350+
/**
351+
* @see KeystoneProject#setTags(List<String>)
352+
*/
353+
354+
@Override
355+
public ProjectBuilder setTags(List<String> tags) {
356+
model.setTags(tags);
357+
return this;
358+
}
328359

329360
/**
330361
* @see KeystoneProject#isEnabled()
@@ -358,7 +389,6 @@ public ProjectBuilder domainId(String domainId) {
358389
model.domainId = domainId;
359390
return this;
360391
}
361-
362392
}
363393

364394
public static class Projects extends ListResult<KeystoneProject> {

0 commit comments

Comments
 (0)