Skip to content

Commit 3d779ee

Browse files
mhmxsbiharitomi
authored andcommitted
RMP-10378 Kerberos details in cluster response
1 parent 067e6fa commit 3d779ee

File tree

6 files changed

+160
-102
lines changed

6 files changed

+160
-102
lines changed

core-api/src/main/java/com/sequenceiq/cloudbreak/api/model/ClusterResponse.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ public class ClusterResponse implements JsonEntity {
111111
@ApiModelProperty(ClusterModelDescription.CREATION_FINISHED)
112112
private Long creationFinished;
113113

114+
private KerberosResponse kerberosResponse;
115+
114116
public String getDescription() {
115117
return description;
116118
}
@@ -368,4 +370,12 @@ public Long getCreationFinished() {
368370
public void setCreationFinished(Long creationFinished) {
369371
this.creationFinished = creationFinished;
370372
}
373+
374+
public KerberosResponse getKerberosResponse() {
375+
return kerberosResponse;
376+
}
377+
378+
public void setKerberosResponse(KerberosResponse kerberosResponse) {
379+
this.kerberosResponse = kerberosResponse;
380+
}
371381
}
Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
package com.sequenceiq.cloudbreak.api.model;
2+
3+
import javax.validation.constraints.Size;
4+
5+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
6+
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
8+
import com.sequenceiq.cloudbreak.doc.ModelDescriptions.StackModelDescription;
9+
import com.sequenceiq.cloudbreak.validation.ValidJson;
10+
import com.sequenceiq.cloudbreak.validation.ValidKerberosDescriptor;
11+
12+
import io.swagger.annotations.ApiModel;
13+
import io.swagger.annotations.ApiModelProperty;
14+
15+
@ApiModel
16+
@JsonIgnoreProperties(ignoreUnknown = true)
17+
@JsonInclude(Include.NON_NULL)
18+
public class KerberosBase implements JsonEntity {
19+
20+
@ApiModelProperty(StackModelDescription.KERBEROS_ADMIN)
21+
@Size(max = 15, min = 5, message = "The length of the Kerberos admin has to be in range of 5 to 15")
22+
private String admin;
23+
24+
@ApiModelProperty(StackModelDescription.KERBEROS_KDC_URL)
25+
private String url;
26+
27+
@ApiModelProperty(StackModelDescription.KERBEROS_ADMIN_URL)
28+
private String adminUrl;
29+
30+
private String realm;
31+
32+
private String ldapUrl;
33+
34+
private String containerDn;
35+
36+
private Boolean tcpAllowed = false;
37+
38+
@ValidKerberosDescriptor
39+
private String descriptor;
40+
41+
@ValidJson(message = "The krb5 configuration must be a valid JSON")
42+
private String krb5Conf;
43+
44+
public String getAdmin() {
45+
return admin;
46+
}
47+
48+
public void setAdmin(String admin) {
49+
this.admin = admin;
50+
}
51+
52+
public String getUrl() {
53+
return url;
54+
}
55+
56+
public void setUrl(String url) {
57+
this.url = url;
58+
}
59+
60+
public String getAdminUrl() {
61+
return adminUrl;
62+
}
63+
64+
public void setAdminUrl(String adminUrl) {
65+
this.adminUrl = adminUrl;
66+
}
67+
68+
public String getRealm() {
69+
return realm;
70+
}
71+
72+
public void setRealm(String realm) {
73+
this.realm = realm;
74+
}
75+
76+
public String getLdapUrl() {
77+
return ldapUrl;
78+
}
79+
80+
public void setLdapUrl(String ldapUrl) {
81+
this.ldapUrl = ldapUrl;
82+
}
83+
84+
public String getContainerDn() {
85+
return containerDn;
86+
}
87+
88+
public void setContainerDn(String containerDn) {
89+
this.containerDn = containerDn;
90+
}
91+
92+
public Boolean getTcpAllowed() {
93+
return tcpAllowed;
94+
}
95+
96+
public void setTcpAllowed(Boolean tcpAllowed) {
97+
this.tcpAllowed = tcpAllowed;
98+
}
99+
100+
public String getDescriptor() {
101+
return descriptor;
102+
}
103+
104+
public void setDescriptor(String descriptor) {
105+
this.descriptor = descriptor;
106+
}
107+
108+
public String getKrb5Conf() {
109+
return krb5Conf;
110+
}
111+
112+
public void setKrb5Conf(String krb5Conf) {
113+
this.krb5Conf = krb5Conf;
114+
}
115+
}

core-api/src/main/java/com/sequenceiq/cloudbreak/api/model/KerberosRequest.java

Lines changed: 3 additions & 100 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,30 @@
44

55
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
66
import com.fasterxml.jackson.annotation.JsonInclude;
7+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
78
import com.sequenceiq.cloudbreak.doc.ModelDescriptions.StackModelDescription;
89
import com.sequenceiq.cloudbreak.validation.ValidKerberos;
9-
import com.sequenceiq.cloudbreak.validation.ValidKerberosDescriptor;
10-
import com.sequenceiq.cloudbreak.validation.ValidJson;
1110

1211
import io.swagger.annotations.ApiModel;
1312
import io.swagger.annotations.ApiModelProperty;
1413

1514
@ApiModel
1615
@ValidKerberos
1716
@JsonIgnoreProperties(ignoreUnknown = true)
18-
@JsonInclude(JsonInclude.Include.NON_NULL)
19-
public class KerberosRequest implements JsonEntity {
17+
@JsonInclude(Include.NON_NULL)
18+
public class KerberosRequest extends KerberosBase {
2019

2120
@ApiModelProperty(StackModelDescription.KERBEROS_MASTER_KEY)
2221
@Size(max = 50, min = 3, message = "The length of the Kerberos password has to be in range of 3 to 50")
2322
private String masterKey;
2423

25-
@ApiModelProperty(StackModelDescription.KERBEROS_ADMIN)
26-
@Size(max = 15, min = 5, message = "The length of the Kerberos admin has to be in range of 5 to 15")
27-
private String admin;
28-
2924
@ApiModelProperty(StackModelDescription.KERBEROS_PASSWORD)
3025
@Size(max = 50, min = 5, message = "The length of the Kerberos password has to be in range of 5 to 50")
3126
private String password;
3227

33-
@ApiModelProperty(StackModelDescription.KERBEROS_KDC_URL)
34-
private String url;
35-
36-
@ApiModelProperty(StackModelDescription.KERBEROS_ADMIN_URL)
37-
private String adminUrl;
38-
39-
private String realm;
40-
4128
@ApiModelProperty(StackModelDescription.KERBEROS_PRINCIPAL)
4229
private String principal;
4330

44-
private String ldapUrl;
45-
46-
private String containerDn;
47-
48-
private Boolean tcpAllowed = false;
49-
50-
@ValidKerberosDescriptor
51-
private String descriptor;
52-
53-
@ValidJson(message = "The krb5 configuration must be a valid JSON")
54-
private String krb5Conf;
55-
5631
public String getMasterKey() {
5732
return masterKey;
5833
}
@@ -61,14 +36,6 @@ public void setMasterKey(String masterKey) {
6136
this.masterKey = masterKey;
6237
}
6338

64-
public String getAdmin() {
65-
return admin;
66-
}
67-
68-
public void setAdmin(String admin) {
69-
this.admin = admin;
70-
}
71-
7239
public String getPassword() {
7340
return password;
7441
}
@@ -77,75 +44,11 @@ public void setPassword(String password) {
7744
this.password = password;
7845
}
7946

80-
public String getUrl() {
81-
return url;
82-
}
83-
84-
public void setUrl(String url) {
85-
this.url = url;
86-
}
87-
88-
public String getAdminUrl() {
89-
return adminUrl;
90-
}
91-
92-
public void setAdminUrl(String adminUrl) {
93-
this.adminUrl = adminUrl;
94-
}
95-
96-
public String getRealm() {
97-
return realm;
98-
}
99-
100-
public void setRealm(String realm) {
101-
this.realm = realm;
102-
}
103-
104-
public Boolean getTcpAllowed() {
105-
return tcpAllowed;
106-
}
107-
108-
public void setTcpAllowed(Boolean tcpAllowed) {
109-
this.tcpAllowed = tcpAllowed;
110-
}
111-
11247
public String getPrincipal() {
11348
return principal;
11449
}
11550

11651
public void setPrincipal(String principal) {
11752
this.principal = principal;
11853
}
119-
120-
public String getLdapUrl() {
121-
return ldapUrl;
122-
}
123-
124-
public void setLdapUrl(String ldapUrl) {
125-
this.ldapUrl = ldapUrl;
126-
}
127-
128-
public String getContainerDn() {
129-
return containerDn;
130-
}
131-
132-
public void setContainerDn(String containerDn) {
133-
this.containerDn = containerDn;
134-
}
135-
136-
public String getDescriptor() {
137-
return descriptor;
138-
}
139-
140-
public void setDescriptor(String descriptor) {
141-
this.descriptor = descriptor;
142-
}
143-
144-
public String getKrb5Conf() {
145-
return krb5Conf;
146-
}
147-
148-
public void setKrb5Conf(String krb5Conf) {
149-
this.krb5Conf = krb5Conf;
150-
}
15154
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.sequenceiq.cloudbreak.api.model;
2+
3+
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
4+
import com.fasterxml.jackson.annotation.JsonInclude;
5+
import com.fasterxml.jackson.annotation.JsonInclude.Include;
6+
7+
import io.swagger.annotations.ApiModel;
8+
9+
@ApiModel
10+
@JsonIgnoreProperties(ignoreUnknown = true)
11+
@JsonInclude(Include.NON_NULL)
12+
public class KerberosResponse extends KerberosBase {
13+
14+
}

core/src/main/java/com/sequenceiq/cloudbreak/converter/ClusterToClusterResponseConverter.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import com.sequenceiq.cloudbreak.api.model.GatewayJson;
3535
import com.sequenceiq.cloudbreak.api.model.GatewayType;
3636
import com.sequenceiq.cloudbreak.api.model.HostGroupResponse;
37+
import com.sequenceiq.cloudbreak.api.model.KerberosResponse;
3738
import com.sequenceiq.cloudbreak.api.model.LdapConfigResponse;
3839
import com.sequenceiq.cloudbreak.api.model.Port;
3940
import com.sequenceiq.cloudbreak.api.model.RDSConfigResponse;
@@ -51,6 +52,7 @@
5152
import com.sequenceiq.cloudbreak.domain.Gateway;
5253
import com.sequenceiq.cloudbreak.domain.HostGroup;
5354
import com.sequenceiq.cloudbreak.domain.InstanceMetaData;
55+
import com.sequenceiq.cloudbreak.domain.KerberosConfig;
5456
import com.sequenceiq.cloudbreak.domain.RDSConfig;
5557
import com.sequenceiq.cloudbreak.domain.json.Json;
5658
import com.sequenceiq.cloudbreak.service.ClusterComponentConfigProvider;
@@ -102,7 +104,6 @@ protected <R extends ClusterResponse> R convert(Cluster source, Class<R> clazz)
102104
clusterResponse.setId(source.getId());
103105
clusterResponse.setName(source.getName());
104106
clusterResponse.setStatus(source.getStatus());
105-
clusterResponse.setSecure(source.isSecure());
106107
clusterResponse.setStatusReason(source.getStatusReason());
107108
if (source.getBlueprint() != null) {
108109
clusterResponse.setBlueprintId(source.getBlueprint().getId());
@@ -144,6 +145,21 @@ protected <R extends ClusterResponse> R convert(Cluster source, Class<R> clazz)
144145
convertComponentConfig(clusterResponse, source);
145146
convertAmbariDatabaseComponentConfig(clusterResponse, source);
146147
clusterResponse.setCreationFinished(source.getCreationFinished());
148+
KerberosConfig kerberosConfig = source.getKerberosConfig();
149+
if (source.isSecure() && kerberosConfig != null) {
150+
clusterResponse.setSecure(source.isSecure());
151+
KerberosResponse kerberosResponse = new KerberosResponse();
152+
kerberosResponse.setAdmin(kerberosConfig.getKerberosAdmin());
153+
kerberosResponse.setUrl(kerberosConfig.getKerberosUrl());
154+
kerberosResponse.setAdminUrl(kerberosConfig.getKdcAdminUrl());
155+
kerberosResponse.setRealm(kerberosConfig.getKerberosRealm());
156+
kerberosResponse.setDescriptor(kerberosConfig.getKerberosDescriptor());
157+
kerberosResponse.setKrb5Conf(kerberosConfig.getKrb5Conf());
158+
kerberosResponse.setLdapUrl(kerberosConfig.getKerberosLdapUrl());
159+
kerberosResponse.setContainerDn(kerberosConfig.getKerberosContainerDn());
160+
kerberosResponse.setTcpAllowed(kerberosConfig.getKerberosTcpAllowed());
161+
clusterResponse.setKerberosResponse(kerberosResponse);
162+
}
147163
return clusterResponse;
148164
}
149165

core/src/test/java/com/sequenceiq/cloudbreak/converter/ClusterToClusterResponseConverterTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ public void testConvert() throws IOException {
125125
assertEquals(1L, (long) result.getId());
126126
assertAllFieldsNotNull(result, Lists.newArrayList("cluster", "ambariStackDetails", "rdsConfigId", "blueprintCustomProperties",
127127
"blueprint", "rdsConfigs", "ldapConfig", "exposedKnoxServices", "customContainers",
128-
"ambariRepoDetailsJson", "ambariDatabaseDetails", "creationFinished"));
128+
"ambariRepoDetailsJson", "ambariDatabaseDetails", "creationFinished", "kerberosResponse"));
129129
}
130130

131131
@Test

0 commit comments

Comments
 (0)